이 시리즈의 마지막 글은 재현과 검토를 위한 소스 지도다. 실험에는 데스크톱 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줄 — 폴더를 펼친 뒤 파일을 누르면 코드를 불러옵니다.
프로젝트 루트
CMakeLists.txt
코드를 불러오는 중입니다…
README.md
코드를 불러오는 중입니다…
models/
models/cheolsu.model
코드를 불러오는 중입니다…
models/minsu.model
코드를 불러오는 중입니다…
models/younghee.model
코드를 불러오는 중입니다…
src/
src/card.cpp
코드를 불러오는 중입니다…
src/card.h
코드를 불러오는 중입니다…
src/dealer.cpp
코드를 불러오는 중입니다…
src/dealer.h
코드를 불러오는 중입니다…
src/game.cpp
코드를 불러오는 중입니다…
src/game.h
코드를 불러오는 중입니다…
src/main.cpp
코드를 불러오는 중입니다…
src/mainwindow.cpp
코드를 불러오는 중입니다…
src/mainwindow.h
코드를 불러오는 중입니다…
src/model.cpp
코드를 불러오는 중입니다…
src/model.h
코드를 불러오는 중입니다…
web/
web/css/table.css
코드를 불러오는 중입니다…
web/index.html
코드를 불러오는 중입니다…
web/js/engine.js
코드를 불러오는 중입니다…
web/js/ui.js
코드를 불러오는 중입니다…
web/poker.mariago.kr.conf
코드를 불러오는 중입니다…
web/test.mjs
코드를 불러오는 중입니다…
COMMENTS · CHAPTER 04
MariaGO 포커 AI 실험의 소스와 도구 지도 댓글 0
아직 댓글이 없습니다. 읽다가 궁금한 점이나 보탤 내용을 남겨 주세요.
댓글을 등록하려면 구글로 시작하기를 눌러 닉네임과 메일 주소를 등록해 주세요.
구글로 시작하기