Android Development!

A big thank you to Unity Technologies for their Android/iOS license promotion. As a result of this promotion I have started focusing my efforts on mobile development using Unity3D. I was a bit apprehensive to begin with but after playing around with Unity and my Android phone I am starting to get comfortable with the idea of creating Android games. Unfortunately I don’t own a Mac so creating iOS versions of my games is going to have to wait but I am trying to come up with game designs that will build to iOS without too much effort. Luckily Unity is very good with this process which will hopefully make the transition  simple.

To get my feet wet I wanted to revisit my favorite project the space shooter. Instead of just trying to port over the existing code that I have I wanted to completely start over and design the game with the mobile platform in mind. For starters, I changed to style from a top down shooter to a side scrolling shooter.

I wanted to take this prototype a little farther then what I have done in the past in hopes to make future level designing very simple to implement and test. Therefore I created a wave spawner/importer for this project. Simply, what this does is iterate through a list of waves and spawns them one at a time at a set interval. Once all of the waves have been spawned the end level boss gameobject is spawned.

The power of this system really comes from the importer. The importer reads in a plain text file and then converts that text into waves. This allows the waves of each level to be changed without having to rebuild the entire project and it has opened up the possibility of allowing players to create their own wave configurations. The format that I have chosen is pretty simple right now and I’m already thinking of ways I could expand on it. Currently it looks like this:

[Prefab] [WaveNumber] [Formation]

The first section is the actual gameobject prefab the will be spawned. The second section is an integer declaring how many prefabs will be spawned in this wave. And the third section is the formation of the wave. Currently these options are limited to only horizontal and vertical but I have many more formations in mind for the final product. The current builds wave file looks like this:

Cube 5 horizontal
Sphere 5 horizontal
Capsule 5 horizontal
Cube 5 vertical
Sphere 5 vertical
Capsule 5 vertical
Cube 4 horizontal
Sphere 4 horizontal
Capsule 4 horizontal
Cube 4 vertical
Sphere 4 vertical
Capsule 4 vertical
Cube 3 horizontal
Sphere 3 horizontal
Capsule 3 horizontal
Cube 3 vertical
Sphere 3 vertical
Capsule 3 vertical
Test 1 horizontal
Test 2 horizontal
Test 3 horizontal
Test 4 horizontal
Test 5 vertical

I am posting a web version of the project that is very similar to the Android version. The main difference is the player controls. The Android version uses the accelerometer reading to move the player around and input touches to fire the cannon. In the web player you can use the arrow keys and W, S, A and D to move the player around and the left mouse button to fire the cannon.

Android Prototype
Move: Arrow keys or W,S,A,D
Fire Cannon: Left Mouse Button

 

Basic Combo System

I have been playing a bit of the God of War series lately and I want to see if I could create a similar combo system. Much to my surprise it was easier than I originally thought.

Plan: I wanted to build a system that I could easily use in multiple projects instead of having it build directly into one game. It had to be basic enough to use in a casual game like the space shooter game but useful enough to be used in a game like God of War. I ended up with two scripts; ComboManager.cs and ComboEnemy.cs. I think I could have done it in one script but I like being able to select an object in the Unity editor and see what features it has just by seeing the scripts attached to it. I also had to create a script that “attacks” so I could test the system in action. The attack script is just a basic raycast that, when hit, calls the ComboEnemy.AddHit() method.

Result: I am very happy with my current result. When the enemy objects get “attacked” the AddHit method increments the current combo variable which starts the countdown timer. If another hit is landed before the timer expires then it is added to the current combo count and the timer is reset again. If the timer expires before another hit lands the current combo count is reset, then the last combo amount is recorded and the manager checks to see if it’s the largest combo recorded. If it is that amount replaces the previous largest combo.

