Tuesday, July 23, 2013

Rocket Launcher, Assault Rifle & Pistol Weapon Updates

A few things have been added and they are showcased in the video below. First and foremost, the bug/ability to fly through the fence and walls was really irritating me, so I've taken care of that with some simple box colliders. When players try to fly outside the bounds of the current arena they are promptly stopped. I needed to get this done before releasing the zombies level since flying outside the designated play area and away from the zombies was providing a steep advantage in the level.

Next, I was having fun with creating projectiles for the various weapons (the Laser Canon and Sniper Rifle were featured in the last post). My plan with the zombies game type is to start all players off with the Assault Rifle [primary] and Pistol [secondary] weapons. As the player progresses they will earn ordanaces that will offer them more powerful weapons. So, the next logical step was to create the projectiles for these two weapons, which are also showcased in the video below. I then finished up this weeks projectile work with additions to the rocket launcher.

But what I am most excited about is that I will be subscribing to Unity3D's Pro Subscription system next week. This will allow me to use all the benefits that Unity3D Pro offers, which is a long list of features. Since BlitzBotz uses an authoritative server and socket connections, Unity Android Pro is also required to produce Droid versions of the game. Also, the Pro has some very eye-appealing visual effects that will be added to the game in the coming weeks. My plan is to finish up work on the single-player zombies, get the rest of the attack buttons working as expected, and if time allows, also put the finishing touches on some multi-player BlitzBot vs. BlitzBot elements so that we can start some 1v1 competitions.

As far as the changes in gameplay elements I mentioned earlier, these will covered in a future news post, but for now all you need to know is that they are going to make the game more fast-paced, and although they will make the learning curve for the game a bit steeper than the present setup, the new attack controls will give the player much more control over shooting their opponents. On top of that, the attack-arcs and min/max damage settings of weapons is being scrapped for a more realistic, ray-trace based hit detection system, which will give the game more of a FPS feel, even though it will remain a top-down shooter. Suffice it to say that you will need to be more accurate, more familiar with your current loadout, and time not only your button presses, but button releases as well, if you hope to be in the top of the BlitzBotz leaderboard.

So although the release of certain features is going to be pushed back a bit, the game will be better than originally planned. Using the sniper rifle will feel more like using a sniper rifle: meaning patience and a little bit of enemy prediction will be required to land that perfect headshot. The contrast to this is that while you line up your perfect shot, you will need to be standing still, leaving your BlitzBot completed vulnerable to attack. As someone who grabs sniper rifles any chance I can get in FPS console games, I am looking forward to these new features for BlitzBotz, and the fact that these changes will make BlitzBotz Snipers-only Arena's a reality.

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!


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:

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!

Monday, May 27, 2013

Armor Abilities, Arenas & Zombies!!!

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.

Wednesday, May 15, 2013

Loadout Weapons Preview

I've been working on things here and there with the game when I have time, and there are a few new things I wanted to get posted in the Dev blog. First off, I created a loading/matchmaking screen for the Arena. Now, while you are searching for another player, there is a window that is displayed explaining that it is searching, and when an opponent is found, a preview of both Botz are shown to both players as the countdown starts.

Once in the arena, Botz now use the appropriate animations when attacking. Before this update, the sniper rifle animation was played regardless of which weapon was used. There are now animations for every Primary and Secondary weapon, and I also threw together a quick animation for swapping weapons. This is also the beginnings of the final version for the attacking system. I had cut some corners as far as the authoritative server request/response system when doing proof-of-concept mock-ups, but what you see below is literally just a graphical representation of data on the server. When you hit the attack button, a request is sent to the server making sure you are allowed to hit that button at all... if this passes then the request is sent to all users, and the weapon swapping animation is played if necessary. Next, when you aim, the same thing happens... a request is sent to the server, and if approved, is then sent to all players at the same time.

