Game showcase#
🎮 Welcome to the Game Showcase! This page shows games developed by students as part of the course lab. 🚀
2025-2026#
ArenaShot#
Creator: Mohamed Aldhubai
Source: https://github.com/mo-dhubai/ArenaShot-Game
A top-down peer-to-peer arena shooter for 2-4 players, inspired by classic deathmatch games like Quake and Counter-Strike. Players move with WASD, aim with the mouse, and the first to three kills wins.
The game runs entirely peer-to-peer over UDP, with LAN discovery through broadcast beacons so players can find each other without a central server. To stay responsive over a lossy network, the game uses delta compression (tiny 3-byte position updates with periodic full-state checkpoints) and dead reckoning with velocity-based extrapolation to smooth movement between packets. Critical events like hits and deaths are sent over a TCP-style reliability layer built on top of UDP, with sequence numbers, ACKs and retransmissions. To keep shooting fair under lag, the game implements ping-based lag arbitration: when a hit packet arrives, the victim rewinds their position history by half the shooter’s measured ping and sanity-checks the claim before accepting damage. Interest management filters out position updates to peers who are out of range.
Tanki Offline#
Creator: Aryan
A multiplayer 2D tank battle game inspired by Tanki Online.
Players drive and aim tanks in a top-down arena, battling each other while keeping movement and turret rotation responsive across peers. The game uses UDP with delta-compressed state updates and sends a 3-step history to reduce the impact of packet loss. To keep motion smooth between packets, it applies dead reckoning with exponential smoothing, allowing clients to predict positions during latency or brief drops. It also uses a P2P system with Invites and Discovery packets, allowing users to join lobbies and gracefully handle reconnects and players dropping out.
Game Demo
Presentation
Peer-to-peer Space Shooter#
Creator: Rebeka
Players control a spaceship. Each player has four abilities they can use to eliminate their opponents. The game uses UDP. Player movement is deterministically simulated. Each player sends a packet with their movement parameters whenever their input changes. In case of packet loss, the player’s location is synchronized every 150ms. Each player tracks collisions with their bullets. Packets for bullet creation and collision are retransmitted until an acknowledgement is received from all other players. The winner is the last player standing. If necessary, the winner is decided based on the time of death of the last player, which is adjusted based on ping.
Earlier editions of the course#
Tank Wars#
Creators: Trix and Sven
A multiplayer 2D tank battle game inspired by Wii Play’s “Tanks!”.
Players control tanks with body (X/Y axis) and turret (rotation) movements, aiming to eliminate each other on a bordered playing field. The original game was simplified (no obstacles), and instead of player vs. CPU combat, our game was based on player vs. player combat.
In terms of networking, the game is based on UDP. We opted for peer-to-peer communication, removing the need for a central server. To address the lack of reliability in UDP, the implementation incorporates dead reckoning, allowing the game to continue smoothly even in the face of packet loss, latency or corruption. Dead reckoning enables predictive movement based on the last known state, minimizing disruptions and ensuring a seamless gameplay experience. We also need to ensure integrity of the handshake and overall packets, to do so we “spam the other client” and make use of a CRC. On top of that, measures like bullet acknowledgements with timeouts are implemented to handle potential disagreements between clients, as to ensure fair gameplay.
Racing Valley#
Creators: Justin and Shane
We designed a top-down racing game supporting up to 16 players in one lobby. The players race around the track using the arrow keys to accelerate and turn the car, with supporting physics for collisions. The game supports dynamic rendering, i.e. only receiving updates from cars on the players’ screen and not on another part of the track, as well as dead-reckoning to reduce the amount of network traffic. One player acts as the host/server of the lobby, by which everyone else can join and through which all UDP requests are made. Additionally, we implemented host migration, i.e. when the host leaves or crashes, the game will automatically assign a new host and resume the race without the loss of data.
Super Smash Ghosts#
Creator: Flip
A simple game based on Super Smash Bros, but with ghosts and hammers! The goal is to hit other players off of the platform, last one standing wins. Every player has a direct connection to every other player, meaning anyone can disconnect at any point without consequences for other players. This also means no server is needed, every client handles its own player logic and communicates their results to all other payers. Lastly, the game implements a “dead-reckoning” system which predicts where a player is supposed to be if the data that player was supposed to send isn’t received.
Hostless Terraria#
Creator: Evelina
The game is a tile based box game in which you can shape your own world together with other people. Anyone should be able to join the game, regardless of whether or not the original world creator is online, as long as at least one player is currently playing. The game should recover from any of the players disconnecting during a game, and should bring the disconnected player up to date when they reconnect. This approach should use no dedicated server to minimize cost of operation, but synchronize the entire game state between all players in a peer-to-peer fashion, making sure the actions of one player are seen by all the other players.
