Bunny Hunters Online is going to be a nintendo-era retro-game in the style of Bomberman. It will be playable by players on different platforms all in the same game session.
Up to 4 players will play in a single game session. This manages our scaling issues nicely for server support, as well as giving us obvious start positions (the 4 corners of the game board.) If there are less then 4 players in a game, the remaining players will be played by AI.
The game will be played moving around a fairly typical nintendo style maze. The screen will be decided into a 10x10 grid. The outermost rows and columns will be solid border, leaving an 8x8 grid of play space. Hedges will fill some of the grid squares that are impassable to players, bunnies, or weapons.
The game will be played in a series of rounds. Each round there are a fixed number of bunnies to be shot. Shooting a bunny is worth 1 point. Shooting a player costs 2 points. HOWEVER only the last player left alive on the screen gets any points for that round.
When players or bunnies die, they leave a tombstone for 30 seconds. A tombstone acts like a hedge in terms of blocking. After 30 seconds the tombstone is removed.
Because we expect to have mobile players, we need to plan for lag of up to 1/4 second in any message during normal play. If the message generates a response, thats now a half second delay. A really long delay beyond that can be allowed to effect play but should not crash or stall the game.
In order to cover this design issue we will do two things:
(1) We will synchronize client clocks (with some expected drift) using NTP
(2) We will timestamp all messages and use a form of dead reckoning to approximate visual results
(3) We will make any action take at least 2 seconds to complete, giving us a "safety buffer". In particular it will be a full second before a moving entity leaves the grid square it is in.
An open-loop asynchronous game model such as this always opens potential hacking issues. For such a simple game however, with such limited long term consequences, we are going to choose to ignore them.