Sunday, June 30, 2013

AHHHH!!! BlitzBotz Zombies Are Coming!!

As a long time fan of zombie levels in just about any game, I decided the next logical step for BlitzBotz was to add it's own version of this tried and true game type. The concept was relatively simple: send zombies in waves to attack the player in increasingly difficult waves. Maintain a leaderboard and personal high scores, and in keeping with the theme for BlitzBotz, make sure that the server handles the zombies rather than the client, to prevent any cheating and/or network manipulation. What has come of the work is a relatively simple, but incredibly fun, zombies game for BlitzBotz that I'm hoping to have live on the site very soon.



When deciding to build the Zombies Arena, the reasoning for doing so wasn't just for entertainment value, however. I also realized that this would provide me with a much easier way to test the game mechanics as they are added and updated to the multi-player Arenas. Coding this game entirely on my own, I often run into the problem of having to control two different BlitzBotz from two systems simultaneously, which can make the timing of attacks a bit difficult. By creating AI controlled zombies, I effectively removed this annoyance, and can now tweak weapons systems and other loadout items much easier than before, since the zombies never stop coming and they get increasingly more difficult to kill as the game progresses. This allows me to get a feel for how powerful the weapons are when compared to one another, as well as making this work much more enjoyable, since I am now effectively playing a game as I work.

The Zombies Arena had started out using the standard BlitzBotz octagon style, but it became apparent that this type of arena wasn't suited well for swarms of zombies coming after the player. I needed to design an arena around the concept of the level rather than vice versa. On top of that, while the textures of the arena work well for match-ups between multiple players, the zombies arena needed a little flair to provide a sense of ambiance. The solution was a cross-shaped arena with a graveyard design style. The shape of the arena itself allowed me to create some simple pathfinding scripts as the zombies approached the player, and the graveyard design seemed to fit well with the theme of the level itself. Zombies now appear behind iron gates and will move via waypoints to find the shortest and fastest route to the player, the end goal being to swarm the player with zombies until they are overwhelmed.



Currently only the Primary & Secondary weapons "work", allowing the player to swap between their assault rifle and the back-up pistol. The Jetpack Armor Module works to a point, but still allows the player to fly outside of the play area, but I intend to fix this soon with some simple collider scripts. The Shielding Module works to a point as well, but is absolutely pointless in-so-far as helping protect you from the onslaught. I intend to fix this soon as well, and the shield will soon allow you to quickly defend yourself in the event you cannot get away from an approaching zombie in time. Lastly, although the grenade animations works, and the grenade flys out into the crowd of zombies and explodes as one would expect, it does not cause any damage yet. A quick update to the server's damage calculation scripts will remedy this, and I hope to have all 5 action buttons working as expected in the coming week.



The pathfinding needs some tweaking, the zombies attack system needs a bit of improvment, and 3 buttons need to have their actions finished; but for the most part, the single-player version of the Zombies Arena is near completion. This entire setup was designed with Co-Op in mind, and it won't take much more work at all to include another player to help you pwn one wave of zombies after another. Also on the to-do list is to include weapon drops, which will allow the player to select from 3 or so 'overpowered' weapons as they earn points for their kills. For instance, kill 20 zombies and earn yourself a flamethrower... earn 35 and you can opt for the rocket launcher... save your points until you've reached 50 and you'll be lasering mutliple zombies with a single beam of concentrated plasma.

WIth the leaderboards scripts already tracking your high scores, your total number of games and zombies killed, and allowing you to easily see where you rank in the world of BlitzBotz zombies-pest-removal, I'm hoping that once the single player version is available players will be as excited as I am to start earning their place among the top BlitzBotz. Alpha registration is still open, but once we hit Closed Beta stage only the first 100 registrations will have access to the game, so be sure to get registered early to secure your place in the ranks.

Tuesday, June 25, 2013

Adding A Little Ambiance To The Zombies Arena

I'm sick, I'm exhausted, my eyes hurt from staring at multiple computer monitors, but I'm grinning from ear to ear right now. I've spent a large block of my free time working towards a better Zombies Arena for BlitzBotz, and my work is really paying off.



