Files
CosmicClash/.gitignore
T
Josh Creek 06881f05ca feat(server): task 6.1/6.3 — dedicated server export preset and a real CLI surface
6.1: "Linux Dedicated Server" preset (dedicated_server=true,
custom_features="dedicated_server") mirroring the existing training
preset, plus run/main_scene.dedicated_server so the server binary reaches
its own entry point with no flag. Builds: an 85MB Linux x86_64 binary,
gitignored like the training one.

6.3: scripts/server_config.gd declares every server flag once - name,
type, default, section, help - and one parser turns that into parsing,
type checking, range validation, config-file backing and --help. The
flags had grown to ~30 across server_boot.gd and networked_match.gd, each
parsed inline with begins_with, none documented, and an unrecognised flag
was SILENTLY IGNORED: --max-clientss=8 ran a server on the default cap
and said nothing. Unknown flags, missing values, wrong types, duplicates
and out-of-range values are now hard errors, reported all at once.

Precedence is command line > config file > default. server_boot.gd parses
strictly because it owns the whole command line; networked_match.gd reads
the same declaration leniently because it is one consumer of an argv the
smoke harnesses also fill with --role= and --drive-seconds=. Nothing is
lost - every server flag is declared, so the strict pass already caught
any typo before the match scene re-reads its own.

13 unit tests covering the precedence order, the typo rejection that
motivated this, --no-<bool> not double-listing in --help, and --help
documenting every flag asserted against the declaration rather than a
hand-kept list. Verified end to end: --help prints, a typo'd flag refuses
to start, and the plain/replay-log/late-joiner smoke scenarios still pass.
2026-08-21 17:03:08 +01:00

27 lines
1.0 KiB
Plaintext

.DS_Store
# RL training: checkpoints and logs ARE committed (training results must
# survive any single machine); only the env and scratch files are not.
training/.venv/
training/smoke_run.log
training/__pycache__/
# Intermediate PPO checkpoints: only final.zip is ever committed (see
# run_training.sh) — --resume only ever points at final.zip, and a single
# experiment's intermediate checkpoints were 2401 files / ~500MB, of which
# final.zip was ~0.2MB. This is the training-results-survive-any-machine
# property from ~2500x less data, not a relaxation of it.
training/checkpoints/*/ppo_*_steps.zip
# Exported training binary: a regenerable build artifact (rebuilt by
# export_linux.sh / run_training.sh), not a training result.
training/build/
# Exported dedicated server binary (task 6.1): same reasoning — an 85MB
# regenerable artifact, rebuilt by `godot --headless --path Game
# --export-release "Linux Dedicated Server"`.
server/build/
# Texture generator scripts: throwaway env, not the scripts themselves.
tools/textures/.venv/