The last part that I need to finish for this authoritative system is damage-distribution. It was much simpler to calculate damage via the Unity client than the Java server while doing proof-of-concept work, but the damage functions are now getting moved to the Java end. Once that is completed, a few checks for deaths and respawns (already half-done) will be put in place, and the system will be able to send out instructions to clients to play death animations/apply ragdolls/etc., the goal always being to render network manipulation/lag-cheats useless.

This isn't a very big update, but work has kept me pretty busy lately. I'm hoping to spend some time working on the updated damage system soon.

We are still taking pre-registrations for Phase I Alpha testing, so be sure to sign up if you'd like to participate in the coming months.

Friday, May 10, 2013

Alpha pre-registration

We are now taking pre-registrations for our Public Alpha!  Be sure to sign up soon so you can be one of the first to receive your Alpha Key.

Friday, May 3, 2013

New & Improved Status Bars

After a long day of working on my clients app, I volunteered for the late night/early morning baby feedings and decided to play around with a concept I've had for some time now while the baby slept. The HUD window that hovers above the players thus far was not was done for looks by any means; it was just a proof of concept for the information being displayed. After taking screenshots for the website the other day, the need to redo these status "windows" gnawed at my brain more and more, until I couldn't resist the urge to try out my concept for first draft status bars. The following image has half a screen from the old HUD on the left, and half a screen from the new HUD on the right:

Personally I think it's quite an improvement, and am satisfied with the results, at least for now. My girlfriend (the graphics design side of the studio) will make them (along with everything else) much more appealing to the eyes once all proof-of-concepts are completed. The inner bar is the "energy" bar, which will be depleted when attacks are used but will regenerate rather quickly. The outer bar is your standard "health" bar. I used a full health bar graphic set to a very low alpha to show what size the full bar is at all times, which aides in determining what percentage of your life remains at a glance. I then used two graphics, both representing the current life remaining, spaced slightly on the Y-axis to give a hologram effect to the bars.

After a lot of consideration, I decided the effect is worth the small frame-rate hit on my mobile phone (my mobile phone is old and crappy, but I am still maintaining a 45+ FPS rate on it, and my goal is to keep it as close to 45 as I possibly can), mainly because each player adds only a handful of transparent textures to be rendered, and my phone seemed to handle that without too much of a frame rate loss... even when I brought several other bots into the same arena.

Lastly, I saw an easy way to distinguish between yourself/your teammates and the opponents using these new graphics. A full screenshot of the result is below:

Right now every players status bars default at 50%, and within the next few days I will hopefully find time to make them functional. I would do it now, but I need sleep.

Tuesday, April 30, 2013

Update To BlitzBotz.com

About 12 hours after my last blog post I became the proud father of a baby girl. As you can imagine, things have been pretty hectic since then, but I'm still managing to find time to work on this project. Tonight's (or rather this mornings) post is going to be short and sweet.

The website located at http://www.blitzbotz.com/ is undergoing some major upgrades. Most of the changes are just tweaks to the already existing design, so there isn't really much to speak of. I've added a tabbed interface to make getting to the dev blog easy, and will adding screenshots and videos to the Media page in the near future.

[click image to enlarge]

As far as the game itself, progress has been slow but steady. The most noteworthy new feature is the addition of grenades to the attack system, as well as an update that syncs attack animations between all clients. I will post more on this later... now is time to get some much needed sleep.

Wednesday, April 3, 2013

BlitzBotz : Multiplayer - Proof of Concept

When I woke up this morning and went through my work email, it was quickly apparent that I was going to have to work late at night and well into the morning, so I dedicated the early parts of my day to finishing up my proof of concept for the BlitzBotz multiplayer system. After finishing the Loadout system (featured in this post), I wanted to bring the settings for each bots loadout into the arena I had already assembled and programmed. In all honesty, the process went much smoother than I had anticipated, so I had time left over to wrap a few other things up... starting with handling player spawns when a user enters a non-empty arena. For example, if I had two guest accounts playing in the Free4All arena, and a third player entered, the two original players would receive spawn requests from the new player, but the new player would not receive them from the existing players... they are already in the room and have no need to send out another spawn request. The solution, while seemingly simple, turned out the be a test of my familiarity with my own smartfox server-side code. After trying a few different ways to skin the same cat, I found a solution that was both optimized and required little code to implement... the result is featured in the video below.

