diff --git a/project.godot b/project.godot index 1c42f3f..38d8afd 100644 --- a/project.godot +++ b/project.godot @@ -12,7 +12,7 @@ config_version=5 config/name="Tactical Shooter" config/description="Phase 0 — Headless Dedicated Server" -run/main_scene="res://scenes/server/server_main.tscn" +run/main_scene="res://scenes/entry.tscn" config/features=PackedStringArray("4.7", "Forward Plus") [autoload] diff --git a/scenes/entry.tscn b/scenes/entry.tscn new file mode 100644 index 0000000..9d5b888 --- /dev/null +++ b/scenes/entry.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=3] + +[ext_resource type="Script" path="res://scripts/entry.gd" id="1"] + +[node name="Entry" type="Node"] +script = ExtResource("1") diff --git a/scripts/entry.gd b/scripts/entry.gd new file mode 100644 index 0000000..5058cc8 --- /dev/null +++ b/scripts/entry.gd @@ -0,0 +1,18 @@ +## Entry — Smart entry point. +## Loads the server scene if running headless (dedicated server), +## or the client scene if running with a display (Windows client). +extends Node + +func _ready() -> void: + var is_headless := DisplayServer.get_name() == "headless" + + if is_headless: + # Dedicated server mode + var server_scene = preload("res://scenes/server/server_main.tscn") + add_child(server_scene.instantiate()) + print("[Entry] Starting in SERVER mode (headless)") + else: + # Client mode (Windows, etc.) + var client_scene = preload("res://scenes/client/client_main.tscn") + add_child(client_scene.instantiate()) + print("[Entry] Starting in CLIENT mode (display available)")