Well, it took longer than expected, but BlitzBotz is finally using the final version of my authoritative server setup. There are no more shortcuts to redo, and everything is working as expected. The client is now finally purely a graphical representation of what is going on at the server. You click to move, the server checks if can, where you are, when you last moved, etc. and sends the acceptance/denial to all members simultaneously. Lag switches and network manipulation has been officially thwarted : (<-- emo-robot smile)
After completing the server system, I decided to make a few adjustments, add a few new tweaks, and browsed through the Asset store for some inspiration. My girlfriend and I are big fans of the zombie levels in Black Ops, and after finding an awesome zombie model in the Asset store (Micro Zombie Brain) I decided to start working on a zombie level for the game. My priority was to handle the zombies in the same way I would any player, just with a little AI to control movement/attacks/etc. So, the server handles all zombie spawns and movements (attacks are coming later) and, as with everything else, all of this data is sent to each client simultaneously. This will allow players to not only meet up with a friend in the game to try and best the current zombie high score, but will also allow for a matchmaking system, meaning that players can join a queue and find other players to blow-away zombies with from anywhere with an internet connection. The zombies do not attack yet, nor do they take damage, but I will get to this later on... I need to do some major tweaking on the servers damage calculations before continuing with this.
Next, the plane-with-a-texture arena is now gone, replaced with a 3DS Max model that I've textured with various textures I've found off the internet. I'm only using these textures temporarily, so that I can get things thrown together quicker, and it also helps us see the big picture now rather than later, so we aren't creating textures over and over as we change models, etc. I've had the idea to include pillars/walls/etc. that the player can interact with for a while now, so I did a little proof of concept work to test it out. Below is a screen shot of a player taking cover behind one of the arena's pillars. The circles on the ground represent the "buttons" that players can click & hold to have their bot take cover behind the object, reducing and/or removing any damage they would have taken otherwise.
Last but not least, I finished work on the Armor Ability for the Marine class. The Gladiator class has an ability that allows them to sprint forward at a very high rate of speed, stunning any enemy they come in contact with along the way. I want classes to have their own play-style and feel, so the Marine class comes equipped with a jetpack that can be deployed at any time to escape any nearby danger. The bot jetpacks up, away, and spins around before landing, putting them in near-perfect position to attack upon completion of the animation.
Below is a video featuring these new features. It's short and to the point, but I haven't made a post in quite a while so I figured I'd get an update up on the Dev blog to showcase the work we've been doing. We are hoping to go public with a Zombie's-only version of the game very soon, which will basically pit players up against each other for rights to the high-score throne. Chances are it will not be co-op when first released, but we need to do these things one at a time, and there are only two of us, and only one of is a programmer.
The next goal is finish up tweaks on the damage calculation. The server now handles all damage calculations, and the client merely displays the servers data to the player, so adjustments will not be difficult as much as they will be time consuming. Zombies will probably get mostly completed during that time frame, since I will be using the zombies and their AI to test the attack systems, since trying to control two bots via two devices at once is not exactly an efficient use of time.
More coming soon!!.. and post will probably become a little more and more frequent as my newborn daughter starts sleeping through the night.