Cocoa Programming for Mac OS X
Home | FAQ | Forum
Macintosh Games Begin Here
Donate | Store | Contact

features
articles
reviews
interviews
dev. diaries
postmortems
editorials
links


downloads
file finder
tutorials
source code
resources
dev. tools
documents

udevgame
overview
games
rules
faq
entrant login
prizes
voting
members
directory

site info
about us
advertise
partners
press releases
staff list
writer's kit

idg network
Free Amapi 3D
MacDoom Legacy
Mac Crystal Space
Ricore
OPM
Inkubator


Features: Postmortems:
Turtle Turmoil Postmortem
by Will Helling
October 12, 2001

Printer Friendly


uDevGame Finalist

Turtle Turmoil

Overview

ScreenshotAbout two months before I had even heard of the uDevGames contest, I had been running an idea of a puzzle game that starred a dopey turtle through my mind. At the time I was working on a completely separate project; a space shooter game named Furae (the official Americans-Latin word for multiple furies. Don't try looking that up, it won't be found).

I hadn't been a frequent visitor to iDevGames.com, so my stumbling across the contest was by chance. After spending much of my game programming life without the knowledgeable help of the regulars on the mac.game.programming list, I finally decided to subscribe and expand my technical horizons. Only a few days after my first mail arrived, I read an announcement of uDevGame 2001.

A game programming contest dedicated to Macs? Never! Yet, reliable sources told otherwise and I found myself in a bit of a pinch. As I said, my current project had been Furae, so I briefly considered sprucing it up and submitting it. After reading further through the rules, I noticed the part about a two month time limit on entries. While Furae was still a legal entry, I had already put seven months into it, and I felt such a length of time would be an unfair advantage over other games that might enter. Without apprehension and already two weeks into the contest, I made the decision to start a game from scratch. I resurrected my idea of a mixed puzzle/arcade game, spent a few days filling in the holes that I anticipated would arise from game play, and began forging the preliminary graphics to the game engine.

The initial design of Turtle Turmoil was a puzzle game that involved some sort of a grounded foul, a chicken for instance, that would hop around on top of movable blocks. The goal would be to move the blocks so that the creatures in danger could hop to the safety of their nest, all-the-while dodging enemies that lurked on the ground below. There were also only to be two blocks, those that could move and those that could not. The best part about creating a game is that one never ends up with what they start with.

Screenshot

The Tools

I used a few different tools in the development of Turtle. My trusty compiler was Metrowerks' CodeWarrior 5. All of the graphics that I created were made in Infini-D 4.5, and all tweaking was done in Photoshop 5.5. Resources were compiled with Resorcerer and inspiration was given from Ambrosia's Bubble Trouble.

Mike "Mojo" Apolis, my talented graphics artist, sound expert and musician, also used Infini-D and Photoshop for his graphics, along with Mix Man Studio for the music.

Turtle Turmoil also includes a few libraries that deserve to be noted. The first of these libraries, and one of the most important to the game is Ian Ollman's SoundTerrain Library. SoundTerrain is an amazing sound system for Macintosh games. Unfortunately, Turtle Turmoil doesn't implement all of its great features. Aside from ease of implementation (excellent in my opinion), it features playback in complete 3d space, pitch shifting and bending, Doppler effects, and a complete control over the technical details of the sound engine itself. Simply fantastic. The second of the external libraries I used for Turtle Turmoil is Fredrik Andersson's SliMPEG MP3 player. The library itself includes about seven different calls. Four of these are the heart of the library: initialize, play, stop, and set_volume. When time is the defining factor in the development of a game, a library such as this is crucial for meeting deadlines.

Finally, although not technically a library, was my graphics engine SchweetWorld. It was started about three years ago as a means for a clarified, unified way to display sprite based graphics in a game. The very first version was laden with bugs and lacked many features. However, it laid out the world to layer to sprite architecture and provided a solid foundation that, since its birth, has been modified and changed in so many different ways that its doubtful if a single line of code has remained the same in the 2600 lines of code that comprise it. I'm proud to say that as of this writing it's completely OS X compatible, supports lighting, tiles, transparency, easy but powerful text drawing routines and a built-in support for drawing basic QuickDraw objects.

Screenshot

What Went Right

Fortunately, just about everything slipped into place without major problems. The development of the game followed a well-defined path at the very beginning, which is invaluable for staying on track later on. The project started initially as a one-man show. During the first two weeks I spent more time creating graphics than I did actually programming. It was a highly aggravating experience to spend five hours in Infini-D and then two more in CodeWarrior implementing the graphics that had been rendered.

After I completed most of the filler graphics (I thought they would be final when I first created them, but very few of them actually were) I presented it to a few of my friends on IRC. One of them, Mike Apolis the graphics artist, informed me that he would like to help me out in my quest for glory. I breathed an immense sigh of relief and agreed. Three days later he sent me the same app back, completely and totally changed with beautiful graphics. From then on out he became the lead graphics artist for Turtle, as well as providing other various resources as needed.

Mike truly was a life-saver to the completion of the game. We had excellent communication, and often times I would find myself just saying to him "I need this graphic, in this size." and within a few hours, I would have a package waiting for me in my mailbox. Regardless of what I thought it should look like, I found that he often had better ideas.

I also had strong support from friends on IRC, who would constantly give me feedback on game play and ideas. Creating a game by yourself is usually a very bad thing to do. The programmer is always biased towards his own preconceptions, and many of these are simply detrimental to the fun of the game. As cool as having pheasants that hop around on rocks is, it really doesn't do much for the happy factor of the game.

