# Server This folder is for the external multiplayer test server. The current server is a tiny local-only TCP test server. It listens on `127.0.0.1:7777`, accepts one or more clients, reads newline-separated JSON packets, assigns incrementing `playerId` values, sends `welcome` packets, adds `playerId` and `serverTime` to transform packets, broadcasts transform packets to every other connected client, and broadcasts disconnect packets when clients disconnect. This is still a local prototype. It does not make Fallout 4 multiplayer playable yet. ## Run ```bash cd server python server.py ``` Then launch Fallout 4 through F4SE and move the player. The plugin should send local player transform packets, and this server should print matching `transform` packets. If the server is not running, the plugin should log a warning and Fallout 4 should continue launching normally. ## Current Test Flow Terminal 1: ```bash cd server python server.py ``` Terminal 2: ```bash cd server python fake_client.py ``` Then launch Fallout 4 through F4SE and move the player. Expected behavior: - The server assigns a `playerId` to each connected client and sends each client a `welcome` packet. - The server receives transforms from the Fallout 4 plugin. - The server adds `playerId` and `serverTime` to each transform packet before broadcast. - The server broadcasts those transform packets to connected clients except the sender. - `fake_client.py` receives broadcast transform packets. - `fake_client.py` stores remote player state by `playerId`. - When a client disconnects, the server removes that client and broadcasts a `disconnect` packet with the departed `playerId` to the remaining clients. - `fake_client.py` removes disconnected players from its in-memory `remote_players` table. The fake client exists so broadcast behavior can be tested before coordinating a second Fallout 4/F4SE instance. It stores remote player transform state only; it does not spawn remote actors or send movement. ## Implemented - Start local server - Accept client connections - Assign server-owned player IDs - Send welcome packets - Receive transform packets - Add server timestamps - Broadcast transforms to other connected clients - Broadcast disconnect packets - Handle disconnect cleanup ## Working In Fake Client Only - Receiving welcome packets - Receiving transform broadcasts - Storing remote player state - Removing disconnected remote players The Fallout 4 plugin does not yet receive remote transforms from the server. ## Planned Later - Fallout 4 plugin receive loop - Plugin-side remote player state storage - Remote actor spawning - Gameplay synchronization - Authentication - Public matchmaking - Anti-cheat - Persistence - Quest state - Settlement state - Large-scale world simulation