이 시리즈의 마지막 글은 재현과 검토를 위한 소스 지도다. 실험에는 데스크톱 C++/Qt 애플리케이션과 브라우저 구현이 함께 있다. 두 구현은 같은 문제를 다른 실행 환경에서 관찰하게 해 주지만, 이름이 비슷하다고 코드 경로나 수치 동작까지 자동으로 동일한 것은 아니다.

C++/Qt 쪽에서는 먼저 `model`을 본다. 상태 특징, 행동 점수, 업데이트와 모델 저장·로딩이 정책의 핵심이다. `game`은 스트리트 진행, 베팅, 팟 정산과 `finishHand` 같은 종료 흐름을 담당한다. `card`는 덱, 카드 표현, 핸드 강도 계산을 확인할 위치다. `mainwindow`는 플레이어가 본 화면과 입력, 시뮬레이션 실행을 연결하므로, 로그의 숫자가 어느 시점 상태인지 추적할 때 필요하다.

브라우저 쪽에는 별도의 web engine이 있다. UI에서 곧바로 반복 실험을 돌리거나 행동을 시각화하기 편하지만, 네이티브 코드와 같은 보상·특징·난수 처리를 쓰는지는 직접 대조해야 한다. 한쪽에서 수정한 상수가 다른 쪽에도 적용됐다고 가정하지 않는다.

모델 스냅샷은 코드와 관찰 사이의 증거다. cheolsu, younghee, minsu의 가중치를 읽으면 같은 테이블에서 비슷해 보인 행동도 내부 선호가 다름을 확인할 수 있다. 스냅샷은 특정 학습 시점의 표본이므로 파일명, 커밋, 설정, 랜덤 시드와 함께 보존해야 비교가 가능하다. 숫자 하나만 골라 전략 전체를 단정하지 않고, 특징 벡터와 행동 선택 함수까지 함께 추적한다.

권장 읽기 순서는 간단하다. 게임 종료 시 chip delta가 어디서 계산되는지 찾고, `finishHand`의 보상 변환을 확인한다. 그 값이 에피소드 행동에 어떻게 전달되는지 모델 업데이트를 따라간다. 이후 저장된 가중치를 로드해 실제 행동 점수와 비교하고, 마지막으로 Qt 화면과 web engine에서 같은 초기 조건을 재생한다. 구현 차이가 있다면 결과 차이로 취급해 기록한다.

중요한 범위 제한이 있다. 공개하는 소스는 정책 붕괴를 조사한 diagnostic snapshot이다. 이 글에서 제안한 보상 재설계, 혼합 상대 학습, 세분화된 신용 할당이 이미 구현되어 문제를 해결했다는 주장이 아니다. 가드 코드 역시 근본 수정이 아니라 containment다. 후속 변경은 별도 커밋과 동일한 평가 프로토콜로 검증해야 한다.

이 지도는 결과를 과장하지 않고 다른 개발자가 관찰을 재검토할 출발점을 제공한다. 소스와 모델을 함께 읽고, 재현 설정과 실패 사례까지 남기는 것이 다음 실험의 기준선이다.

22개 파일 · 5,126줄 — 폴더를 펼친 뒤 파일을 누르면 코드를 불러옵니다.

프로젝트 루트2개 파일
CMakeLists.txttext · 35줄 · 772B

코드를 불러오는 중입니다…

README.mdmarkdown · 28줄 · 885B

코드를 불러오는 중입니다…

models/3개 파일
models/cheolsu.modeltext · 86줄 · 686B

코드를 불러오는 중입니다…

models/minsu.modeltext · 86줄 · 639B

코드를 불러오는 중입니다…

models/younghee.modeltext · 86줄 · 743B

코드를 불러오는 중입니다…

src/11개 파일
src/card.cppc++ · 409줄 · 11KB

코드를 불러오는 중입니다…

src/card.hc++ · 27줄 · 757B

코드를 불러오는 중입니다…

src/dealer.cppc++ · 22줄 · 560B

코드를 불러오는 중입니다…

src/dealer.hc++ · 21줄 · 445B

코드를 불러오는 중입니다…

src/game.cppc++ · 854줄 · 29KB

코드를 불러오는 중입니다…

src/game.hc++ · 159줄 · 4KB

코드를 불러오는 중입니다…

src/main.cppc++ · 19줄 · 380B

코드를 불러오는 중입니다…

src/mainwindow.cppc++ · 1,193줄 · 50KB

코드를 불러오는 중입니다…

src/mainwindow.hc++ · 49줄 · 996B

코드를 불러오는 중입니다…

src/model.cppc++ · 303줄 · 11KB

코드를 불러오는 중입니다…

src/model.hc++ · 55줄 · 1KB

코드를 불러오는 중입니다…

web/6개 파일
web/css/table.csscss · 210줄 · 7KB

코드를 불러오는 중입니다…

web/index.htmltext · 38줄 · 2KB

코드를 불러오는 중입니다…

web/js/engine.jsjavascript · 985줄 · 29KB

코드를 불러오는 중입니다…

web/js/ui.jsjavascript · 358줄 · 12KB

코드를 불러오는 중입니다…

web/poker.mariago.kr.conftext · 33줄 · 722B

코드를 불러오는 중입니다…

web/test.mjsjavascript · 70줄 · 3KB

코드를 불러오는 중입니다…