One fellow who gave me all the programming support I could have ever asked for was Ian Rickard, an amazingly smart and talented programmer. He is the third member of the Turtle development team, and was basically responsible for telling me what to do when I didn't know what to do. For example, Ian influenced most of the changes to SchweetWorld. The only function in SchweetWorld that does not begin with SW is InioBlit(), which was created completely by Ian. He is the blitter-master.

Screenshot

What Went Wrong

Music was a particularly troubling matter. At first, neither Mike nor I knew exactly what kind of music Turtle should include. We debated using MOD files taken from various archives, but we knew that it was against the rules of the contest. In any case, finding music to match the game play on those databases was incredibly hard, and pretty much a lost cause as it was. We looked into some royalty-free MP3's, but we couldn't find enough to match the style. Finally, Mike just told me one day that he had "thrown a little something together." Voila. We had Turtle Theme.mp3. From there on out, he just "threw together" three more songs in Mix Man, and we were set.

The porting of the app to Mac OS X presented much more of a difficulty than I had initially expected. When I first reviewed the rules for uDevGames, I noted to myself that the judges would be highly interested in looking for games that would run on Mac OS X. "Wowzers," I thought, "I have no Mac OS X compatible code whatsoever." I decided that this contest would be a great catalyst to get me off my lazy programmer arse and clean up my code for Mac OS X. After I had the graphics engine running entirely under CarbonLib, I proceeded with development as normal. I somehow thought that when the time would come to test it under Mac OS X, simply adding a carb resource of ID 1 would do the trick. Ha, Not quite! Once the gameplay had been completed, I would spend about two hours at a time trying to get SchweetWorld and Turtle to work in Mac OS X. Around that time, I had completely lost any patience I had for the OS. This went on for about two weeks. The real problem was that I was developing Turtle on a non Mac OS X compatible compiler, so I had no use of any kind of a debugger. I tried a couple times to convert it to a Project Builder project, but with much failure. Eventually, through the use of many, many, many log files and dialog alerts, I tracked all of the errors that kept Turtle from running in Mac OS X, vanquished them, and made it officially OS X compatible (although version b6, the version submitted to the uDevGames contest, is not).

Screenshot

Looking ahead

I will go on to finish Turtle Turmoil to a well polished luster, and release a final version outside of uDevGame. After that, who knows. I will probably go back to working on Furae, and begin learning OpenGL for use in an upcoming adventure game featuring a heroic squirrel! Someday I might bring Brainfreeze Entertainment out of a hobby state, but until I can make more than zero dollars per game, I'll just stick with pizza delivery.

Thoughts on uDevGame 2001

Mike Apolis summed it up best when he said "It was pretty cool to be a part of a contest that produced a good handful of games for the Mac in two months." I share the same thoughts as Mike. As a Macintosh developer, the chance to create a project and have it be put on display against one's peers is a tremendous driving force. This force fuels the drive for quality, at least it did for me. It was this push from behind that made creating this game in such a short time so much fun.

I feel that the two month time limit was a bit tight, but very healthy as well. For me, it presented a worthy challenge and created a very strong desire to make as polished and enjoyable game as possible in a miniscule amount of time. Somehow, amazingly, I managed to fulfill my expectations of myself and had a great time in the process.

Having to submit my source code was comparable to being a magician and not wanting to give away the secret of the trick. However, I realize that iDevGames is working towards building a community where all Macintosh developers can benefit, regardless of level. Anyways, how can other magicians come to be if they don't also learn the secrets of Macintosh game programming? Merci beaucoup, iDevGames!

Visual Developer Diary

Image 1 - August 2nd
Possibly the very first working version of the game. Because of the appearance of the rocks, I liked to joke that I was pulling teeth at this stage of development.

Image 2 - August 6th
I got quite a few graphics added to this version, most notably the background and the ugly ogres. Gameplay was still very limited this early on, and there was no interaction between the characters at all except for Tort to the rocks and the rocks killing the ogres.

Image 3 - August 14th
Because this was the first version to make use of the level sets, and because I hadn't built the editor yet, this screenshot lacks in visual flavor. However, this was the version built after Mike got his hands on the graphics. Pretty, huh?

Image 4 - August 19th
This is a screenshot of WAR mode in b1. At this point almost all of the internal workings of the game were done and almost all of the graphics had been finalized. Gameplay still needed quite a bit of work, though. This version didn't use the symmetrical creation of WAR maps either, and makes it fairly obvious as to why I changed it.

Image 5 - September 20th
Here is Turtle Turmoil as it looks today. I was asked many times in game development to add certain blocks to make puzzle creation easier, and one of these was the tree stump (a breakable wall, not included in b6). I believe this screenshot shows all the main graphics Turtle Turmoil offers in game play. The blue border was created with a plug-in, which Turtle Turmoil now supports for the modification of graphics.

Turtle Turmoil Demo
Size: 8.8 MB
Genre: Arcade/Puzzle
Developer: Brainfreeze Entertainment
Url: http://www.brainfreezesw.com
Team size: 3
Released date: September 19, 2001
Project length: 2 months
Development hardware: iMac DV 400 MHz (320 MB RAM)
Critical applications:
  • CodeWarrior 5
  • Infini-D
  • Resorcerer
  • Mix Man Studio
Homepage | Top
Copyright © 2002 iDevGames.com
All rights reserved.
Problems | Terms