client_main.gd: when server spawns our player, create a player node with authority - Camera follows local player from 3/4 overhead view - player.gd WASD input sends position to server via RPC - Server validates and broadcasts to all peers
- Create missing server/plugins/ dir with .gdignore (stops PluginManager warning) - Create config/default_server_config.cfg (stops ServerConfig error) - Reorder light look_at after add_child (stops 'not in tree' warning) - Switch rendering_method from opengl3 to forward_plus (RTX 2080 Vulkan works fine; gray screen was server-scene issue not OpenGL)
Includes code from task workspaces that was never pushed: - client/characters/ — fps_character_controller.gd (400 lines), fps_camera.gd, input_handler.gd - gdextension/simulation/ — C++ GDExtension scaffold: entity, movement, hit detection, simulation server, state serializer, bitstream (14 files) - scripts/network/ — ENet-based network_manager.gd, server/client_main.gd, player.gd - scripts/map_packaging/ — PCK pipeline: pack_map.gd, map_downloader.gd, map_registry_server.py, README - scripts/config/ — server_config.gd (480 lines) - scenes/ — client_main, server_main, player, test_range - project.godot, export_presets.cfg