Project Overview
At Part Games, we all were in love with MOBA games, each with thousands of hours of playtime in DOTA 2 and
League of Legends. Our ultimate wish was to create a MOBA game for PC.
As our first step towards that dream, we started to develop Battle Arena game.
In Part Games studio, we have made online multiplayer games before this project. But the main difference was that
Battle Arana was a fast-paced game. Meaning that we couldn't simply use REST APIs or Socket
connection. We had to use UDP for our in-game communication.
Our core client-server architecture, in a very abstract level was like this:
- Game client, communicating with server applications.
- User Management server app, wriiten with ASP.NET Core, responsible to manage user acoount, CRUD on the
database MongoDB,etc.
- Matchmaking sevrer, which was actually a part of user management server, but responsible to establish a Web Socket
connection with clients, so that it can notify them when they get matched with another player.
- Game server, which was using UDP protocol to handle in-game communication between players.
At the early days of the project, we started a R&D about UDP protocol and how to develop a UDP server.
Our decision was to use the Server Authorative archihtecture. So every single match (containing 2 players) had to have a heade-less
version running on the server. We haven't used Photon or Mirror
or frameworks like them. We wrote the game server in c# ourselves. We developed the game server as a C# console app.
Another important part was the AI, as we didn't want the players to stay in the matchmaking queue forever,
waiting for a same-level opponent.
Sadra,
our tech-lead, combined re-inforcement learning with genetic algorithm to train an AI agent
wich was actually very cool and challenging to play against.
Our beloved project was canceled after beta release due to our studio's situations, which led to our team's shut-down...
Take a look at these videos which was taken by Omid,
our technical artists and client developer, at the early phases of development:
video 1
video 2