I have added some error checking to the two scripts that ensures that ComboManager.cs and EnemyCombo.cs is properly linked together. If they are not linked correctly then an error message will display on the screen indicating what the problem might be. (Note: this only happens when the offending game object is “hit”.

Try it out: Combo System w/ error checking

Click on the boxes to register hit. Wait one second for the timer to expire and see the combo results recorded. On the error checking level, the cylinder is a correctly linked enemy, the cube has a null linked object and the sphere’s link is pointing to an invalid object. Use the Load Level button to switch between the two.

Project: Space Shooter

Background: This has been my most enjoyable project to date. I originally started the project when I was in school. The project has been continually evolving and expanding. While the prototype is very basic right now I have big plans for the future of this game.

Story: Earth is being invaded by an alien race (original right?). Unfortunately the only defense we have is our planet’s towering city icons, most importantly the Space Needle. We have upgraded the needle to handle space flight and equipped it with projectile weapons and some heavy duty armor.

Objective: The player must pilot the upper decks of the Space Needle in outer space to defeat waves of alien fighters heading for Earth. Use W,S,A and D  to move the character and the space bar to fire the weapon. The player is able to pick up power-ups and resources to help in the fight. At the end of the level the player will be able to upgrade the ship to improve performance and weaponry.

Plans for the Future: I am continually coming back to this project since I have a very clear image of the final product in my mind. Some of the design pages I have posted are just a portion of my ideas for the end result and I’m excited to push myself to further its progression.

Space Shooter Demo

 

Audio and GUI Exploration

Background: Math learning games helped me quite a bit when I was a child and I wanted to help other children have fun learning too. My idea was to have a game where kids could learn and improve their math skills and be rewarded by their efforts.

Story: You’re at the zoo and the zoo keeper needs your help to feed the animals. Every time you get an answer right the animals get a little bit more food.

Description: This is a very basic prototype exploring audio effects as a big part of the positive reinforcement reward system. The user interface is also going to be very important because of its target audience. Up to this point I had not explored Unity’s GUI system or done anything with audio. Exploring user interface options was easy but the audio needed a little bit of help. A friend of mine was nice enough to record himself saying different one liners and even included a few of his own. I use these clips to indicate if the math problem is answered correctly or not. Each correct answer in a row plays a different clip. If the player gets a problem wrong then the audio starts over from the beginning.

Objective: The player has five seconds to answer the problem correctly. When the score is graded an audio clip will play to let the player know if the answer is correct or not. If the problem is incorrect the game will play one of three possible clips at random. If the problem is correct then a new clip will play for each consecutive correct answer. After the tenth correct answer in a row the last audio clip will continue to play until an answer comes up incorrect.

Prototype: Audio and GUI

 

RTS Study:Unit Selection and Movement

Warcraft by Blizzard

Story: The main character is a technician who has just arrived at a technology research building to find the power out. He must figure out how to get the power back on and learn what has caused the power outage.

Description: This prototype was to created to experiment with unit selection and movement. The player unit can be selected by clicking on it. The player unit will change color to show that it has been selected. Clicking anywhere on the floor will cause all selected units to attempt to move to the clicked location.

Objective: The player must find a way to turn the power back on. Once the power is on the player will be able to open one of the doors and obtain a helper unit. This unit will allow access to the second door. When the player unit enters the second room the demo will end and the level can be re-started.

Plans for the Future: With the official release of Unity 3.5 I will be taking a closer look at the built in path-finding. I have done some research on existing RTS games, specifically looking at the UI’s that they have come up with. The end goal is to create a single level demo based off of my evolving design document.

 

Prototype: Select-Move_proto

Use the left mouse button to select or unselect any units. The right mouse button to tell the selected unit(s) where you want them to move. Please note: Path-finding has not been incorporated into this build, any selected units will not try to avoid objects in their way.

**The web build uses the right mouse button to bring up options for the web player that is causing issues with the games control scheme. This issue has been noted and the game controls will be update to avoid this problem at soon as possible.

Plans for the future of this site.

What I want to do is display my work as well as cataloging it.

So here’s my plan:

I have a few notebooks with all my brainstorming ideas. What I would like is to be able to display the design ideas that I have come up with in my notebook as a sort of design document for each project. I have not yet decided if I want to just scan the pages directly or to re-create them in digital form.

Next, I would like to have a working prototype of my designs, either linked or embedded into my blog page. Embedded is preferred but linked will work if I am unable to embed the Unity Web player into the blog post. Any projects that are not created in Unity3D will have a video showing off the mechanics. Again embedded is preferred.

Finally I will spend a few minutes talking about each project, what I was hoping to accomplish and if I was successful or not in my attempt.

This is where is all begins, again.

Hello, my name is Rich. I have just installed a WordPress blog onto my website in hopes to re-purpose an all but abandoned site. My goal is to use this site to catalog and archive my progress as I strive to become a world class game designer. I am setting my sights high and I will stop at nothing in order to achieve my goals.  This blog is the first of many steps I plan on taking to reach those goals. Over the next week or so I plan on updating this site with all my past projects followed by all of my current projects and then I will lay out a plan for all my future projects.

 

Let’s get this party started!