Here is my prototype build of my infinite runner "Kitty Jump". It is extremely simple to play, with one button: the mouse click. Make the Kitty jump over the clouds and see how far you can get.

Some plans for the future:

- Add different types of obstacles for the cat to jump over

- Add difficulty options which will increase the speed at which obstacles come at you.

- Add power ups such as extra lives (since cats usually have 9!)

- Mobile Support

For my final project for the class, I wanted to perfect my game which we made during the Interactive Design portion. By next week I plan to have a fully functional and complete game from start to finish. The Interactive Design portion of this course gave me a start, and from there I am working to make my game something that is actually fun to play. For this week, I focused on adding some more features to the game to make it more interesting to play. I will outline below all of the changes that I have made.

First off, I have edited the way in which I spawn my obstacles (the clouds) which the Cat player must jump over.

The above code did not change too much this week, but I will still explain what it does. Basically, this script connects to a prefab cloud game object, and describes how the object will come into the scene. Each frame, we choose a different wait time between 0.8 seconds and 3 seconds, and then spawn a cloud after that amount of time. This is what I really changed in this script this week, the clouds are now spawning faster making the game a bit more difficult, and in my opinion adding to the fun of the game. To actually spawn the cloud, we use the Instantiate() method which takes the GameObject "CloudObj" as initialized in the beginning. We then use a vector to spawn the cloud at a certain point on the screen, always at X=60 (all the way to the right) and Y= a random point between -19 and 19 (which is the playable Y values).

Once the cloud is created, I needed a script in which describes it's behavior. This is where "MovingCloud.cs" comes into play, where I tell the object how to behave.

In MovingCloud, we make the Rigidbody2D actually do something. This was a big change that I made from the Interactive Design portion. I came up with a way to make the game progressively get harder as you increase in distance. It is important to note that the variable "count" which I am referencing from "CompletePlayerController" is really the measure of distance that I display in the top left of my game screen. In the Start() method of this class, we access the Rigid body and add velocity to it. This is called each time a new cloud is spawned, so I needed to figure out a way to increase the velocity of the clouds as the distance increases. This is what I came up with: V = RandomFloatBetween( -((currentDistance / 100)-defaultVelocity) , -defaultVelocity). Keep in mind in my implementation, the defaultVelocity = -20 (negative for leftward movement) and currentDistance = CompletePlayerController.count... This expression is only evaluated if the player has already gone past the 100 distance mark. To sum it up, as the distance increases, the range of random possible values increases. And then, each Update() we check to see if the cloud has left the view of the camera. This change really made the game feel better, as it adds another way that the game increases in difficulty.

The next feature I added was extra lives (this is the first of the "power ups" that I will be adding to the game.) You start with 1 extra life, and you can collect up to 9 lives, because we all know that cats only have 9 lives. The amount of lives which a player has is displayed in the upper right hand corner of the screen.

In order to get an extra life, the player must collect it. Similarly to the clouds, extra lives (and soon other power ups) spawn at a random Y position and fly towards you. But in contrast to the case of the clouds, you want to hit the extra life. The extra life is seen as a heart.

I finally think that my game is just about done. It is simple as I still do not have the greatest skills in using Unity, and game development in general is not my forte. But I am happy with it. I made a few changes to the game which I think makes it play better than last week. First of all, I changed the way lives work and no longer does the player start the game with an extra life. This was annoying me for a while but I finally figured out how to fix it and it was just a little logic error.

My next change is that in the "You lose" splash screen at the end, I now display the score (with more precision) to the user.

And lastly, I added some 8 bit background music as I saw a few other projects which contained similar music and I figured why not. I think it spices the game up quite a bit to have some music playing. Thanks to Eric Skiff on SoundCloud for this open source music: