From 86216b8a65cf19f8a313042a0ba788b0886f40a7 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Wed, 26 Jun 2024 17:46:47 +0200 Subject: update protocol.md --- protocol.md | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) (limited to 'protocol.md') diff --git a/protocol.md b/protocol.md index a0fbe4f6..5960bb40 100644 --- a/protocol.md +++ b/protocol.md @@ -1,20 +1,21 @@ + # undercooked protocol The protocol schema is defined in [`protocol.ts`](./test-client/protocol.ts) @@ -22,16 +23,20 @@ The protocol schema is defined in [`protocol.ts`](./test-client/protocol.ts) 1. Connect to the server via TCP (on port 27031) or WebSocket (on port 27032) and send/receive json on individual lines / text messages. 2. Send the join packet with your username. -3. Receive initial packets. The server will send the current game state. - - `joined` including your ID and Gamedata +3. Wait for `init` packet. +4. The server will send the current game state: + - `data` once for setting important look-up tables - `update_map` for every tile - - `produce_item` for every item on a tile + - `set_tile_item` for every item on a tile - `add_player` for every player in the game -4. Run the game loop + - `set_player_item` for every item held by a player +5. Run the game loop - Send your position every 40ms. - Send `interact` when the player interacts with a tile. Make sure to set the `edge` parameter consistently. - Receive packets +6. The Game ends. The server will remove all players and tiles. Then continue at + step 4. Collisions are handled by the clients. Whenever to players collide the player with the greater PlayerID is responsible for updating their own momentum and @@ -39,7 +44,9 @@ sending a packet to update that of the other player. ## Movement -Movement is handled mostly client-side. Therefore it is implement three times: +Movement is handled mostly client-side. Therefore it is implemented three times: + - In the test-client: [movement.ts](./test-client/movement.ts) - For customers in the server: [movement.rs](./server/src/customer/movement.rs) -- In the client: [movement.rs](./client/scripts/player.gd) +- In the client: + [controllable_player.gd](./client/player/controllable_player.gd) -- cgit v1.2.3-70-g09d2