After several days of fighting with my own scripts, I finally got the zombies to attack correctly about a week ago. The trouble with the attack system was that I needed the server to handle all attacks and damage, since my main goal is to keep the client as just a graphical representation of the data on the server, even in single player modes. The zombie model I purchased from the Unity Asset store came with some great animations, so once the attack request scripts and the damage calculations were completed, adding some visual effects was relatively simple. Zombies now chase down the player and, once they are within attack range, automatically deal damage to the player; they then wait momentarily, and if they are still within range will attack again; if not, they'll start chasing them down again.

The next step was to add some extra functions to the 'Wave' system, which is responsible for sending a certain number of zombies each level. I also wanted to make the zombies move faster, attack with more damage, etc. as the player progressed through the levels. This work was a welcomed relief from the attack system, since most of this work was nearly completed and just needed some tweaking. The result is what finally feels like a game, wherein the player gets points for kills, and as they mow down zombie after zombie they progress through the waves, the challenge increasing with each new level. The game gets pretty hard pretty quickly, but I will be tweaking the settings once everything is setup... for now I'm happy with things just the way they are. I also put some time into the website to track high scores for players, which is now displayed on the zombies leaderboard. The system automatically keeps your personal high score, the number of games you've played altogether, as well as how many zombies you've killed in your BlitzBotz career.

My next problem came from the way the zombies move through the arena. For the standard Arena, I went with the familiar octagon shape, but I found it very easy to use this to your advantage during the zombie levels; players could basically run around in circles and the zombies would crowd together as they chased them down, ultimately lining up like ducks to get mowed down easily. My solution was limit the areas that the player could move around, and to ensure that zombies would be attacking from all sides as much as possible. I figured a cross, or plus-sign, shaped arena would work best. The player would spawn in the center, and zombies would start appearing at the top, left, right and bottom of the screen, effectively surrounding the player. The player can run East, West, North or South to try and get away from advancing enemies, but as they do, they will position themselves closer to a zombie spawn point. This has created more work for me in the end than expected: I now need to design an AI pathfinding system to prevent zombies from moving outside of the designated play area, shown as the fences in the following screenshot:


View of the new Zombies Graveyard Arena via the Unity3d Scene window


