Movement: Players should be able to move freely around the game field. Allowed directions should be horizontal and vertical movements, as well as diagonal movements. Clients should only provide the direction they want to go, while the server / service does all of the math and movement cycles behind it.
Food: Food needs to be generated and displayed. There has to be a cap of how many Food-Objects can be on the game field, depending on its size and maybe the amount of users. Users should be able to pick up these objects to earn points and grow in size.
Collision: Collisions between players and players with food need to be detected. If players collide, the bigger one "eats" the smaller one and gets all of the smaller ones points added to his score and therefore grows in size. When the game is up and running, this behaviour can be adjusted so that the destruction of the smaller player happens piecewise. This way a user has more chances to react and doesn't lose all of his progress in 1 second. If a collision with a food-object is detected, the object gets destroyed and the colliding player is awarded some points / size. If a player collides with the walls of the game board, he will also be destroyed.
Synchronisation: The game state should be equal for each user. To reduce the impact of different pc specifications most of the processing should be on the server side. There should be a service collecting all necessary game events, building the needed data structures for displaying the game board and serving this structure to all currently active users. Clients should only be concerned about displaying these structures and sending movement directions. Having most of the processing on the server side also has the benefit of reducing the possibilities for mischievous actions of a user / client.
Possible Additions:
Hurdles: Hurdles could be generated to improve the difficulty and complexity. Colliding with those may destroy a player.
Items: There might be items which grant special powers for a short period of time. An example would be an item that makes a user indestructible for 5 seconds (like the star in Super Mario).
Statistics: To enable an overview of the current game state or overall statistics a corresponding service might be added. It could provide a ranking of active players with varying focus points (e.g. most points, longest living, most kills etc.).
Movement: Players should be able to move freely around the game field. Allowed directions should be horizontal and vertical movements, as well as diagonal movements. Clients should only provide the direction they want to go, while the server / service does all of the math and movement cycles behind it.
Food: Food needs to be generated and displayed. There has to be a cap of how many Food-Objects can be on the game field, depending on its size and maybe the amount of users. Users should be able to pick up these objects to earn points and grow in size.
Collision: Collisions between players and players with food need to be detected. If players collide, the bigger one "eats" the smaller one and gets all of the smaller ones points added to his score and therefore grows in size. When the game is up and running, this behaviour can be adjusted so that the destruction of the smaller player happens piecewise. This way a user has more chances to react and doesn't lose all of his progress in 1 second. If a collision with a food-object is detected, the object gets destroyed and the colliding player is awarded some points / size. If a player collides with the walls of the game board, he will also be destroyed.
Synchronisation: The game state should be equal for each user. To reduce the impact of different pc specifications most of the processing should be on the server side. There should be a service collecting all necessary game events, building the needed data structures for displaying the game board and serving this structure to all currently active users. Clients should only be concerned about displaying these structures and sending movement directions. Having most of the processing on the server side also has the benefit of reducing the possibilities for mischievous actions of a user / client.
Possible Additions: