# Testing Guide ## Manual Testing Checklist ### Basic Functionality #### Single Player Local - [ ] Start game, host with 1 local player - [ ] Player spawns correctly - [ ] Movement with WASD/Arrow keys works - [ ] Can grab objects with E - [ ] Can throw objects with Q - [ ] Camera follows player #### Multiple Local Players - [ ] Host with 2 local players - [ ] Both players spawn - [ ] Player 1 (keyboard) controls work - [ ] Player 2 (gamepad) controls work - [ ] Camera follows both players - [ ] Camera zooms out when players spread apart #### Networking - Host - [ ] Host game successfully - [ ] Host player spawns - [ ] Can move and interact - [ ] Client can connect - [ ] Client players appear on host screen #### Networking - Client - [ ] Can join game at 127.0.0.1 - [ ] Client player spawns - [ ] Can move and interact - [ ] Host player visible on client screen - [ ] Movement is synchronized ### Interaction System #### Grab Objects - [ ] Can grab nearby objects - [ ] Object follows player when grabbed - [ ] Can release object with E - [ ] Object stays where released #### Throw Objects - [ ] Can throw held object with Q - [ ] Object flies in direction of movement - [ ] Object has physics (bounces, slides) - [ ] Throw force is appropriate #### Push Objects - [ ] Walking into objects pushes them - [ ] Heavy objects move slower - [ ] Light objects move faster - [ ] Push works from all directions #### Grab Players - [ ] Can grab other players - [ ] Grabbed player follows grabber - [ ] Grabbed player can't move - [ ] Can release player - [ ] Can throw player ### Multiplayer Scenarios #### Host + 1 Remote Client - [ ] Host with 1 local player - [ ] Client joins with 1 local player - [ ] Both can see each other - [ ] Movement syncs correctly - [ ] Can grab each other - [ ] Can grab same objects - [ ] Objects sync between players #### Host + Multiple Local + Remote - [ ] Host with 2 local players - [ ] Client joins with 1 local player - [ ] All 3 players visible - [ ] All players can interact - [ ] Camera works for local players - [ ] Network sync is smooth #### Multiple Clients - [ ] Host with 1 local player - [ ] Client 1 joins with 1 local player - [ ] Client 2 joins with 1 local player - [ ] All players visible to each other - [ ] All interactions work - [ ] No desync issues #### Drop-in Gameplay - [ ] Host starts game - [ ] Play for 30 seconds - [ ] Client joins mid-game - [ ] Client spawns correctly - [ ] Game state syncs to client - [ ] No crashes or errors ### Edge Cases #### Disconnection - [ ] Client disconnects gracefully - [ ] Client's players despawn on host - [ ] Host can continue playing - [ ] Other clients unaffected #### Rapid Actions - [ ] Grab and throw rapidly - [ ] Spam movement keys - [ ] Multiple players grab same object - [ ] No crashes or glitches #### Boundary Testing - [ ] Players can't leave arena - [ ] Objects bounce off walls - [ ] Thrown objects don't escape - [ ] Camera stays in bounds ## Automated Testing Notes ### Performance Metrics - Target FPS: 60 - Network latency: < 100ms for LAN - Player spawn time: < 1 second - Object sync delay: < 50ms ### Known Limitations 1. Maximum 8 concurrent connections 2. Maximum 4 local players per machine 3. Objects may desync under extreme lag 4. No reconnection support yet ## Bug Reporting Template ``` **Bug Description:** [Clear description of the issue] **Steps to Reproduce:** 1. [First step] 2. [Second step] 3. [etc.] **Expected Behavior:** [What should happen] **Actual Behavior:** [What actually happens] **Environment:** - Godot Version: 4.6 - OS: [Windows/Linux/Mac] - Network: [Local/LAN/Internet] - Players: [Number and configuration] **Console Output:** [Any error messages] ```