Thursday, November 17, 2011

A post-mortem of the creation of "Osprey"

Osprey - Red Tail Studios






On September of 2010, I made the decision to make my first Independent game for iOS. I've had experience developing in Flash with Actionscript and JavaScript for web, but until this point, never had experience building a game by myself. All things considered, I still don't. During this journey, I had alot of help from some really great people. I would like to mention the folks who were of great help. Elliott Mitchell of Vermont Digital Arts, LLC has been a great friend and fellow independent developer who I have helped with various game development endeavors. Alex Schwartz and Yilmaz Kiymaz from Owlchemy Labs, the makers of Snuggle Truck for iOS helped me a great deal with any scripting questions that I had. All three of these guys are well- skilled in game dev and Unity 3D knowledge and were extremely grateful to share their knowledge with me.

I grew up on games like Space Invaders, Asteroids and Galaga. As a matter of fact, the first time I wanted to skip school was in Kindergarten because my brother let me borrow his Intelevision game console which had a version of space invaders. I was hooked. From that moment, video games became a distinct part of my life. I was fascinated by the idea that I was making this ship move on a screen. Simply pushing a button to make the ship fire enthralled me. As such, I wanted to do kind of a homage to this genre and thought the scope of a space shooter was reasonable enough to handle by myself. Needless to say, it was a tremendous amount of work. However, I loved every minute of the process even though I missed out on things like having a social life, going outside or playing video games. The entire process took me over a year. Let me give you some details.

Research

As with any creative endeavor, I started with research. Because of my interests in Science Fiction and Industrial/Automotive Design, the design and construction of the space ships came first. I began making concept sketches of numerous space ships. Needless to say, some designs were better than others. Since I wanted the game to be a side-scroller and the ships were going to be on an iPhone screen which is small, the space ship silhouettes were an important consideration.

Because of my interest in Science Fiction, I am influenced by the designs of Roddenberry, Lucas and Larson. My influence is more than just that of a fan. I try to be a student of their creative decisions.

Because of my history with space shooters, I had a rich ground of knowledge and inspiration to begin with, but it was necessary to see how others had approached mobile solutions to the space shooter genre had done. I played a few mobile space shooters and found that control of the ship was a big issue. I will go into more detail about this later.

Ship Design

My first design problem was appropriately communicating the scale of large ships that would essentially fit in the palm of a person's hand because of the iPhone platform. To do this, I used greebling. Greebling is adding minute panels and details of an object. This helps the object to look larger than it really is. Below is an example of greebling.

Level Design

My levels were designed with fast paced gameplay in mind. I decided to keep backgrounds simple because gorgeous backgrounds full of nebulae and singularities would hinder the player from being able to decipher what his challenge is. A simple example is that it would make bullets more difficult to see. However, some simple background elements were added to give certain levels more of a sense of place. The main identifier for a particular level however is that each contains a new type of enemy and each contains a unique boss to battle at the end of each level.


Controls

Ease of control was another design problem I faced. Often I hear of complaints about cumbersome controls for mobile games. As such, I decided I wanted my control scheme to be flexible by allowing the player to use the whole screen for control, but at the same time, these controls can be reset by simply touching the screen in a new area. To solve this issue, I used a a feature in Unity 3d called raycasting. This allowed me to get the control I wanted and allowed for the control to offset the player's ship so they can see what is going on at all times. The control is made visible whenever the player touches the screen. If the player moves his thumb across the screen, the controller follows. If the player taps on the screen to fire, a second control circle is made visible, the vanishes when the player completes the tap. This may seem complex at first, but it is actually quite simple. In addition, it also allows for left or right handed control of the player's ship.

iOS limitations

When creating a game for iOS, there are some restrictions that must be considered. The first is a 20 megabyte “over the air” download size. This was especially important because my target price range was .99 cents and I wanted this game to be simple to download because of it’s inherent simplicity. The aforementioned decision to use sprite maps helped me to say under the limit.

Secondly, were draw calls. A draw call is basically when the game draws anything visual on the screen. These need to be kept as low as possible. Sprite maps allowed me to batch a great deal of draw calls. As a result, a lot of action is present on the screen without taking a serious hit on performance; Especially with 4th generation iOS devices like the iPhone 4.

Scripting, My greatest challenge

Creating visuals is my primary skillset. However, my desire to see this game finished warranted a better understanding of scripting in Unity3d. I spent a great deal of time learning how to script. At first, I thought the JavaScript would be like scripting for web, but it was the opposite. Using JavaScript in Unity is similar, but it is not quite as tedious as web scripting. I used the Design3 Unity3d scripting tutorials to learn the basics. It took approximately 3 months before I was able to write my own scripts. The Unity Community was also a great help if I ran into issues that I could not work through on my own.

Playtesting

I must have played this game 1000 times. No Joke. I also had a lot of people playtest for me as well. Friends, family, students, random people in a bar and on the train helped me to fine tune my game. One key observation was how long before a person would stop playing the game and give it back. Some would hand it back after the first few seconds and a few would not put it down. I began taking notes about this. Eureka, I found my target audience. It seemed that most people initially thought the game was too hard, but after beating the first boss, their confidence in the game and themselves increased. Apparently, the 3d graphics don’t necessarily translate into a casual gaming experience. Nor do space shooters. But after the first level was defeated, I noticed a change in the attitude toward the game. One interesting tidbit I received as feedback was from a young woman at a bar who asked me, “Am I shooting radioactive avocadoes?” She was referring to the green asteroids.

Submission to Apple

In order for your application to be accepted to the App Store, it has to pass a review. Here is a nice checklist I found to help with the process. Osprey was finished after ten months. When submitting the app, you have to change some of the settings in your xcode project and in Unity to get it ready for distribution. Write out your description and features for the App Store and upload and executable file all for the mysterious Apple review process. My application was accepted on the first attempt after about three days. The suspense was gut wrenching. Before this project, I mainly worked on short turnaround projects that took a few weeks. This was almost a year of my life that was invested in this endeavor and it was all hanging in the balance. The acceptance of my game was a big success for me. Since then, I have updated the game twice without issue and sales are beginning to trickle in. Now that I have a solid grasp of the entire process, I am primed and ready for my next development effort.
visit the site for Osprey!

Osprey - Red Tail Studios

Osprey has been released!

Greetings! My solo effort for iOS has been released and is now available on the iPhone app store!
Here is a link to the game's website-

Osprey

Here is the app store link!

Osprey on iTunes