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.
This commit is contained in:
Josh Creek
2026-08-03 19:09:16 +01:00
parent 1af3e0410d
commit 171cd4a840
35 changed files with 683 additions and 12 deletions
+1 -3
View File
@@ -1,7 +1,6 @@
[gd_scene load_steps=4 format=3]
[gd_scene load_steps=3 format=3]
[ext_resource type="Script" path="res://scripts/spectate_mode.gd" id="1_s"]
[ext_resource type="PackedScene" path="res://scenes/arena_01.tscn" id="2_s"]
[ext_resource type="PackedScene" uid="uid://c8kak2l3m4n5" path="res://scenes/HUD.tscn" id="3_s"]
[node name="Spectate" type="Node3D"]
@@ -9,6 +8,5 @@ script = ExtResource("1_s")
bot_a_model_path = "res://bots/promoted/easy.json"
bot_b_model_path = "res://bots/promoted/easy.json"
[node name="Arena" parent="." instance=ExtResource("2_s")]
[node name="HUD" parent="." instance=ExtResource("3_s")]