맥락: - 새 레포의 첫 범위를 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
83 lines
2.3 KiB
Markdown
83 lines
2.3 KiB
Markdown
# 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:
|
|
|
|
```text
|
|
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:
|
|
|
|
```text
|
|
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:
|
|
|
|
```text
|
|
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.
|