게임 캐릭터는 플레이어의 어떤 결정을 기억해야 할까?
내러티브 게임 작가에게 기억할 만한 가장 가치 있는 플레이어의 결정은 이후의 장면, 관계 또는 행동을 바꿀 수 있는 것들입니다. 캐릭터가 실제로 목격한 것을 세계에서 일어난 일 및 단순히 전해 들은 소문과 분리하여 추적하세요. 그런 다음 각 기억에 출처, 중요하게 작용하는 이유, 그리고 기억이 희미해지거나 수정될 수 있는 규칙을 부여하세요. 모든 대사를 기억하는 것은 단순한 기록 작업만 늘릴 뿐이지만, 누군가의 행동을 바꾸는 선택을 기억하는 것은 그 선택에 결과를 부여합니다.
나중에 돌아올 결과를 보고 결정을 선택하세요
결정이 캐릭터의 기억에 자리를 잡는 것은 이를 떠올렸을 때 현재 장면이 바뀔 때뿐입니다. 선택을 저장하기 전에 스스로에게 물어보세요: 이 캐릭터가 그 선택으로 인해 무엇을 다르게 행동하거나, 말하거나, 밝히거나, 거절하거나, 제안할 수 있는가? 답이 "아무것도 없다"라면, 그 정보는 퀘스트 로그나 세계 상태 기록에 들어가야 하거나, 애초에 유지할 필요조차 없을 수 있습니다.
실용적인 테스트 방법은 나중의 장면을 먼저 써보는 것입니다. 예를 들어: "검문소에서 경비병은 플레이어가 이전에 자신의 배지를 돌려주었기 때문에 봉인된 장부를 믿고 맡긴다." 만약 이 장면이 기억된 결정에 의존한다면, 관련된 사실을 저장하세요. 경비병이 어느 쪽이든 똑같이 행동한다면, 그 기억은 극적이기보다는 단순한 장식에 불과할 수 있습니다.
유용한 기억은 대개 다음과 같이 겹치는 세 가지 범주로 나뉩니다:
**약속과 대가:** 플레이어가 무언가를 약속했거나, 거절했거나, 희생했거나, 돌려주었거나, 보호했으며, 그 결과가 나중에 중요하게 작용할 수 있는 경우.
**드러난 우선순위:** 제약이 있는 선택 속에서 플레이어가 무엇을 보호하거나 감수하기로 선택했는지는 캐릭터가 이후의 제안을 해석하는 방식을 형성하는 데 도움이 됩니다. 이를 플레이어에 대한 영구적인 진단이 아니라 특정 선택에서 나온 증거로 다루세요.
**미해결된 결과:** 선택으로 인해 인물, 물건, 또는 의무가 변화된 상태로 남겨진 경우. 캐릭터가 나중에 그 상태를 마주하거나 이에 대해 무엇을 할지 결정할 때 이 기억이 중요해집니다.
이것들은 설계 휴리스틱일 뿐이며, 모든 게임에 지속적인 캐릭터 기억이 필요하다는 주장은 아닙니다. 그 가치는 나중의 장면이 기억된 사건에 명확하고 알아볼 수 있는 결과를 부여하는지에 달려 있습니다.
기억을 세계 상태 및 소문과 분리하세요
안정적인 내러티브 시스템은 사건 자체와 그것에 대한 각 캐릭터의 지식을 구분합니다. 플레이어가 열쇠를 몰래 숨길 수도 있고(세계 상태), 동료가 숨기는 것을 목격할 수도 있으며(캐릭터 기억), 상인이 부정확한 이야기를 전해 들을 수도 있습니다(소문). 이를 하나의 플래그로 뭉뚱그리면 캐릭터가 전지전능해 보이거나 단순한 소문을 확실한 증거처럼 여기게 만들 수 있습니다.
결과를 가져오는 각 사건마다 다음 네 가지 질문에 답할 수 있는 충분한 출처 정보를 기록하세요:
**사건(Event):** 세계에서 무슨 일이 일어났는가?. 플레이어가 황동 열쇠를 돌려주었다.
**관찰자(Observer):** 누가 그것을 직접 보거나 들었는가?. 마라가 그 전달 과정을 지켜보았다.
**경로(Channel):** 다른 사람은 그것을 어떻게 알게 되었는가?. 사공이 마라에게 들었다.
**신뢰도(Confidence):** 정보가 얼마나 확실한가?. 직접 목격함(Witnessed), 보고받음(Reported), 논란의 여지가 있음(Disputed).
간결한 디자인 기록은 다음과 같은 형태일 수 있습니다: `returned_key = true`; `Mara.knows_returned_key = witnessed`; `Ferryman.knows_returned_key = reported_by_Mara`. 이는 예시 필드일 뿐, 정해진 기술적 형식이 아닙니다. 중요한 차이점은 세계의 사실이 모든 캐릭터의 지식으로 자동 전환되지 않는다는 점입니다.
이러한 분리는 작가에게 더 나은 장면 선택지를 제공합니다. 마라는 자신이 본 일로서 열쇠 전달에 대해 언급할 수 있습니다. 사공은 불확실성을 담아 이를 전달하거나, 사실인지 묻거나, 와전된 버전을 바탕으로 행동할 수 있습니다. 플레이어가 열쇠를 숨겼는데 아무도 그 행동을 보지 못했거나 숨긴 장소를 발견하지 못했다면, 캐릭터가 그것을 알기 위해서는 그럴듯한 경로가 필요해야 합니다.
나중에 보답이나 대가로 이어질 수 있는 선택지를 만드세요
플레이어가 파손된 신호용 랜턴을 발견하고, 잠긴 문 쇠창살 뒤에서 이븐이라는 이름의 전령이 기다리고 있는 가상의 장면을 생각해 보세요. 플레이어에게는 세 가지 선택지가 있습니다:
**이븐에게 유일하게 작동하는 기름 플라스크를 준다.** 신호는 켜지지 않은 채로 남아 있지만, 이븐은 탈출하여 나중에 메시지를 전달할 수 있습니다.
**기름을 사용해 신호에 불을 붙인다.** 순찰대가 경고를 보지만, 이븐은 도움의 손길이 도착할 때까지 문 뒤에 남아 있습니다.
**기름을 챙겨서 떠난다.** 플레이어는 자원을 보존합니다. 이븐의 당장의 운명은 장면에 정해진 규칙에 달려 있으며, 플레이어의 부재가 목격된 행동으로 잘못 각색되어서는 안 됩니다.
이제 누가 무엇을 알고 있는지 결정하세요. 이븐이 플라스크를 건네받는 것을 보았다면, 그는 도움을 받은 것을 기억합니다. 대신 신호에 불이 켜지는 것을 보았다면, 플레이어가 구조를 요청하기로 한 선택을 기억하면서도 자신이 기다리도록 남겨졌다는 사실도 기억할 수 있습니다. 플레이어가 들키지 않고 떠났다면, 이븐은 플레이어가 외면하고 돌아선 것을 사실대로 기억할 수 없습니다. 다른 캐릭터가 나중에 빈 랜턴이나 사라진 플라스크를 보고할 수는 있지만, 그러한 단서들이 누가 무엇을 가져갔는지 증명하지는 못합니다.
이후의 장면은 단순한 회상이 아닌 행동을 통해 이러한 차이를 표현할 수 있습니다. 이븐은 기름을 받은 후 플레이어에게 메시지를 맡기거나, 도움을 기다린 후에 설명을 요구하거나, 플레이어가 떠나는 것을 보지 못했을 때는 사라진 기름을 플레이어 탓으로 돌리지 않고 반응할 수 있습니다. 이는 이 예시에서 가능한 결과들일 뿐, 보편적인 감정 반응은 아닙니다. 장면은 이븐이 왜 그렇게 반응하는지 근거를 확립해야 하며, 다른 사건들이 그의 반응을 복잡하게 만들 수도 있습니다.
기억을 구체적으로 유지하세요: "이븐이 신뢰한다"보다는 "이븐이 플레이어가 기름 플라스크를 주는 것을 목격했다"가 훨씬 유용합니다. 전자는 사건과 그 출처를 기록하지만, 후자는 단 하나의 사건을 포괄적인 관계의 결론으로 비약시킵니다. 신뢰가 게임 내 변수라면, 이를 갱신하는 규칙과 이것이 영향을 미칠 수 있는 이후의 행동을 보여주세요. 기억된 사건은 관계에 기계적인 지침을 강요하지 않으면서도 영향을 미칠 수 있습니다.
기억에 유효 기간과 수정 경로를 부여하세요
기억된 모든 세부 사항이 영원히 똑같이 생생하게 남아 있을 필요는 없습니다. 극적인 쓰임새에 따라 유지 기간을 설정하세요: 계획된 장면의 조건이 되거나, 의무를 해결하거나, 나중에 다시 언급될 수 있는 동안에는 기억을 유지하고, 더 이상 플레이에 영향을 미치지 않는 사소한 세부 사항은 자연스럽게 잊히도록 하세요. "만료"가 캐릭터가 인생을 바꿀 만한 사건을 타이머에 맞춰 잊어버린다는 뜻은 아닙니다. 단 한 번의 의도된 사용이 끝난 후 게임이 사소한 사실을 대사로 계속 끌고 오지 않는다는 것을 의미할 수 있습니다.
수정은 기억이 소문, 불완전한 관찰, 또는 오해를 불러일으키는 첫인상을 통해 형성되었을 때 중요합니다. 플레이어가 랜턴 기름을 가져갔다고 들은 캐릭터는 플레이어가 그것을 이븐에게 건넸다는 사실을 나중에 알게 될 수 있습니다. 그다음에 무엇이 따를지 결정하세요: 소문 플래그가 수정되는가, 캐릭터가 원래 보고와 수정된 내용을 모두 기억하는가, 아니면 캐릭터가 여전히 납득하지 못하는가? 답은 스토리에 달려 있지만, 수정으로 인해 캐릭터가 이전에 들었던 내용이 조용히 덮어쓰기되어서는 안 됩니다.
유용한 기억 항목에는 `current`(현재), `disputed`(논란 중), 또는 `corrected`(수정됨)와 같은 상태와 갱신 출처를 포함할 수 있습니다. 이는 이후의 대사에서 반박된 소문을 사실인 것처럼 반복하는 것을 방지하는 데 도움이 됩니다. 두 목격자의 의견이 엇갈린다면, 모든 캐릭터의 대사에 단 하나의 전지전능한 진실을 강요하는 대신 중요한 지점에서 그 불일치를 유지하세요.
기억을 실행 가능한 내러티브 상태로 전환하세요
캐릭터의 기억은 가능한 반응으로 연결되어야 합니다. 그 반응에 대한 조건과 그것이 만들어내는 효과를 정의하세요: 무슨 일이 일어났어야 하는지, 누가 그것을 알아야 하는지, 그리고 이후의 장면에서 무엇이 바뀌는지 정의해야 합니다. 이러한 구조는 기억을 테스트 가능하게 만들고, 선택이 게임에 아무런 영향을 주지 못한 채 저장만 되는 일을 방지합니다.
이는 [STORY2GAME](https://arxiv.org/abs/2505.03547)의 제한적이고 관련된 아이디어와 일맥상통합니다. 이 논문은 게임 상태 중 추적해야 할 부분과 행동이 그 상태를 변경하는 방식을 안내하는 전제 조건과 효과를 갖춘 인터랙티브 픽션 행동 생성을 설명합니다. 논문의 초점은 행동 및 게임 상태 생성에 있으며, 평가는 생성된 행동 코드가 생성된 스토리를 플레이하는 과정을 뒷받침하는지 여부를 다룹니다. 이것이 기억된 선택이 작가가 쓴 내러티브나 플레이어 경험을 개선한다는 것을 입증하는 연구는 아닙니다. 작가들에게 유용한 적용점은 더 좁습니다: 기억된 사건이 중요해지는 조건과 그것이 발동할 때의 구체적인 효과를 명시하는 것입니다.
[ACL Anthology의 StratMem-Bench 논문](https://aclanthology.org/2026.acl-long.1491/)은 가상 캐릭터가 캐릭터 중심 대화에서 기억을 어떻게 사용하는지 평가합니다. 해당 벤치마크에는 필수적 기억, 보조적 기억, 무관한 기억이 포함되어 있으며, 보조적 기억이 결정을 복잡하게 만드는 경우보다 필수적 기억과 무관한 기억을 다룰 때 모델이 더 잘 처리했다고 보고합니다. 이것은 가상 캐릭터 대화 벤치마크이지 내러티브 게임 결과 연구가 아닙니다. 게임 작가가 어떤 선택을 저장해야 하는지 규정하지는 않지만, 어떤 기억이 현재 장면에 필수적인지, 단순히 도움이 되는지, 아니면 무관한지 고려해 볼 수 있는 유용한 환기점을 제공합니다.
기억된 결과들을 QA하세요
선택이 이루어지는 순간에 테스트하고, 계획된 각 결과가 나타나는 시점에 다시 테스트하세요. 간결한 QA 검사만으로도 대부분의 개연성 오류를 잡아낼 수 있습니다:
**목격자 확인:** 결정에 대해 언급하는 모든 대사에 대해 화자가 그것을 직접 관찰했는지, 혹은 그럴듯한 정보 출처를 댈 수 있는지 확인하세요.
**분기 확인:** 각 선택 경로를 플레이해 보고 의도한 사건 및 지식 기록이 설정되는지 확인하세요. 상호 배타적인 결과가 둘 다 활성화된 상태로 남아 있지 않은지 확인하세요.
**결과 반영 확인:** 저장된 각 기억이 선택 가능한 대사, 관계적 반응, 장면 조건, 또는 행동을 변경하는지 확인하세요. 아무것도 바꾸지 못한다면 유지할 필요가 있는지 재고하세요.
**소문 확인:** 간접적인 정보가 적절한 불확실성을 띠고 표현되는지, 그리고 수정 사항이 이후 장면에 일관되게 갱신되는지 검증하세요.
**만료 확인:** 기억이 의도대로 사용된 후 그 장면을 다시 확인하세요. 우선순위가 낮은 정보는 더 이상 수면 위로 드러나지 않는지, 해결되지 않은 필수 결과는 여전히 유효한지 확인하세요.
**부재 확인:** 사건이 목격되지 않았거나, 보고된 적이 없거나, 의도적으로 은폐되었을 때 캐릭터가 어떻게 행동하는지 테스트하세요. 플래그가 누락되었다고 해서 기본적으로 알고 있는 상태가 되어서는 안 됩니다.
최종적인 디자인 질문은 간단합니다: 이 선택을 기억함으로써 캐릭터가 지금 다르게 행동할 이유가 생기는가, 그리고 플레이어가 그 이유를 이해할 수 있는가? 답이 명확하다면, 출처가 확실한 소수의 기억이 모든 상호작용의 스크립트보다 더 큰 극적 무게를 지닐 수 있습니다.
