The client/server protocol is now fully implemented my end. It now sends "prepare" messages with the countdown if they're in the next game, and "play" and "gameover" messages to complete the set.
The game no longer starts immediately on state transition; there's now a six-second countdown with big flashing numbers to give people a few seconds to find their snake. And there's a few seconds to see the scoreboard at the end of the game, before it transitions back to the 'insert coin' state. So now the game can run fully standalone in a loop.
It now removes players from the queue when they join a game, so they don't stay top of the queue for the next game. Fixed some idiocy keeping players in a SortedSet sorted by their queue time, which of course changes when they join or leave the queue.
The queue now shows on the side of the screen during play, along with instructions both there and on the 'insert coin' screen for how to join. Added a fullscreen mode, added a jar artifact for distributing to Edward. Limited player names to 17 characters, fixed non-ASCII characters. And lots of internal tweaks and cleanups that weren't important enough to write down.
It would be great if someone can draw me some better images. They should all be 30x30, white-on-transparent PNGs. Attached to the bottom of this page is a zip file with my current images (note that these are the wrong size, they're currently all 23x23). Since the squares are directly adjacent to each other, the skulls and rabbits should have at least a 1px blank border (snake parts don't need a blank border on the sides that they are supposed to link up with other parts). Let me know if you can help.
Next steps: choosing better colours for the snakes, making the title screen and the game in general more graphically appealing, then adding features as time permits.
Next: Hours 13-14.