TweetFollow Us on Twitter

Games People Write
Volume Number:11
Issue Number:12
Column Tag:Book Review

Games People Write

Jump into games programming with advice from the experts.

By Mike Scanlin

Tricks of the Mac Game
Programming Gurus

By McCornack, Ragnemalm, Celestin,
et al.
Hayden Books, 1995
ISBN 1-56830-183-9
861 pages (softback) with CD-ROM. $50.00

The desire to write a computer game has probably recruited more people to study computer programming than any other kind of software. Certainly, this is true for me. It was 15 years ago when I asked for my allowance in quarters so I could go down to the local arcade and play games. I remember wondering how they made those games and thinking that it must be the coolest job in the world. Then came the day my grandfather gave me a 16K Apple ][ computer. As with many people, it changed my life. I became obsessed with learning everything there was to know about programming games. It was a slow process of trial-and-error, with lots of hacking and disassembling in between. I can only imagine how much quicker I could have learned everything if I’d had a book like Tricks of the Mac Game Programming Gurus back then. I would have saved so much time that I might have gone outside once in a while, had a few friends and maybe even gone to the movies occasionally.

While there is much to be said for figuring out how to do something on your own, there is also something to be said for not reinventing the wheel all the time. This book explains and solves many of the problems you will encounter while writing a Macintosh game. It will give you enough of the basics so that you can concentrate on game playability, good graphics, and sounds, rather than figuring out things like how to hide the menu bar, how to create preferences and saved game files, and how to correctly let people configure their keyboard controls independent of their country or keyboard model.

This book was written by many people, each explaining everything he knows about his area of expertise (graphics, sound, QuickDraw 3D, networking, PowerPC, etc.). There is not much source code printed in the book (for space reasons - it’s a big book as it is), but the accompanying CD-ROM has lots of documented source code on it.

The beginning of the book reviews GWorlds, GDevices, CopyBits, PixMaps and palettes. For the uninitiated these concepts can be overwhelming, but the author does a good job of telling you just what you need to know to get started. There is a simple demo application called Clem the Clam that shows a little animated clam walking across a background (with appropriate masking). It’s a great app to learn and experiment with.

There is a chapter on how to make good sound (overlapping sounds, background music, etc.), as well as a discussion of an included code library called Hollywood. This library allows you to play AIFF files, 'snd' resources, mono, stereo, MACE-compressed, streaming sound, 8-bit sound or 16-bit sound, and it can do them all at once. This is a great way to get up and running using sounds with minimal effort. The only effort is coming up with good sounds for your game. The mechanics of playing them from within your game are taken care of for you.

A similarly useful chapter covers networking. Taking advantage of the Macintosh’s built-in networking capability has never been easier. It covers AppleTalk in detail (ATP and DDP), and goes into Apple’s new networking protocol, OpenTransport, as well. Once you’ve read this material you will no longer be intimidated by the concept of writing a network game. As in the sound chapter, the grunt work of networking has been taken care of for you. Now you just have to come up with a good network game idea.

Once you’ve got sounds and networking under control, the remaining areas to concentrate on are graphics and game design. Throughout the book there are references to little tricks with graphics: fast blitters, masks, working with offscreen PixMaps, optimizing for CopyBits. I especially like the one discussing how to encode (and compress) 8-bit indexed images so that your blitters are faster. You’ll find there are many examples using 8-bit indexed images. That seems to be the appropriate lowest common denominator you should shoot for if you want to reach the broadest possible Macintosh audience. It also makes porting to non-Macintosh systems easiest (there is a complete chapter on porting and what to consider).

Game design is, of course, the hardest part of any good game. This book has taken care of many of the mechanical aspects involved in writing a good Macintosh game, but it can’t solve the creativity problem for you. It’s up to you to work with good artists, good musicians and good creative people to make your game really fun to play. There are a couple of chapters on how to make the entities in your game appear realistic. The equations for realistic collisions, distance covered by diagonal movement, acceleration due to gravity, etc., are given along with clear diagrams.

Several optimization tips are given, including: using fixed-point math when you can (velocity calculations), using the floating-point registers on a PowerPC as the fastest way to write your blitting loops (for maximum data transfer throughput), using aligned data on the 603 and 604 (which sped up one game’s blit loop by a factor of two when compared to the unaligned case), and using no more than 8 parameters per function so the PowerPC can pass them in registers. There are other details, too, but I’ll let you ferret them out on your own by reading the book.

I strongly recommend this book to anyone considering writing his or her first game. I also recommend it to people who are unfamiliar with sound or networking. Those skills can be useful even in non-game applications.

Having said all that, there are some things about this book I didn’t like. For starters, it really does feel like it was written by many different people. There are places where it’s redundant. I’m not sure I need to be told how to hide the menu bar in three different ways in three different chapters. That tends to confuse, more than help. Which is the best way to hide it? I still don’t know. It would have been great, too, if they could have gotten everyone to agree to a common set of coding guidelines and naming conventions. Consistency enhances comprehension when you’re looking at someone else’s code.

Several of the authors suggest boosting speed by using tables to look up various things (entity behavior, dungeon maps, etc.). While I applaud that technique, I would have made more things resource-driven instead of using static data in the source code. Perhaps, though, the authors used static data for demonstration purposes (to avoid adding the complication of custom resource templates), or for portability reasons.

While some of the authors are very good at explaining their optimizations and why they did things a certain way, others are not. For example, one of the code snippets calls MoreMasters() four times during initialization with a comment that says, “so we won’t run out of handles”. But the phrase “run out of handles” is misleading, because the issue is memory fragmentation, not running out of handles. Nowhere is it explained how to determine the appropriate number of preallocated master pointers (i.e. by exercising your program thoroughly and then looking in the heap to see how many were created).

There are a couple of typographical problems, such as the occasional double-hyphen in the source code (a post-decrement) being converted into an em-dash by some overly aggressive file translator. I’m not sure if novice programmers will know that x-; means x--; (I guess they’ll have to figure it out when they try to compile). Throughout the book there are “Note” paragraphs set on top of solid 10% gray rectangles. Maybe it’s just the copy that I received but about half of those paragraphs were missing the background rectangle or it was so light that you couldn’t see it. The result is that as you’re reading the text you sometimes come across what seems to be a completely disjointed paragraph. Not a big deal once you’ve encountered it a couple of times, though, because you know to skip it and keep reading the text in the following paragraph.

There are also some things that are downright strange. Apparently, one of the authors is Swedish because some of the screen shots contain Swedish text and buttons in the Open/Save dialogs. That adds confusion in an English book because the text around those dialogs was discussing how to save and load games, not how to internationalize. Also, there is a chapter called “Aesthetics” which emphasizes that a consistent look-and-feel can help your game, but then goes on to label the OK button as “Okay” in a standard Macintosh dialog (right next to a Cancel button). To anyone with Macintosh experience, it looks distinctly odd and unnecessarily different.

Despite the above problems, the code is readable and the game logic and diagrams are clean. Also, in a series of interviews, published Macintosh game authors answer some of the non-technical questions most curious readers will have, such as, “How many people worked on that game?”, “How long did it take?” and “What tools did you use?” If you would like to see the sun, have friends, have time to go to the movies or maybe just learn a bit on how to write a Macintosh game, then you should read this book.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

DiskCatalogMaker 7.2.7 - Catalog your di...
DiskCatalogMaker is a simple disk management tool which catalogs disks. Simple, light-weight, and fast Finder-like intuitive look and feel Super-fast search algorithm Can compress catalog data for... Read more
DiskCatalogMaker 7.2.7 - Catalog your di...
DiskCatalogMaker is a simple disk management tool which catalogs disks. Simple, light-weight, and fast Finder-like intuitive look and feel Super-fast search algorithm Can compress catalog data for... Read more
Iridient Developer 3.2.1 - Powerful imag...
Iridient Developer (was RAW Developer) is a powerful image-conversion application designed specifically for OS X. Iridient Developer gives advanced photographers total control over every aspect of... Read more
BusyContacts 1.2.7 - Fast, efficient con...
BusyContacts is a contact manager for OS X that makes creating, finding, and managing contacts faster and more efficient. It brings to contact management the same power, flexibility, and sharing... Read more
MegaSeg 6.0.5 - Professional DJ and radi...
MegaSeg is a complete solution for pro audio/video DJ mixing, radio automation, and music scheduling with rock-solid performance and an easy-to-use design. Mix with visual waveforms and Magic... Read more
BusyContacts 1.2.7 - Fast, efficient con...
BusyContacts is a contact manager for OS X that makes creating, finding, and managing contacts faster and more efficient. It brings to contact management the same power, flexibility, and sharing... Read more
MegaSeg 6.0.5 - Professional DJ and radi...
MegaSeg is a complete solution for pro audio/video DJ mixing, radio automation, and music scheduling with rock-solid performance and an easy-to-use design. Mix with visual waveforms and Magic... Read more
Iridient Developer 3.2.1 - Powerful imag...
Iridient Developer (was RAW Developer) is a powerful image-conversion application designed specifically for OS X. Iridient Developer gives advanced photographers total control over every aspect of... Read more
iFFmpeg 6.6.1 - Convert multimedia files...
iFFmpeg is a comprehensive media tool to convert movie, audio and media files between formats. The FFmpeg command line instructions can be very hard to master/understand, so iFFmpeg does all the hard... Read more
Tor Browser Bundle 7.0.11 - Anonymize We...
The Tor Browser Bundle is an easy-to-use portable package of Tor, Vidalia, Torbutton, and a Firefox fork preconfigured to work together out of the box. It contains a modified copy of Firefox that... Read more

Latest Forum Discussions

See All

Reigns: Her Majesty guide - how to use e...
Ruling a kingdom isn't easy--doubly so for a queen whose every decision is questioned by the other factions seeking a slice of power. Reigns: Her Majesty builds on the original game's swipey tactics, adding items that you can use to move the story... | Read more »
The best new games we played this week -...
Friday has crept up on us once again, so it's time to honor the best new games we've played over the past few days. This past week was a pretty exciting one, with the debut of lots of beautiful new indies and some familiar faces returning to the... | Read more »
Portal Knights guide- beginner tips and...
Portal Knights is finally making the jump to iOS and Android, and it's already climbing the ranks to become the next big MMO experience on mobile. This sprawling sandbox game will let you pursue any adventure you wish, whether you want to sling... | Read more »
Reigns: Her Majesty guide - how to swipe...
Reigns: Her Majesty is storming the App Store this week, bringing more tinder-esque kingdom building to eager players everywhere. If you've played the original Reigns, you'll know that leading a kingdom is never easy. It's a careful balancing act... | Read more »
Getting Over It (Games)
Getting Over It 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: A game I madeFor a certain kind of person To hurt them. • Climb up an enormous mountain with nothing but a hammer and a pot.•... | Read more »
Reigns: Her Majesty (Games)
Reigns: Her Majesty 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: | Read more »
Pocket Legends Adventures guide - how to...
Pocket Legends Adventures is a fun action adventure RPG that takes control when you want it to, but also opens itself for player input, too, if you're looking to tkae a more active role in combat. Regardless of play style, the game can be quite... | Read more »
Portal Knights (Games)
Portal Knights 1.2.4 Device: iOS Universal Category: Games Price: $4.99, Version: 1.2.4 (iTunes) Description: Craft your adventure. Forge your hero. Become the ultimate Portal Knight! | Read more »
Ashworld (Games)
Ashworld 1.3 Device: iOS Universal Category: Games Price: $3.99, Version: 1.3 (iTunes) Description: | Read more »
The best deals on the App Store this wee...
Another week means another roundup of quality bargain games. This week's list features a few games we haven't featured before in our weekly roundups. If you're on the prowl for new games, now's an optimal time to try something completely new for... | Read more »

Price Scanner via MacPrices.net

Beats by Dr. Dre – BeatsX Earphones on sale f...
Best Buy has BeatsX Earphones on sale for $109, $40 off, on their online store. Sale price for online orders only. Choose free store pickup, if available, or choose free shipping. Read more
10″ 64GB WiFi Apple iPad Pros on sale for $59...
MacMall has 10.5″ 64GB Apple iPad Pros on sale for $599 including free shipping. That’s $50 off MSRP and among the lowest prices available for these iPads from any Apple reseller. Read more
15″ 2.2GHz MacBook Pros on sale for $200-$300...
B&H Photo has the 15″ 2.2GHz MacBook Pro available for $200 off MSRP including free shipping plus NY & NJ sales tax only: – 15″ 2.2GHz MacBook Pro (MJLQ2LL/A): $1799 $200 off MSRP Apple has... Read more
Holiday sale: 15″ MacBook Pros for $200-$420...
MacMall has 15″ MacBook Pros on sale for $220-$300 off MSRP, each including free shipping: – 15″ 2.8GHz MacBook Pro Space Gray (MPTR2LL/A): $2179, $220 off MSRP – 15″ 2.8GHz MacBook Pro Silver (... Read more
Holiday sale: 13″ MacBook Airs for up to $150...
B&H Photo has 13″ MacBook Airs on sale for $100 off MSRP as part of their Holiday sale. Shipping is free, and B&H charges sales tax for NY & NJ residents only: – 13″ 1.8GHz/128GB MacBook... Read more
The best Holiday sale prices on 13″ MacBook P...
B&H Photo has 13″ MacBook Pros on sale this weekend, with models available for $100-$150 off MSRP. Shipping is free, and B&H charges sales tax for NY & NJ residents only: – 13-inch 2.3GHz... Read more
Holiday sale: 27″ Apple iMacs for $150-$200 o...
MacMall has 27″ iMacs on sale for $150-$200 off MSRP as part of their Holiday sale, each including free shipping: – 27″ 3.8GHz iMac (MNED2LL/A): $2099 $200 off MSRP – 27″ 3.5GHz iMac (MNEA2LL/A): $... Read more
Save on clearance 2016 15″ MacBook Pros, up t...
B&H Photo has clearance 2016 15″ MacBook Pros available for up to $700 off original MSRP. Shipping is free, and B&H charges NY & NJ sales tax only: – 15″ 2.7GHz Touch Bar MacBook Pro... Read more
Apple offers Certified Refurbished 9.7″ iPads...
Apple has Certified Refurbished 9.7″ WiFi iPads available for $50-$70 off the cost of new models. An Apple one-year warranty is included with each iPad, and shipping is free: – 9″ 32GB WiFi iPad: $... Read more
Save $200-$240 on a 12″ Apple MacBook with Ce...
Apple has Certified Refurbished 2017 12″ Retina MacBooks available for $200-$240 off the cost of new models. Apple will include a standard one-year warranty with each MacBook, and shipping is free.... Read more

Jobs Board

*Apple* Retail - Multiple Positions - Apple,...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description:SalesSpecialist - Retail Customer Service and SalesTransform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Information Security - Security Data...
# Apple Information Security - Security Data Analyst Job Number: 113119545 Austin, Texas, United States Posted: 10-Nov-2017 Weekly Hours: 40.00 **Job Summary** This Read more
*Apple* Retail - Multiple Positions - Apple,...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.