# Game showcase

🎮 Welcome to the Game Showcase, where you can see examples of the games from the previous year🚀

## Tank Wars

#### Trix and Sven

A multiplayer 2D tank battle game inspired by [Wii Play's "Tanks!"](https://nintendo.fandom.com/wiki/Tanks!).&#x20;

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.&#x20;

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.

<div><figure><img src="https://1494777194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkJ5zOZ6zzpxr0eW04pKd%2Fuploads%2FCxlN7IaftAZsFHmjoIX2%2F5-spamming.gif?alt=media&#x26;token=be645a48-680f-4e8f-b8b8-3b69ede03e5d" alt=""><figcaption></figcaption></figure> <figure><img src="https://1494777194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkJ5zOZ6zzpxr0eW04pKd%2Fuploads%2FwNbDZRXdKEeF9czEad7W%2F4-dead-reck.gif?alt=media&#x26;token=ec7e3e35-608c-4772-86b1-aa0bc774e0ea" alt=""><figcaption></figcaption></figure> <figure><img src="https://1494777194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkJ5zOZ6zzpxr0eW04pKd%2Fuploads%2FXQPw5BpkvOY9uyWeKXRW%2F3-handshake.gif?alt=media&#x26;token=90e1b71c-820c-458a-99a7-ab6a68c4d0a9" alt=""><figcaption></figcaption></figure> <figure><img src="https://1494777194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkJ5zOZ6zzpxr0eW04pKd%2Fuploads%2FJbyKB6Oq5g2uTcRHoZaT%2F2-udp.gif?alt=media&#x26;token=204baba2-eadd-4963-96a9-9270abba0bce" alt=""><figcaption></figcaption></figure> <figure><img src="https://1494777194-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkJ5zOZ6zzpxr0eW04pKd%2Fuploads%2FkmoqePuzvs35UhXfm0TE%2F1-p2p.gif?alt=media&#x26;token=f08c0af1-6382-433c-81ed-e68874f9f768" alt=""><figcaption></figcaption></figure></div>

{% embed url="<https://drive.google.com/file/d/1yemwMbItowoB2OmRXJfunMSHbT1PmxpP/view?usp=sharing>" %}

***

## Racing Valley

#### Justin Prent and Shane Prent

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.

{% embed url="<https://drive.google.com/file/d/1DWbEOU1eeTucOdmGFrM0djdF2ZNYoq5f/view?usp=sharing>" %}

***

## Super Smash Ghosts

#### Flip Grim

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.

{% embed url="<https://www.youtube.com/watch?v=W19J989DgTo>" %}

***

## Hostless Terraria

#### Evelina Nițoiu

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.

{% embed url="<https://drive.google.com/file/d/19m4xH4hYXEQEwrUrZWx6Rg6bH85U8qXK/view?usp=sharing>" %}
