자유 입력형 텍스트 게임에서 플레이어의 방향 감각을 유지하는 방법
게임이 타이핑된 명령어를 입력받을 때, 빈 입력창은 거의 모든 것이 가능할 것 같은 인상을 줄 수 있습니다. 플레이어에게는 자신만의 단어를 시도해 볼 여지도 필요하지만, 게임이 무엇을 이해하고 각 시도 후에 무엇이 바뀌었는지에 대한 단서도 필요합니다. 실질적인 목표는 모든 문장을 예측하는 것이 아닙니다. 의미 있는 선택지를 눈에 띄게 만들고, 몇 가지 대표적인 명령어 패턴을 보여주며, 불명확한 입력에 대해 유용한 다음 단계를 안내하는 것입니다.
개방형 텍스트 입력창이 다음 행동을 모호하게 만드는 이유
자유로운 형식의 입력은 무한한 가능성의 느낌을 주지만, 어떤 행동이 일어날 수 있는지를 결정하는 것은 여전히 게임의 세계 모델과 파서(parser)입니다. 플레이어는 동사를 인식하지 못해서인지, 대상이 없어서인지, 문구 표현이 불완전해서인지, 아니면 설명된 행동이 게임 내에서 단순히 아무런 효과가 없어서인지 명령어가 실패한 이유를 확신하지 못할 수 있습니다. 에밀리 쇼트(Emily Short)는 알 수 없는 단어를 식별하는 것만으로는 플레이어가 대신 무엇을 시도해야 할지 알 수 없으며, 명확한 목표와 눈에 보이는 몇 가지 유용한 동사 목록이 플레이어의 방향 감각을 잡는 데 도움이 된다고 지적합니다(“Parser Discussion, Redux”).
게임이 일상적인 언어로 표현하더라도 타이핑 입력은 게임의 규칙과의 대화이기 때문에 이러한 구분은 중요합니다. 플레이어의 자유는 자신의 행동이 묘사된 세계에 영향을 미칠 수 있을 때 비로소 의미를 갖습니다. 일치하는 세계의 반응 없이 상상할 수 있는 모든 문장을 받아들이려 하면 오히려 게임이 충족할 수 없는 기대감을 낳을 수 있습니다. 쇼트의 디자인 노트에서는 파서의 역할을 플레이어가 게임 세계를 의미 있게 조작할 수 있는 문구로 안내하는 동시에, 그 세계가 어떤 종류의 상호작용을 지원하는지 가르쳐주는 것으로 정의합니다(“Action and Interaction”).
제약으로 느껴지지 않도록 몇 가지 선택지를 눈에 띄게 제시하기
입력 필드는 열어 두되, 그 옆에 몇 가지 간단한 제안을 배치하세요. 현재 장면에 연결된 구체적인 행동으로 구성하는 것이 좋습니다: “쪽지 보기”, “마라에게 페리에 대해 묻기”, “대문 열어보기”. 이러한 예시는 입력의 예상 형태를 보여주고 현재 위치에서 가능한 행동 유도성(affordance)을 가리킵니다. 이는 허용된 유일한 명령어가 아니라 시작점으로 제시되어야 합니다.
도움이 되는 프롬프트는 목표와 몇 가지 핵심 동사를 명시할 수도 있습니다: “작업실이 잠긴 이유를 알아보세요. 주변을 조사하거나, 사람들과 대화하거나, 문에 물건을 사용해 볼 수 있습니다.” 이는 특정 해결책을 강요하지 않으면서 장면을 진전시킬 수 있는 방법을 플레이어에게 알려줍니다. 쇼트는 파서 게임의 접근성을 높이는 두 가지 폭넓은 방법을 설명합니다. 도움말과 제안을 통해 폭넓은 범위를 지원하거나, 사용 가능한 행동 세트를 작게 유지하고 이를 명확하게 알리는 것입니다. 어느 쪽이든 제시된 동사는 의미 있는 반응을 반환해야 합니다(“Writing Novice-friendly Parser Games”).
균형은 상황에 맞게 유연하게 조정할 수 있습니다. 타당한 행동이 많을 때는 맥락에 맞는 “여기서 무엇을 해볼 수 있을까?”라는 프롬프트로 간단한 메뉴를 제공할 수 있습니다. 하나의 목표가 명확하다면 한두 가지 예시로도 충분할 수 있습니다. 어떤 행동이 발견되지 않은 상태로 유지되어야 한다면 힌트 목록에 해결책을 드러내지 마세요. 대신 그 시점에서 사용할 수 있는 상호작용의 유형을 나타내세요. 목표는 모든 결과를 일일이 설명하지 않고도 게임의 어휘와 행동 가능성을 드러내는 것입니다.
예시를 통해 명령어 패턴 가르치기
예시는 허용되는 모든 문장을 나열하기보다 재사용 가능한 패턴을 보여줄 때 가장 유용합니다. 예를 들어 게임에서 “[대상] 조사하기”, “[인물]에게 [주제]에 대해 말하기”, “[물건]을 [대상]에 사용하기”를 보여줄 수 있습니다. 그런 다음 한두 가지의 구체적인 예시를 듭니다: “황동 열쇠 조사하기” 또는 “마라에게 페리에 대해 묻기”. 일관된 표현 방식은 플레이어에게 행동과 대상을 조합하는 방법을 가르쳐 줍니다. 게임이 실제로 지원하는 형식만 포함해야 합니다.
프롬프트뿐만 아니라 서사 속에서도 중요한 명사를 언급하세요. 장면에서 황동 열쇠를 묘사한다면 플레이어는 “열쇠 조사하기”나 “열쇠 챙기기”를 시도할 이유를 갖게 됩니다. 조용히 다른 숨겨진 이름을 요구하는 것은 불필요한 추측을 낳습니다. 유용한 행동이 대상에 따라 다른 경우, “빗장이 헐거워 들어 올릴 수 있을 것 같다”라거나 “쪽지의 양면에 글씨가 적혀 있다”와 같이 간단한 상호작용 단서를 주는 것이 도움이 될 수 있습니다. 쇼트는 사용할 수 있는 명사를 강조하고 제안을 제공하는 것이 플레이어가 무엇과 상호작용할 수 있는지 발견하도록 돕는 방법이라고 권장합니다(“Writing Novice-friendly Parser Games”).
모든 장면에 전체 명령어 목록을 쏟아붓는 것은 피하세요. 너무 많은 제안은 스토리에 방해가 되며, 특이한 동사를 나열하면 의도치 않은 퍼즐 힌트가 될 수 있습니다. 장면에 특화된 소수의 세트를 선호하되, 더 넓은 안내를 위해 도움말 명령어(help)나 확장 가능한 참조 문서를 마련하세요. IFComp의 파서 대화형 픽션 가이드에서는 일부 게임이 선택적 튜토리얼 안내를 사용하여 플레이어가 스토리를 계속 진행하면서 지원을 참고할 수 있도록 한다고 설명합니다(“About IF”).
모호한 입력을 막다른 길이 아닌 짧은 확인 질문으로 만들기
게임이 행동은 이해했지만 플레이어가 어떤 대상을 의미하는지 구분할 수 없을 때는 집중된 질문을 던지세요. 플레이어가 “책을 펼친다”라고 입력했는데 책 두 권이 보인다면, 다음과 같이 답하세요: “어떤 책인가요: 책상 위의 빨간 책인가요, 아니면 선반 위의 파란 책인가요?” 유용한 확인 질문은 플레이어가 구분할 수 있는 표현으로 대안을 지칭합니다. 필수적인 세부 정보가 누락되었고 합리적인 기본값이 없다면, 해당 세부 정보를 물어보세요: “무엇을 열고 싶으신가요?”
기술적인 파서 문서는 이러한 상호작용의 구체적인 예를 제공합니다: TADS는 눈에 보이는 색상으로 책 중에서 선택하도록 플레이어에게 요청하고, “열기”와 같은 명령어에 대상이 없을 때 대상을 별도로 묻는 방식을 설명합니다(TADS Parser: The Parsing Sequence). 더 넓은 디자인 교훈은 가능한 한 원래의 의도를 유지하는 것입니다. 명령어를 완전히 무시하고 플레이어가 처음부터 다시 시작하게 만드는 대신 누락된 부분만 명확히 하세요.
게임이 안전하게 기본값을 선택할 수 있다면, 무엇을 선택했는지 플레이어에게 알려주세요: “정원 문에 황동 열쇠를 사용합니다.” 두 가지 선택이 서로 다른 결과를 낼 수 있다면 대신 질문을 하세요. 에밀리 쇼트는 명령어가 불완전하고 합리적인 기본값을 추론할 수 없을 때 프롬프트를 띄우고, 모호한 대상 간의 차이를 명확히 할 것을 권장합니다(“Action and Interaction”).
예상치 못한 질문에 존중과 방향성으로 대응하기
플레이어는 장난스럽거나 호기심 어린, 혹은 엉뚱한 명령어를 시도하곤 합니다. 이러한 실험을 자연스러운 참여로 대하세요. 훈계하거나, 조롱하거나, 플레이어가 이미 규칙을 알고 있어야 한다는 식의 어조는 피하세요. 대신 가능한 한 해석된 의도를 인정하고 장면으로 주의를 되돌리는 응답을 만드세요.
예를 들어, 플레이어가 작업실 시계에 지금 몇 시인지 아느냐고 묻는다면 다음과 같이 응답할 수 있습니다: “시계는 째깍거리며 계속 움직이지만 아무런 대답이 없습니다. 그 옆에 놓인 쪽지에는 숫자가 가득 적혀 있습니다.” 이는 작은 세계 내 반응을 제공하는 동시에 눈에 보이는 단서로 주의를 이끕니다. 게임이 입력을 해석할 수 없다면 솔직하게 말하고 지원되는 인접한 행동을 제안하세요: “여기서는 그 행동을 이해할 수 없습니다. 쪽지를 살펴보거나 마라에게 작업실에 대해 물어볼 수 있습니다.” 모델링되지 않은 문장을 게임이 이해한 척하지 마세요. 잘못된 인식은 이후의 결과를 파악하기 어렵게 만듭니다.
입력 문제와 세계 내 결과를 분리하세요. “그 명령어를 인식하지 못했습니다”는 표현이나 어휘의 문제를 나타냅니다. “문이 잠겨 있습니다”는 행동은 이해되었지만 세계의 상태가 이를 막고 있음을 의미합니다. “문이 움직이지 않습니다”는 시도한 행동이 아무런 효과가 없음을 나타냅니다. 이러한 메시지가 뚜렷한 의미를 가질 때, 플레이어는 표현을 바꿀지, 정보를 수집할지, 아니면 다른 것을 시도할지 결정할 수 있습니다. 파서 피드백에 대한 쇼트의 논의는 모호한 거절 반응이 플레이어로 하여금 동사가 지원되지 않는 것인지, 아니면 행동 자체가 게임 세계 바깥의 일인지 불확실하게 만들 수 있음을 강조합니다(“Parser Discussion, Redux”).
행동이 접수되었고 무엇이 바뀌었는지 보여주기
이해된 명령어 이후에는 플레이어가 다음 행동을 취하는 데 도움이 되는 방식으로 결과를 보고하세요. 플레이어가 수납장을 열었다면 이제 무엇이 보이는지 알려주세요. 질문을 통해 인물의 반응이 바뀌었다면 구체적인 단서를 보여주거나 플레이어가 새로 알게 된 정보를 전달하세요. 행동에 즉각적인 효과가 없다면 캐릭터가 합리적으로 알 수 있는 범위 내에서 그 이유를 설명하세요.
이것이 방향 감각 유지를 위한 또 다른 핵심입니다: 플레이어에게는 다음 명령어를 입력하라는 프롬프트뿐만 아니라 자신의 행동이 게임에 전달되었다는 증거가 필요합니다. 쇼트는 출력이 세계와 상호작용하는 데 필요한 정보를 드러내야 하며, 보여줄 만한 유용한 신호가 있다면 간접적인 변화를 포함하여 성공적인 변화가 명확히 드러나야 한다고 주장합니다(“Action and Interaction”). 피드백은 적절한 비중을 유지하세요: 매 명령어마다 무관한 설명을 덧붙이기보다는 변경된 자물쇠, 새로 발견된 세부 사항, 인물의 눈에 띄는 반응 등을 설명하는 것이 좋습니다.
각 응답을 디자인하기 위한 실용적인 순서
각 장면에 대해 중요한 행동을 나열한 다음, 이를 중심으로 프롬프트와 응답을 구성하세요. 이렇게 하면 “플레이어가 얼마나 많은 입력을 할 수 있는가?”라는 광범위한 질문을 “플레이어가 장면이 지원하는 것을 확인하고, 예상치 못한 아이디어를 시도하고, 응답을 이해하고, 다음 단계를 선택할 수 있는가?”라는 관리 가능한 디자인 과제로 바꿀 수 있습니다.
장면에서 상호작용 가능한 물건, 인물 및 당면한 목표를 식별합니다. 실제로 모델링되었거나 의미 있게 서술될 수 있는 세부 사항만 사용하세요.
몇 가지 대표적인 행동을 선택하여 예시 형태로 표현합니다. 자유 입력을 열어두고, 제안된 모든 동사가 안내된 대로 작동하도록 합니다.
발생하기 쉬운 불명확한 입력을 분류합니다: 알 수 없는 행동, 알 수 없는 대상, 누락된 세부 정보, 여러 개의 가능한 대상, 혹은 현재 상태에서 성공할 수 없는 이해된 행동.
각 상황에 맞는 명확한 응답을 작성합니다. 확인 질문은 알아볼 수 있는 선택지를 제공해야 하고, 불가능한 행동은 관련된 장애 요소를 설명해야 하며, 지원되지 않는 행동은 인접한 대안 경로를 제안해야 합니다.
성공적인 행동의 결과가 눈에 보이는지, 그리고 플레이어가 다시 필요로 할 때 이전에 드러난 정보를 다시 검토할 수 있는지 확인합니다. 쇼트는 이미 습득한 정보를 다시 확인할 수 있는 방법을 권장하며, 이는 줄거리 세부 사항이나 대화가 이후의 선택에 영향을 미칠 때 특히 유용합니다(“Action and Interaction”).
글자 그대로의 명령어, 불완전한 명령어, 다른 단어로 표현된 명령어, 장난스러운 명령어로 장면을 테스트해 봅니다. 테스터가 게임이 행동을 오해했는지, 거부했는지, 수락했는지 구분할 수 없게 만드는 응답은 모두 수정하세요.
유용한 척도는 게임이 받아들이는 문장의 수가 아닙니다. 플레이어가 자신의 단어와 게임이 지원하는 행동, 그리고 그 이후에 보게 되는 상태 사이의 관계를 이해할 수 있는지 여부입니다. 몇 가지 눈에 띄는 선택지, 패턴을 가르치는 예시, 판단하지 않는 명확한 피드백은 플레이어에게 실험할 여지를 주면서도 계속 나아갈 수 있는 충분한 정보를 제공합니다.
