How lqf0624/fm-tactics-lab works
FM Tactics Lab is a Windows desktop workbench for running repeatable tactical experiments with the local FM27 match engine. The main workflow is to prepare teams and tactics, run seeded matches (optionally in batches or A/B rounds), then compare validated match statistics. Save-backed opponent selection and tactical-plan generation add a separate research path; tactics, set pieces, attribute experiments, and local history broaden the product. The README documents the product flow; sampled code confirms key API, save-reader, and batch-runner responsibilities, but not every subsystem connection.
Main entry points: desktop_save_mode.py Save import · fm27_tactics_server.py Tactics API · desktop_warm_batch.py Warm batch runner · desktop_host.cpp Native engine host
Components 22
Desktop experience
- Tactics workspace
src/tactics_ui/app.js - Desktop host
tauri/src/main.rs - Tactics API
src/fm27_tactics_server.py
Match experiments
- Team scenarios
src/fm27_tactics_server.py - Batch experiments
src/fm27_batch.py - Warm batch runner
src/desktop_warm_batch.py - Match results
native/native_statistics.h - Experiment storage
src/desktop_storage.py - Attribute experiments
src/desktop_attribute_analysis.py
Save research
- Save import
src/desktop_save_mode.py - Save reader
src/desktop_save_worker.py - Opponent selection
src/desktop_opponent_scope.py - Coach preset plans
src/desktop_coach_presets.py - Real AI plans
src/desktop_real_generation.py
Tactical inputs
- FMF tactic import
src/fm27_fmf.py - Opponent tactic pool
src/fm27_tactic_pool.py - Set-piece plans
src/fm27_setpieces.py - Execution settings
native/native_execution_experiment.h
Engine runtime
- Match simulator
src/fm27_simulator.py - Native engine host
native/desktop_host.cpp - Local FM27 engine
Other components
- Experimenter
Connections 24
- Experimenter → Tactics workspace: edits and runs
README.md - Tactics workspace → Desktop host: uses desktop app
README.md - Desktop host → Tactics API: pipes requests
README.md - Tactics API → Team scenarios: validates inputs
src/fm27_tactics_server.py - Tactics API → Batch experiments: dispatches runs
src/fm27_tactics_server.py - Batch experiments → Warm batch runner: uses warm runner
src/desktop_warm_batch.py - Warm batch runner → Match simulator: runs matches
src/desktop_warm_batch.py - Match simulator → Native engine host: invokes host
- Native engine host → Local FM27 engine: loads engine
README.md - Native engine host → Match results: collects statistics
README.md - Warm batch runner → Match results: records outcomes
src/desktop_warm_batch.py - Warm batch runner → Experiment storage: persists batches
src/desktop_warm_batch.py - Tactics API → Save import: serves save mode
src/fm27_tactics_server.py - Save import → Save reader: starts reader
src/desktop_save_mode.py - Save import → Opponent selection: selects opponents
src/desktop_save_mode.py - Save import → Coach preset plans: uses coach plans
src/desktop_save_mode.py - Save import → Real AI plans: prepares AI plans
src/desktop_save_mode.py - Experimenter → FMF tactic import: imports tactics
README.md - FMF tactic import → Team scenarios: configures teams
README.md - Experimenter → Opponent tactic pool: manages candidates
README.md - Team scenarios → Set-piece plans: includes set pieces
README.md - Team scenarios → Execution settings: sets execution
README.md - Experimenter → Attribute experiments: tests attributes
README.md - Attribute experiments → Match simulator: compares matches
README.md