Understanding the server architecture.
The server side of EasyMOBA is a Unity Application.
The server made by using Unity's libraries, including UnityEngine.Networking API.
The server reads the game data from an external folder 'ServerData'.
You can find all 'editable parts without coding' of the server in that folder.
Adding heroes, maps, game modes etc.
The Server Architecture
The server has a system named 'Callipso' (Callipso.cs)
Callipso has a List that contains all the game sessions and controls it via 'ServerManager.cs'.
Callipso doesn't run another executable for game sessions. All game sessions runs in the current executable.
On our test with AI Player Bots, the server is well runned with 3000 game sessions and 24000 agents (12000 players, 12000 creatures)
Server test machine system specs:
i7 3.6 GHZ
32 gb ram
For example; the server can hold easily 1000 players and 1000 creatures on 250 game sessions on 3 gb ram server and 5mbps internet connection.
Your players should have 2 kbps connection (3g is ok) to play the game properly.
1 game session with 4 players and 4 creatures cost 2 kbps download & 8kbps upload bandwidth.
Note that the values are approximate.
After you build your map in Client project, the Callipso Map Exporter tool will give your a .png map file in Resources/Maps folder in your client project.
That map file contains map collision and it will be used for pathfinding algorithm and collision detection.
Check !Adding a new map and game modes! section for more info.
-PHYSICS & COLLISION DETECTION-
The server doesn't use the Unity's collision detection.
The server has a script name Physik.cs
It's a cheap and the fastest solution for the collision detectioning.
'Physik objects' has radius and the 'Tracer Physik objects' looks for the 'Physik objects' in its radius in their game session.
-CREATURES AND AI Player's PATHFINDING-
Connected players agents don't use the pathfinding. They choses the path they want to move. But the other agents (Creatures and AI Players) uses
a pathfinding algorithm to reach the target.
#### A jump point search algorithm for grid based games in C# ####