텍스트 어드벤처의 동의 명령 설계: ‘보기’와 ‘찬찬히 보기’를 같은 동작으로 처리하려면
뜻이 비슷하다는 이유만으로 명령을 하나로 묶어서는 안 됩니다. 대상, 동작 방식, 종료 상태를 기준으로 범위를 정하면 ‘렌즈 보기’와 ‘렌즈 찬찬히 보기’에는 일관된 관찰 응답을 제공하면서도 분해와 닦기 같은 동작의 차이는 유지할 수 있습니다.

들어가며
‘렌즈 보기’와 ‘렌즈 찬찬히 보기’에 일관된 응답을 제공하려면, 먼저 한 번의 관찰이 정확히 무엇을 하는지 정의한 뒤 그 정의에 맞는 표현을 같은 행에 넣어야 합니다. 판단 기준은 대상, 동작 방식, 종료 상태입니다. 뜻이 비슷하다는 점은 후보로 고려할 이유일 뿐, 그것만으로 같은 동작으로 묶을지를 결정할 수는 없습니다.
아래의 오래된 사진관은 전부 허구로 만든 교육용 사례입니다. 장면, 입력, 응답, 판정은 모두 설명을 위해 구성했으며, 실제 사용자 경험이나 실측 결과, 직접 플레이해 본 테스트 결과, DramaFork의 제품 기능을 뜻하지 않습니다. 이 글은 의미가 이미 명확한 단일 명령만 다루며, 자유 입력을 처리하는 전체 과정은 다루지 않습니다.
먼저 관찰을 확인 가능한 동작으로 정의하기
탁자 위에는 아직 분해하지 않은 오래된 렌즈가 하나 놓여 있고, 옆에는 닫힌 렌즈 케이스가 있습니다. 작가가 해결하려는 문제는 이렇습니다. 플레이어가 렌즈를 관찰하는 말을 바꿨다는 이유만으로, 어떨 때는 흠집을 발견하고 어떨 때는 ‘그렇게 할 수 없습니다’라는 답을 받아서는 안 됩니다.
먼저 기준 동작을 ‘렌즈 외관 관찰하기’로 정합니다. 대상은 탁자 위의 이 렌즈입니다. 방식은 현재 조명과 위치에서 눈으로 보는 것이며, 움직이거나 닦거나 분해하지 않습니다. 종료 시점에도 렌즈는 원래 자리에 있고 구조가 달라지지 않으며, 플레이어는 바깥 테두리의 흠집과 눈에 보이는 렌즈 유리 표면의 먼지 알갱이를 알게 됩니다.
여기서 종료 상태에는 물체와 정보가 모두 포함됩니다. 물체가 변하지 않았는지만 확인해서는 부족합니다. ‘렌즈 보기’와 ‘렌즈 내부 검사하기’는 둘 다 실제로 물체를 움직이지 않을 수도 있지만, 후자가 요구하는 정보 범위는 이미 외관을 넘어섭니다.
또한 이 사례에서는 일반 관찰의 소요 시간을 단계별로 나누지 않으며, 자세히 봐야만 발견할 수 있는 단서도 따로 두지 않습니다. 따라서 ‘찬찬히’는 관찰하는 태도를 나타낼 뿐, 별도의 동작을 추가하지 않아도 됩니다. 관찰 시간을 비용으로 다루는 작품이라면 이 전제는 적용되지 않습니다.
동의 명령 범위표로 포함할 표현과 제외할 표현 정하기
먼저 적용 대상과 기준 동작을 적고, 다음으로 같은 뜻으로 처리할 표현을 나열한 뒤, 마지막으로 유사하지만 다른 동작인 반례를 통해 경계를 확인합니다. 동사를 길게 모아 놓고 모든 물체에 억지로 적용하는 방식으로 시작하지 마세요.
| 기준 동작 | 동의 표현 | 유사하지만 다른 동작인 반례 | 적용 대상 | 공통 응답 |
|---|---|---|---|---|
| 렌즈 외관 관찰하기 | 렌즈 보기, 렌즈 찬찬히 보기, 렌즈 한번 보기, 렌즈 자세히 보기 | 렌즈 분해하기, 렌즈 닦기, 렌즈 돌리기, 렌즈 내부 검사하기 | 현재 탁자 위에 있는 미분해 상태의 오래된 렌즈. 보이는 외관에 한정 | 바깥 테두리에 둥글게 휜 흠집이 하나 있고, 눈에 보이는 렌즈 유리 표면에는 먼지가 몇 알 붙어 있다. 렌즈는 원래 자리에 그대로 놓여 있다. |
| 케이스 외관 관찰하기 | 렌즈 케이스 보기, 렌즈 케이스 찬찬히 보기, 렌즈 케이스 한번 보기 | 렌즈 케이스 열기, 케이스 안을 살펴보기 | 현재 닫혀 있는 렌즈 케이스. 겉면에 한정 | 뚜껑을 감싼 천은 닳아 희끗해졌고, 잠금쇠는 여전히 채워져 있다. |
| 렌즈 분해하기 | 렌즈 분해하기 | 렌즈 찬찬히 보기, 렌즈 돌리기 | 분해 조건을 별도로 정의하는 렌즈 | 독립된 분해 규칙에 따라 따로 작성하며, 관찰 응답을 공유하지 않는다. |
세 번째 행은 경계를 표시하고 별도 동작의 자리를 남겨 두기 위한 것이며, 플레이어가 지금 분해해도 된다는 뜻은 아닙니다. ‘분해하기’가 다른 동작에 속한다는 점을 기록해 두면, 작가가 입력을 받아 주려고 이를 슬그머니 관찰로 축소하는 일을 막을 수 있습니다. 이 글에는 분해 조건과 결과를 추가하지 않았으므로, 이 행만으로 분해 절차가 완성되었다고 주장할 수는 없습니다.
표를 재사용할 때도 관찰 대상마다 다섯 열을 모두 유지합니다. 같은 행 안에서는 응답을 공유할 수 있지만, 행이 달라지면 대상과 상태를 다시 확인해야 합니다. 렌즈와 렌즈 케이스 모두 ‘찬찬히 보기’를 허용하더라도, 제공하는 정보는 분명히 다릅니다.
말의 강조와 동작의 변화를 구분하기
이 사례가 ‘렌즈 자세히 보기’를 허용하는 이유는 ‘자세히’가 새로운 접촉 방식, 시간 비용, 얻을 수 있는 정보를 추가하지 않기 때문입니다. 대신 훑어보기와 세밀하게 보기의 단계 차이는 포기하게 됩니다. 플레이어는 더 강한 표현만으로 숨겨진 단서를 얻을 수 없습니다.
자세히 봐야만 새겨진 글자를 발견하게 하고 싶다면, 정밀 관찰을 별도의 동작으로 정의하고 추가 정보와 조건을 명시한 뒤 표도 수정해야 합니다. 두 표현이 동등하다고 해 놓고 ‘찬찬히 보기’에만 보상을 주어서는 안 됩니다. 그러면 플레이어는 여전히 작가가 선호하는 단어를 맞혀야 합니다.
‘렌즈를 돌려서 보기’는 관찰 방식을 바꾸고 물체를 움직이는 행위도 포함합니다. 끝에 ‘보기’가 있다고 해서 같은 동작으로 묶을 수는 없습니다. ‘렌즈 닦기’는 표면 상태를, ‘렌즈 분해하기’는 구조를 바꾸며, ‘렌즈 내부 검사하기’는 다른 범위의 정보를 요구합니다. 각각 원래 동작의 서로 다른 경계를 넘습니다.
‘렌즈 검사하기’처럼 범위가 불명확한 표현은 이 표에 일단 넣지 않습니다. 작가는 해당 장면에서 그것이 외관 관찰인지 기능 점검인지 먼저 명확히 한 뒤 어디에 속하는지 결정해야 합니다. 단어 목록을 완전해 보이게 만들려고 뜻이 정해지지 않은 표현을 기존 동작에 억지로 끼워 넣을 필요는 없습니다.
같은 시작점에서 입력을 하나씩 문서로 검토하기
문서상으로 동작을 검토할 때는 모든 입력을 ‘렌즈는 분해되지 않았고, 위치도 바뀌지 않았으며, 아직 관찰하지 않은 상태’라는 동일한 장면의 복사본에서 시작합니다. 그래야 표현을 비교할 수 있고, 입력 순서 때문에 생긴 차이를 동의어 문제로 오인하지 않을 수 있습니다.
‘렌즈 보기’를 입력합니다. 대상이 명확하고 방식은 눈으로 보는 것이며, 종료 상태는 첫 번째 행에 부합합니다. 렌즈 외관 응답을 사용하고, 플레이어가 흠집과 먼지 알갱이의 정보를 얻었다고 기록합니다.
‘렌즈 찬찬히 보기’를 입력합니다. 이 사례의 전제에 따르면 관찰 시간이나 정밀도 단계가 추가되지 않으므로 여전히 첫 번째 행을 사용합니다. 초안에 ‘눈에 띄는 것은 없다’라고 적혀 있다면 앞선 입력의 정보 결과와 충돌합니다. 이 동의 표현을 삭제할 것이 아니라 응답을 수정해야 합니다.
‘렌즈 분해하기’를 입력합니다. 구조 변화는 관찰 범위를 벗어나므로 분해 동작으로 넘깁니다. 현재의 교육용 초안에는 ‘분해 규칙 추가 필요’라고 표시해도 되지만, 관찰에 성공했다는 응답을 출력해 명령을 처리한 척해서는 안 됩니다.
‘렌즈 케이스 찬찬히 보기’를 입력합니다. 동사는 같지만 대상이 다르므로 두 번째 행을 사용하고 케이스 겉면만 묘사합니다. 응답에 내부 완충재가 언급된다면, 케이스를 열거나 속을 투시하는 동작을 몰래 수행한 셈입니다. 범위를 넘어선 정보는 삭제해야 합니다.
마지막으로 연속 입력을 따로 확인합니다. 먼저 보고, 다음으로 찬찬히 봅니다. 장면이 바뀌지 않았다면 두 번째 응답에서는 이미 발견한 내용을 짧게 되짚어도 됩니다. 다만 표현이 달라졌다는 이유로 단서를 추가하거나, 처음 보았던 흠집을 부정해서는 안 됩니다. 조명이나 물체 상태가 달라졌다면 새로운 전제에 따라 결과를 다시 써야 하며, 응답이 언제나 같아야 한다고 요구해서는 안 됩니다.
통일할 것은 결과의 제약이며, 기준 표현을 되풀이할 필요는 없다
플레이어가 ‘렌즈 찬찬히 보기’를 입력했다고 해서 응답이 기계적으로 ‘보기를 수행했습니다’라고 말할 필요는 없습니다. 기준 동작의 이름은 주로 작가가 대응 관계를 관리하기 위한 것입니다. 본문에서 눈에 보이는 발견을 바로 묘사하면, 대개 플레이어는 무슨 일이 일어났는지 이해할 수 있습니다.
경계를 강조해야 한다면 ‘렌즈는 원래 자리에 그대로 놓여 있다’라는 문장을 남길 수 있습니다. 이 문장은 물체를 움직이지 않았다는 점을 알려 주지만, 그것만으로 분해하지 않았다는 사실까지 입증할 수는 없습니다. 따라서 편집자는 응답 전체에 돌리기, 닦기, 분해하기 같은 동작이 추가되어 있지 않은지 확인해야 합니다.
원고를 넘길 때는 표의 모든 동의 표현을 같은 장면에 하나씩 대입해 정보, 물체 상태, 비용이 일치하는지 확인합니다. 이어서 유사하지만 다른 동작인 반례도 넣어 잘못 포함된 것은 없는지 살펴봅니다. 흔한 실패는 두 가지입니다. 첫머리의 동사만 바꾸고 기존 분기의 결과를 그대로 쓰는 것, 그리고 대상의 차이를 무시한 채 동사를 일괄 치환하는 것입니다.
이 표는 대상과 단일 동작이 이미 명확한 명령 문구에 적용됩니다. 프로그램이 임의의 모든 바꿔 쓰기를 인식한다는 증거가 아니며, 대상 생략, 여러 동작의 연결, 모호한 의도도 다루지 않습니다. 작가가 전달하는 것은 구현과 검토에 사용할 수 있는 의미상의 약속입니다. 어떤 표현이 결과를 공유하고, 어떤 차이를 반드시 남겨야 하는지 정하는 것입니다.






