Files
coorl-lost-cities/docs/classic-port-notes.md
T
coolguy 7df6e42904 로스트 시티 클래식 코어 이식
맥락:
- 새 레포의 첫 범위를 RL 없는 Lost Cities classic 게임 구현으로 잡았다.
- 기존 tier0-3 실험 축은 제거하고 classic 5-expedition 룰을 기본값으로 둔다.

변경:
- games/classic 아래에 Cython 게임 엔진, env, bots, backend 경계, Rust core와 proto schema를 이식했다.
- setuptools/Cython 빌드 설정과 package data, README, classic port notes를 추가했다.
- 룰, 점수, 마스크, env, canonical state, bot, Rust parity 테스트를 새 경로로 가져왔다.

확인:
- uv run pytest tests/games/classic
- uv run lost-cities-classic
2026-05-06 19:07:46 +09:00

2.3 KiB

Classic Port Notes

This repository starts as a focused extraction of the Lost Cities game from the legacy coolrl repository. The first target is the classic two-player card game, without the earlier training-oriented tiers.

Current Direction

  • Implement the classic Lost Cities rules first.
  • Treat classic as the initial concrete game under coolrl_lost_cities.games.
  • Do not carry over tier0 through tier3; those were useful for experiments, but they should not shape the first public game API.
  • Keep backend selection available. The Python/Cython and Rust implementations should remain swappable behind a small backend boundary.
  • Keep the GUI and Rust implementation in scope for the port.
  • Keep RL and training code out of the first extraction.

The expected package shape is roughly:

src/coolrl_lost_cities/
  games/
    classic/
      game.pyx
      env.py
      interfaces.py
      backends/
      bots/
      pygame_pvp.py
      fixtures/
      assets/
      docs/
      rust_core/

Tests should live outside the package, roughly under:

tests/games/classic/

Out Of Scope For The First Port

  • Deep CFR
  • General training infrastructure
  • Evaluation loops for learned policies
  • Web client
  • Legacy experiment configs, checkpoints, logs, exports, and analysis artifacts

Bot-vs-bot helpers can stay with the classic game if they are useful for smoke tests and local play. Broader policy evaluation can be introduced later with the training layer.

Later Training Shape

If training is added later, it should not make Deep CFR the center of the package. Evaluation and policy interfaces should be general enough for multiple approaches, with Deep CFR as one implementation.

A possible future shape:

src/coolrl_lost_cities/
  games/
    classic/
  training/
    policies.py
    evaluation.py
    deep_cfr/
    imitation/
    policy_gradient/

The game package should expose rules, state transitions, legal actions, scoring, backend selection, and playable UI. Training code can adapt those pieces later.

Naming Notes

For now, use classic for the five-expedition game. Other variants, such as a six-expedition version, can be added later if needed. The current port should avoid adding a variant registry or broad abstraction before there is a second concrete game to support.