chore: init unity-commander-gameboard feature branch scaffolding

Adds placeholder structure for all Phase 0-6 modules.
See issues #167-#174 for full implementation details.
This commit is contained in:
KoalaTrapLord committed 2026-04-01 12:29:17 -04:00
1 parent 55fdc2ec4a
commit 52cbefaccf
18 files changed
+61

No files matched your search

+1
View File
@@ -0,0 +1 @@
# Phase 2: Dual-Brain AI Decision Engine
+5
View File
@@ -0,0 +1,5 @@
# Phase 6 - decision_logger.py
# Logs per-decision: game_id, turn, phase, player_id, personality,
# brain_used, prompt, raw_response, parsed_action, fallback_used
# Configurable via LOG_AI_DECISIONS env var
# See issue #173
+15
View File
@@ -0,0 +1,15 @@
# Phase 2 - game_orchestrator.py *** CORE PRIORITY ***
# GameAIOrchestrator: select_brain(), assign_personalities(), get_action()
# Brains: DeepSeek-R1-14B (complex) + GPT-OSS-20B (tactical)
# ChromaDB RAG for per-player card knowledge
# See issue #169
PERSONALITY_POOL = [
"aggressive -- attack early and often, prioritize players with lowest life totals",
"control -- counter key spells, hold mana open, only act when clearly advantageous",
"combo -- develop mana and card advantage quietly, avoid conflict until ready to win",
"political -- make deals, attack whoever is ahead, never fully commit to one target",
"pillowfort -- build defensive pieces, let others fight, win slowly through attrition",
"stompy -- play the biggest threats as fast as possible, ignore table politics",
"tempo -- disrupt opponents early, trade efficiently, stay ahead on board",
]
+1
View File
@@ -0,0 +1 @@
# Phase 0: Card image cache and data enrichment
@@ -0,0 +1,3 @@
# Phase 0 - card_data_enricher.py
# Injects art_url and art_url_back into CardDTO before broadcasting to Unity
# See issue #167
+3
View File
@@ -0,0 +1,3 @@
# Phase 0 - image_cache.py
# SQLite-backed lookup: card name/scryfall_id -> local file path
# See issue #167
+1
View File
@@ -0,0 +1 @@
# Phase 1: Forge subprocess bridge
@@ -0,0 +1,3 @@
# Phase 6 - game_result_logger.py
# Captures winner, turn count, elimination order on Forge game end
# See issue #173
@@ -0,0 +1,3 @@
# Phase 1 - game_state_parser.py
# Converts Forge stdout text -> canonical GameStateDTO JSON
# See issue #168
@@ -0,0 +1,4 @@
# Phase 1 - subprocess_manager.py
# ForgeGameSession + ForgeSubprocessManager
# Drives interactive Commander games via Forge stdin/stdout pipe
# See issue #168
+1
View File
@@ -0,0 +1 @@
# Phase 6: ML Training Integration
@@ -0,0 +1,4 @@
# Phase 6 - training_data_builder.py
# Converts decision_log + game_result -> (state, action, reward) tuples
# Feeds existing PPO pipeline
# See issue #173
+2
View File
@@ -0,0 +1,2 @@
# Runtime data directory
# card_image_index.db, decision_logs/, game_results.jsonl, training_sets/
+3
View File
@@ -0,0 +1,3 @@
# Phase 0 - build_image_index.py
# Builds SQLite card_image_index.db: name/scryfall_id -> file path
# See issue #167
+4
View File
@@ -0,0 +1,4 @@
# Phase 0 - download_card_images.py
# Bulk download card images from Scryfall default_cards export
# Stores at static/card-images/{scryfall_id}_{front|back}.jpg
# See issue #167
+4
View File
@@ -0,0 +1,4 @@
# Phase 6 - run_self_play.py
# Headless self-play runner: all 4 players AI-driven, no Unity needed
# Usage: python scripts/run_self_play.py --num-games 500 --deck-pool-path data/decks/
# See issue #173
+2
View File
@@ -0,0 +1,2 @@
# Phase 0: Card images downloaded here by scripts/download_card_images.py
# ~1.5-2GB at normal size
+2
View File
@@ -0,0 +1,2 @@
# Phase 4: Unity TCGEngine project lives here
# See issue #171