Files
shawn b0c83af092 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>
2026-07-02 20:55:20 -04:00

120 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
BOLD="$(tput bold)"
NC="$(tput sgr0)"
ROOT="$(pwd)"
BUILD="$ROOT/build"
TMP="$ROOT/buildtmp"
declare -a OFF_FILES=(
"addons/netfox.extras/physics/godot_driver_2d.gd"
"addons/netfox.extras/physics/godot_driver_2d.gd.uid"
"addons/netfox.extras/physics/godot_driver_3d.gd"
"addons/netfox.extras/physics/godot_driver_3d.gd.uid"
"addons/netfox.extras/physics/rapier_driver_2d.gd"
"addons/netfox.extras/physics/rapier_driver_2d.gd.uid"
"addons/netfox.extras/physics/rapier_driver_3d.gd"
"addons/netfox.extras/physics/rapier_driver_3d.gd.uid"
)
# Assume we're running from project root
source sh/shared.sh
# Grab commit history
print $BOLD"Unshallowing commit history"$NC
git fetch --unshallow --filter=tree:0
print $BOLD"Building netfox v${version}" $NC
print "Directories"
print "Root: $ROOT"
print "Build: $BUILD"
print "Temp: $TMP"
rm -rf "$BUILD"
mkdir -p "$BUILD"
rm -rf "$TMP"
# Disable scripts
print "::group::Disabling optional scripts"
has_missing_offs="false"
for file in "${OFF_FILES[@]}"; do
has_source=$(test -f "$file" && echo "true" || echo "false")
has_off=$(test -f "$file.off" && echo "true" || echo "false")
if [[ $has_source == "false" && $has_off == "false" ]]; then
print "::error::Registered optional script doesn't exist: $file"
has_missing_offs="true"
fi
if [[ $has_source == "true" ]]; then
mv "$file" "$file.off"
print "Disabled optional script: $file"
fi
done
if [[ $has_missing_offs == "true" ]]; then
print "::error::Found missing optional scripts!"
print "::endgroup::"
exit 1;
fi;
print "::endgroup::"
# Bundle addons
for addon in ${addons[@]}; do
print "::group::Packing addon ${addon}"
addon_tmp="$TMP/${addon}.v${version}/addons"
addon_src="$ROOT/addons/${addon}"
addon_dst="$BUILD/${addon}.v${version}"
mkdir -p "${addon_tmp}"
cd "$TMP"
cp -r "${addon_src}" "${addon_tmp}"
"$ROOT/sh/contributors.sh" > "${addon_tmp}/${addon}/CONTRIBUTORS.md"
has_deps="false"
for dep in ${addon_deps[$addon]}; do
print "Adding dependency $dep"
cp -r "$ROOT/addons/${dep}" "${addon_tmp}"
"$ROOT/sh/contributors.sh" > "${addon_tmp}/${dep}/CONTRIBUTORS.md"
has_deps="true"
done
if [ $has_deps = "true" ]; then
zip -r "${addon_dst}.zip" "${addon}.v${version}"
fi
cd "$ROOT"
rm -rf "$TMP"
print "::endgroup::"
done
# Build example game
print $BOLD"Building Forest Brawl" $NC
mkdir -p build/linux
mkdir -p build/win64
print "Building with Linux/X11 preset"
godot --headless --export-release "Linux/X11" "build/linux/forest-brawl.x86_64"
zip -j "build/forest-brawl.v${version}.linux.zip" build/linux/*
print "Building with Windows preset"
godot --headless --export-release "Windows Desktop" "build/win64/forest-brawl.exe"
zip -j "build/forest-brawl.v${version}.win64.zip" build/win64/*
# Build docs
print $BOLD"Building docs" $NC
mkdocs build --no-directory-urls
cd site
zip -r "../build/netfox.docs.v${version}.zip" ./*
cd ..
rm -rf site
# Cleanup
print $BOLD"Cleaning up" $NC
rm -rf build/win64 build/linux