After browsing through the Asset store, I found an amazing free package that had a lot of assets for use in a graveyard scene. Needing a break from programming, I decided this morning to begin building a graveyard arena that felt more applicable to the zombies level. I exported items that I wanted to use from the package (unfortunately I can't find the package in the Asset Store now to provide a link, but will do so as soon as I can) and imported them one by one. I did things this way to try and keep my project folders clean and free of assets that I wouldn't be using. At first, I was worried that my frame rate would take a huge hit with the inclusion of these new assets, but a test on my Samsung Galaxy Proclaim revealed that the frame rate drop was minimal, and since this is a single player (co-op two player at max) level, I'm confident that the frame rate will remain consistent.

I'm excited to begin work on the pathfinding system to prevent the zombies from walking through the fences, but I'm overdue for a break from programming. I'm hoping to have the finished single player version of the new zombies levels available to the public soon, and co-op will follow shortly there-after. Until then, I'm going to go pwn some more zombies on the Nexus 7.

Saturday, June 15, 2013

Killing Zombies Never Felt So Good

As a fan of zombie levels from just about any game that has them, I'm pretty excited to have played the first of BlitzBotz's zombie Arena. The appeal for me has always been that the games mechanics stay relatively the same, but the goal is completely different, providing an opportunity to take a break from pwning noobs online in the case of FPS games, for instance. The concept for BlitzBotz zombies runs pretty parallel to other game's zombie levels, in that in order to survive, you need to be accurate. Missing too many zombies in any given time frame will soon leave you overrun, and although the zombies generally move relatively slow when compared to the movement of the player, the sheer number of spawns can make short work of anyone with bad aim.

The zombies arena wasn't done just for the fun of it, though. There is a method to my madness that goes beyond the scope of wanting to drop the living-dead over and over until I can best my high score. Since I am programming this game single-handedly, it can become a bit of a pain to constantly be logging into and controlling two BlitzBotz at the same time. As I was working on the server's damage calculation algorithms, I found that I was spending more time trying to move the players into and out of shooting range than I was actually getting work done on the formulas. The solution just so happened to have killed two rocks with one cockatoo... a zombie level would provide me with a never-ending supply of AI-controlled NPC's to shoot down while also providing the game with a level-theme that a lot of players are familiar with and enjoy playing. Now, as I calculate damage functions and tweak weapons data, it is much easier for me to test the results of this work, while also allowing me to have a little fun while working.



First and fore-most, a huge amount of recognition is due to the creator of the zombie model itself, which I found in Unity's Asset store (https://www.assetstore.unity3d.com/#/content/6474). Chances are we will be replacing this model with our own for the official release of BlitzBotz, but this model was done so well that it has made working on the zombies arena much, much more rewarding. The model itself looks awesome, and the animations that it came with work perfectly with the game. So, thank you too BITGEM for not only creating this awesome game model, but for providing it in the Asset store for such an incredible price!

Moving on, the concept for the zombies was the same as everything else for the game: we want a zombies high-score board, and we want to ensure that every score on that leaderboard is legit. This required that the server constantly track the movement and position of all zombies to ensure that manipulation of the network data could not be achieved. The zombies movement is handled much like the players movement, with the exception that it, as well as attacks, are handled server side. As with everything else, the client is merely a graphical representation of the data on the server. My hope is that this will ensure an accurate leaderboard.

There's still work to be done, however. The zombies do not attack yet, and although I am confident I can get this done relatively quickly, I have a lot of work to do in the next few days (work that is not BlitzBotz related, but keeps the bills paid). The game is also limited to the first wave of zombies, but again, finishing this will not take long as the majority of the work has already been completed. Each wave you will face more zombies, and they will have more health and move faster. There will also be 'raging' zombies that move much faster than the standard zombies, and although they will be few and far between, they should be a bit a wrench in the players plans as they get higher and higher scores. After that I will be programming damage for grenades and then making the shield work for blocking attacks as well.

Considering how much this new zombies arena has helped me with testing the movement and attack systems thus far, it is already well worth the time I've put into it. The fun of playing the finished arena in the future will be icing on the cake, and I'm excited to start getting some scores up on the leaderboard in the coming weeks. I'm hoping to go live with the zombies Arena soon, so keep your eyes peeled on our dev blog if you'd like to be one of the first to make the leaderboard!

* Note: I tried ezvid for the first while capturing this screen recording and already regret it. The coloring is off and for some reason the program does not allow you to export the video at all... I was forced to upload the video to Youtube, then download, edit it, and then republish to Youtube manually. I am still looking for a better solution for my screen recordings, and hope to be purchasing a new graphics card soon to increase frame rates in the future.

Sunday, June 2, 2013

BlitzBotz on IndieDB.com!!!

We are incredibly proud to announce that BlitzBotz is now listed on indiedb.com! The approval process was ridiculously fast and easy, and we're confident that this website is going to allow us to dive even deeper into the indie game market.



Please help support our game, and thanks again to everyone at indiedb.com headquarters!

BlitzBotz

Saturday, June 1, 2013

Free4All Multiplayer Arena now available!

We've just posted another update to our demo, allowing players to enter the 'Free4All' Arena with other players. Attacking is still disabled at this point while we put the finishing touches on the forumlas, but we're hoping to have some actual arena battles happen very soon.



We are slowly but surely making progress. I am quite happy with the way the game has turned out thus far, and am incredibly excited to have the Free4All Arena setup so that players can at least practice with loadouts in the same room as other players.

After the weekend I will begin work on the Zombies level, since I think that this will be the best way to test/adjust weapon settings (optimum range, max damage, reload time, clip size, etc.). The Zombie's level will be single player at first, but once tested and tweaked, we should be able to release a co-op version of Zombies in the near future.

Practice Arena is now Live!

We have published a demo or our game, allowing members and guests to customize loadouts and test them out in a single-player Practice Arena!



Click below to try out BlitzBotz:
http://www.blitzbotz.com/game/

Currently players are limited to customizing loadouts and playing in a single-player arena, but we are working hard to put the finishing touches on some of our multiplayer setups as well as our zombies levels. We have a lot of sounds effects and art assets to add to the game, and are currently considering using indiegogo.com to crowd-fund for BlitzBotz.

We'll keep you updated on any new updates and features, but for now, enjoy our demo!