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,153 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://badtpsxn5lago"]
|
||||
|
||||
[ext_resource type="Script" path="res://examples/shared/scripts/lan-bootstrapper.gd" id="1_dy86e"]
|
||||
[ext_resource type="Script" path="res://examples/shared/scripts/noray-bootstrapper.gd" id="2_fgck5"]
|
||||
|
||||
[node name="Network Popup" type="TabContainer"]
|
||||
custom_minimum_size = Vector2(360, 240)
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -125.5
|
||||
offset_top = -48.5
|
||||
offset_right = 125.5
|
||||
offset_bottom = 48.5
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
|
||||
[node name="LAN" type="VBoxContainer" parent="."]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Address Row" type="HBoxContainer" parent="LAN"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 2
|
||||
|
||||
[node name="Address Label" type="Label" parent="LAN/Address Row"]
|
||||
layout_mode = 2
|
||||
text = "Address:"
|
||||
|
||||
[node name="Address LineEdit" type="LineEdit" parent="LAN/Address Row"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 0
|
||||
text = "localhost"
|
||||
|
||||
[node name="Port Label" type="Label" parent="LAN/Address Row"]
|
||||
layout_mode = 2
|
||||
text = "Port:"
|
||||
|
||||
[node name="Port LineEdit" type="LineEdit" parent="LAN/Address Row"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 0
|
||||
text = "16384"
|
||||
|
||||
[node name="Actions Row" type="HBoxContainer" parent="LAN"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
|
||||
[node name="Host Button" type="Button" parent="LAN/Actions Row"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "Host"
|
||||
|
||||
[node name="Join Button" type="Button" parent="LAN/Actions Row"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
text = "Join"
|
||||
|
||||
[node name="Noray" type="VBoxContainer" parent="."]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Noray Address Row" type="HBoxContainer" parent="Noray"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Address Label" type="Label" parent="Noray/Noray Address Row"]
|
||||
layout_mode = 2
|
||||
text = "noray host:"
|
||||
|
||||
[node name="Address LineEdit" type="LineEdit" parent="Noray/Noray Address Row"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "tomfol.io:8890"
|
||||
placeholder_text = "noray.example.com:8890"
|
||||
|
||||
[node name="OID Row" type="HBoxContainer" parent="Noray"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="OID Label" type="Label" parent="Noray/OID Row"]
|
||||
layout_mode = 2
|
||||
text = "Open ID: "
|
||||
|
||||
[node name="OID Value" type="LineEdit" parent="Noray/OID Row"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
text = "123456789"
|
||||
editable = false
|
||||
|
||||
[node name="Noray Actions Row" type="HBoxContainer" parent="Noray"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Connect Button" type="Button" parent="Noray/Noray Actions Row"]
|
||||
layout_mode = 2
|
||||
text = "Connect"
|
||||
|
||||
[node name="Disconnect Button" type="Button" parent="Noray/Noray Actions Row"]
|
||||
layout_mode = 2
|
||||
text = "Disconnect"
|
||||
|
||||
[node name="HSeparator" type="HSeparator" parent="Noray"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Connect Host Row" type="HBoxContainer" parent="Noray"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Host Label" type="Label" parent="Noray/Connect Host Row"]
|
||||
layout_mode = 2
|
||||
text = "Target Host: "
|
||||
|
||||
[node name="Host LineEdit" type="LineEdit" parent="Noray/Connect Host Row"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
placeholder_text = "Host OID"
|
||||
|
||||
[node name="Connect Actions Row" type="HBoxContainer" parent="Noray"]
|
||||
layout_mode = 2
|
||||
|
||||
[node name="Host Button" type="Button" parent="Noray/Connect Actions Row"]
|
||||
layout_mode = 2
|
||||
text = "Host"
|
||||
|
||||
[node name="Join Button" type="Button" parent="Noray/Connect Actions Row"]
|
||||
layout_mode = 2
|
||||
text = "Join"
|
||||
|
||||
[node name="Force Relay Checkbox" type="CheckBox" parent="Noray/Connect Actions Row"]
|
||||
layout_mode = 2
|
||||
text = "Force Relay"
|
||||
|
||||
[node name="LAN Bootstrapper" type="Node" parent="." node_paths=PackedStringArray("connect_ui", "address_input", "port_input")]
|
||||
script = ExtResource("1_dy86e")
|
||||
connect_ui = NodePath("..")
|
||||
address_input = NodePath("../LAN/Address Row/Address LineEdit")
|
||||
port_input = NodePath("../LAN/Address Row/Port LineEdit")
|
||||
|
||||
[node name="Noray Bootstrapper" type="Node" parent="." node_paths=PackedStringArray("connect_ui", "noray_address_input", "oid_input", "host_oid_input", "force_relay_check")]
|
||||
script = ExtResource("2_fgck5")
|
||||
connect_ui = NodePath("..")
|
||||
noray_address_input = NodePath("../Noray/Noray Address Row/Address LineEdit")
|
||||
oid_input = NodePath("../Noray/OID Row/OID Value")
|
||||
host_oid_input = NodePath("../Noray/Connect Host Row/Host LineEdit")
|
||||
force_relay_check = NodePath("../Noray/Connect Actions Row/Force Relay Checkbox")
|
||||
|
||||
[connection signal="pressed" from="LAN/Actions Row/Host Button" to="LAN Bootstrapper" method="host"]
|
||||
[connection signal="pressed" from="LAN/Actions Row/Join Button" to="LAN Bootstrapper" method="join"]
|
||||
[connection signal="pressed" from="Noray/Noray Actions Row/Connect Button" to="Noray Bootstrapper" method="connect_to_noray"]
|
||||
[connection signal="pressed" from="Noray/Noray Actions Row/Disconnect Button" to="Noray Bootstrapper" method="disconnect_from_noray"]
|
||||
[connection signal="pressed" from="Noray/Connect Actions Row/Host Button" to="Noray Bootstrapper" method="host"]
|
||||
[connection signal="pressed" from="Noray/Connect Actions Row/Join Button" to="Noray Bootstrapper" method="join"]
|
||||
@@ -0,0 +1,11 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://bpf1jdr255nr0"]
|
||||
|
||||
[ext_resource type="Script" path="res://examples/shared/scripts/time-display.gd" id="1_0i26b"]
|
||||
|
||||
[node name="Time Display" type="Label"]
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("1_0i26b")
|
||||
Reference in New Issue
Block a user