Overview
Bonk is a team-based multiplayer game where players move around a physics-based arena, grapple to swing between platforms, and try to knock opposing players into a “death ball” to score points. It was built with Charlie Huang as a Java client-server application with hand-rolled networking and collision code, including custom data structures.
Features
- Lobby screen with team selection and a ready-up flow before matches start
- WASD movement plus a grapple ability bound to a key, synced across clients
- Custom rigid-body collision detection for circles, rectangles, and platforms
- Server-authoritative game state broadcast to clients over a custom packet protocol
- Scoring and a game-over screen when a team/player wins
- A cheat key for testing, gated behind a debug flag
- Custom
MyArrayList/MyHashMap/MyHashSetcollection implementations used in place of the Java standard library equivalents
How it works
The game is split into client and server packages, each with their own controller classes. The server runs the authoritative simulation (player and death-ball physics, collisions, scoring) and pushes state updates to connected clients using a set of typed packet classes (e.g. UpdatePlayerPacket, UpdateDeathBallPacket, SetScorePacket) sent over a custom PacketManager. Clients render the game with Java Swing/AWT, interpolating (“lerping”) received positions for smoother movement between network updates.