This video is four instances of the Unity Web Player version of the game running in chrome. Using the two top players, I login with two different accounts: the first account has a pre-set custom loadout, and the second account (em0r0b0t) actually had no loadout record in the database upon logging in. If a player ever logs into the system and there is no loadout found for them in the database, a default loadout is automatically created for the player, which is the loadout you see in the video for the upper-right instance.

The two lower videos showcase the guest login system. I wanted to ensure that potential players could start playing the game as quickly as possible, and I am always very appreciative when a game allows me to try it out before requiring me to register with an email address. Guest accounts are stored in much the same way as registered users accounts, the only difference being that guest accounts are completely temporary... guests have the option to register and save their progress before exiting, but if they opt out of registering, their data will be wiped out with the next server restart.

The frame rate for the video is terrible, as I desperately need to go video card shopping (I'm still operating with integrated graphics right now). Considering my machines limited graphics capabilities, I still managed to run 4 instances of the game at an average of 45-50 FPS; the framerate of the screen, however, left a lot to be desired.

I have to admit, I'm psyched to have all of these different systems come together in what is really starting to look like the foundations of a video game. I am also happy that the majority of the foundation work is completed, which means within the next week or two I should be able to get to working on the actual gameplay design, rather than just the framework that supports it. My goal is to have multiple instances of the game battling in a 4 player Free4All, complete with attack animations, damage calculations, deaths/respawns and stats tracking. Once that is complete, with just a little work on the website, I should be able to bring this to the Unity WIP section and, if the community is willing, start taking registrations for Open-Alpha testing.

I'm not sure if anyone reads this blog actively, but if you do and would like to be one of the first included in the Open-Alpha, feel free to contact me via admin@emo-robot.com and I'll be sure to add you in the list before all the slots get filled up, as I am only releasing small batches of alpha-keys intermittently during development.

Saturday, March 30, 2013

Loadout Preview Version 2.0a

I have been spending a lot of what free time I have working on a new version of the menu system. The problem was that the original hadn't been scoped to expand much, so every time I wanted to create a new menu or sub-menu I was having to update a lot of code. My solution was to rewrite the system to work off of a database table. The resulting menu doesn't look much different at all, but it takes me a small fraction of the time it has in the past to change the menu. Now, adding another menu item is as easy as adding a record in the table, and adding any number of sub-menus and sub-buttons is done just as easily.

I have also added some extra camera movement to show what is currently selected in the loadout sub-menu better on the preview bot itself. When you enter the "Spaulders" sub-menu, for instance, the camera will move to a position that gives a much better view of the Botz shoulder. I have also added mouse-wheel functionality to the menu system, as well as support for a controller (tested with an Xbox Controller).

The result of all this used up free time is featured in the following video:

My goal in the next few weeks is to bring the loadout data that is saved to the SQL database as the user interacts with the menu into the Arena itself. The foundation of the movement, attack, etc. functions is all there, I just need to feed it data and then put time into tweaking things until they feel natural, regardless of whether it is being run on a computer, phone, tablet, or console. I am hoping to bring this to the Unity WIP's forum this summer, where I will open up the website to allow 100 registrations, and will then begin some early Alpha tests. But time spent blogging is time not spent programming, so I'll end this here.

Wednesday, March 13, 2013

A Quick Preview of the Loadout System

Here is a quick video preview of the loadout system. These options are saved automatically to my account (I will be integrating the checkmark button later this week), and currently there are options for Primary weapon, Secondary weapon and the Armor skin. Next I will be adding Helmet & Shoulder options for the armor, as well as grenades and the jetpack.

Loadout options are currently set to be :

Guests are alotted 1 loadout slot.
1 extra loadout slot is received for registering.
3 extra loadout slots are offered to Pro members.

Thursday, March 7, 2013

Getting started

BlitzBotz is a top-down, online, multiplayer, arena/halo-style battling game made in Unity3D. The object is simple... kill every opponent to score as many points as possible, bringing you closer to your goal of becoming the #1 ranked player. We have several1 different classes to choos from and a customized loadout system that gives several options, including weapons, shield, turrets, armor sections & armor skins. Players will compete head to head in an arena, earning 1 point for each kill... and the first to 5 kills takes home the win and climbs the leaderboards2.

The story so far: You are a lifetime prisoner and society has bestowed upon you a great gift: a chance for freedom. You will don your favorite BlitzBot armor, choose your weapons, and go head to head with other prisoners in a gladiator-style battle that is packed full of fast paced action. Earn your way to the top and you may just earn your freedom... but it won't be easy.

The foundation work for BlitzBotz is just about completed. I have Unity talking to an authoritative SmartFox server, allowing guest players and registered members to play each other via Droid, iPhone, Unity Web Player, or via Standalone programs on Mac, Windows, and Linux (all platforms play in the same arenas). You will be battling people from all over the world, and everyone gets thrown into the same matchmaking queue, regardless of location3.

My first point of order in setting up this game was to fix a problem that drives me absolutely crazy when playing one of my favorite games, Halo 4: lag-switching. Halo 4 is rife with lag switchers, and it's incredibly irritating, but further details on that subject are for another blog post. What is a concern here is that I was determined to render lag switches useless in BlitzBotz... if I was going to spend all this time building the game, I wanted to make sure that everyone earned their rank. So, I put in an authoritative server, and the client is simply a visual representation of that servers data. I may go into this later in a future blog post, but all you really need to know for now is this: if you use a lag switch with BlitzBotz, you are only going to hinder your own gameplay, nobody else's. First point of order - check.

[click image to enlarge]

The second point of order was to make this game accessible by as many devices and players as possible. After research, Unity3D was the obvious choice to start with... it makes it easy to port your work to a multitude of platforms easily and via the same project files. Next, I went with a SmartFox server back-end and built a custom login extension to allow members to register/login by storing user information in a SQL database and connecting it with the SmartFox server. Last, but not least, I wanted first-time users to be able to jump into a game and try it out as quickly as possible, so I setup a Guest player system that allows you to play without a login/registering. The server will keep your data stored for as long as you are connected to the server, and if at any time a Guest player would like to register, their current progress/stats in the game will be saved as well. Check, check, and check.

It has been my dream since I was a child and opened my first copy of Klik&Play to create video games. Unity3D and SmartFox have not only allowed me to accomplish this, but to do so in ways that I had never thought I was capable of doing: an authoritative cross-platform multiplayer-game for instance. I have always been a gamer, and I have been realizing my age a lot lately: not because I feel old, but because I often find myself looking back to the golden years of gaming... the times when my friends and I would put 4 computers in a room and have a Duke-Nukem 3D LAN party. You didn't have to worry about lag-switches, because the idea that we could do this was more than enough at the time, and we played for the experience of playing, not to climb some leaderboard. Titles were much less cookie-cutter, and the industry was still young and relatively pure. I want that era back, but now as an adult, and I am hoping that I can bring just the right amounts of old-school, new-school, casual, and action-packed to this first game.

BlitzBotz is still very much a work in progress, but it is coming along quicker than I had originally thought it would. Within the next month or two we should be ready to go live with a Closed Beta version, but until then, here are some goodies to whet your appetite.

[click image to enlarge]
[click image to enlarge]
1 Only one class will be available at launch
2 Gameplay rules and scoring subject to change
3 Options for matchmaking, including "best connection" and "closest geographically" will be available to ensure minimum lag experiences