Commit Graph

33 Commits

Author SHA1 Message Date
Josh Creek df3e168b31 feat(arena): add elevated-goal arena variants
Each of the three arenas gains an ELEVATED sibling scene that inherits the
base arena and overrides the boundary's goal_mode, the two goal transforms
and the ship spawns, so the goal sits at mid-wall height instead of flush
with the deck. Registered in ArenaRegistry alongside the floor-level arenas,
plus a training_elevated scene for self-play on them.

TrainingMode reads the arena's goal_mode once in _start() and widens the
ball-placement height range to match the goal's real position; on FLOOR
arenas the bound is a no-op, so floor-level training is unchanged. It is read
in _start() rather than _ready() because TrainingMode has no _ready()
override and GameMode._ready() is what discovers the arena first.

Policies trained against floor-level goals are not expected to score on an
elevated one, so the two are kept as separate arenas rather than a variant of
the same entry.
2026-08-04 13:36:19 +01:00
Josh Creek 6f5ce488a9 feat: lit particle shader for nebula dust weather effect
Replace NebulaDust's flat unshaded glow material with a custom
ShaderMaterial: a fake per-pixel puff normal on the billboarded quad
feeds a light() override so motes catch the directional light and a
nebula-core color bias, alpha gets a depth-texture soft-particle fade
so motes no longer hard-clip through boundary/decoration geometry,
and a per-particle hash adds subtle sparkle.
2026-08-04 07:42:34 +01:00
Josh Creek 50c2014361 feat: enable SDFGI/reflection probes and fresnel glass boundary
Adds sdfgi_enabled and a ReflectionProbe to all three arenas' Environment
setup so surfaces get real bounce lighting/reflections instead of flat
ambient. Converts arena_boundary.tscn's shared glass field material from
unshaded to a shaded, rim-lit material so it reads as glass (dim face-on,
highlighted at grazing angles) rather than a flat tinted overlay.
2026-08-03 21:29:59 +01:00
Josh Creek 3fdf270aa9 feat: add post-processing pass and video settings menu
Enable glow/bloom, color adjustments, and MSAA+FXAA across all three
arenas so emissive ship/station accents actually bleed light and edges
read cleanly. Expose the player-facing knobs (anti-aliasing mode, glow
intensity, brightness) through a new Settings screen off the main menu,
persisted via a VideoSettings autoload that scales each arena's own
tuned Environment values on load rather than overwriting them.
2026-08-03 19:53:56 +01:00
Josh Creek 171cd4a840 feat: add Nebula and Asteroid Field arenas
Introduce arena_02 (Nebula) and arena_03 (Asteroid Field) alongside
arena_01, listed in a new ArenaRegistry (scripts/arena_registry.gd) as
the single source of truth for available arenas. Free Play lets the
player pick an arena from the main menu; Match/Spectate each pick one
at random per session; Training keeps its own fixed arena_01.

