Files
tactical-shooter/addons/netfox.extras/icons/rewindable-state-machine.svg
T
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

92 lines
3.0 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
version="1.1"
id="Layer_1"
x="0px"
y="0px"
viewBox="0 0 16 16"
xml:space="preserve"
sodipodi:docname="rewindable-state-machine.svg"
inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)"
width="16"
height="16"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"><defs
id="defs1"><inkscape:perspective
sodipodi:type="inkscape:persp3d"
inkscape:vp_x="0 : -47.5 : 1"
inkscape:vp_y="0 : 15.625 : 0"
inkscape:vp_z="1 : -47.5 : 1"
inkscape:persp3d-origin="0.5 : -47.666667 : 1"
id="perspective1" /></defs><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="24.411443"
inkscape:cx="2.5397925"
inkscape:cy="9.4832576"
inkscape:window-width="2560"
inkscape:window-height="1043"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<style
type="text/css"
id="style1">
.st0{fill:none;stroke:#E0E0E0;stroke-width:6.875;stroke-linecap:round;stroke-linejoin:round;}
.st1{fill:#5FFF97;}
.st2{fill:#FF5F5F;}
.st3{opacity:0.8;}
</style>
<path
sodipodi:type="star"
style="fill:none;stroke:#e0e0e0;stroke-width:10.42235363;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="path1"
inkscape:flatsided="true"
sodipodi:sides="6"
sodipodi:cx="8.0625"
sodipodi:cy="8.0625"
sodipodi:r1="27.830996"
sodipodi:r2="24.102348"
sodipodi:arg1="0.53701091"
sodipodi:arg2="1.0606097"
inkscape:rounded="-9.1940344e-17"
inkscape:randomized="0"
d="M 31.97605,22.3 7.6892381,35.890992 -16.224312,21.653492 -15.85105,-6.1750005 8.4357619,-19.765992 32.349312,-5.5284919 Z"
transform="matrix(0.19189523,0,0,0.19189524,6.4528447,6.4528446)" />
<circle
style="fill:none;stroke:#e0e0e0;stroke-width:1;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="path9"
cx="7.9999995"
cy="7.8039598"
r="2.5" /><circle
style="fill:none;stroke:#e0e0e0;stroke-width:1;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.66"
id="circle9"
cx="6.9999995"
cy="7.8039598"
r="2.5" /><circle
style="fill:none;stroke:#e0e0e0;stroke-width:1;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.33"
id="circle10"
cx="5.9999995"
cy="7.8039598"
r="2.5" /><g
id="g9"
transform="matrix(0.25,0,0,0.25,0,-0.19604137)"><path
id="path1_00000101101429107098172700000017609064003007162547_"
class="st1"
d="M 32,40.2 23.8,56.6 15.6,40.2 Z" /><path
id="path2_00000126280959979031010980000006949781421479937947_"
class="st2"
d="M 48.4,56.7 40.2,40.3 32,56.7 Z" /></g></svg>