Agar.io is a browser game, with the browser being the client that connects to a server.
- The server is the owner of the "game world". The server has all relevant about the game world and calculates all of its changes
- The client does not directly manipulate anything in the game world. The client only sends requests / intents. For example, if the player pressed the split key, the client send a request to do a split to the server and then the server handles it.
- Therefore client and server have to follow a certain protocol when communicating with each other, so that they are able to send message the other one can understand.
- Client and server use sockets to communicate
- The client is somewhat independent from the server. Therefore, in the past, it was possible to connect different clients and servers. For example people setup private servers and connected to them with the regular Agar.io client. However, nowadays this is no longer possible.
- The code cannot be read, because it has been obfuscated
- It did not always used to be obfuscated, so the code of earlier Agar.io versions has been used to create alternative clients
- Data is sent to the server in packets that are following the mutual net protocol and are encoded binary.