Project Deus is an hack’n slash/rogue-like game you can play with several dozens of players. It’s one of the most complex game I worked on.
The game is a classic hack’n slash (like Diablo, Path of Exile…) : you see your character from the top, have to click to move and press keys to launch spells.
Each new game, you are put in a room and have to kill all the monsters. When you clear the level, you are teleported in a new one harder and so on. The goal of the game is to finish the most levels you can. When all the team die, you return to the lobby and can start a new game from zero.
You can play with as many friends as you want and the game adapts itself the difficulty.
I am currently working on this project with Gaston Robert and I’m doing all the programming part of the project.
The game works with a client-server architecture. The server is made with C++ and the client with C# and Unity.
The client is a little bit special as it’s made in 2 parts : a pure core client Dll in C# and the Unity part that loads the Dll.
This architecture allows me to use Unity only as a plugable renderer and to create easily console clients for debug and test purpose.
As we are using Unity only to render the game, we had to manage all the communication between server and clients. That’s mean encapsulate the Winsock API, create a basic UDP protocol (reliable but not ordered), create our serialization system to make clients (in C#) and the server (in C++) communicate nicely, etc… The game is using TCP for all non-realtime communications and UDP for the realtime ones.
To make the game work with more than a few player, we had to implement network optimisations techniques. We worked hard on dealing with Interest Management, or lag compensation technique such as the local-lag (and a little bit Dead Reckoning) with timelines. You can find more technical information in this article (currently only in french) :
This game is an experimentation so it’s not perfect and we are currently working on it. More pictures are about to come !
You can find the project on Github :
– Server : https://github.com/Suliac/ProjectDeusServer
– Client : https://github.com/Suliac/ProjectDeusClient