Kristie Masuda from Spymac published a nice little review of Bullfrog last Friday.
Aside from needing an idea, there were a few hurdles to tackle. Not only was this my first game project in almost fifteen years, it was also to be my first Mac project, written in Objective-C and Cocoa. I was also aware that most games for the platform are written in OpenGL because of the sub-optimal performance of CoreGraphics and Quartz Extreme. Though I have been a professional software developer for twelve years, I felt that learning OpenGL in addition to Cocoa was too much to tackle in such a short time frame. So I had to make do with what Apple’s API would provide.
Budget was the next hurdle to tackle. Money was limited, I had to operate on a very small budget. I would either need to create all my own artwork and sound or acquire what I needed for free or very cheap. To help limit the amount of artwork I would need, the game would have to take place entirely in one location.
Once I decided upon the basic game idea, I put together a very rough prototype to get a feel of how the game would play and whether it was something I could finish inside the six week deadline. Armed with my prototype and a rough project plan, I dove in.
Here is what went right and what went wrong:
Apple’s Cocoa framework is amazing. It does have a steep learning curve, but once I got a feel for how things fit together work became a pleasure. CoreGraphics may be slow, but it has some great functionality built in. There were many times where I feared having to write a very complicated set of routines to get something done, but a quick search through documentation lead me to a class or method that did exactly what I needed. While I did have performance issues to work around, especially on older machines, I wouldn’t hesitate to use CoreGraphics for simple games that don’t have intense animation requirements.
I’ve written extensively about my experience working with my graphic designer. While I was very happy with the quality of work and the timeliness of delivery, the best part of working with someone else is the additional input an objective observer can provide. My designer provided many ideas and suggestions that had very real and positive impacts on the game’s design.
Bullfrog was originally going to have a simple black background. Jordan would have nothing of it. Before I knew it he’d sent me a very nice background image with some ideas on how to use it. Ultimately, the background changed a bit and ended up being a simple window dressing for the game; but, I ended up with some very cool ideas for the next version.
There were two significant disappointments on the sound front for Bullfrog. First and most significant was my decision to go cheap (read free) for all my sounds. When selecting the sounds, each one sounded adequate. When put together and repeated many times during game play they became annoying rather quickly. Even if they don’t annoy, the overall sound mix does not meet my standards. Next time, I pay for quality tracks. In hindsight, I would have been better off with no sound than bad sound.
The second issue was technical. While Cocoa’s sound support is adequate for playing simple audio, performance and functionality is the pits for game development. I would consistently see significant frame-rate drops when more than a couple of sounds were played concurrently and the API provides very limited access for controlling how the audio tracks are played. There is no support for fading or panning. Next time I’ll definitely look into alternatives for my audio needs.
Unfortunately, somewhere along the line I boxed myself into only being able to support the latest version of Mac OS X (Tiger). The game would execute just fine on 10.3.9 (Panther), but something with my handling of images caused graphics to disappear when animated. Since I don’t have a long history with Mac development, I have no frame of reference for what could have changed from 10.3.9 to 10.4 in the graphics handling. I suspect it was the png support changes I read about somewhere, but I didn’t have the time or the experience to hunt down the problem within the contest timeframe. Thankfully, the OMG Cup only required Tiger (10.4) so I settled for having to fix the problem after the contest. Since the game was targeting simple game play for casual and young players, I need to target older OS X versions since this audience is more likely to fall behind in operating system versions.
General Observations and Lessons Learned
Play testing is critical. I don’t mean testing for bugs, that goes with out saying. I mean testing game play. Is the game fun? Is it easy to learn? Do the controls work as designed? Is your game “user friendly”?
It was fascinating to watch someone play my game for the first time. Especially people who are not hard-core game players. One of the first things that jumped out was my choice of control keys. I had gone with the first-person-shooter standard of ADWS for left, right, forward, back. Bad choice. Simply choosing the more obvious arrow keys made a world of difference. Get as many people to play test your game as you can. Do this early. Do this often.
Everyone found the game more difficult to play than I do. What I thought would be challenging, others found frustrating. What I designed to be easy, was often just right. This probably varies between games, genres, and target audience to some extent, but I would bet that there is some of this for all games.
Polish is Important
Games that are not polished aren’t done. Developer graphics and sound won’t cut it. No matter how “fun” the game is, if the presentation isn’t professional and polished then the game will disappoint. Cutting corners will only serve to pull the overall feel or value down. See my experience on using free sounds above for reference.
Deadlines are Good
One of the things that excited me about working on my own development projects was the lack of artificial deadlines. I was looking forward to the ideal of only releasing my software when it was done. The reality was indecision and procrastination. Before the OMG Cup announcement, I spent months flailing about without choosing a game idea or creating a final design. I started and abandoned several prototypes and never committed to moving forward.
The OMG deadline motivated me and got me moving. It also kept me working through to completion. It forced me to decide on a game design even if it wasn’t my “ideal” or favorite idea. A finished game is better than a great idea that isn’t even started.
Bullfrog was an incredible experience. I gained confidence in both game development and Mac programming and I learned a lot about myself in the process. Six weeks seemed like a very short time to write a complete game, but I surprised myself with what I was able to accomplish starting from scratch.
The OMG Cup was a ton of fun to participate in and the people at iDevGames.com were an inspiration and invaluable support network. I look forward to trying again next year.
You can play the winning games as well as all 36 entries by visiting the OMG Cup Downloads Page.
Original French Text:
Des jeux intÃƒÂ©ressants ÃƒÂ utiliser en classe issus du concours idevgames 2005… Encore plus de choix cette annÃƒÂ©e (36 logiciels), et avouons-le, nous n’avons pas tout testÃƒÂ© !
Pour commencer Bullfrog plaira aux plus petits. Il s’agit de diriger une grenouille et de lui faire manger toutes les mÃƒÂ©chantes bÃƒÂªtes ÃƒÂ l’ÃƒÂ©cran…
Translated via Google:
Plays interesting to use in class resulting from the contest idevgames 2005… Even more choice this year (36 software), and let us acknowledge it, us very did not test!
To begin Bullfrog will like smallest. It is a question of directing a frog and of making him eat all the malicious animals with the screen…
I don’t speak French, but I think they are saying that young children will like Bullfrog. Any French speakers out there?
Bullfrog was briefly mentioned on the french website Jeux Mac
For those of us that are French impaired, here is a snippet from the google translation of the article:
Whereas OriginalMacgames Contest is about to close its doors in order to return its verdict, there it is still possible to go to download the registered plays.
There is really sympathetic software, here a small description of some:
BullFrog: a small play for child (less than 10 years) in whom it will have to nourish a frog.
Okay, it’s not the most impressive review in the world, but it’s my first mention — so bear with me.
iDevGames has announced the results of the public voting round for the Original Mac Games Cup 2005.
Congratulations to the finalists:
- Escort Wing (William Hogben, Stephen Johnson) 8.72
- Nball (Matteo Guarnieri) 8.28
- MacBornes (Alexandre Colucci) 8.27
- Tracktor Beam (Will Thimbleby) 7.88
- Pawns (Matt Diamond) 7.86
- Pakimono (Joachim Ante, Aras Pranckevicius, Raimund Schumach) 7.81
If you haven’t already checked out entries in the 2005 Original Mac Games Cup, you only have two days left before the public voting phase closes.
On December 15, 2005 the contest will move into the second round where the top entries will face the official judges.
For Part 4 of the series, I originally planned to begin taking you through step by step as I worked with my artist, Jordan Langille to specify and refine the game artwork while we actually did it. Unfortunately, development time was at a premium during the six week game programming contest, the 2005 OMG Cup. So, instead I’m going to give you a higher level overview of the project in retrospect.
When I first asked Jordan to produce the artwork for the video game, I only had a rough idea of what I was going to need. I didn’t really have the engine to a point that I could give him very many specifics. So as I stated in the first part of this series, I set Jordan on the task of designing the Bullfrog application icon.
While Jordan was working on the icon, I focused my development efforts on getting the sprite rendering code to a stage where I could know how many animation frames I would need and in what sizes.
Thankfully, my code reached this point about the same time that Jordan finished the application icon. So I was able to give him a list of the six bugs that were going to be included in the OMG Cup version of the game. I also requested animation artwork for the main character, a Bullfrog.
Here is a list of the sprites I requested:
- Gnat [16×16]
- Mosquito [16×16]
- Horsefly [32×32]
- Bee [32×32]
- Dragonfly [64×64]
- Butterfly [64×64]
- Bullfrog [64×64]
As it turns out, none of these sizes were final and like most things in software development projects, the requirements changed. Thankfully, Jordan was patient enough with me to push through the changes and produce some great animations.
To help me program the rendering and animation engine, I first created temporary animated sprites for the frog and for the gnat. Instead of wasting effort with temporary art for all the bugs, I just reused the gnat artwork in various sizes to distingquish each bug. For reference, here is a single frame from each:
Following my refined specifications, Jordan produced the following animated sprites:
Jordan also convinced me that we shouldn’t settle for the plain black background I had originally planned. He put together the background shown in this in-game screen shot:
That about wraps up the artwork behind Bullfrog. Keep yours eyes peeled for a full postmortem of the entire game development project in the coming weeks.
The 2005 Original Mac Games Cup has now officially opened for public voting. The submission phase has closed and there are 36 entries.
Update: It looks like iDevGames (host of OMG) is getting hammered with traffic. Please be patient, I’m sure they will be back up soon.
After a ton of work over the past month designing and programming my first Mac game, it is finally finished.
All the final artwork and animation is complete. All known bugs have been fixed. The final executable binary has been packaged and zipped.
Bullfrog has been officially entered into the 2005 OMG Cup and public voting opens December 1, 2005 at midnight.
If you’re interested in playing the final complete version of the game, you can find it on the official contest entry download page along with all the other games entered in the competition.
I would love for you to give the game a try and if you like it, please take the time to vote for it.
While you’re trying out games, why not support independent Mac game development and try out some of the other entries. There are some fantastic games waiting to be discovered. Don’t forget to rate each game you try. Who knows, you may discover a new favorite.