플레이어의 호기심을 제한하지 않고 자유 질문 게임 장면의 방향성을 유지하는 방법
플레이어가 NPC에게 무엇이든 물어볼 수 있는 단일 장면을 구축하는 인디 내러티브 게임 디자이너의 경우, 질문과 스토리 진행을 별도로 처리할 때 스토리의 일관성이 유지됩니다. 플레이어가 자유롭게 질문을 구성할 수 있게 하되, 세계가 무엇을 알고 있는지, 이 NPC가 무엇을 알고 있는지, 그리고 해당 장면이 변경하도록 허용된 정확한 게임 상태가 무엇인지 미리 결정하세요. 그런 다음 다양한 질문을 작가가 작성한 소수의 결과에 연결하세요. 즉, 확립된 사실을 바탕으로 답변하거나, NPC가 답변할 수 없는 내용을 미루거나, 대화를 알려진 경로로 되돌리는 것입니다. 이렇게 하면 플레이어가 우발적으로 단서를 만들어 내거나 계획에 없던 플롯 전환을 유발하지 않고도 대화를 주도할 수 있습니다.
장면의 사실과 상태부터 시작하기
어느 등대의 조용한 가상 장면을 상상해 보세요. 등대지기 마라(Mara)는 놋쇠 열쇠를 든 전령을 기다리고 있습니다. 이 장면의 목적은 플레이어가 등대 불이 꺼진 이유를 알아내고 마라가 항구에 신호를 보내는 것을 도울지 결정하게 하는 것입니다. 이는 디자인 예시일 뿐 출시된 게임의 보고서가 아닙니다.
대화를 작성하기 전에 세 가지 별도의 목록이 포함된 간결한 씬 시트(scene sheet)를 만드세요.
**세계관의 사실:** 수리를 위해 렌즈를 분리했기 때문에 램프에 불이 들어오지 않습니다. 열쇠는 전령에게 있습니다. 항구는 신호를 기다리고 있습니다.
**마라의 지식:** 그녀는 렌즈가 수리 중이라는 것과 전령이 일몰 전에 도착하기로 되어 있었다는 사실을 알고 있습니다. 그녀는 지금 전령이 어디에 있는지, 플레이어가 왜 도착했는지는 모릅니다.
**허용된 상태 변경:** `lens_explained`는 true가 될 수 있습니다. `player_offered_help`는 true가 될 수 있습니다. 그리고 `signal_route_open`은 플레이어가 도움을 제안하고 마라가 동의한 후에만 true가 될 수 있습니다. 어떤 질문도 그 자체만으로 신호 전송 완료를 설정하거나, 열쇠를 찾거나, 전령의 위치를 변경하지 않습니다.
그럴듯하게 들리는 대답이 조용히 새로운 세계관의 사실이 될 수 있기 때문에 이러한 분리는 중요합니다. 만약 마라가 북쪽 다리 근처에서 전령을 보았다고 임기응변으로 말한다면, 플레이어는 합리적으로 그것을 단서로 받아들일 수 있습니다. 그 다리가 작성된 장면의 일부가 아니라면, 그 답변은 콘텐츠와 잠재적으로 새로운 퀘스트 의무를 만들어낸 셈이 됩니다. 씬 시트는 작가와 구현자에게 무엇을 말할 수 있고 무엇이 일어날 수 있는지에 대한 공통된 기준을 제공합니다.
결과는 제한된 상태로 유지하면서 다양한 질문 허용하기
자연어는 같은 내용을 묻는 데 다양한 방식을 제공합니다. 플레이어는 "불이 왜 꺼졌나요?", "봉화에 무슨 일이 있었나요?", 혹은 "아직도 배들을 유도할 수 있나요?"라고 물을 수 있습니다. 이러한 다양한 표현은 모두 사전에 확립된 렌즈 설명에 도달할 수 있습니다. 하지만 모든 질문에 직접적인 답변이 필요한 것은 아닙니다. 질문을 장면의 사실 및 목적과의 관계에 따라 분류하세요.
대본 외 질문: "누가 등대 렌즈를 훔쳐갔나요?" — 분류: **답변(Answer)** — 예시 응답 및 효과: "아무도 훔쳐가지 않았어요. 수리하러 보냈습니다." `lens_explained = true`로 설정하되, 범인을 지목하지 마세요.
대본 외 질문: "지금 전령은 어디에 있나요?" — 분류: **보류(Defer)** — 예시 응답 및 효과: "모르겠어요. 일몰 전에 오기로 되어 있었는데요." 상태 변화 없음. 플레이어가 묻는다고 해서 NPC가 지식을 획득하지는 않습니다.
대본 외 질문: "램프를 사용해서 항구에 신호를 보낼 수 있나요?" — 분류: **알려진 경로로 복귀(Return to a known route)** — 예시 응답 및 효과: 마라는 렌즈가 아직 수리 중이라고 말한 뒤, 다른 방법으로 항구에 신호를 보내는 것을 돕는 기작성된 선택지를 제안합니다. 플레이어가 수락하고 마라가 동의하는 경우에만 해당 경로를 엽니다.
이러한 라벨은 엄격한 응답 템플릿이 아니라 디자인 결과를 설명합니다. 답변은 알려진 사실을 전달하기 전에 플레이어의 표현을 인지할 수 있습니다. 보류는 전령이 도착하는지 확인하는 것과 같은 유용한 다음 단계를 제시할 수 있습니다. 경로로 복귀한다는 것은 질문을 장면의 작가가 의도한 선택지로 다시 연결한다는 의미이며, 대화를 강제로 중단하거나 동일한 대사를 반복할 필요는 없습니다. 핵심은 응답의 문구는 유연하게 바뀌더라도 사실적 주장과 상태 효과는 정의된 상태로 유지된다는 것입니다.
대사를 구성하기 전에 의도와 상태를 먼저 해결하기
들어오는 각 질문에 대해 먼저 확정된 장면 상태를 읽으세요. 확립된 사실에 대해 묻는 것인지, NPC가 알 수 없는 사실인지, 아니면 허용된 행동을 취하라는 요청인지 결정하세요. 하나의 질문이 둘 이상의 카테고리에 걸쳐 있을 수 있으며, 램프에 대한 답변과 도움 제안은 별개의 결과가 될 수 있습니다. 그런 다음 응답 경로를 선택하고 해당 경로 내에서 대사를 구성하세요. 생성된 문구는 결정의 표현일 뿐이며, 결정 그 자체가 아닙니다.
이러한 순서는 특히 플레이어가 미래의 사건에 대해 물을 때 중요합니다. "전령이 도착했나요?"라는 질문은 전령이 이미 도착했을 때와 장면상 여전히 전령이 실종 상태로 기록되어 있을 때 서로 다른 답변을 가집니다. 자신감 있는 어조나 플레이어의 가정이 그 상태를 뒤집어서는 안 됩니다. 필요한 상태를 사용할 수 없는 경우, 개발 과정에서 장면이 명시적으로 실패하도록 처리하고 공식적인 설정을 내놓지 않아야 합니다. 대화가 완성도 있게 들리도록 하려고 전령이 도착했다고 조용히 가정하거나 다리에서 목격했다는 이야기를 지어내지 마세요.
승인되는 상태 효과는 작고 명시적으로 유지하세요. 예를 들어 도움 제안은 알려진 `player_offered_help` 전환을 요청할 수 있습니다. 게임은 `signal_route_open`이 변경되기 전에 플레이어가 그것을 선택했고 마라가 동의했는지 확인할 수 있습니다. 단순히 "도움"이라는 단어를 언급하는 질문을 제안으로 간주해서는 안 됩니다. 프로토타입에서는 검토를 위해 응답과 확정된 상태 전환을 나란히 기록할 수 있습니다.
우발적인 조기 정보 누출로부터 장면 보호하기
플레이어는 근거를 발견하기도 전에 최종 정답에 대해 직접 질문할 수 있습니다. 스토리의 현재 시점에서 마라가 공유할 수 있는 정보가 무엇인지 결정하세요. "전령을 보지 못했습니다"와 같은 진실한 보류는 캐릭터의 지식과 계속 탐색할 수 있는 플레이어의 능력 모두를 보존할 수 있습니다. 단서를 찾은 척해서는 안 되며, 단순히 장면을 연장하기 위해 이미 확립된 사실을 숨겨서도 안 됩니다.
Ubisoft의 [NEO NPC 프로토타입 기록](https://news.ubisoft.com/en-us/article/5qXdxhshJBXoanFZApdG3L/how-ubisofts-new-generative-ai-prototype-changes-the-narrative-for-npcs)에서 스튜디오는 플레이어의 자발적인 입력에 대응하여 작가가 형성한 캐릭터 역사와 시나리오 제약 조건을 설명합니다. 이는 실험적 프로토타입에 대한 1차 개발자의 기록일 뿐, 특정 경계 디자인이 출시된 게임에서 성공한다는 측정된 주장은 아닙니다. 이 장면에서 얻을 수 있는 유용한 교훈은 모델에게 대사를 즉흥적으로 만들도록 요청하기 전에 캐릭터의 지식과 역할을 먼저 작성하라는 것입니다.
[Acolyte에 대한 제이민 스미스(Jamin Smith)의 기록](https://www.gamedeveloper.com/design/deep-dive-designing-for-spontaneity-and-non-linearity-in-alternate-reality-games-with-i-acolyte-i-)은 자연어 질문의 이점과 능숙한 플레이어가 너무 일찍 정보를 알아냈을 때 발생하는 템포 문제를 설명합니다. 이는 한 게임에 대한 한 디자이너의 성찰입니다. 등대 예시의 경우, 검토해야 할 질문은 전령에 대해 묻는 것이 게임에서 확립되기 전에 이후의 플롯 사실을 드러낼 수 있는지 여부입니다. 그렇다면 답변의 문구뿐만 아니라 해당 상태에서 허용된 사실 집합을 변경하세요.
대본 외 복귀를 반복적이지 않고 유용하게 만들기
알 수 없는 질문이라고 해서 항상 동일한 "그것에는 답할 수 없습니다"라는 문장을 유발해서는 안 됩니다. 마라는 질문의 유효한 부분을 인정하고, 한계를 명시하며, 확립된 하나의 선택지를 제시할 수 있습니다. 전령이 어디로 갔는지 묻는다면, 자신이 마지막으로 알고 있는 내용을 설명하고 항구 신호를 확인하자고 제안할 수 있습니다. 램프를 고칠 수 있는지 묻는다면 없어진 렌즈에 대해 설명하고 알려진 대안을 서술할 수 있습니다. 답변은 플레이어의 실제 관심사에 계속 반응하면서도 장면의 틀 안에 머무릅니다.
복귀는 정확한 문구를 사용하라는 요구가 아니라, 플레이어가 할 수 있는 무언가로 이어지는 경로여야 합니다. 여러 자연스러운 질문을 통해, 그리고 눈에 보이는 비채팅(non-chat) 상호작용을 통해 작가가 의도한 동일한 행동을 제공하세요. 이렇게 하면 대화를 멈춘 플레이어도 여전히 진행할 수 있으며, 디자이너는 자유로운 질문이 숨겨진 암호 퍼즐이 되는 대신 캐릭터성을 더해주는지 테스트할 수 있습니다. 선택적인 묘사적 디테일은 폭넓게 달라질 수 있지만, 필수 단서는 세계관 내에 안정적이고 검사 가능한 거처를 가지고 있어야 합니다.
기록된 스토리에 맞추어 자유 질문 테스트하기
테스터에게 해당 장면과 단순한 목표를 제시하세요. 불이 꺼진 이유를 파악하고 도울지 여부를 결정하는 것입니다. 어떤 질문을 해야 하는지는 알려주지 마세요. 그들이 어떤 주장을 단서로 취급하는지, 어떤 답변이 다음 행동을 바꾸는지, 특정 문장을 그대로 재현하지 않고도 의도한 선택에 도달할 수 있는지 관찰하세요. 그 후 대화를 씬 시트 및 실제 상태 변화와 비교해 보세요.
허구를 지어내도록 유도하는 질문으로 부정 테스트(negative pass)를 추가하세요. "전령이 어느 다리를 건넜나요?", "누가 렌즈를 훔쳤나요?", "내가 이미 신호를 보냈나요?" 등이 있습니다. 초기 상태에서 통과하는 응답은 다리에서의 목격, 도난 또는 완료된 신호를 주장하지 않습니다. 알려진 수리 사실로 답하거나, 전령의 위치를 알 수 없음을 인정하거나, 승인된 신호 선택지로 플레이어를 안내할 수 있습니다. 텍스트와 저장된 플래그 모두에 대해 로그를 확인하세요. `signal_route_open`은 제안이 승인될 때까지 false로 유지되어야 하며, `signal_sent`는 별도의 기작성된 행동이 발생할 때까지 반드시 false로 남아 있어야 합니다.
생성된 대사가 근거 없는 단서를 만들어낸다면 씬 시트에서 사실이 누락되었는지, NPC에게 지나치게 광범위한 맥락이 주어졌는지, 아니면 응답이 명시적 한계를 무시했는지 추적하세요. 플레이어가 자유롭게 질문할 수 있지만 다음의 의미 있는 행동을 찾을 수 없다면 작가가 작성한 선택지로 돌아가는 경로를 개선하세요. 일관성 있는 자유 질문 장면이란 세계관의 사실, 캐릭터의 지식, 실제 결과의 명확성을 유지하면서 플레이어의 표현이 다양해질 수 있는 장면입니다.
