I am currently working toward a match-making service and lobby system in AO where servers will be able to set some game settings and start a lobby, and then clients will be able to see a list of all the active servers and join one. The match-making part of this is done. I set up a pair of simple PHP pages and hooked those into a database, one to post a server and the other to request the server list. Right now, when you click “Host” in AO, it starts a “Server Beacon” thread that will post and re-post its server information on the web, it expires after 1 minute. The clients are able to download the server list, then request more information from each one (and incidentally also grab a ping), then display that information in a table I designed in XNA. That’s as far as it goes.
Next, I need to alter the existing TCP protocol I am using to put players in a lobby before starting the game. This lobby should display mostly read-only information to the client, but allow the server to change settings? I guess I’ll worry about that when I actually have game settings. For now, all I need is a player list and a “GO NOW” button that will start a count-down timer, initiate the game world, and sync all the clients before starting the game.
Since I’m getting closer to getting multiplayer set up and working from an end-user perspective, I’ve started to do some more thinking about the gameplay modes and what comes next. My initial plan for multiplayer is coop defence. My initial initial plan was 2 players, but I have since thought, why 2? I’m starting to think that 2-4 players feels like a good number, and absolutely nothing in the back end will need to change. The way I’m thinking of doing the AI waves is to provide both a theme and value. The theme would be something like “Lots of motherships” or “cloaking”, where the units in the wave would belong to the “theme” of the wave. On the same note, I don’t want waves to consist of only 1 unit type like a lot of tower defence games do, and I understand why they do it, but I don’t want that feel for this game. A “Value” would be assigned to each wave. I’m thinking that each AI unit will also have a value, the higher, the stronger or harder the unit is to defeat. When the waves are randomly generated, I will keep adding units to a wave until the value of the collection of units exceeds or matches the intended wave value. This will also make it easy to add a multiplier for multiplayer, or change the value for different difficulty levels. This brings up an other point, if there are 2 players in the game, the AI should be at least twice as strong, right? If it’s exactly twice as strong, I think it would be easy. If one player needs help, the other one will pitch in (if able). It will require lots of play testing, but my gut tells me that a 2.1 multiplier might work well. Any thoughts?