# 게임 디자인 개선 목표와 운영 원칙 작성일: 2026-07-27 ## 목표 `heros_web`를 단순히 콘텐츠가 많은 삼국지 게임이 아니라, 다음 행동이 궁금하고 거점에서 내린 결정이 전투와 동료 관계에서 되돌아오는 전략 RPG로 다듬는다. 개선은 개별 아이디어를 임의로 추가하는 방식이 아니라 아래 순환으로 진행한다. 1. 실제 플레이 흐름과 자동 검증 결과를 감사한다. 2. 검증된 게임 디자인 원칙과 비교한다. 3. 체감 효과, 서사 적합성, 구현 위험으로 우선순위를 정한다. 4. 한 번에 검증 가능한 개선 묶음을 구현한다. 5. 1920x1080, DPR 1, 브라우저 확대 100%에서 전체 흐름을 재검증한다. 6. Gitea와 운영본에 반영하고 다음 묶음의 기준선을 갱신한다. ## 프로젝트의 핵심 기둥 ### 1. 설명보다 행동 초반 학습은 긴 설명창이 아니라 이동, 대화, 준비, 첫 전투의 실제 행동으로 이뤄져야 한다. 새 규칙은 한 번에 하나씩 소개하고, 플레이어가 직접 한 번 수행한 뒤 결과를 즉시 보여 준다. ### 2. 거점과 전투의 왕복 마을·막사에서 얻은 정보, 정한 군령, 선택한 동료와 장비는 다음 전투의 목표·배치·정보·보상에 반영되어야 한다. 전투 결과도 다시 거점의 대사, 공명, 상품, 인물 상태를 바꿔야 한다. ### 3. 역사적 결과보다 플레이어의 관점 유비의 큰 역사 흐름은 유지한다. 선택은 역사적 사건을 무작정 갈라놓기보다 유비가 무엇을 우선했는지, 관우와 장비가 그 결정을 어떻게 기억하는지, 어떤 전술 준비를 했는지를 바꾼다. ### 4. 인물별 가치관이 있는 공명 공명은 정답 대사를 골라 숫자를 채우는 호감도가 아니다. 관우, 장비, 제갈량을 비롯한 동료는 각자의 가치관으로 같은 결정에 다르게 반응해야 한다. 관계 변화는 대사뿐 아니라 원호, 추격, 엄호, 조언 같은 전장 행동으로 보여 준다. ### 5. 읽을 수 있는 전술 위험, 적 의도, 예상 결과, 지형 효과와 다음 행동을 선택 전에 이해할 수 있어야 한다. 어려움은 정보 은폐나 조작 마찰이 아니라 여러 타당한 선택 사이의 긴장에서 나와야 한다. ### 6. 회수 밀도가 높은 전개 필수 대화 한 장면에는 새 인물 정보, 가치관, 다음 행동 단서를 각각 하나 이상 넣되 중복 설명은 피한다. 중요한 선택은 즉시 인물 반응을 보여 주고, 늦어도 다음 전투 3턴 안에 기능이나 후속 대사로 다시 회수한다. ## 1차 우선순위: 초반 30분 초반의 현재 강점은 유비·관우·장비의 만남을 직접 이동하며 경험하고, 막사에서 정찰·대열·보급을 확인한 뒤 전투로 이어진다는 점이다. 가장 큰 약점은 첫 전투 직전까지 플레이어가 이야기의 진행 순서를 따를 뿐, 자신의 전술적 우선순위를 결정하지 못한다는 점이다. 첫 개선 묶음은 다음 조건을 만족해야 한다. - 추정의 출전 명령에서 첫 군령을 직접 선택한다. - 선택지는 기존 `정예`, `기동`, `공성` 전투 평가 체계와 연결한다. - 선택 전에 달성 조건과 보상을 명확히 보여 준다. - 초반 맥락에 맞춰 `공성`은 `거점`으로 풀어 쓰고 실패해도 기본 보상에는 불이익이 없음을 알린다. - 카드를 비교한 뒤 확정하며, 확정 전에는 선택을 자유롭게 바꿀 수 있다. - 관우나 장비가 선택의 성격에 맞게 즉시 반응한다. - 저장 후 다시 시작해도 선택이 유지된다. - 첫 전투 HUD, 평가와 보상이 같은 선택을 사용한다. - 기존 대사를 줄여 선택 추가가 전체 클릭 수 증가로 이어지지 않게 한다. - 동료 합류 이동 중 들어온 첫 이동 입력을 보존하고, 목표 NPC 한 번 클릭이 장애물을 우회해 대화 거리까지 이어지게 한다. - 내레이터 대사에는 빈 초상 틀을 남기지 않고 본문 폭을 넓힌다. ### 완료한 2차 묶음: 막사 준비의 전투 회수 - 관우의 정찰 완료: 작전판에 경로·적 표식이 남고, 첫 배치부터 적 의도와 예상 표적을 볼 수 있다. - 장비의 대열 정비 완료: 훈련장에 의병 4명이 실제로 정렬되고, 첫 배치의 예비 시작칸이 기본 2곳에서 4곳으로 늘어난다. - 군수관 점검 완료: 보급 수레에 물·상처약·천이 적재되고, 첫 전투에서 관우가 상처약 1개를 받는다. - 첫 배치 패널에서 세 결과를 한 줄로 확인하며 새 모달은 추가하지 않는다. - 막사 준비 요약 아래에 플레이어가 고른 첫 군령도 함께 남겨, 새 정보가 직전 선택의 의미를 덮지 않게 한다. - 잘못된 배치 칸을 단순히 가리킬 때 뜨던 큰 경고는 없애고, 실제 클릭했을 때만 사이드 패널에서 제한을 설명한다. - 필수 점검과 군령 반응의 중복 대사를 줄여 진행 입력을 약 7회 줄인다. ### 완료한 3차 묶음: 막사의 약속과 첫 승리 회고 - 젊은 의병과 끝까지 대화하면 선택적 약속을 저장하되, 필수 점검 수나 출전 조건에는 포함하지 않는다. - 약속한 첫 전투의 실제 첫 공격에서 기존 자동 소멸 안내의 세 번째 줄로 의병의 반응을 회수한다. 새 확인창이나 추가 입력은 만들지 않는다. - 대화하지 않았을 때는 기존 두 줄 안내를 유지하고, 이후 전투에는 약속이 나타나지 않는다. - 첫 승리 뒤 관우와 장비는 저장된 실제 군령, 달성 여부, 실패 조건, 턴과 전공을 서로 다른 말투로 회고한다. - 관우는 조건과 다음 보완점을 분석하고, 장비는 달성의 기세와 사람의 전공을 강조한다. - 회고 문장은 저장 데이터에서 매번 파생하고 공유 이야기 원본을 바꾸지 않는다. 오래된 저장처럼 군령 결과가 없거나 불완전하면 기존 대사를 그대로 사용한다. - 세 군령의 달성·미달 여섯 조합, 선택 대화의 저장·재개, 첫 교전 중복 방지, 이후 전투 누출 방지와 1920x1080 배치를 자동 검증한다. ### 완료한 4차 묶음: 회고를 다음 준비 행동으로 - 첫 승리에서 선택한 군령, 달성 여부와 첫 미달 조건을 첫 군영에서도 같은 저장 기록으로 다시 파생한다. - 첫 군영의 대화 탭과 관련 동료 대화 한 곳에만 `회고` 표식을 보여 주며, 정적 대화 ID·선택지·공명 보상은 유지한다. - 관련 대화는 군령별 인물 조합과 실제 결과에 맞는 짧은 세 줄로 바꾸되, 오래되거나 불완전한 저장은 기존 대사를 그대로 사용한다. - 첫 추격전 브리핑에서 회고의 한 가지 보완 또는 확장 과제를 보여 주고 `추천 군령 보기`로 해당 작전 명령 카드를 강조한다. - 추천은 군령을 자동 선택하지 않는다. 플레이어가 조건과 보상을 다시 확인하고 직접 선택한 순간에만 기존 저장 흐름으로 반영한다. - 미달했다면 같은 군령의 첫 미달 조건을 보완하고, 완수했다면 잔당 추격전의 성격에 맞는 기동 군령을 다음 학습 과제로 제안한다. ### 완료한 5차 묶음: 실제 협공을 전우의 기억으로 - 첫 전투의 일반·핵심 공명 추격을 관계별로 기록하고, 시도·성공·추가 피해를 전투 저장과 결과 보고서에 함께 보존한다. - 성공한 관계를 우선하되 성공 횟수, 추가 피해, 시도 횟수와 안정적인 관계 ID 순으로 대표 기억 하나를 결정한다. 실패한 시도만 있어도 엇갈린 호흡을 보완하는 대화로 회수한다. - 첫 군영에 실제 두 사람과 결과를 반영한 `전우 기억` 대화를 추가하고, 선택을 마친 뒤에도 출전 조합은 자동으로 바꾸지 않는다. - 플레이어가 다음 황건 추격전에서 기억 속 두 사람을 직접 핵심 공명조로 지정한 경우에만 추격 확률을 `+5%p` 높인다. - 후보 카드와 선택·전투 결과에는 기본 확률, 전우 기억 보너스와 최종 확률을 나누어 보여 주며, 다른 조합·무선택·이후 전투에는 보너스를 적용하지 않는다. - 오래된 저장은 그대로 읽고, 오염된 관계·무장 참조는 제거하며, 전투 저장 재개와 두 번째 전투 재도전에서도 보너스를 중복 가산하지 않는다. ### 완료한 6차 묶음: 첫 승리 뒤 직접 걷는 정찰 - 첫 승리 뒤 정적인 방문 카드 대신 유비를 직접 움직여 간옹에게 가고, 강가 매복과 마을 구호 중 다음 추격전의 정찰 우선순위를 정한다. - 유비·간옹을 전투용 말이 아닌 별도의 SD 이동 인물로 보여 주고, 대화창은 전신 대신 얼굴 중심 초상을 사용한다. - 목표 인물 한 번 클릭으로 장애물을 피해 대화 거리까지 이동하며, NPC는 순간이동하지 않고 제자리에서 유비 쪽만 바라본다. - 선택은 공명·물자 보상에 그치지 않고 두 번째 전투의 배치 정보와 개전 대사로 이어진다. - 이동, 거리 제한, 선택 저장, 중복 보상 방지, 군영 복귀를 1920x1080 브라우저에서 자동 검증한다. ### 완료한 7차 묶음: 두 번째 승리의 현장 수습과 전투 회수 - 두 번째 승리 직후 북쪽 마을과 나루를 직접 걸으며 관우 → 사공 → 장비 → 간옹 순서로 현장을 확인한다. - 첫 정찰에서 무엇을 택했는지와 실제로 마을 보호·신속 격파를 달성했는지 함께 회고해, 성공을 거짓으로 칭찬하거나 실패를 잊지 않는다. - 세 현장 확인은 즉시 저장된다. 군영으로 돌아갔다가 다시 들어와도 다음 조사 지점부터 이어지며 최종 방침을 중복 선택할 수 없다. - 마을 보급을 택하면 세 번째 전투에서 유비가 휴대 콩 1개를 더 받고, 나루 추적을 택하면 배치 단계에서 전령 마원 한 명의 첫 움직임만 먼저 확인한다. - 낮 강변 환경음, 지면별 발소리, 목표 완료의 시각·음향 신호를 함께 사용해 소리를 듣지 못해도 진행 상태를 이해할 수 있게 한다. ### 완료한 8차 묶음: 세 번째 승리의 결과별 우선 귀환 대화 - 세 번째 전투에서 실제로 강가 요새를 확보했는지, 30턴 안에 승리했는지, 몇 턴이 걸렸는지를 승리 기록에서 함께 읽는다. - 요새를 놓쳤다면 유비·관우의 방어선 회고, 요새는 지켰지만 늦었다면 유비·장비의 추격 속도 회고, 둘 다 달성했다면 관우·장비의 본영 진입 대화를 `새 이야기 · 우선`으로 한 곳만 제시한다. - 전투 결과와 반대되는 칭찬을 하지 않으며, 오래되거나 손상되어 목표와 턴을 신뢰할 수 없는 저장은 기존 정적 대사를 그대로 사용한다. - 출진 준비의 `공명 대화` 권장은 우선 귀환 대화 한 건만 완료하면 충족된다. 나머지 두 대화와 공명 보상은 사라지지 않고 자유 선택으로 남는다. - 우선 대사를 완료하면 대화 탭과 카드의 새 이야기 표식이 사라지고, 다시 군영에 들어와도 완료 상태를 유지한다. - 네 가지 목표 조합과 Canvas·WebGL의 1920x1080 진행을 자동 검증한다. ### 완료한 9차 묶음: 세 번째 군영의 준비 우선순위와 네 번째 전투 회수 - 세 번째 승리 뒤 군영에서 `본영 정보`, `장비 정비`, `동료 공명` 가운데 이번 출진의 준비 우선순위 하나를 직접 정한다. - 승전 보고의 정보·장비 범주를 실제로 확인했거나 결과별 우선 귀환 대화를 완료한 항목만 선택할 수 있어, 보지 않은 활동을 완료한 것처럼 취급하지 않는다. - 본영 정보는 배치 때 표식 선봉의 첫 행동을 보여 주고 첫 3턴 안 해당 대상 첫 공격의 명중을 한 번 `+10%p`, 장비 정비는 같은 기간 아군의 첫 피격 피해를 한 번 `-8%` 보정한다. - 동료 공명은 우선 귀환 대화에 참여한 정확한 공명조에만 첫 3턴 협공 확률 `+5%p`를 적용하며, 다른 조합에는 옮겨 붙지 않는다. - 선택부터 네 번째 전투의 배치·턴·결과까지 같은 `selectionRecordId`와 항목명을 사용하고, 결과에서 실제 발동 여부와 횟수를 되돌려 보여 준다. - 전투 저장에는 발동 소비 여부, 공명 시도·성공 횟수와 막은 피해를 함께 보존해 재개해도 효과가 되살아나거나 중복 적용되지 않게 한다. - 전투 장면을 연속으로 재사용해도 이전 전투의 턴과 진영이 남지 않도록 매 전투를 `1턴 · 아군`에서 초기화한다. ### 완료한 10차 묶음: 서주 구입 장비의 장착과 여덟 번째 전투 회수 - 서주 시장의 무기·방어구·보조구를 서로 다른 아이콘으로 보여 주고, 보유량과 해당 도시의 실제 구매 횟수를 함께 남긴다. - 구입 뒤 `장착 비교`로 군영의 정확한 장비와 권장 무장에게 이어지되 자동 장착하지 않는다. 비교 취소는 장비·재고·준비 기록을 바꾸지 않는다. - 시장에서 군영으로 넘어가는 장착 의도는 저장 슬롯에 남아 새로고침해도 복원되며, 대상 무장을 바꾸면 그 선택도 보존한다. 준비 확정 또는 해당 군영 종료 뒤에는 임시 의도를 제거한다. - 현재 장비보다 전투 수치가 좋아지지 않는 후보는 준비 장비로 잘못 기록하지 않는다. 아직 전투 효과가 없는 군량 주머니는 이를 숨기지 않고 `보유 확인`과 `추가 전투 기여 없음`으로 구분한다. - 장비의 기존 능력치는 전투 계산에 이미 적용되므로 별도 강화 효과를 중복 가산하지 않는다. 같은 공격을 이전 장비로 계산한 기준값과 비교해 실제로 늘어난 피해나 줄어든 피해만 기여도로 집계한다. - 출전 편성, 여덟 번째 전투 배치, 전투 HUD와 결과 보고에서 같은 도시, 구매 기록, 무장, 장비와 교체 수치를 사용한다. 준비 무장을 빼면 `미반영`으로 표시하고 자동으로 다시 편성하지 않는다. - 실제 기여 횟수와 추가 피해·감소 피해를 전투 저장, 최신 보고서와 해당 전투 정산에 보존한다. 이후 장비를 바꿔도 과거의 정당한 기록은 지우지 않되, 위조된 장비·유령 무장 참조는 각 전투 당시 명단으로 걸러 낸다. - 장비 교체 저장이 실패하면 재고와 장착 상태를 함께 되돌려 반쪽 상태가 남지 않게 한다. - 전투 HUD와 결과가 강조하는 도시 장비는 `이번 출전의 대표 준비 1건`이다. 여러 장비를 장착하면 모든 능력치는 정상 적용되지만, 시장에서 군영으로 마지막 연결한 준비만 성과로 강조해 결과가 장비 목록처럼 번잡해지지 않도록 한다. ### 완료한 11차 묶음: 초반 전투의 행동 학습과 키보드 지휘 - 첫 전투의 선택 → 이동 → 공격 → 피해 예측 확인을 설명 화면이 아니라 실제 전장에서 한 번씩 직접 수행하는 4단계 안내로 바꿨다. - 이동 전후 적 의도와 개인·전군 기대 피해 차이, 공격·반격의 피해·명중· 전투 뒤 HP를 같은 판단 흐름 안에서 비교할 수 있게 했다. - 배치, 부대 선택, 이동, 명령, 대상 예측과 확정을 방향키·Tab·Enter·Esc로 끝까지 진행할 수 있게 하고, 비활성 명령은 자동으로 건너뛴다. - 행동을 마친 장수는 지도 표식·명암·부대 목록·상세 정보에서 같은 상태로 표시하며, 마지막 이동만으로 턴 종료 확인창이 열리지 않게 유지한다. ### 완료한 12차 묶음: 탐색 인물 연출과 끊기지 않는 음향 흐름 - 마을·의용군 막사·전투 사이 체류의 이동 인물을 전투 장수와 구분되는 프로젝트 고유 SD 인물로 통일하고 방향·보행 동작을 보강했다. - 대화창은 전신 대신 얼굴 중심 초상으로 맞추고, 말하는 인물과 배경· 이동 인물이 서로 다른 사람처럼 보이지 않게 공통 자산 규칙을 적용했다. - 장비가 관우 곁으로 순간이동하던 동선을 제거하고, 목표 인물에게 실제로 걸어가 도착한 뒤 대화를 시작하도록 우회 경로와 자동 상호작용을 다듬었다. - 발걸음과 반복 전투 효과음에 작은 변화를 주고, 음악·환경음의 볼륨 전환을 짧게 보간해 장면 이동과 대화 시작 때 소리가 갑자기 끊기지 않게 했다. ### 완료한 13차 묶음: 놓치지 않는 전우 기억과 다시 찾는 실전 안내 - 첫 승리 뒤 기본 동선을 `북문 정찰 → 핵심 회고 → 전우 기억 → 출진`으로 연결한다. 전우 기억을 마치면 주 행동은 `전우 조 편성하기`로 바뀐다. - 다음 전투 한정 전우 기억 `+5%p`를 회고하지 않았거나 정확한 두 사람을 핵심 공명조로 지정하지 않은 채 출진하면, 첫 입력에서 손실을 구체적으로 알리고 같은 조건에서 한 번 더 확인해야만 보너스 없이 진행한다. - 전투 HUD에 `메뉴 M`을 항상 보이게 두고, M·방향키·Tab·Enter·Esc만으로 턴 종료·위험 범위·저장·전황·음향 등 모든 지도 메뉴 기능을 다룬다. - `실전 안내`에서 기존 4단계 실제 조작을 완료 여부와 관계없이 다시 시작할 수 있다. 현재 배치로 공격까지 이어지는 경로가 없으면 이유와 다시 시도할 시점을 알려 주며, 진행 중에는 `K`로 건너뛸 수 있다. - Canvas와 WebGL 모두 1920x1080 CSS viewport, 100% 확대, DPR 1에서 포인터 입력 없이 메뉴와 4단계 전투 조작을 자동 검증한다. ### 완료한 14차 묶음: 한 번만 기뻐하고 필요할 때 다시 보는 승전 정산 - 레벨 종료 뒤 여러 보상·알림·추가 클릭을 겹치면 실제 이탈 지점이 될 수 있다는 [OMG: TD! 포스트모템](https://www.gamedeveloper.com/business/postmortem-red-rocket-games-omg-td-)과, 한 화면은 한 가지 플레이어 요구에 집중시키라는 [Maxis의 GDC UX 설계 자료](https://media.gdcvault.com/gdc2017/Presentations/rybicki-Holistic_UX_design-PDF.pdf)를 현재 첫 승리 흐름의 기준으로 삼았다. - 전투 결과는 금화·물자·성장과 승리 성취를 확인하는 유일한 필수 정산으로 남긴다. 상단의 중복 금액은 `달성 목표`로 바꾸고, 간옹 이름과 다음 전장 제목은 후일담보다 먼저 공개하지 않도록 수량만 알린다. - 첫 승리 후일담 5페이지에서는 시스템 보상 스트립을 없애고 마을의 변화, 관우·장비의 반응, 간옹의 등장과 다음 사건만 이야기한다. - 군영 도착은 6카드 모달로 흐름을 막지 않는다. 정산 완료를 짧게 알리고 장비·보급·합류·해금의 `NEW` 상태는 실제 사용 화면까지 유지한다. - 항상 보이는 전투 보고는 승패·턴·목표·MVP만 요약한다. 정확한 금액과 전체 획득 내역은 `보상 장부`를 눌렀을 때만 다시 열며, 장부의 기본 행동은 군영 탐색과 경쟁하지 않는 `장부 닫기` 하나로 고정한다. - 첫 두 출진 준비의 `지난 보상` 반복을 제거하고 다음 전투의 예상 보상만 남겼다. 결과→후일담→군영→장부 역할은 정적 계약과 1920x1080 브라우저 회귀 검증으로 고정한다. ### 완료한 15차 묶음: 끝내기 전에 결과를 읽는 턴 종료 위험 예보 - 모든 적 의도와 표적·공격 유형을 행동 전에 공개해 대응 자체를 전술로 만든 [Into the Breach GDC 포스트모템](https://media.gdcvault.com/gdc2019/presentations/Into%20the%20Breach%20Postmortem%20Final.pdf)과, HP·피해·명중·치명 정보를 분리해 선택 전에 비교하게 하는 [Nintendo의 Fire Emblem: Radiant Dawn 공식 전술 안내](https://www.nintendo.com/en-gb/Games/Wii/Fire-Emblem-Radiant-Dawn-281265.html)를 턴 종료 위험창의 정보 구조 기준으로 삼았다. - 되돌릴 수 없는 행동 전에 검토·취소 기회를 주라는 [Xbox XAG 115](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/115)와, 색상 신호를 텍스트·아이콘 같은 추가 단서로 반복하라는 [Xbox XAG 103](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/103)을 확인 흐름과 위험 표현의 접근성 기준으로 적용했다. - 턴 종료 위험창은 위험 대상별 카드를 최대 2개까지 보여 준다. 각 카드에는 공격 횟수·기대 피해·최대 피해·명중률 범위·현재 HP를 함께 배치하고, `집중 공격`과 `격파 가능`을 색상뿐 아니라 명시적인 텍스트로 표시한다. 나머지 대상은 `외 N명`으로 요약해 창의 정보 밀도를 제한한다. - 미행동 장수가 남은 조기 종료에서는 `계속 지휘`에 안전 기본 포커스를 두고, 미행동 포기와 턴 종료는 별도의 위험 행동으로 남긴다. 마지막 장수의 이동만 끝났을 때는 확인창을 자동으로 열지 않는다. 모든 아군의 명령까지 끝난 정상 확인과 플레이어가 직접 요청한 조기 종료 모두 현재 위치를 기준으로 위험을 다시 계산해 보여 준다. - 대상 카드·초과 요약·안전 기본 포커스·텍스트 위험 경고가 잘리지 않고 실제 전투 예보와 일치하는지를 Canvas와 WebGL 모두 1920x1080 CSS viewport, 100% 확대, DPR 1에서 자동 검증하는 계약으로 고정한다. ### 완료한 16차 묶음: 길을 잃지 않고 미래를 미리 보지 않는 진군 기록 - 현재 목표를 언제든 다시 보고 완료 기록을 구분해 보존하라는 [Xbox XAG 109](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/109)와, 목표 알림을 상시·사용자 요청·장시간 비활동 가운데 알맞은 방식으로 제공하라는 [Game Accessibility Guidelines](https://gameaccessibilityguidelines.com/indicate-allow-reminder-of-current-objectives-during-gameplay/)를 공통 기록의 기준으로 삼았다. - 다음 주 임무와 현재 임무 목록을 분리하고 완료 내역은 별도 기록에서 다시 보게 하는 [Final Fantasy XIV 공식 안내](https://na.finalfantasyxiv.com/game_manual/view/)와, 최근 사건·다음 단서·지금까지의 이야기를 서로 다른 기록으로 나누는 [Dragon Quest VII 공식 설명서](https://www.nintendo.com/eu/media/downloads/games_8/emanuals/nintendo_3ds_2/dragonquest7/ElectronicManual_Nintendo3DS_DragonQuest7_EN.pdf)를 정보 계층의 기준으로 적용했다. - 캠페인 상태만으로 `◆ 진행`, `✓ 완료`, `? 실마리`를 계산하는 공통 진군 기록을 만들었다. 첫 마을·의용군 막사·승전 후일담·성 체류·전투 사이 탐색·출진 준비·엔딩까지 같은 규칙으로 최근 완료, 지금 할 일, 다음 단서를 연결한다. - 마을·막사·성·막간 탐색과 이야기 화면에서는 상단 버튼이나 `J`로 진군 기록을 열고 `J`·`Esc`로 닫는다. 군영에서는 기존 연표를 `기록 J` 탭으로 바꾸고 같은 세 항목을 한 화면에서 보여 준다. - 군영 기록은 도달한 큰 흐름과 현재 장만 공개한다. 시작 직후부터 형주 붕괴·백제성·남만·오장원 같은 먼 미래 장과 전장 조건을 보여 주던 스포일러를 제거하고, 패널 하단이 FHD 화면 밖으로 잘리던 배치도 함께 바로잡았다. - 타이틀의 저장 기록은 막연한 캠페인 단계 대신 저장 당시의 `지금 할 일`을 요약한다. 전투 안의 승리 조건과 전술 목표는 기존 전투 HUD가 계속 담당해 캠페인 단서와 전술 지시를 섞지 않는다. - 66개 전투 경계의 미래 정보 격리와 목표 순서를 정적으로 검사하고, Canvas·WebGL의 1920x1080 CSS viewport, 100% 확대, DPR 1에서 포인터·J·Esc 재열기, 카드 경계·비겹침·저장 불변을 자동 검증한다. ### 완료한 17차 묶음: 저장한 순간으로 돌아가는 탐색 (2026-07-28) - 불러오기는 허브가 아니라 저장한 지점으로 돌아와야 하고 대화 중 저장을 막거나 허브로 돌려보내는 구현은 실패 사례라는 [Microsoft Save Anytime 기준](https://learn.microsoft.com/en-us/xbox/accessibility/accessibility-feature-tags#gameplay-features---save-anytime)을 현재 체류 흐름의 기준으로 삼았다. - 중단 지점에서 다시 시작하는 [Fire Emblem: Shadow Dragon 공식 Suspend Point](https://www.nintendo.com/eu/media/downloads/games_8/emanuals/nintendo_ds_21/Manual_NintendoDS_FireEmblemShadowDragon_EN.pdf)와 [Dragon Quest IX 공식 Quick-save](https://csassets.nintendo.com/noaext/image/private/t_KA_PDF/DS_Dragon_Quest_IX?_a=DATC1RAAZAA0)처럼, 캠프 단계만 저장하지 않고 현재 탐색 장소를 독립된 재개 상태로 보존한다. - `activeCampVisitId`는 첫 정찰 막사, 북쪽 마을·나루 구호 현장, 광종 연합군 주둔지의 안정 ID만 허용한다. 해당 승리·캠페인 단계가 일치할 때만 복원하며, 구버전·손상·이미 지난 저장에서는 자동으로 제거한다. - 군영에서 탐색으로 전환하기 직전에 재개 상태를 저장하고, 탐색 장면도 직접 진입과 재로드를 방어한다. 정상적으로 군영에 복귀할 때만 지우며 장면 로딩 실패 시에는 이전 값을 복원한다. - 타이틀 이어하기는 일반 군영보다 현재 탐색을 먼저 복원한다. 저장 카드에는 탐색 장소와 `방금 마친 일 → 지금 할 일`을 함께 요약한다. - 마을·의용군 막사·광종 주둔지의 도입은 장면에 들어온 순간이 아니라 마지막 대사를 읽은 순간에만 완독 처리한다. 대화 도중 종료하면 다음 재개에서 첫 줄부터 안전하게 다시 들려준다. - 버전이 있는 `explorationCheckpoint`를 도입해 세 막간 탐색, 서주·신야·성도 체류, 프롤로그 마을·의용군 막사의 주인공 좌표와 방향을 정확히 보존한다. 대화 상대와 대사 위치, 선택창, 상점, 아직 확정하지 않은 첫 군령 카드도 문자열 원문이나 실행 함수를 저장하지 않고 안정 ID로 다시 구성한다. - 막사 세 곳·도시·프롤로그 두 장면마다 허용하는 대화·선택·상점 상태를 따로 검사한다. 손상되거나 구버전인 보조 화면만 버리고 유효한 위치는 살리며, 이미 다른 장소로 이동한 뒤 도착한 늦은 저장 요청은 기존 최신 체크포인트와 저장 시각을 전혀 바꾸지 않는다. - 이동이 멈춘 때와 대화·선택·상점의 의미 있는 경계, 브라우저 숨김·종료 직전에 체크포인트를 갱신한다. 타이틀 이어하기는 전투 저장 다음으로 이 체크포인트를 우선해, 프롤로그 도입을 다시 거치거나 체류 허브로 밀려나는 일을 막는다. - 캠프 선택과 공명 보상은 상태 변경·완료 표식·선택 직후 대화 체크포인트를 한 번의 저장으로 확정한다. 도시의 반복 구매에는 의도 ID와 완료 영수증을 붙여 같은 입력을 재시도해도 금전과 장비가 한 번만 바뀌게 했다. 이는 재시도를 안전하게 만드는 [AWS의 멱등 API 지침](https://aws.amazon.com/builders-library/making-retries-safe-with-idempotent-APIs/)과 변경 묶음이 전부 적용되거나 전부 취소되어야 한다는 [W3C IndexedDB 트랜잭션 모델](https://www.w3.org/TR/IndexedDB/#transaction-concept)을 로컬 저장 흐름에 맞게 적용한 것이다. - 전투 승전 정산을 같은 보고서로 다시 실행해도 이미 소비한 금전·장비를 되살리거나 이후 바꾼 장비·공명·체류 위치를 과거로 되감지 않는다. 이미 확정된 승리 뒤 늦게 들어온 패배 기록도 무시하며, 저장 실패 시 화면 속 상태만 앞서 바뀌는 현상도 막았다. 활성 슬롯을 정본으로 먼저 저장하고 구버전 호환 저장은 보조 사본으로 다뤄, 둘째 쓰기 실패가 유효한 진행을 무효화하지 않게 했다. - Canvas·WebGL 각각 1920x1080 CSS viewport, 100% 확대, DPR 1에서 정확한 위치·방향·대사 줄·선택창·상점·군령 카드 복원과 보상 1회성, 정상 퇴장 시 체크포인트 제거를 자동 검증한다. ### 완료한 18차 묶음: 마지막으로 읽은 대사에서 이어지는 이야기 (2026-07-28) - 이야기 배열의 순번 대신 장면과 대사의 안정적인 `sequenceId`·`beatId`를 저장한다. 대사 추가나 순서 변경 뒤에도 같은 대사를 다시 찾고, 기존의 순번 전용 저장과 과거 ID는 호환 변환표를 거쳐 새 형식으로 옮긴다. - 이야기 체크포인트를 `reading`과 `handoff`로 나눈다. 읽는 중에는 정확한 페이지를 복원하고, 마지막 대사를 확인한 뒤에는 같은 마지막 페이지를 재생하지 않고 목적 장면으로 바로 이어 간다. - 페이지를 넘길 때 다음 페이지를 먼저 저장하고, 브라우저 숨김·종료 때 화면에 보이는 대사를 다시 확정한다. 이미 목적 장면으로 넘긴 뒤 들어온 늦은 저장 요청이나 이전 revision의 요청은 완료 상태를 되살리지 못한다. - 새 캠페인 시작, 마을·의용군 막사 완료, 전투 승리 정산, 군영 출진은 캠페인 단계 변경과 다음 이야기 첫 대사를 한 번의 저장으로 확정한다. 저장이나 장면 로딩이 실패하면 이전 캠페인 전체를 되돌려 반쪽 진행을 남기지 않는다. - 타이틀 이어하기는 이야기 체크포인트를 낡은 진행 중 전투 저장보다 먼저 본다. 일반·특수 출진과 승전 후일담을 안정 ID로 다시 구성하며, 전투 보고에서 `편성 보완`을 골랐다면 후일담 뒤 군영의 해당 화면까지 의도를 보존한다. - 새 출전을 확정할 때 전투 저장 세대를 함께 올리고, 전투 저장에도 같은 세대를 기록한다. 브라우저가 낡은 파일 삭제를 거부하더라도 이전 세대의 전투는 타이틀 이어하기뿐 아니라 전투 안의 수동 불러오기에서도 후보가 되지 않으며, 새 전투에서 만든 같은 세대의 저장만 다시 열린다. - 새 캠페인으로 1번 슬롯을 덮을 때에는 기존 슬롯보다 높은 전투 저장 세대를 먼저 정식 저장한 뒤 낡은 전투 파일을 정리한다. 새 캠페인 저장 자체가 실패하면 기존 캠페인과 진행 중 전투를 모두 그대로 보존하고, 파일 삭제가 거부되더라도 논리 세대가 이전 플레이의 부활을 막는다. - 마지막 대사에서 목적 장면 시작을 요청한 것만으로 handoff를 지우지 않는다. 출발 장면은 이를 유지하고, 목적 장면이 자신의 캠페인 단계나 후일담 정산을 먼저 확정해 그 단계만으로 복구할 수 있게 된 뒤 정확한 sequence와 revision을 소비한다. 따라서 로딩 도중 종료되어도 이어하기 목적지를 잃지 않는다. - 승전 후일담에서 군영으로 넘어갈 때에는 전투 정산 표식과 이야기 handoff가 모두 정확히 일치해야 둘을 한 번에 소비한다. 전투 결과 저장이 일시적으로 실패하면 승패 모두 결과창에 `저장 다시 시도`를 제공하고, 저장 전에는 재도전·타이틀·편성 보완 이동을 잠가 결과를 버리는 이탈을 막는다. 저장에 성공한 뒤에만 정상 버튼을 되살리고 후일담이나 재도전으로 진행한다. - 예전 저장의 `first-victory-story` 단계도 마지막 대사 handoff와 단계 전환을 한 번에 확정해 `first-camp`로 옮긴다. 보상을 다시 지급하지 않으면서 같은 첫 승리 이야기가 계속하기 때마다 반복되는 구버전 저장 루프를 없앤다. - 승리의 `다음 출전 보완`과 패배의 `재도전 보완`은 출발 전투·목표 전투· 목표 캠페인 단계·보완 종류를 `sortiePreparationCheckpoint`에 함께 남긴다. 타이틀 이어하기는 낡은 전투 저장보다 이 명시적 목적지를 먼저 복원하고, 군영은 장면 전달값이 없어도 편성 보완 화면을 다시 연다. 실제 출전을 한 번의 저장으로 확정할 때만 이를 소비하며, 전투 결과·단계가 어긋난 구버전이나 변조 상태는 로드 시 자동 폐기한다. - 승리 결과 저장에 이미 동일한 기본 후일담 첫 대사가 들어 있으면 계속하기가 같은 내용을 다시 쓰지 않는다. 결과 저장 뒤 저장 권한이나 용량이 나빠져도 이미 안전하게 확정된 후일담으로 이동하는 데 불필요한 두 번째 쓰기가 장애가 되지 않는다. - 469개 이야기 대사의 ID 전역 중복을 정적 검사하고, 저장 정규화·구버전 변환·저장 실패 불변성·handoff 경합을 함께 검증한다. Canvas·WebGL 각각 1920x1080 CSS viewport, 100% 확대, DPR 1에서는 정확한 페이지·화자·문구· 배경·초상 복원과 목적 장면 소유권 이전 전후 handoff 수명을 자동 확인한다. - 스토리 체크포인트·전투 저장 세대·결과 저장 재시도 브라우저 검사는 개발 서버가 아니라 현재 `dist`의 해시 자산을 소유한 미리보기 서버에서 수행한다. 다른 프로세스가 같은 포트에서 응답하면 재사용하지 않고 실패시키며, 응답 제한시간과 종료 대기를 둔다. 운영 배포 시작 전에는 추적 파일뿐 아니라 미추적 파일도 없는지 확인해 로컬에만 존재하는 소스로 배포되는 일을 막는다. ### 완료한 19차 묶음: 결과를 읽고 안전하게 이어지는 전투 (2026-07-29) - 현재 목표와 다음 행동을 분명히 유지하라는 [Xbox XAG 109](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/109), 핵심 전투 결과를 시각·음향·텍스트 가운데 하나에만 맡기지 말라는 [Xbox XAG 103](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/103), 플레이어가 시작하지 않은 화면 맥락 전환은 먼저 알리라는 [Xbox XAG 114](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/114)를 턴 전환과 전투 저장의 무결성 기준으로 함께 적용했다. - 마지막 아군의 공격이나 지원 명령이 행동 수를 모두 소모했더라도 피해·회복· 공명·상태 변화의 시각·음향 결과와 결과 문구가 완전히 끝나기 전에는 턴 종료 확인창을 열지 않는다. 결과를 읽을 수 있는 안정 상태에 도달한 뒤에만 확인창을 표시해 마지막 행동의 의미를 모달이 가리거나 입력 초점이 갑자기 바뀌지 않게 한다. - 완료된 아군 행동은 결과 정산까지 끝난 안전 경계에서 전투 자동저장에 반영한다. 명령이나 연출이 진행 중이지 않은 유휴 상태와 안전한 `pagehide`에서도 같은 체크포인트를 갱신해, 브라우저를 닫거나 숨긴 뒤 이어해도 이미 끝낸 행동을 되풀이하거나 결과를 잃지 않게 한다. - 명령 선택·공격 및 지원 연출·적군 턴처럼 상태가 반쯤 적용될 수 있는 구간에서는 새 자동저장을 만들지 않는다. 이때 숨김이나 종료 신호가 들어와도 마지막으로 확정된 안전 체크포인트를 그대로 보존하고, 불완전한 명령·피해·행동 소비가 정상 저장을 덮어쓰지 못하게 한다. - 마지막 공격·지원 결과와 턴 종료 확인의 순서, 아군 행동별 자동저장, 안전한 유휴·`pagehide` 저장, 불안전한 명령·연출·적군 턴의 체크포인트 불변성을 Canvas와 WebGL 모두 1920x1080 CSS viewport, 100% 확대, DPR 1에서 자동 회귀 검증한다. 다음 묶음은 탐색 대사에도 문구나 순서가 바뀌어도 같은 장면을 찾는 안정적인 `beatId`와 구버전 변환표를 더한다. 이후에는 전투·이야기·탐색의 모든 중단 지점이 “중단해도 읽고 행동한 만큼만 이어지는” 같은 원칙을 공유한다. ## 장기 개선 순서 1. **초반 30분**: 가치 선택, 준비의 전투 회수, 대화 밀도와 길 찾기 2. **전투 의사결정**: 적 의도, 피해 예측, 지형·공명·군령의 비교 가능성 3. **체류와 동료**: 인물별 공명 반응, 선택 기억, 장비·정보·대화의 왕복 4. **편성과 성장**: 새 무장이 합류할수록 역할과 조합 선택이 실제로 달라짐 5. **캠페인 리듬**: 전투·탐색·휴식·중대 사건의 강약과 반복 억제 6. **시청각·접근성**: 중요도별 연출, 읽기 속도, 재확인, 입력과 색상 대안 7. **성능·용량**: 자산 예산, 로더 수명, 운영 배포 회귀 검증 ## 초기 성공 기준 - 시작 후 60초 안에 직접 조작 가능 - 장비 첫 만남 3분 이내, 세 사람 합류 8분 이내 - 첫 전투 시작 중앙값 16분 이내, 상위 90%도 20분 이내 - 다음 장소를 45초 안에 찾는 사용자 85% 이상 - 30초 이상 방향을 잃는 사용자 10% 미만 - 세 인물의 합류 이유를 각각 설명하는 사용자 85% 이상 - 막사 준비 효과를 하나 이상 설명하는 사용자 80% 이상 - 모든 중요 선택에 즉시 반응과 다음 전투 후속 반응 존재 - 특정 선택지가 의도 없이 70% 이상으로 쏠리지 않음 - 프롤로그 중도 이탈 10% 미만 자동 검증에서는 다음을 대체 지표로 사용한다. - 필수 대화의 최대 연속 줄 수와 총 진행 횟수 - 선택 전 조건·보상 표시 여부 - 선택 저장·복원과 전투 상태 전달 - 장면별 막힘 없는 이동, 입력 차단과 재개 - 1920x1080 UI 경계, 겹침, 가독성 - 로컬과 운영본의 동일 릴리스 및 전체 프롤로그 통과 ## 조사 근거 - [Plants vs. Zombies 튜토리얼 설계, GDC 정리](https://www.gamedeveloper.com/design/gdc-2012-10-tutorial-tips-from-i-plants-vs-zombies-i-creator-george-fan): 행동으로 가르치기, 적은 단어, 비차단 안내, 점진적 규칙 공개 - [Nintendo: Tears of the Kingdom 개발자 인터뷰](https://www.nintendo.com/en-gb/News/2023/May/Ask-the-Developer-Vol-9-The-Legend-of-Zelda-Tears-of-the-Kingdom-Chapter-3-2383821.html): 시야 안의 단서가 다음 발견을 부르는 탐험과 시각적 잡음 억제 - [Outer Wilds: The Intentionality of Wandering](https://www.mobiusdigitalgames.com/news/the-intentionality-of-wandering): 자유 탐험에서도 다음 호기심을 만드는 정보 연결 - [Final Fantasy XV 동료 설계, GDC](https://www.gdcvault.com/play/1025442/Walk-Tall-My-Friends-Giving): 컷신 밖의 이동과 행동으로 동료 성격 전달 - [Fire Emblem Engage 개발자 인터뷰](https://www.nintendo.com/us/whatsnew/ask-the-developer-vol-8-fire-emblem-engage-part-3/): 관계 대화와 전술 기능의 결합 - [Fallout: New Vegas 선택 구조, GDC](https://www.gdcvault.com/play/1015758/Do-%28Say%29-The-Right-Thing): 대화 선택을 플레이어 표현과 실제 결과로 연결 - [Dragon Age 동료 관계와 성장, BioWare](https://www.ea.com/en/games/dragon-age/dragon-age-the-veilguard/news/combat-and-progression): 대화·결정·동료 활동을 유대와 기능 변화로 연결 - [X-COM 고전 회고, GDC](https://www.gdcvault.com/play/1019056/Classic-Game-Postmortem-X-COM): 전략층과 전술층이 서로 의미를 만드는 이중 구조 - [Into the Breach 디자인 회고, GDC](https://www.gdcvault.com/play/1025772/-Into-the-Breach-Design): 명확한 정보와 제한된 규칙으로 깊은 전술 선택 만들기 - [Nintendo: Fire Emblem Three Houses 101](https://www.nintendo.com/au/news-and-articles/fire-emblem-three-houses-101/): 자유 탐색·관계 대화와 출전 인원·장비·정찰을 한 전투 준비 순환으로 연결 - [Supergiant Games: Hades FAQ](https://www.supergiantgames.com/blog/hades-faq/): 반복 전투에서도 새 인물 사건과 이야기 상태가 계속 드러나는 거점 순환 - [Supergiant Games: Hades v1.0 업데이트](https://www.supergiantgames.com/blog/hades-updates/): 맥락별 대사·조사 지점·초상·환경음과 관계 사건의 조건·우선순위를 함께 다듬어 반복 귀환의 변화를 유지 - [Nintendo: Fire Emblem Engage 전투와 유대](https://www.nintendo.com/ph/switch/ayfn/system/battle.html): 함께 싸우고 회복한 경험을 거점 대화와 다음 전투의 인접 지원으로 회수 - [Xbox Accessibility Guideline 103](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/103): 목표·상호작용·위험 같은 핵심 신호를 시각과 소리 가운데 하나에만 맡기지 않고 보조 감각 채널로 함께 전달 - [Xbox Accessibility Guideline 105](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/105): 음악·효과·환경음을 분리 조절하고 중요한 정보음이 배경음에 묻히지 않게 설계 - [Xbox Accessibility Guideline 107](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/107): 마우스 중심 기능도 단일 키 입력으로 같은 결과에 도달하게 하고, 메뉴와 게임 내 UI에 디지털 탐색 경로를 제공 - [Xbox Accessibility Guideline 109](https://learn.microsoft.com/en-us/xbox/accessibility/xbox-accessibility-guidelines/109): 핵심 튜토리얼은 정적 조작표가 아니라 실제 행동으로 익히게 하며, 이미 완료했더라도 플레이 중 원할 때 다시 찾을 수 있게 제공 - [Darkest Dungeon Affliction System, Game Developer](https://www.gamedeveloper.com/design/game-design-deep-dive-i-darkest-dungeon-s-i-affliction-system): 원정의 결과가 귀환 뒤 인물별 준비 선택으로 이어지고 수치 결과는 명확히 공개 - [Into the Breach Design Postmortem PDF](https://media.gdcvault.com/gdc2019/presentations/Into%20the%20Breach%20Postmortem%20Final.pdf): 모호한 전략층을 명확한 보상, 미리 계획 가능한 선택과 단일 화면으로 압축