b0c83af092
Complete replacement of the tactical-shooter project with the netfox-cs-sample (MIT) — a CS 1.6 inspired multiplayer FPS built with Godot 4 and netfox. ## What's new - Full CS-style gameplay: teams (T/CT), rounds, economy, buy menu - 6 weapons: Knife, Glock, USP, AK-47, M4A1, AWP - Bomb plant/defuse with 2 bombsites - Flashbang & smoke grenades - Proper netfox rollback netcode at 64 tick - Network popup UI for host/join - HUD, crosshair, round timer, scoreboard - All netfox singletons registered as autoloads (works in exported builds) ## Architecture - Listen-server (host from client, no dedicated server binary) - Multiplayer-fps game lives at examples/multiplayer-fps/ - Netfox addons registered as autoloads for exported build compat - Godot 4.7 with Forward+ renderer ## Removed - Old headless-server architecture (client_main, server_main, player.gd, etc.) - Custom netfox bootstrap with ENet fallback - Old ChaffGames FPS template (2,420 lines, 844 KB) - SimulationServer GDExtension stub - Godot-jolt physics (netfox sample uses default Godot physics) - Duplicate weapon_data.gd, anti_cheat.gd, round_manager.gd, etc. - Server browser API Python venv (87 MB) - test_range map and modular assets ## Preserved - Git history - Server config at config/default_server_config.cfg - Windows export preset - Build directory (gitignored) Co-authored-by: naxIO <naxIO@users.noreply.github.com>
70 lines
3.0 KiB
Markdown
70 lines
3.0 KiB
Markdown
# Netfox Project
|
|
|
|
## Projekt-Kontext
|
|
Wir arbeiten am **Multiplayer-FPS-Beispiel** unter `/examples/multiplayer-fps/`.
|
|
Godot 4.6 mit dem netfox Networking-Framework. Sprache: GDScript.
|
|
|
|
## Multiplayer-FPS Struktur
|
|
|
|
**Architektur:** Server-autoritativ mit Rollback (Client-Side Prediction)
|
|
|
|
### Dateien
|
|
- `multiplayer-fps.tscn` — Hauptszene (Map, 5 Spawn Points, UI, Network)
|
|
- `characters/player.tscn` — Spieler-Prefab (CharacterBody3D)
|
|
- `scripts/player.gd` — Bewegung (Speed 5, Jump 5), Health (100 HP), Respawn
|
|
- `scripts/player-input.gd` — Input-Gathering (extends `BaseNetInput`), Mouse Sensitivity 0.005
|
|
- `scripts/player-weapon.gd` — Hitscan-Waffe (extends `NetworkWeaponHitscan3D`), 34 DMG/Hit, 0.25s Cooldown
|
|
- `scripts/player-spawner.gd` — Spieler spawnen/despawnen bei Connect/Disconnect
|
|
- `scripts/bullethole.gd` — Bullet-Hole Decal-Pool (max 20)
|
|
- `scripts/ui/` — Crosshair, Health-Bar, 3D-Projection, Window-Resize
|
|
|
|
### Netzwerk-Setup
|
|
- `RollbackSynchronizer` synct: transform, velocity, head rotation
|
|
- Inputs: movement, jump, fire, look_angle
|
|
- `MultiplayerSynchronizer` repliziert: health, death_tick, respawn_position
|
|
- `TickInterpolator` für smooth visuals zwischen Ticks
|
|
- Avatar-Body Authority: Server (ID 1), Input-Authority: jeweiliger Peer
|
|
|
|
### Gameplay
|
|
- WASD + Maus FPS-Steuerung
|
|
- 3 Hits = Tod (3x34 = 102 > 100 HP)
|
|
- Respawn an deterministischem Spawn Point (Hash-basiert)
|
|
- Sounds: fire.mp3, hit.wav, death.wav
|
|
|
|
## Netfox Framework (Addon)
|
|
|
|
### Kern-Systeme (Autoloads)
|
|
- `NetworkTime` — Zentraler Tick-Loop (Projekt-Default: 24 Hz)
|
|
- `NetworkTimeSynchronizer` — Clock-Sync zum Server
|
|
- `NetworkRollback` — Orchestriert Rollback
|
|
- `NetworkEvents` — Event-Broadcasting (on_client_start, on_server_start, on_peer_join, etc.)
|
|
- `RollbackSimulationServer` — Führt Physics/Logic während Rollback aus
|
|
- `NetworkHistoryServer` — State/Input History
|
|
- `NetworkSynchronizationServer` — Paket-Übertragung
|
|
- `NetworkIdentityServer` — Node-ID-Mapping
|
|
|
|
### Custom Nodes
|
|
- `RollbackSynchronizer` — Deterministische State-Sync mit Rollback + `_rollback_tick(delta, tick, is_fresh)`
|
|
- `StateSynchronizer` — Einfachere State-Sync ohne Rollback
|
|
- `TickInterpolator` — Smooth Interpolation zwischen Ticks
|
|
- `RewindableAction` — Rollback-fähige Actions (fire, abilities)
|
|
- `PredictiveSynchronizer` — Client-Side Prediction
|
|
|
|
### Extras (netfox.extras)
|
|
- `BaseNetInput` — Basis-Klasse für Input-Gathering mit `_gather()`
|
|
- `NetworkWeaponHitscan3D` — Hitscan-Waffen mit Latenz-Kompensation
|
|
- `NetworkWeapon3D/2D` — Projektil-Waffen
|
|
- `RewindableStateMachine` / `RewindableState` — Rollback-fähige State Machine
|
|
- `NetworkRigidBody2D/3D` — Physics-Sync mit Rollback
|
|
- `NetworkSimulator` — Latenz/Packet-Loss Simulation
|
|
- `RewindableRandomNumberGenerator` — Deterministische RNG
|
|
|
|
### Noray (netfox.noray)
|
|
- NAT Punchthrough + Relay-Fallback
|
|
- OpenID/PrivateID System
|
|
|
|
## Doku
|
|
- Framework-Docs: `/docs/netfox/`, `/docs/netfox.extras/`, `/docs/netfox.noray/`
|
|
- Tutorials: `/docs/netfox/tutorials/`
|
|
- Guides: `/docs/netfox/guides/`
|