feat(client): add live server mode with make game target

Add SR_LIVE=1 environment variable to switch SimBridge from test mode
to TCP connection. Default behavior unchanged (test mode).

- sim_bridge.gd: read SR_LIVE env var instead of hardcoded test_mode
- game_state.gd: find player entity by kind.variant == "Player" instead
  of hardcoded entity_id 1 (real server assigns different IDs)
- Makefile: add 'make game' (builds server, starts it, launches client
  with SR_LIVE=1, kills server on exit) and 'make stop' helper

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-13 01:46:09 +01:00
co-authored by Claude Opus 4.6
parent 67978d0819
commit 473eda03cd
3 changed files with 24 additions and 7 deletions
+6 -4
View File
@@ -30,16 +30,18 @@ func apply_snapshot(snapshot: Dictionary) -> void:
if snapshot.has("entities"):
visible_entities = snapshot.entities
# Derive player position from the player entity
# Derive player position from the entity with kind.variant == "Player"
var found_player := false
for entity in visible_entities:
if entity.has("entity_id") and entity.entity_id == player_entity_id:
if entity.has("kind") and entity.kind is Dictionary and entity.kind.get("variant") == "Player":
player_position = Vector2(entity.x, entity.y)
if entity.has("entity_id"):
player_entity_id = entity.entity_id
found_player = true
break
if not found_player and visible_entities.size() > 0:
push_warning("GameState: player entity_id %d not found in %d entities" % [
player_entity_id, visible_entities.size()])
push_warning("GameState: no Player entity found in %d entities" % [
visible_entities.size()])
if snapshot.has("tiles"):
visible_tiles = snapshot.tiles
+1 -1
View File
@@ -4,7 +4,7 @@ extends Node
enum ConnectionState { DISCONNECTED, CONNECTING, CONNECTED, ERROR }
var state: ConnectionState = ConnectionState.DISCONNECTED
var test_mode: bool = true # Enable test mode for development without Rust server
var test_mode: bool = OS.get_environment("SR_LIVE") != "1" # SR_LIVE=1 connects to real server
var _test_tick: int = 0
var _test_player_pos: Vector2i = Vector2i(10, 10)
var _test_facing: String = "North"