맥락: - GUI 이식 전에 Rust crate와 proto schema 위치를 Python package 내부에서 분리한다. - Cargo 작업, IDE 인식, 빌드 산출물 관리를 루트 구조에 맞춘다. 변경: - rust_core를 rust/lost-cities-core로 이동하고 proto/lost_cities.proto를 루트 proto 디렉터리로 옮겼다. - Rust build.rs, Python Rust backend, Rust parity 테스트의 경로를 새 위치로 수정했다. - Python package-data에서 Rust crate와 proto 항목을 제거하고 README/port notes를 갱신했다. 확인: - uv sync --extra gui --reinstall-package coolrl-lost-cities - uv run pytest tests/games/classic - uv run lost-cities-classic
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
tier0throughtier3; 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/
lost-cities-core/
proto/
lost_cities.proto
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.