shawn
926446e5cf
P7.8: Port FPS controller to netfox BaseNetInput pattern
...
- FPSCharacterController: removed SimulationServer dependency, added
_rollback_tick() with acceleration-based CharacterBody3D movement,
gravity, jump, crouch/sprint speed. Kept mouse look, crouch lerp,
sprint/crouch toggle, _move_local() standalone fallback.
- Player: extends FPSCharacterController (CharacterBody3D). Added
authority-guarded _rollback_tick that delegates to super for server
and local client prediction. TickInterpolator created dynamically
(avoids headless class_name parse errors). PlayerNetInput child
wired via existing RollbackSynchronizer input_properties.
- player.tscn: CharacterBody3D root with FpsCamera, CollisionShape3D,
PlayerNetInput children. TickInterpolator created in code.
- client_main.gd: _spawn_local_player() creates FPS player node with
first-person camera for own peer. _spawn_remote_player() removes
FpsCamera for remote players.
- fps_camera.gd: duck-typed _controller (Node) instead of class_name
cast for headless safety. Fixed type inference warnings.
Also includes parent task P7.5-P7.7 changes:
- project.godot: main_scene -> server_main.tscn
- network_manager.gd: Chan enum -> raw channel ints
- server_main.gd: deferred ServerConfig load, GameServer load()
- game_server.gd: commented out dev deps for headless compilation
2026-07-02 17:45:03 -04:00
shawn
e7299b17e9
Phase 7: netfox + godot-jolt stack upgrade
...
Stack installed:
- netfox v1.35.3 (core + extras + noray + internals)
- godot-jolt v0.16.0-stable
Architecture:
- Server: ENet transport (works headless, no netfox deps)
- Client/Editor: netfox rollback (RollbackSynchronizer, TickInterpolator)
New/modified:
- docs/migration-netfox-plan.md — migration architecture
- scripts/network/network_manager.gd — netfox-aware ENet fallback
- scripts/network/player.gd — clean base player
- client/characters/player_netfox.gd — rollback player w/ WeaponManager
- client/characters/input/player_net_input.gd — BaseNetInput subclass
- client/characters/character/fps_character_controller.gd — netfox input feed
- client/weapons/ — weapon data, registry, TacticalWeaponHitscan, WeaponManager
- client/scripts/round_replicator.gd — client-side round state bridge
- server/scripts/round_manager.gd — improved state machine
- server/scripts/plugin_api/plugin_manager.gd — refined plugin system
- config: enemy_tag, ally_tag for meatball targeting
Removed: old C++ SimulationServer GDExtension (replaced by netfox rollback)
2026-07-02 17:39:22 -04:00
shawn
ad48f38ca5
feat: integrate ChaffGames FPS template as local player controller
...
Replaces the overhead box-mesh view with a full FPS character:
- mouse look, WASD movement, jump (Space), crouch (C), sprint (Shift), lean (Q/E)
- 6 weapons (LMB shoot, R reload, scroll switch, F melee, G drop)
- Crosshair HUD, ammo counter, sprint bar
- Client sends position to server at 20Hz for multiplayer visibility
- Server broadcasts positions to all peers
- Remote players shown as boxes (placeholder)
source: https://godotengine.org/asset-library/asset/2652 (MIT license)
2026-07-02 00:26:45 -04:00
shawn
d060ac449d
fix: suppress 3 benign startup warnings on Windows client
...
- 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)
2026-07-02 00:05:27 -04:00
shawn
20ca43f928
fix: add smart entry scene (client vs server via headless detection)
2026-07-01 21:44:14 -04:00
shawn
d5098c61e1
fix: switch to OpenGL 3 renderer for Windows compatibility (gray screen fix)
2026-07-01 21:16:26 -04:00
shawn
159c554a86
t_p6_api: build plugin scripting system
...
- Add PluginBase (plugin_base.gd) — abstract base class with 12 virtual hooks
- Add PluginManifest (plugin_manifest.gd) — custom Resource for plugin metadata
- Add PluginManager (plugin_manager.gd) — autoload singleton: directory scan,
hook dispatch, lifecycle (load/unload/reload/rescan), cvar integration
- Add hello_world example plugin with all hooks demonstrating usage
- Register PluginManager autoload in project.godot
- Extend rcon_command_handler.gd with 'plugin' subcommand (list/load/unload/
reload/info/rescan) delegating to PluginManager
2026-07-01 18:36:23 -04:00