Nebula gets an RL-style visual treatment: a near-invisible glass
boundary material shared by all arenas, a baked equirect nebula sky
texture, a drifting-dust particle system, and a Blender-modeled
station/debris/planet decoration set. GameMode gains a
_get_arena_scene_path() hook so modes can instantiate their arena in
code instead of hardcoding it in the scene.
2026-08-03 19:11:13 +01:00
Josh Creek 4507b6dc1b feat: add main-menu difficulty picker for Match mode
Replace the raw checkpoint dropdown with curated Easy/Medium/Hard presets
that drive GameSettings' bot model/reaction_ticks/action_noise overrides.
Move raw-checkpoint testing and Spectate mode into a dev-only section
hidden via OS.is_debug_build() so they disappear from release exports.
2026-08-03 19:11:13 +01:00
Josh Creek 09ea8d6fbc feat(*): Style the results screen and dock the heading tape under the scoreboard 2026-07-28 19:32:40 +01:00
Josh Creek a9b7b450d5 feat(*): Redesign HUD scoreboard as a single timer/score/team banner 2026-07-28 19:24:40 +01:00
Josh Creek 93f90ca6de feat(*): Add 3-2-1 kickoff countdown before play and after goals 2026-07-28 19:11:36 +01:00
Josh Creek 580222c139 feat(*): Promote curric-s6-unmask as the shipped "easy" bot 2026-07-24 09:18:53 +01:00
Josh Creek 3457d4ca84 feat(*): Add rounded arena boundaries and reward shaping to curb corner-camping 2026-07-20 08:20:33 +01:00
Josh Creek 240e362f2f feat(*): Add bot selection, score HUD, and winner reveal to matches, replace HUD text with aircraft-style flight instruments, and fix camera judder 2026-07-20 07:12:09 +01:00
Josh Creek 4e2d406aa2 chore(*): Remove run03 artifacts trained against the floor-taxed reward 2026-07-19 15:35:55 +01:00
Josh Creek 7777280062 feat(*): Exempt the floor from the wall-contact penalty, add a tilt penalty for non-upright flight, and double velocity-to-ball shaping 2026-07-19 15:34:34 +01:00
Josh Creek 772f98b7fe feat(*): Fix exported-policy action order to gymnasium's sorted-key layout, add wall-contact penalty and stronger ball-touch reward, and wire Spectate to run01 vs run02 2026-07-19 13:21:14 +01:00
Josh Creek 07217c3517 feat(*): Add bot-vs-bot Spectate mode with main-menu entry, entropy-control flags (--ent-coef, --reset-std) for resumed training runs, and a Linux/3090 remote-training guide (TRAINING_LINUX.md) 2026-07-19 10:10:32 +01:00
Josh Creek 379ef9910e feat(*): Replace the test terrain arena with an enclosed standard-size space-platform arena (shared ArenaBoundary floor/walls/ceiling scene, starfield sky, ball CCD) and derive TrainingMode placement bounds from it, dropping the out-of-bounds reward guard 2026-07-18 20:18:03 +01:00
Josh Creek 85f96eb15e feat(*): Add self-play RL training pipeline with PPO trainer, in-game GDScript policy inference, and bot opponent support in Match mode 2026-07-18 19:32:51 +01:00
Josh Creek 328831df1f refactor(*): Restructure game into reusable Arena/GameMode architecture with controller-driven ships, adding Free Play and Match modes 2026-07-18 15:34:11 +01:00
Josh Creek c3329b3280 feat(*): Add goal 2025-07-20 20:51:24 +01:00
Josh Creek 8650995c18 chore(*): Remove redundant files 2025-07-16 23:05:32 +01:00
Josh Creek 35a23f79e3 refactor(*): Make hud more performant and maintainable 2025-07-16 19:19:58 +01:00
Josh Creek cba9a51b5f feat(*): Add much better ship controls 2025-07-13 21:01:57 +01:00
Josh Creek 5ad381cf2f feat(*): Add hud with timer 2025-07-13 18:36:48 +01:00
Josh Creek bdd0244873 fix(*): Ensure that movement vaguely works in the new area and looks vaguely at the ball 2025-07-12 20:34:03 +01:00
Josh Creek 927bbd0be7 feat(*): Add new match scene, new player scene and main menu 2025-07-12 19:20:16 +01:00
Josh Creek b7d52b7509 feat(*): Add basic 2 player splitscreen 2024-03-21 20:12:53 +00:00
Josh Creek 688b1f14e9 fix(*): Fix ball model scaling 2024-02-23 19:01:37 +00:00
Josh Creek ed01bd4846 feat(*): Add environment and colours 2024-02-23 18:58:50 +00:00
Josh Creek b2eebc9d25 feat(*): Add metallic gold model for ball from Blender 2024-02-23 18:48:26 +00:00
Josh Creek ddfd8efb71 feat(*): Add the ability to score a goal 2024-02-23 18:26:23 +00:00
Josh Creek 0fd3098f14 feat(*): Split out vehicle object 2024-02-23 18:12:59 +00:00
Josh Creek a5bcedd5b2 feat(#1): Create a match scene with a ball and a vehicle 2024-02-21 18:07:09 +00:00