보조 사례 / 실록 평행세계

실록 평행세계

조선의 큰 사건에서 왕의 자리에 앉아 선택 10번을 내리는 역사 IF 게임. 선택마다 1만 개 평행세계를 시뮬레이션하고, 결과를 움직이는 가정마다 실록이나 승정원일기 기사를 근거로 연결함. 실록에 없는 장면은 가상이라고 화면에 표시.

보조 사례실록 평행세계 · 2026.10
문제
역사 IF는 근거 없는 그럴듯한 상상으로 흐르기 쉬움. 실록 사이트는 자동 요청을 막고, 확보한 실록 원문에는 고종실록이 없음
본인 판단
사료 출처를 공개 원문 XML과 승정원일기 국역으로 정함. 실제 역사와 모델 가정을 화면에서 항상 구분하고, 범위는 문서로 먼저 제한
역할·기간
개인 프로젝트. 기획, 범위, 에피소드, 사료 출처 결정 · 2026.10.10–10.15, 커밋 114개
결과·AI 협업
플레이 가능한 에피소드 5개 공개 배포 · 코드와 테스트는 Claude 협업 작성, 장면 삽화는 Codex로 생성한 AI 이미지

01 · 무엇을 정했나

사료 출처와 가상 표시 원칙부터 정함

근거를 사료 기사에서 주장, 가정, 규칙, 선택, 결과 순으로 거슬러 올라갈 수 있게 설계. 첫 범위는 광해군 1618–1623년으로 한정함.

기각

실록 사이트 크롤링

자동 요청이 막히고 공식 Open API도 없음

채택

공공데이터포털 실록 원문 XML 적재

공공누리 제1유형 공개 파일. 음력을 양력으로 바꿔 실록 일진과 대조, 일치율 99.3% 확인

채택

병인·신미양요는 승정원일기 국역으로 대체

고종실록이 없어 한국고전종합DB 승정원일기 고종대를 사용, 화면 문구도 '승정원일기'로 변경

채택

실록에 없는 장면은 가상으로 표시

실록과 갈라진 분기 사건에 '가상 시나리오', 가상 보고 카드에 '가상 전개 · 실록에 없음' 배지, 장면 삽화에 'AI 상상도 · 실제 기록 아님' 표기. 근거가 약한 카드는 '침입' 대신 '침입 징후 보고'처럼 문구 범위를 줄임

기각

장면 트리 분기와 카드 수치 효과

1차 범위에서 제외. 이전 선택에 따른 서문과 판당 최대 3장의 가상 보고 카드만 도입

에피소드 구조는 선택 10번으로 고정. 광해군 결정 18개 중 외교, 군사, 내치, 정변이 고르게 들어간 10개만 사용. 점수 7개 중 하나라도 0이 되면 종료하고, 끝나면 실록 경로와 플레이한 세계를 점수별로 비교함.

02 · 결과물

에피소드 5개와 근거가 붙은 결정 화면

표지 화면, 에피소드 5개 탭과 시작하기 버튼
1. 에피소드 선택광해군, 병자호란, 임진왜란, 계유정난, 병인·신미양요
결정 화면, 장면 삽화와 점수 7개 막대, 선택지 4개, 직접 명령 입력창
2. 결정 화면장면 삽화는 Codex로 만든 AI 생성 이미지, 화면에도 'AI 상상도' 표기
결과 화면, 실제 역사 비교와 평행세계 결과 점 시각화
3. 결과 화면1만 개 세계의 결과와 '실제 역사'를 나란히 보여 줌. 상단 서술 문단은 LLM 생성

2026.10.15 로컬 실행 화면

  • 사료 적재: 광해군 실록 5,913건, 인조실록 1627–1637년 6,815건, 승정원일기 고종 1866–1871년 국역 29,781건
  • 가정마다 근거 연결: 병자호란 가정 11개에 근거 49개, 계유정난 10개에 47개, 임진왜란 10개에 54개, 병인·신미양요 10개에 52개
  • 인용된 주장 403개를 LLM 판정자로 검토해 31개 수정
  • FastAPI 백엔드, React 웹, PostgreSQL 구성으로 서버 배포

03 · 정리

제외 범위를 먼저 문서화

장면 트리 분기와 카드 수치 효과를 제외한다고 문서에 먼저 적고, 6일 안에 에피소드 5개까지 같은 방식으로 확장. 엔딩 판정은 세계선 판정을 설계했다가 다른 선택을 해도 대부분 '이어진 세계'로 판정되는 모순을 발견해, 점수 0 종료와 실록 경로 비교로 단순화함.