Fresh start: replace with naxIO/netfox-cs-sample foundation
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>
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# Attributions
|
||||
|
||||
This document outlines the sources of the sound effects used. Thank you all for
|
||||
the freely usable sound effects!
|
||||
|
||||
## Boom
|
||||
|
||||
[Source](https://freesound.org/people/studiomandragore/sounds/401630/)
|
||||
|
||||
Played whenever a bomb hits something.
|
||||
|
||||
Files:
|
||||
|
||||
* boom1.wav
|
||||
* boom2.wav
|
||||
* boom3.wav
|
||||
|
||||
All taken from *"Booms.wav"* by [studiomandragore], under the [Creative Commons
|
||||
0] license.
|
||||
|
||||
## Whoosh
|
||||
|
||||
[Source](https://freesound.org/people/qubodup/sounds/60013/)
|
||||
|
||||
Played whenever a bomb is thrown.
|
||||
|
||||
Files:
|
||||
|
||||
* whoosh.wav
|
||||
|
||||
*"Whoosh"* by [qubodup], under the [Creative Commons 0] license.
|
||||
|
||||
## Blip Wave
|
||||
|
||||
[Source](https://freesound.org/people/Breviceps/sounds/452998/)
|
||||
|
||||
Played whenever a player picks up the Speed Powerup.
|
||||
|
||||
Files:
|
||||
|
||||
* blipwave.wav
|
||||
|
||||
*"Blip Wave"* by [Breviceps], under the [Creative Commons 0] license.
|
||||
|
||||
## Glitch SFX
|
||||
|
||||
[Source](https://freesound.org/people/Dymewiz/sounds/109026/)
|
||||
|
||||
Played whenever a player picks up the Mass Powerup.
|
||||
|
||||
Files:
|
||||
|
||||
* glitch1.wav
|
||||
* glitch2.wav
|
||||
|
||||
All taken from *"glitch SFX_065.wav"* by [Dymewiz], under the [Attribution 3.0]
|
||||
license. A fade-out effect was applied on the sound bits.
|
||||
|
||||
## Bomb fall
|
||||
|
||||
[Source](https://freesound.org/people/Johnnyfarmer/sounds/209768/)
|
||||
|
||||
Played whenever a player picks up the Repulse Powerup.
|
||||
|
||||
Files:
|
||||
|
||||
* repulse1.wav
|
||||
* repulse2.wav
|
||||
* repulse3.wav
|
||||
|
||||
All taken from *"Bomb Fall"* by [Johnnyfarmer], under the [Creative Commons 0]
|
||||
license.
|
||||
|
||||
## Falling
|
||||
|
||||
[Source](https://freesound.org/people/oganesson/sounds/555015/)
|
||||
|
||||
Played whenever a player falls down into the abyss.
|
||||
|
||||
Files:
|
||||
|
||||
* fall1.wav
|
||||
|
||||
*"Falling"* by [oganesson], under the [Creative Commons 0] license.
|
||||
|
||||
## fall.ogg
|
||||
|
||||
[Source](https://freesound.org/people/silversatyr/sounds/113365/)
|
||||
|
||||
Played whenever a player falls down into the abyss.
|
||||
|
||||
Files:
|
||||
|
||||
* fall2.wav
|
||||
|
||||
*"fall.ogg"* by [silversatyr], under the [Attribution 3.0] license. The file was
|
||||
trimmed on both ends.
|
||||
|
||||
## Slide Whistle, Descending, A.wav
|
||||
|
||||
[Source](https://freesound.org/people/InspectorJ/sounds/402581/)
|
||||
|
||||
Played whenever a player falls down into the abyss.
|
||||
|
||||
Files:
|
||||
|
||||
* fall3.wav
|
||||
|
||||
*"Slide Whistle, Descending, A.wav"* by [InspectorJ], under the [Attribution
|
||||
4.0] license. No changes were made to the original sound effect.
|
||||
|
||||
[studiomandragore]: https://freesound.org/people/studiomandragore/
|
||||
[qubodup]: https://freesound.org/people/qubodup/
|
||||
[Breviceps]: https://freesound.org/people/Breviceps/sounds/452998/
|
||||
[Dymewiz]: https://freesound.org/people/Dymewiz/
|
||||
[Johnnyfarmer]: https://freesound.org/people/Johnnyfarmer/
|
||||
[oganesson]: https://freesound.org/people/oganesson/
|
||||
[silversatyr]: https://freesound.org/people/silversatyr/
|
||||
[InspectorJ]: https://freesound.org/people/InspectorJ/
|
||||
|
||||
|
||||
[Creative Commons 0]: https://creativecommons.org/publicdomain/zero/1.0/
|
||||
[Attribution 3.0]: https://creativecommons.org/licenses/by/3.0/
|
||||
[Attribution 4.0]: https://creativecommons.org/licenses/by/4.0/
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://baytcuptor78h"
|
||||
path="res://.godot/imported/blipwave.wav-7331cd1cf02dab8cb660d37457999844.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/blipwave.wav"
|
||||
dest_files=["res://.godot/imported/blipwave.wav-7331cd1cf02dab8cb660d37457999844.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cuu7355mjw0qm"
|
||||
path="res://.godot/imported/boom1.wav-886e472233df263b1e62a5dac289a7ec.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/boom1.wav"
|
||||
dest_files=["res://.godot/imported/boom1.wav-886e472233df263b1e62a5dac289a7ec.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://dk44nxlwr3m1o"
|
||||
path="res://.godot/imported/boom2.wav-f4886bb413d32ec6cab7d78b5e1799f7.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/boom2.wav"
|
||||
dest_files=["res://.godot/imported/boom2.wav-f4886bb413d32ec6cab7d78b5e1799f7.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://yyc2x2137nqa"
|
||||
path="res://.godot/imported/boom3.wav-c542669b336823d494104a7760de97c3.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/boom3.wav"
|
||||
dest_files=["res://.godot/imported/boom3.wav-c542669b336823d494104a7760de97c3.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=false
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cih2i8xa2v2is"
|
||||
path="res://.godot/imported/fall1.wav-a84df2ff99962b221cc891051e583770.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/fall1.wav"
|
||||
dest_files=["res://.godot/imported/fall1.wav-a84df2ff99962b221cc891051e583770.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://4oilc8k83mmt"
|
||||
path="res://.godot/imported/fall2.wav-6e44e1350c453f00bd461235a3ed3e18.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/fall2.wav"
|
||||
dest_files=["res://.godot/imported/fall2.wav-6e44e1350c453f00bd461235a3ed3e18.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cegpnj82f4gio"
|
||||
path="res://.godot/imported/fall3.wav-a35d8b2580f14fe0787cbec6cfdcffb0.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/fall3.wav"
|
||||
dest_files=["res://.godot/imported/fall3.wav-a35d8b2580f14fe0787cbec6cfdcffb0.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cajfyvodmjy8i"
|
||||
path="res://.godot/imported/glitch1.wav-71da56b8a051a21c5295fb69f825bd79.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/glitch1.wav"
|
||||
dest_files=["res://.godot/imported/glitch1.wav-71da56b8a051a21c5295fb69f825bd79.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://c708geohjw7ci"
|
||||
path="res://.godot/imported/glitch2.wav-e560c80e451b78e9422d8ffdfa300fdf.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/glitch2.wav"
|
||||
dest_files=["res://.godot/imported/glitch2.wav-e560c80e451b78e9422d8ffdfa300fdf.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://cpqwch1ruf417"
|
||||
path="res://.godot/imported/repulse1.wav-1f4570394e40625c236284a70d57ee3d.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/repulse1.wav"
|
||||
dest_files=["res://.godot/imported/repulse1.wav-1f4570394e40625c236284a70d57ee3d.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://djx8bf0n5hpjd"
|
||||
path="res://.godot/imported/repulse2.wav-0830b46c83a2ec05429b91e2d0459525.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/repulse2.wav"
|
||||
dest_files=["res://.godot/imported/repulse2.wav-0830b46c83a2ec05429b91e2d0459525.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://b1l44piqung8p"
|
||||
path="res://.godot/imported/repulse3.wav-8b9477174a1bc5d15fa6f9cc2ddc3942.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/repulse3.wav"
|
||||
dest_files=["res://.godot/imported/repulse3.wav-8b9477174a1bc5d15fa6f9cc2ddc3942.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Binary file not shown.
@@ -0,0 +1,24 @@
|
||||
[remap]
|
||||
|
||||
importer="wav"
|
||||
type="AudioStreamWAV"
|
||||
uid="uid://b03phi3tfl21k"
|
||||
path="res://.godot/imported/whoosh.wav-3534f545bbb039cf26666f26e50899a0.sample"
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://examples/forest-brawl/sounds/whoosh.wav"
|
||||
dest_files=["res://.godot/imported/whoosh.wav-3534f545bbb039cf26666f26e50899a0.sample"]
|
||||
|
||||
[params]
|
||||
|
||||
force/8_bit=false
|
||||
force/mono=true
|
||||
force/max_rate=false
|
||||
force/max_rate_hz=44100
|
||||
edit/trim=true
|
||||
edit/normalize=true
|
||||
edit/loop_mode=0
|
||||
edit/loop_begin=0
|
||||
edit/loop_end=-1
|
||||
compress/mode=0
|
||||
Reference in New Issue
Block a user