More Job Tips

Tuesday, August 11th, 2009

Links are better than attachments. They’re easier and faster to forward and they’re more reliable. You never know if someone is going to be receiving that e-mail on their Blackberry or other mobile device, or low-bandwidth connection.

– [Caveat] If you send a link, make sure your website is up and available. There’s nothing worse than going to view someone’s portfolio and getting a “this user needs to renew their account” message. An attachment is still better than a non-working website.

Tell me what you’re applying for, especially if its a cold contact.

– If you have a video, use a codec you know is pre-installed on most computers -OR- provide a link to where the codec can be obtained from. A codec that’s pre-installed is the better of the two choices.

– On your reel, be specific about which parts are yours. This is especially important on group projects. A shot list is helpful.

– Ditto on code samples.

Share and Enjoy

Job Hunting Tips

Thursday, August 6th, 2009

As a former game dev lead and now as a studio head, I look at a lot of resumes.

This is by no means a comprehensive guide, but if you’re looking for a job here are a few quick tips I can share from my own perspective from the hiring side. These are some of the top things, good and bad, that I see every day when I am evaluating potential candidates.

[Required disclaimer: This is just my personal opinion on hiring practices, not official policy for any company including my own! Different hiring managers use different criteria and techniques. Use your own best judgment when preparing your application.]

Have a demo reel, portfolio or code sample. I can’t emphasize this enough. I’m going to be dead honest: I generally watch reels all the way through before I even open the attached resume. I may even watch your reel before I read your name. I don’t care how many years of experience you have if your reel is crappy… and vice versa, I’m more likely to give someone with little or no experience a shot if they have a really brilliant demo. In the end, we want to hire people who can produce a superior end product regardless of how you acquired your skills, and the best way to prove to me you can do that is to show me a great example of an end product.

Your demo reel only needs to show what it needs to show. Or, to clarify: if you’re an animator, a reel with untextured characters or stock textures–as long as they are credited–is perfectly okay. If you’re a programmer, a well-written class file is enough. I don’t need to see a whole game or movie. I just need to get an idea of what you can do. In fact, this is especially true for programmers. Many programmers send compiled binaries and no source code. A compiled binary doesn’t tell me very much. I’d much rather have a sample of well-written code even if it doesn’t compile because the rest of the app is missing than a pretty demo with no source and no idea if it’s a rats nest under the hood.

If you are a programmer, comment your code. An uncommented demo is an instant fail. If can’t bother to comment your demo why would I believe you would comment your actual source?

Write a cover letter. It doesn’t have to be long or elegant; in fact, it’s better if it’s brief. Give me the “highlights reel” before I view your portfolio or resume. Tell me the one or two very best things about yourself that make you a better candidate for the position than anyone else. It gives me an idea of what you think I should focus on when I read your resume.

Don’t call my desk line, but it’s okay to send me an e-mail even if we don’t have a job listing posted. It’s not that I don’t want to chat, it’s just that I’m much more likely to be frazzled and in the middle of something if you call me unexpectedly. [Edit: For clarification, I mean cold calling. 🙂 Regular calling when I expect you might is okay, naturally.]

– Freelancers [sometimes] have better chances of getting work, especially if they aren’t looking for full-time. There are two reasons why freelancers are desirable: The games industry is very seasonal in nature with lots of ups and downs. We may not have enough work or the budget for a full-time employee, but we may have specific projects that need done. (And, oddly, small projects often have a way of leading to more work…) Secondly, hiring people is just darn hard. It’s heartbreaking (really) to hire someone who doesn’t work out, and nobody likes doing it. Contracting is often a good way for both parties to see if the other will be a good fit. If it turns out there’s a ton of work to do, you love what you’re doing, and we love your work, then when a full-time opportunity does present itself it’s a much easier jump. Now to be fair, I know contracting is not for everyone so it’s by no means a requirement, but if you were thinking of freelancing already it’s worth considering. ** This tip may or may not apply to certain companies. Some companies never hire freelancers. We use freelancers frequently.

If you send your resume as an e-mail attachment, put your name or something identifiable in the file name. Don’t name it “resume.doc”. “jane_doe_resume.doc” is much better. Resumes always get saved off to disk before reading so they can be virus-scanned first. Putting your name in your resume file name makes it stand-out when someone is searching through the folder of virus-scanned resumes for yours.

Share and Enjoy

AC3D Plugin: Material by Crease Angle and Planar Map by Material

Monday, June 15th, 2009

Two new plugins today!

The first plugin, Set Material by Crease Angle, sets the materials of a model based on the crease angle of the mesh. For each selected area, the plugin creates a new color in the palette and “flood-fills” the area until the angle between the surfaces exceeds the crease angle of the mesh. The result is that contiguous areas are all set with the same palette material, and a new material is applied wherever a discontinuity occurs. This allows you to easily break a model into sections along its creases for easier texture mapping, or many other purposes.

The second plugin, Planar Map by Material, actually includes three new commands.

The first command is Fit UV Coordinates to Map. This command is essentially the same as the “max” button in the TCE, forcing all UV coordinates into the 0-1 range, but unlike “max” this scales the map proportionally instead of independently on each axis.

The second command is Adjust UVs for Bilinear Filter. This is useful for game developers. This command scales your texture coordinates by a ratio of 240/256. The purpose is to create a small seam along the edge of the texture map so that if your game is using mipmapping with a bilinear or trilinear filter, the texture won’t bleed into its neighbors in your texture cache nor will it bleed into itself if you haven’t clamped the edges.

The last command, Planar Map by Surface Material, is probably the most useful of the three. Planar Map by Surface Material applies a “best fit” planar projection to all surfaces grouped by material in the current selection. If you section your model by material, this will treat each material color as a contiguous group and apply whichever planar projection fits it best in the TCE. You’ll still need to do some manual adjustment after you map it this way–especially texture packing, as this leaves plenty of room between areas so the surfaces aren’t too difficult to select–but it can save a lot of time in laying down a base mapping before you manually refine each area.

More information about each plugin is available in the readme.

Download the Material by Crease Angle plugin. (Requires Windows XP, AC3D 6.2 or above.)

Download the Planar Map by Material plugin. (Requires Windows XP, AC3D 6.2 or above.)

Share and Enjoy

Tower Defense as a Thread Model

Thursday, June 11th, 2009

I keep having the strangest reoccurring dream. In my dream, I’m playing a turret defense game. 1 However, it is no ordinary tower game. It’s actually a thread process model. In the dream, each turret type represents a thread synchronization mechanism, generally some sort of atomic primitive. The units marching along the paths represent the threads that require synchronization. Most are worker threads calculating a result set, but some may be polling threads reading device updates or doing other jobs. The range circle of each tower and the position of the unit along the path represent states when it is appropriate for the thread to be accessed, either quiescent states or work states where the thread has completed some useful task and has a result ready to be read. If the unit\thread moves out of the turret\synchronization range circle, the thread result is lost or held and operation on the next work cycle begins. Shooting a unit\thread with a turret is a read\synchronization operation and gathers the result.

Yeah, I know, clearly I’ve had threads on the mind a little too much lately. 🙂 I’ve been working on a major refactor of the engine at work and thread synchronization problems are tricky.

Usually when I have dreams like this I wake up in the morning and have a good laugh wondering what the heck I was thinking. This time, however, I think there may be something to it. Now, I’m not suggesting a design built literally on the model exactly as it is in the dream but I think there are elements that could be useful.

The part that is intriguing about the turret defense thread model is that you can guarantee completion (all units hit) without guaranteeing really very much at all about either the turrets or the units. The units are not synchronized with each other; in fact, in many tower games faster units can overtake slower ones. A unit does not guarantee a minimum speed–it may even be allowed to stop entirely on occasion–although it does guarantee a maximum speed. The turrets are not synchronized with each other, nor do they communicate any information to each. A turret does not guarantee a specific number of units hit, only that it will hit units at a specific rate. A turret also does not guarantee what order it will fire at units in. A unit likewise guarantees nothing about when or by whom it will be hit except that it can be hit when it is within a valid range.

Yet, with a sufficient number of correctly placed turrets all the units will be hit with none escaping. More importantly, most of the time you can have far fewer turrets than units and still complete successfully. The number of turrets required is a simple function of the maximum speed of the turret, the maximum speed of the unit, and the number of times the turret must hit the unit for completion. Placement is trickier, but with a thread model you could surely replicate that with signals.

Fascinating, isn’t it?

I’m not sure yet where to go with all this, but it seems like there’s a useful idea to be gleaned. It’s not that different that a traditional worker pool, but the lack of communication seems important. I’m sure there’s something useful that can be done with this.

1. For anyone who cares, the specific game seems to be Crystal Defenders, but with some elements of Bloons Tower Defense 3.

Share and Enjoy

YouTube XL

Thursday, June 4th, 2009

YouTube just released a new “game-console optimized” version, YouTube XL.

Somehow I was out-of-the-loop on that one, so the release caught me by surprise. I like to watch videos on the Wii sometimes. I don’t use the Wii for web surfing regularly, but now and again the comfort of flopping down on the couch instead of sitting in a desk chair at the computer more than makes up for the small screen resolution of the television. Today when I went to YouTube, however, I was greeted by an all new interface. Designed specifically for consoles such as the Wii and PS3, YouTube XL is a smaller, sleeker interface targeted specifically at television viewing.

I must say, I found YouTube XL a big improvement for game console-based video browsing. It seems many of the early reviews are mixed; many reviewers seem to be complaining about some of the missing features such as comments. Honestly as someone who actually uses YouTube on a game console on a semi-regular basis I think the new UI is far more practical. Certainly there are some missing features, such as comments, but I can’t really imagine tapping out a comment with a joystick anyway. Frankly I even avoid the search box when I can. (Thank goodness for auto-complete the rest of the time.) The far improved use of screen real estate plus larger, easier to target buttons made for a much more pleasant viewing experience. The new YouTube XL isn’t a replacement for PC-based video surfing, but it’s a nice alternative when a comfortable seat on the couch beckons. I vote thumbs up.

Share and Enjoy


Friday, May 22nd, 2009

On Friday, an article ran on Slashdot making note that Microsoft is “banning” the C function memcpy in favor of the new memcpy_s. While memcpy_s has in truth been around for a while, the notion that it would now generate compiler warnings has created quite an uproar. Some people seem curious as to why so many people are upset by what seems a pretty innocuous change. The article author asked if was going to affect anyone’s creativity. I can assure you that’s not the concern.

In a nutshell: the problem is you can’t tape a cupholder to a formula one race car and declare it street legal. It still doesn’t have any bumpers, it’s too low to be safe around other cars, and if you aren’t an expert driver you still shouldn’t be driving it. A cupholder doesn’t change that.

So what? A cupholder is still an improvement… right? Who doesn’t want a cupholder? Imagine for a moment that having the cupholder suddenly disqualified you from a number of races. You couldn’t run that race if you have a cupholder. It also slowed down your car–not a lot, but a tiny fraction of a second. Maybe it doesn’t slow it down enough to matter, but in those few races won by hundredths… well, maybe it does. Suddenly that cupholder doesn’t seem so nice.

To be clear, I’m not suggesting giving up on attempts to improve memory management and prevent buffer overruns. I just question if this exact approach was the best one.

Memcpy_s is basically a race car with a cupholder. While memcpy_s will certainly prevent some bugs, the same people who got one parameter wrong are just as likely to get two parameters wrong… and cause all new bugs in the process. Garbage In = Garbage Out. It doesn’t matter what the calling convention is.

On two occasions I have been asked,—”Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?” … I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question.”

— Charles Babbage, 1864
discussing the first mechanical computer

The change also comes with a price: it breaks cross-compatibility with other compilers, including older compilers on the same operating system as well as other platforms. This means the same code can’t cross-compile anymore if you use memcpy_s. Someone with Microsoft suggested that GCC should pick up the change as well. Perhaps, but that assumes that GCC is the only other compiler that matters. Certainly, it’s the most popular other compiler that matters, but it’s far from the only one especially if you do embedded systems work or anything running on “exotic” hardware. And let’s be honest–if you’re not writing something that’s fast or exotic, you’re probably not writing it in C. The exception, of course, being legacy code… but surely that’s even less likely to be changed. The whole point of legacy code is that you don’t have the time\budget to update it, otherwise you wouldn’t be running it at all. These are the guys who will wrap memcpy_s in a macro named memcpy, defeating it entirely. Sigh.

As for that speed difference I mentioned? We’re obviously only talking about an extra comparison operator and perhaps a branch or two here. I know an extra comparison operator seems trivial, but if an extra comparison operator didn’t matter ASSERT macros wouldn’t exist. The speed difference is nominal, but it’s very, very real. On a lark I timed it. Copying 32 bytes 100,000 times with memcpy took on average 3952 counts, or about 0.001104 seconds, measured to nanosecond accuracy with QueryPerformanceCounter. Performing the identical operation with memcpy_s took on average 9706 counts, or about 0.002712 seconds. This was in “release mode” using Visual Studio 2008. (For the curious, in debug mode the difference averaged 8028 counts to 11340 counts, but you shouldn’t be shipping your code in debug mode anyway!)

Now hopefully you’ve done everything you can to avoid memcpy in your inner loop in the first place, but we all know there are rare occasions where it’s unavoidable. This all brings me back to my earlier point: if you’re not writing something that’s fast or exotic, you’re probably not writing it in C. Yes, you can write your own memcpy that’s probably faster than the system memcpy if you’re really worried about speed, but now we’re back to the portability issue. In short, I’m certain that to the people where the choice of language matters, those few clock cycles matter too. We’re talking folks writing device drivers here, not business applications.

Nobody is twisting anyone’s arm to use memcpy_s. You can easily disable the compiler warnings and continue to use memcpy all you like. But hopefully you see where I’m going with this: A lot of the reason that people continue to use C for certain projects has to do with performance and portability. This change sacrifices both for dubious return. If the change is not going to have tangible benefits that outweigh the problems, why do it at all?

Sooner or later, you need to trust that the programmer knows what they are doing. If the programmer can’t manage memory responsibly, you’ve got a bigger problem than an extra parameter is going to fix. To be honest, while a lot of people don’t like to admit it programmers sometimes leak or botch memory even in managed languages. There’s certainly a thesis paper or two in “possible alternatives” to the approach taken–perhaps checking the block size by querying the allocator instead of asking the programmer which would be even slower but more reliable, borrowing ideas from double entry accounting, etc, etc.–although the “real” fix surely involves more intelligent ways of thinking about memory, which realistically means a fundamental change in constructs, not a patched function.

As always, XKCD sums it up best (panel #2):


Ah, I wait for the day… 🙂

Share and Enjoy

Sculpted Prim Wine Glass

Thursday, April 2nd, 2009

A wine glass is one of the first things most people make when they learn to use a 3D program. It’s fun and it’s easy.

Making a sculpted prim wine glass for Second Life is equally fun. In fact, it’s almost exactly the same except you need to UV map it before you upload it. A simple cylindrical map will do. Here’s a video to show you how using AC3D.

Wineglass Video
Click to download video

The step-by-step:

  1. Draw a polyline that will form the outer edge of your wineglass.
  2. (Optional) Use the spline tool to make your polyline into a smooth curve.
  3. Revolve the polyline around the Y axis 360 degrees. The more segments you use the smoother it will be, but the more polygons. You don’t need very many polygons, so don’t overdo it.
  4. Using the UV map tool, apply a cylindrical wrap around the Y axis.
  5. Export!

Here are the UV map settings I used.

When you import it into SL, be sure to set your mapping mode to cylindrical. If you don’t, the top and bottom of the glass will be solid instead of hollow.

Set the Stitching Type to Cylinder.

Download the model here.

Share and Enjoy

AC3D Plugin: Poser Export

Monday, March 30th, 2009

This plugin exports AC3D models to Smith Micro’s Poser PZ3 format. It also generates a WaveFront OBJ file that Poser will recognize as “grouped” surfaces. This allows you to create custom characters and props for use in your Poser scenes with AC3D, and reduces the amount of time spent in the Setup Room in Poser grouping your surfaces.

Either the PZ3 or the OBJ can be used for importing a model into Poser.

The PZ3 is “pre-rigged” using the AC3D hierarchy as the skeleton and the AC3D object centres as the joint pivots. The PZ3 allows you to see working joints right away, but obviously the joints won’t be weighted as nicely as if you did it by hand. For this reason, I’d recommend starting with the OBJ file and building your skeleton in the Poser setup room instead unless your final output is a game engine or something else where Poser’s blend weights don’t matter. Like the Milkshape plugin, the Poser plugin supports null pivots. Any mesh in AC3D named “NULL_[whatever]” is treated as a null pivot so you can do “fancy” rigs if you need to. There are additional instructions in the readme.txt included with the plugin.

Download the plugin. (Requires Windows XP, AC3D 6.2 or above, Poser 6.0 or above.)

I’ve also built a sample file in case you need a working example of how to build your model.

Download the sample model.

In the sample, I’ve taken the perfume atomizer that comes in the AC3D stock model library. (You can load the original by clicking File > Library inside of AC3D and loading it from the samples folder.) I’ve re-rigged the atomizer so it can animate, then exported it using the Poser plugin. After import into Poser, I applied my materials, set the lights and tweaked the skeleton. All of the files are included so you can see each step.

  • – the rigged version of the atomizer from the AC3D library.
  • antomizer-rigged.pz3 – the unedited poser file exported by the plugin (yes, I realized belatedly I spelled it wrong, but I didn’t want to fix all the file links, doh)
  • atomizer-final.pz3 – the final file in poser, with materials applied and joint limits, etc., set

If you’re into building Poser models in AC3D, I would also recommend Dennis’s Poser Morph Target Assistant. The morph target assistant, as the name implies, will allow you to add morph targets to your Poser figures.


Share and Enjoy

How to Send Me a Newsletter

Monday, March 30th, 2009

Like most people, I get waaaaaay too much e-mail. Between some crazy deadlines, out-of-town conferences and wiping out my primary desktop machine, I’ve been offline for a couple of weeks and boy-oh-boy have the messages piled up. [If you’re waiting for a reply from me on something, I promise I haven’t forgotten you. 🙂 I’m still re-installing and it’s going to take me a few more days to dig my way out.]

While I don’t subscribe to nearly as many newsletters as I used to — most of my news-ish stuff comes in the form of RSS feeds these days — I still subscribe to a few. Here are some tips if you’re writing a newsletter that will decrease the odds that I’ll delete it without reading it:

  • Don’t change your “from” address. I white-list only those newsletters I want. If you change your address without telling me first, your newsletter will be deleted as spam and I won’t even know it.
  • If you must change your e-mail address, tell me before you change it. Sending me a “we’ve changed our address” message from your new address is an instant FAIL. I’ll miss it because your new address isn’t white-listed. I can’t believe how many people don’t think about this one.
  • A unique per-user ID in the subject line helps me tell your newsletter apart from phishes that look just like it. If I get too many phishes impersonating your newsletter, I’ll probably just unsubscribe it. I know it’s not your fault, but I don’t have the time to spend sorting out the fakes. A unique per-user ID in the subject is a very fast, easy way to make it obvious which messages are probably real and which are almost certainly fake.
Share and Enjoy

Hacked By GeNErAL

Tuesday, March 17th, 2009

~!Hacked By GeNErAL alias Mathis!~

Hacked By GeNErAL


Greetz : Kuroi’SH, RxR, ~

\!/Just for Fun ~Hacked By GeNErAL\!/

Hacked By GeNErAL! !

Share and Enjoy

Booty Blocks

Tuesday, December 30th, 2008

My good friend James works for Planet Moon, and they just finished a cool new iPhone game. It’s called Booty Blocks and it’s very cute. It’s a block stacking puzzle, but with a twist… you can continue to move the blocks after you’ve placed them, including using the iPhone’s tilt sensor to shake the whole stack. Great stuff. Congrats to the team!

Share and Enjoy

How To… ?

Thursday, December 18th, 2008

This image shows the Google “auto completion” results when typing the phrase “how to”. The idea of auto completion is that the computer will complete the phrase you are most likely searching for based on what other people are searching for. In a round-about way, it tells you a little bit about what other people are thinking… or at least what Google thinks they are thinking! 🙂

Some results, like writing a resume or cooking a turkey, I’d expect given the economy and the season. But others, such as knitting, surprised me. I always find it fascinating to see what the world is pondering.

Share and Enjoy

Writing Design Docs

Monday, December 1st, 2008

Brenda Brathwaite recently posted an excellent article on creating a game design doc. Her best advice:

Before you start writing, consider is your audience. Many new designers write documents as if they’re being written for gamers instead of a programmer who’s tired, annoyed and up at 3 a.m. coding your combat system…

So true! Even if you’re just writing implementation notes for yourself, this is an important thing to keep in mind. When there are a lot of complicated rules going on, it’s easy to get bogged down with loose ends when programming the implementation. Unfortunately, this sometimes means important details get overlooked. A careful and detailed list of requirements without a lot of extra hype cluttering it up is invaluable as a checklist when the going gets rough. It will help prevent anything from being missed.

Writing the right amount of detail is a fine art. You need enough detail to make sure everything important is explicitly defined, but not so much that the document becomes so overwhelming that you–or your team–will be tempted to just skim over it when you refer back to it later. Personally, I’m a big fan of writing design docs in html help file format, mainly because most of the editors force you to create drill-down type topics instead of writing the document linearly. Incidentally, many of the editors will also let you save to PDF or other file formats… it’s not the file format that’s important, as much as the concept of writing hierarchically instead of linearly.

Hierarchical format is very helpful when implementing because it allows you to keep track of the big picture with fewer minutiae details in the way while blocking out the architecture, yet you can focus in on the important-yet-tiny things when you implement the specifics. If you have the discipline to do it, keywording individual topics is also immensely valuable as the document grows in size. When programming large systems so many components end up more interrelated than people realize, and good keywords are another tool that help find everything important when you’re coding it up.

Share and Enjoy

Women-in-Games Online Auction

Wednesday, November 26th, 2008

The Women in Games International (WIGI) “Celebrity eBay Auction” has started. The auction includes lots of games and game-related books and merchandise, many of the items signed by the developers. Proceeds go to support Women in Games International.

Like many math and science-related fields, only 3% of engineers \ programmers in the game industry are female. Women in Games International’s goal is to help encourage more women to enter the industry.

A couple of interesting items from the list:

  • Lincoln Revolution poster signed by Sid Meier
  • 3 music CDs signed by The Fat Man
  • Electronic arts watch
  • BioShock Strategy Guide signed by Ken Levine
  • Share and Enjoy

    “Attack of the 5 Foot Women” Mixer

    Wednesday, November 12th, 2008

    IGDA Women in Games and Women in Games International is hosting an industry mixer at the VGXPO video games expo in Philadelphia, and my company is helping sponsor. Cool! The mixer will be Saturday, November 22 and will have food, drink and door prizes… plus, of course, hopefully lots of opportunities to chat with other people in the games industry.

    Going to be in town for the show? You can read more and RSVP the event here.

    Share and Enjoy

    Harry Connick Jr on Spore

    Wednesday, October 22nd, 2008

    This video is very funny, but it’s also another great example of why it’s important to avoid the game design problem of “death by save file”.

    Share and Enjoy

    Sales Tales

    Sunday, October 12th, 2008

    Joel Spolsky (Joel on Software) has a new article in Inc. magazine on the things that can go wrong with commissions and incentive sales plans. The article is ok–interesting, although there is a lot of ground not covered–but it does make me think of a funny story.

    Many years ago when I was still in college, I had a PC with a trimline cabinet that was only a few inches tall. As a consequence, it only had three expansion slots. The slots were on a riser board mounted parallel with the mother board, and even that was a pretty tight fit. Now this was back in the day when computers didn’t have video or sound on the mother board, and many didn’t have sound cards at all. Many had only a PC speaker which for the most part produced only one noise: “beep”. I oh-so-wanted a sound card. But I couldn’t install one because my slots were already full with the video card, network adapter and something else I couldn’t remove that eludes me at the moment. I was stuck with no sound card because I had nowhere to put it.

    Then, a miracle happened. The hole-in-the-wall computer parts store where I used to shop got a “two in one” card that had a sound card and a video card on the same board! This store sold mainly used and import goods, so most of the items in there were one-offs. Very excited and concerned I might not run across another one, I bought it right away.

    Naturally, I got the board home and installed it only to discover the hardware was faulty. Disappointed as I was, I ran a full set of diagnostics to confirm it really was broken. Indeed, it was damaged, so I returned it to the store who kindly refunded my money without any hassle.

    A few weeks later, my brother bought me a surprise gift! He knew how badly I wanted a sound card, and he had found a two-in-one sound and video card at the parts store so he bought it right away for me. I laughed. It was the exact same faulty board I had returned to the store just a short time before, the same crumpled box and everything. I returned it to the store, who again gave me a full refund.

    Not long later, my dad bought me an early Christmas present. It was the same board again! The exact same board. This was getting downright silly.

    I brought the board back to the store and spoke with the salesman. “Doug,” I said, “You keep selling me this board over and over again. You know it’s broken. You know I’m just going to return it again. Why do you keep selling it to me?” The salesman looked at me, leaned closer and said, “Yeah, Lis, I know it’s broken and I know you’re going to return it. But you see: I get a commission on the sale every time.”

    Groan. Never would have thought of that one. 🙂

    Share and Enjoy

    Little Big Calculator

    Saturday, October 11th, 2008

    From upsilandre: (Be sure to wait for the “inside view”!)

    According to the description, the level uses:
    – 610 magnetic switches
    – 500 Wires
    – 430 pistons
    – 70 emitters
    …and then some!

    Share and Enjoy

    Time-Limited Demos, Death by Auto-Save

    Friday, October 10th, 2008

    The Designer’s Notebook: Bad Game Designer, No Twinkie! IX by Ernest Adams is up over at Gamasutra. If you haven’t read the column before, it’s a checklist of bad design choices that will frustrate the heck out of your players. If you missed any of the last eight episodes, you can find a database of all the points here.

    This year’s column is particularly good. Points covered are:

    – Failure to Explain Victory and Loss Conditions
    – Time-Constrained Demos
    – Obvious and Cheap Reskins
    – Computer Crashed While Saving? Game Over
    – Friendly AI Characters That Do More Harm Than Good
    – Fake Interactivity
    – Bad Gamepad-to-Mouse/Keyboard Conversions
    – Setting the Player Up to Fail
    – Your Only Save is Immediately Before Your Death

    I’m hard-pressed to disagree with much that was said with the exception of time-limited demos. Most of the time, I agree, that time-limited demos are a bad idea. I’d rather have a content-limited demo. If the game cuts me off too soon I can’t tell if I liked it or not. That said, I’ve seen cases where time-limited demos have worked very well. For example, I think PopCap does an excellent job with time-limited demos. I’ve bought several of their games when the demo cut me off and I was eager to play more.

    I’ve given some thought as to why some time-limited demos work, and some are just irritating. I think the key difference is not just whether or not the player has had enough time to enjoy the game before the demo runs out, but whether or not the player has had enough time to understand the game before the demo runs out. A casual puzzle game can be understood in a few seconds, and most of the demo is spent finding out if you like it. For an adventure game, you might have to play an hour or more before you understand the mechanics well enough to actually play. If the whole demo is spent learning how to play, you never get enough time to find out if it is fun.

    The last point in the article, “Your Only Save is Immediately Before Your Death”, is a really important one. I think we’ve all been bit by this at some time or another; I know I have. You load the game from your save point and die before you have a chance to even do anything. After 10 reloads, you realize you might as well delete the save file. Ernest doesn’t mention it, but this is a critical consideration if your game auto-saves! If you auto-save, be warned that you may have just killed the player permanently if you are not careful.

    Share and Enjoy

    Wii Music, Too-Cute Kids

    Thursday, October 9th, 2008
    Wii Music 'Preschool' documentary
    Share and Enjoy

    Games: Good for your Brain?

    Thursday, October 2nd, 2008

    A new study by Learning and Teaching Scotland (LTS) working with Her Majesty’s Inspector of Education and the University of Dundee tested 600 pupils and 32 schools to determine whether Nintendo’s Brain Training games really do improve learning. The answer? Yes! After nine weeks, all students improved their test scores, but students playing the game improved by a further 50 percent than the control group.

    Also in the news, companies too are researching whether games can improve your cognitive abilities. From CNN:

    Could playing computer games enhance mental agility enough to turn people over 50 into better drivers? Allstate Corp. wants to find out, and if the answer is yes, it might offer insurance discounts to people who play the games

    The article goes on to state that the games aren’t specifically driving-related, but rather designed to raise visual awareness and reverse age-related cognitive decline.

    Share and Enjoy

    Quote of the Day

    Wednesday, September 24th, 2008

    “Multithreading is just one damn thing after, before, or simultaneous with another.”

    – from “C++ and the Perils of Double-Checked Locking”

    Share and Enjoy

    Joint Deformation Tutorial

    Thursday, September 18th, 2008

    Jonathan Rush at pig-brain has an excellent tutorial on building 3D character joints so they animate properly. Building shoulders and elbows that deform properly is something a lot of new artists have difficulty with, and even experienced artists struggle with from time to time–especially when working low-poly!

    Read the Tutorial

    Share and Enjoy

    Metal Gear Case Study

    Tuesday, September 16th, 2008

    The SoftImage site has a great case study on the making of MGS4 with lots of wonderful images for those of you interested in some behind-the-scenes pictures of the game design process.

    Share and Enjoy

    Large Hadron Rap

    Thursday, September 11th, 2008

    From Kate MacAlpine, a trainee at Cern:

    Share and Enjoy

    Parallel Processing in a Nutshell

    Friday, August 29th, 2008

    A friend sent me the link to this video, and I have to say, this is the most clear and direct explanation of the difference between linear processing and concurrent processing I’ve ever seen. …That, and it’s just darn cool to watch a 1100 barrel paintball gun get fired.

    Share and Enjoy

    Best Comeback Ever

    Friday, August 22nd, 2008

    I worked on EA’s Tiger Woods PGA Tour Golf 2000, as well as the “Play Against the Pros” patch for Tiger ’99, so this particular game series will always have a place in my heart. Even that aside, this video had me absolutely in tears laughing as EA pwns a “glitch” in the game.

    Share and Enjoy

    Shred Nebula

    Thursday, August 14th, 2008

    Local developer Crunchtime Games is launching Shred Nebula in just a few more weeks. Check it out on XBLA on September 3rd!

    Share and Enjoy

    How to Make Two Shapes from One Prim

    Wednesday, August 13th, 2008

    Many times people ask me if it’s possible to create two disconnected shapes from one sculpted prim–without resorting to alpha maps. The answer is yes, you can! It can be a little tricky depending on the shape, but it absolutely can be done. Today I’ll show you how using the AC3D exporter.

    Two disconnected shapes made with one sculpted prim.


    Share and Enjoy

    Spore: What Have You Made?

    Monday, June 23rd, 2008

    Well, the Spore Creature Creator has been out a few days now. It’s pretty fun!

    I was really curious about the animation system, since that’s been the subject of several tech talks the last few years. I must say it works remarkably well, especially considering the number of bizarre creature shapes that are possible. Great stuff.

    Longhorn Bullipede


    Zog the Zig-Zag Frog

    Share and Enjoy

    Lighting for Games

    Tuesday, June 17th, 2008

    Eric Gooch of Insomniac has an excellent tutorial on Creating the Lighting for Resistance: Fall of Man. The best part of the tutorial are the “before and after” shots that show how each scene looks lit and unlit. A lot of people underestimate the importance of good lighting, but these pictures really help make it clear. Well worth the read!

    Share and Enjoy

    Crayons for the New Millennium

    Tuesday, May 27th, 2008

    Remember growing up with paper and crayons when you were a kid? Remember handing your doodles to your parents to hang on the refrigerator? Ah, fond memories. Kids and art may be timeless, but the methods sure have changed! A true child of the digital age, my little girl just made her first 3D model and asked me if I would post it on my blog. So here it is. 🙂

    It’s a candlestick. Pretty cool, eh?

    Share and Enjoy

    Phoenix Mars Lander

    Tuesday, May 27th, 2008

    Want to know what the Mars lander is up to right this minute? Read the Mars Phoenix twitter. Best part: it’s written in the first person from the pov of the craft! 🙂

    Share and Enjoy

    Texture Monitor Updated

    Wednesday, May 14th, 2008
    EDIT: The texture monitor is now obsolete. As of 6.4, AC3D now includes its own, much better texture monitor.

    A new version of the AC3D texture monitor plugin is available! This version adds a “smart update” feature that prevents the same texture from being reloaded multiple times, even if you use the texture multiple times in your scene. The texture monitor now also ignores files who’s “last modified” time stamp has not changed on disk within the last 10 minutes, so textures you haven’t changed don’t get reloaded. This should make load times much faster, especially in large, heavily-textured scenes.


    Read about the texture monitor or download the file here.

    Share and Enjoy

    AC3D Plugin: Displacement Mapper

    Tuesday, May 13th, 2008

    This plugin adds displacement map support to AC3D. Displacement mapping is a technique that deforms the current geometry, displacing the vertices in accordance with elevation values stored in a texture map. This technique is useful for “painting on” details onto a very high resolution mesh.

    Displacement maps can be painted with 2D art tools such as Corel, Photoshop or Gimp; or, they can be exported from 3D sculpting programs such as ZBrush or Mudbox. The AC3D displacement map plugin supports 8-bit grayscale and 16-bit red-green (POV-Ray format) displacement maps.

    If you are new to displacement mapping, this tutorial explains the process in more detail.

    Download the plugin. (Requires Windows XP, AC3D 6.2 or above.)

    Share and Enjoy

    Solve Puzzles for Science

    Friday, May 9th, 2008

    If this isn’t the coolest new geek-toy, I don’t know what is! is a new game by Rosetta@home where players fold proteins for high scores. Shockingly, it’s actually a lot of fun–you can think of it sort of like a super-advanced version of Tetris. A training mode walks players through the basics, and a challenge mode allows players to compete worldwide to see who has the most l33t folding skillz.

    Fold.It – Who says serious games can’t be fun, too?

    The goals of the research project are to learn what strategies human players use to solve the very complex problem of protein folding so the same techniques can be taught to computers. In addition, players will soon be able to solve protein folding “puzzles” that computers haven’t yet solved. While the puzzles currently available are all proteins where the real-life structure is known, plans are to release proteins where the structure is unknown in the very near future–allowing players to participate in real-world research and help save lives. If any break-throughs do occur, researchers have promised to share credit with the player who solved it. How cool is that?

    Eventually, players may even be able to design their own proteins!

    Download it now: Fold-It

    Share and Enjoy

    Fake Toon Outlines

    Wednesday, May 7th, 2008

    Here’s a fun one! Ever wanted to re-create the look of heavy “toon” outlines, but didn’t have a shader for it? Believe it or not, there’s an easy way to fake it using fixed-function only.

    Here’s how to do it:

    • Make sure all your surface normals are unified (facing outwards) and your polygons are set to 1-sided
    • Make a copy of your object and resize it so it is ever-so-slightly larger than the original
    • On the copy, set the surface material to black
    • Invert the surface normals

    That’s it! Nifty, eh? The method’s not perfect–for best results, stick to convex objects–but it’s great for quick renders and on limited hardware platforms where shaders aren’t an option.

    Share and Enjoy

    Quote of the Day

    Thursday, April 24th, 2008

    “I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone.”

    Bjarne Stroustrup

    Share and Enjoy

    Helping People Play Nice

    Monday, April 7th, 2008

    According to a recent report by NPD, 42 percent of people who play games play online. Of those who do play online, 90 percent play through their PCs. Only 19 percent of the 42 percent play on a game console or portable.

    That it means that nearly 60% of all gamers don’t play online at all, and an even smaller fraction play console games online–despite the fact that the retail console game market is substantially larger than the PC market. That still adds up to millions of players, but it’s small compared to the offline and single-player market.

    Many people have explored different reasons for this from connectivity to ease-of-use, but in a new article on Gamasutra, Bill Fulton explores one of the less-discussed causes: The behavior of some online gamers is so abrasive–even to the point of abusive at times–that many new players would simply rather not play.

    Some gamers might be thinking “If he’s so thin-skinned that he can’t take the online banter, maybe he shouldn’t play online.” Unfortunately, many people do just that — they stop playing online.

    Even more gamers go online a few times and then never play again. This isn’t just my personal speculation; I have seen convincing data from two different sources that the biggest problem with online gaming is the behavior of others. The biggest problem isn’t the cost; it isn’t connectivity issues, or even the quality of the games — it is how people are f***wads online.


    The online behavior of our customers is dramatically reducing our sales, and continues to stunt the growth of our industry. Non-gamers simply don’t love games enough to put up with the crap they get online.

    I think most people who play online would agree that this is a problem… not just for games, but across the Internet in general as forums, instant messaging and other services are often equally plagued by griefers, net trolls and others those who’s primary source of amusement is making other people miserable. While many people use these services anyway, many people don’t, or they severely limit the online communities they participate in.

    The article goes on to further suggest ways that game developers can implement game rules to discourage the anti-social behavior of the minority of players who would otherwise spoil the game for everyone.

    Read the article: Fixing Online Gaming Idiocy: A Psychological Approach (WARNING: This article contains strong language.)

    NPD report on online gaming: Online Gaming 2008

    Share and Enjoy

    AC3D Plugin: Reparent Object

    Tuesday, April 1st, 2008

    This is actually a really old plugin, but it still has its uses. This plugin allows you to change the parent of a mesh or group by entering the name of the desired parent group in a dialog box. You can accomplish more-or-less the same thing via drag and drop in the hierarchy menu already, but it’s still handy when you have a really complex setup and don’t want to hunt through the list to find what you’re looking for.

    Download the plugin. (Requires Windows XP, AC3D 6.2 or above.)

    Share and Enjoy

    How to Cut Edges and Add Loops in AC3D

    Saturday, March 22nd, 2008

    From time to time, people ask me how to “cut edges” in AC3D since the way AC3D handles edges is a bit different than other programs. Usually, I use the Divide Loop plug-in which is normally the fastest, easiest way to go. But, every now and then you get an edge that isn’t well suited for Divide Loop. In these cases, I use a combination of Insert Vertex and Slice Surface.

    This video shows you how:

    Click to Download Video

    A QUICK SIDE NOTE: It is much faster to use the hotkeys (ctrl+shift+I and ctrl+shift+L) than it is to use the menus… the whole process can be completed in only a few seconds if you use the hotkeys. However, for the sake of clarity, I use the menus in the video so you can actually see what I’m doing. 🙂

    Share and Enjoy

    How Fast the World Changes

    Friday, March 21st, 2008

    My son to my daughter when she started a bandwidth-intensive game while he was web-surfing on a different computer:

    “Quit hogging the Internet!”

    It amazes me how far we’ve come in such a short time for the Internet and concepts like bandwidth to be so commonplace that kids could have an argument like this. 🙂

    Share and Enjoy

    More Excuses to Play Halo

    Friday, March 7th, 2008

    Looking to do some good while you earn your gamer points? According to Kotaku, RagingJellyBean of the Femmes Fatales needs a new kidney. The Femmes Fatales will be hosting a Halo 3 tournament on March 22, 2008 to help raise money towards the medical costs. The tournament will be 4 vs 4 and 1 vs 1 elimination. Entry fee is $10.

    Read more about it

    – Sign up for the tournament at Gaming for Others

    Share and Enjoy


    Thursday, March 6th, 2008

    If you’re into reverse engineering biological systems–in my mind, one of the most fun parts about AI programming–this talk by Drew Endy is absolutely a blast. Also be sure to check out the BioBricks project at or download the actual “bricks” at the MIT Registry of Standard Biological Parts.

    The BioBricks are sequences of DNA described in a standardized, open-source format where each sequence represents a single, interchangeable part or “device”. A data sheet is provided for each device that describes what it does and what its tolerances and parameters are, etc., similar to the data sheet for an electronics part. Like an electronic component, devices can be combined together to make more complicated structures. When you’re finished designing your device, the sequenced DNA can be inserted as a plasmid into a suitable host cell and used to make all kinds of cool stuff, like this biological film where the bacteria change color in response to light.

    Hello World displayed by light-sensitive, color-changing eColi
    Share and Enjoy

    Gary Gygax Passes On

    Tuesday, March 4th, 2008

    Gary Gygax, one of the co-creators of Dungeons and Dragons alongside Dave Arneson, passed away in his home today at age 69. Well-known for his founding contributions to the ever-popular genre of fantasy and role playing games, Gyax wrote, published and was otherwise involved in more than 80 games, related products and books enjoyed by millions of hobbiests worldwide.

    When I was in elementary school, my parents didn’t have money for lunch money so I washed dishes in the school cafeteria. Because I had to work the lunch line during the time when I would normally have lunch, I had to stay in during recess to eat. A Korean boy and a few other children were in the same situation. We used to play D&D together while we ate, and we had a lot of fun anyway even though we couldn’t go outside. I kept those friends all the way through high school and beyond. Thanks, Gary, for the good times. We’ll miss you.

    Original forum announcement from Troll Lord Games

    CNN News summary

    Share and Enjoy

    Crayon Physics Deluxe

    Tuesday, February 26th, 2008

    Congratulations to Kloonigames, winner of the Seumas McNally Grand Prize at the 10th Annual Independent Games Festival Awards, for their game Crayon Physics Deluxe.

    [youtube: 350 292]

    Way to go, guys!

    Share and Enjoy

    Quote of the Day

    Friday, February 22nd, 2008

    Courtesy XKCD:

    Share and Enjoy

    Adventures in Suffugium

    Wednesday, February 20th, 2008

    I was recently introduced to the delightfully-dystopian SL build of Suffugium. The New World Notes describes it as “Donald Trump meets George Orwell”, and I’d have to agree. It’s dark, oppressive and a lot of fun. There’s plenty to do and explore–to clarify for you cynics, that’s plenty of non-porn things to do–from avoiding the roving police drones to wandering through the twisting sewer maze.

    All visitors are requested to give a handscan id. Don’t worry if you miss it; the police droids will find you for an obligatory scan soon enough!


    Share and Enjoy

    Areum Starport

    Tuesday, February 19th, 2008

    Well, I finally broke ground on the starport in SL.

    I started with some robot minions. I figured this is going to be a big job, so the first logical thing to make is some help.

    The second thing I made is a crate. 😀

    Share and Enjoy

    Plasma HD Render

    Wednesday, January 30th, 2008

    The tiny little 320×240 render of the plasma for the POV-Ray tutorial was a bit hard to see, so I did a render in 1920 x 1080 resolution for those of you interested in seeing the details. It’s still a bit compressed, but the image is a lot clearer. You’ll find it here: download the video.


    Share and Enjoy

    The Most Perfect Video Game

    Monday, January 28th, 2008

    Why make games? Steve Meretzky, formerly of Infocom and currently of Blue Fang games, gives us all a reason to be in his speech “The Most Perfect Video Game”, presented at the Boston Postmortem:

    Share and Enjoy

    Rendering Plasma in POV-Ray

    Friday, January 25th, 2008

    POV-Ray has some very powerful commands for rendering realistic plasmas and explosions, but not very many people know how to use them well. This tutorial will show you how.

    [youtube: 350 292]
    An turntable of a plasma cloud rendered in POV-Ray
    UPDATE: download the high-res version


    Share and Enjoy

    Gallery: Sea Horse

    Friday, January 18th, 2008

    Click for larger view, or download the high-res image.

    This image was 3D modeled in AC3D using the box modeling method. The textures were hand-painted (no photographs) in Corel Photopaint. The final image was rendered with Poser using image-based lighting.

    Share and Enjoy

    Tips for Authoring Game Demos

    Thursday, January 17th, 2008

    David Edery, Worldwide Games Portfolio Planner for Xbox Live Arcade, just posted an excellent article on developing compelling game demos for downloadable titles.

    The best advice in his article? The trial is not just the first five minutes of your game. David recommends showing players the best parts of your game–not just the first part–to peak their interest.

    If your game has an incredible mode that fires up anyone who plays it, but that mode is only encountered in the final third portion of the game, think about ways you can expose a slice of that mode during the trial experience. There’s no law that says a trial must begin at the start of a game. And there’s no law that says you should be forced to “level up” in a trial to the point at which you can finally enjoy the most fun aspects of a game.

    Read the full article: How to Increase Trial, Improve Conversion Rate, and Sell More Games

    Share and Enjoy

    Quote of the Day

    Thursday, December 20th, 2007

    “In God we trust… all others bring data.”
    – Dr. W. Edwards Deming

    Share and Enjoy

    AC3D Plugin: Milkshape ASCII Exporter

    Tuesday, December 18th, 2007

    AC3D ships with a Milkshape ASCII exporter, but it only exports the geometry and doesn’t export the animation rig. This plug-in supplements the existing exporter by adding an alternate export option “Milkshape ASCII (With Skeleton)”. This allows you to export to Milkshape ASCII format with the skeleton and materials intact.

    Download the plugin. (Requires Windows XP, AC3D 6.2 or above.)

    Share and Enjoy

    Practical Use of Virtual Worlds

    Friday, December 14th, 2007

    From Reuters:

    Instead of jetting over to Bali for climate talks, Edward Markey (a Democrat from Massachusetts) will use a 3-D animated version of himself to address the conference at 9.30 am on Wednesday Bali time. It is estimated Markey will save 5.36 tonnes of carbon dioxide emissions by doing this.

    Watch the speech or the Q&A.

    Share and Enjoy

    Merriam-Webster Word of the Year: W00t!

    Thursday, December 13th, 2007

    Believe-it-or-not, “w00t” is Merriam-Webster’s word of the year. For those of you not familiar with the term–I’m not sure who, as I’d think anyone reading this blog probably uses “woot” as part of their daily vernacular–it’s an expression of glee or triumph commonly used by gamers.

    “W00t! We totally pwnd those n00bs.”
    “Steak for dinner? W00t!”

    A bit of gamer culture making it as word of the year? Well, I guess there’s only one thing I can say to that: w00t!

    Share and Enjoy

    One Dozen Easy C++ Programming Tips

    Wednesday, December 12th, 2007
    1. Consistency breeds ease of use. Even if your buttons do some weird thing, as long as they all do the same weird thing users will eventually figure it out. Make the buttons each behave differently, however, and the user is lost forever.
    2. Sort data the way it is most likely to be used. The logical sort order for a date is chronological, not alphabetical.
    3. When in doubt, the default option should be the least destructive \ most undoable choice.
    4. If you have to write an explanation of your code, never assume that the reader has read the same papers you have, unless you told them what else to read–and where to find it–first.
    5. Wrong code comments are worse than no code comments.
    6. “Copy and paste” errors happen to everyone. Be on the look out for them.
    7. If a bug disappears in debug mode, 90% of the time it will be one of two things: 1) you are overflowing memory or 2) you have a thread race condition. At least two thirds of the time, it will be a memory overflow. It is extremely unlikely it is problem with the compiler.
    8. Releasing your program compiled in “debug mode” is not an acceptable “fix”. The bug only looks like its gone… it’s still there, and can come back to bite you at any time. Don’t do it, no matter how tempting it might seem.
    9. If the program crashes on exit, you probably freed something you didn’t properly allocate, or that isn’t allocated anymore.
    10. Leaking memory is bad. Freeing pointers or objects that don’t belong to you is worse. If an object you expect to be free is still hanging around, don’t force it, find out why… “fixing” bugs by patching the symptoms and not the cause makes the code much harder to repair in the long run.
    11. If you have an intermittent bug, and your “fix” made it go away and you don’t know why, the bug is almost certainly still there. If you can’t explain it, you didn’t fix it.
    12. Good documentation is more important than more features. Write it down, even if it’s just a simple “readme.txt” file… the next person who has to work with your stuff will appreciate it!

    More tips? Ideas you would recommend? Post a comment!

    Share and Enjoy

    A Million Objects

    Sunday, December 9th, 2007

    From a Zen Kōan:

    Gyosan asked Isan, “If a million objects come to you, what should you do?” Isan answered, “A green object is not yellow. A long object is not short. Each object manages its own fate. Why should I interfere with them?” Gyosan bowed in homage.

    It’s good advice for programming multi-core, too.

    Share and Enjoy

    AC3D Plugin: NMF (ATI Normal Map) Exporter

    Saturday, December 8th, 2007

    This plugin exports your AC3D file into NMF format, the native input format of the ATI NormalMapper utility. NormalMapper allows you to generate normal maps, bent normals and ambient occlusion maps suitable for use in video games and other realtime 3D applications.

    If you aren’t familiar with normal maps, normal maps are a way to make your low-polygon model look more detailed by encoding surface information from a high-polygon version of the same model into a texture map. Ben Cloward has an excellent tutorial where you can learn more.

    This plug-in requires the free NormalMapper utility available from AMD in order to process the output files. The companion NormalMapperUI (Stand Alone) available at the same location is also helpful, but not required.

    Download the plugin. (Requires Windows XP, AC3D 6.2 or above.)

    Share and Enjoy

    AC3D Plugin: Bake Texture Layout

    Thursday, December 6th, 2007

    This plugin “bakes” a texture from one object to another, allowing you to transfer texture data between two models with the same geometry but different texture coordinates–without having to re-paint the texture bitmap! This is useful if you start to paint a texture, and change your mind later about the UV map; or for games when you can’t change the layout of the map for technical reasons, but would like different UVs for convenience during painting. It’s also good for fitting text onto a warped surface or other projections that would be difficult or impossible to paint by hand.

    Download the plugin. (Requires Windows XP, AC3D 6.2 or above.)

    Share and Enjoy

    Pardon Our Dust

    Thursday, December 6th, 2007

    Well, Pivot finally died on me. Please don’t mind any broken links in the next couple of days while I get moved over to WordPress. Thanks!!

    Share and Enjoy

    Why Researching Workflow Matters

    Friday, November 30th, 2007

    Autodesk has a fun quiz on their site called the Fake or Foto test. In the quiz, you have to look at each image, and guess whether it is real or a render. Surprisingly, I aced it the very first time!

    After I took the quiz, I went back and documented all the things that made me think a particular image was real or fake. That way I could see what it was that clued me so that I might improve my own work. In almost all cases, it wasn’t that the CG images were obviously wrong in any way, it was simply that the real images had more “detail” in them.

    For years, the limitation has been what the software could do, but I’m not so sure that’s true anymore. In games especially, production costs have gone up as graphics have become more realistic simply because making detailed images is very time consuming. The relationship between time, money and graphics detail is linear. The problem, of course, is that neither time nor money are infinite. Limited budget means limited production cycles, which means limited time to spend adding things like scratches, scrapes and nose hairs. Eventually, we’ll reach a point where we can’t add more detail not because we’re out of RAM–we can’t add more detail because we’re out of time! Truthfully, I think we’re on the horizon of that already.

    While I’m certain that there are still numerous improvements to be made in traditionally researched areas such as lighting, I think technological improvements to workflow have more potential to improve the quality of computer graphics in the near future than virtually any other area. Automated procedural geometry, better methodologies and tools that allow for less restrictive workflow patterns–such as recent advancements in re-topology interfaces–can allow us to complete the same job in less time and with far less effort. We know the artists and software can do it; now we need to make it practical.

    For the curious, here are my impressions from the Autodesk quiz:

    ** WARNING ** Spoilers follow. You might want to take the quiz yourself before you read my analysis of the images.


    Share and Enjoy

    How Games Influence Ideas

    Thursday, November 29th, 2007

    Games, books, and movies may be entertainment, but they also influence the way people think. The “Values at Play” research project, a collaboration between Hunter College’s innovative Tiltfactor Lab and New York University sponsored by the National Science Foundation, is investigating how game designers unconsciously and consciously express and encourage specific worldviews through their creations.

    This looks like an interesting project, providing a growing body of useful research for seasoned developers, as well as game design contests and curriculum tools for students and educators.

    Share and Enjoy

    Wearable Mo-Cap

    Wednesday, November 28th, 2007

    This new wearable motion capture system is so compact, it can even be used to capture movement in otherwise impossible environments like behind the wheel of a car!

    [youtube: 350 292]

    The most interesting part? The authors claim to have built their prototype from off-the-shelf components for only around $3K. Read the paper here.

    Share and Enjoy

    What is Ambient Occlusion?

    Tuesday, November 27th, 2007

    Ambient occlusion is a lighting technique that is commonly used to create soft shadows on objects. Ambient occlusion isn’t used to create the type of shadows that are cast from objects with a light shining directly on them. Instead, ambient occlusion generates the type of deep shadows that appear in the corners or creases of things, where it is hard for the light to reach.

    Technically speaking, ambient occlusion is a global illumination technique. However, in common usage of the term it is often referred to as a cheap alternative to global illumination. To clear up any confusion, what most renderers refer to as “global illumination” is actually an amalgamation of several techniques such as radiosity, metropolis light transport, image-based lighting or photon mapping. The actual techniques used differ slightly from renderer to renderer. Some renderers include an ambient occlusion term as part of their global illumination calculation; others do not.

    Like most global illumination techniques, ambient occlusion is dependent on the other geometry in the scene. Ambient occlusion on its own generates less realistic lighting than “full” global illumination. However, ambient occlusion is much faster and less complex to calculate than other methods which is why it is still popular among game developers and in production animation.

    (Left) Without Ambient Occlusion. (Right) With Ambient Occlusion
    Click for larger image.


    Share and Enjoy

    Sony Cuts Price of PS3 Dev Kits

    Tuesday, November 20th, 2007

    According to Information Week:

    In the latest move, Sony Computer Entertainment, the unit responsible for the PlayStation, reduced the price of the SDK, which SCE calls the Reference Tool, to $10,250 in North America, $8,600 in Japan, and $11,250 in Europe. In addition, SCE said it would enhance the development environment by integrating programming tools from SN Systems. SN’s core tool is called ProDG.

    Read the rest of the article here.

    Share and Enjoy

    Sculpty Earth

    Wednesday, November 14th, 2007

    If you haven’t seen it yet, stop on by and check out “Sculpty Earth”! It’s a 3D topographic model of the Earth in Second Life that’s big enough to walk around on top of. It also has live cloud tracking. Nifty, eh? Now your friends can stand with you and point at their house even if they live on the other side of the world.

    For all the details, read the write-up at New World Notes.

    Share and Enjoy

    Finger Tracking with Wii Remote

    Tuesday, November 13th, 2007

    Johnny Lee shares a simple but clever approach for implementing finger tracking with the Wii remote:

    [youtube: 350 292]

    Share and Enjoy

    AC3D Plugin: Pivot Tools

    Monday, November 12th, 2007

    This plug-in collection adds a series of tools to AC3D that allow you to manage object pivots more effectively. With this plug-in set, you can: Set an object pivot to the highlighted vertex, zero the object pivot, rotate around the pivot instead of the centroid (numerically), or manually enter a pivot location. These functions are very helpful for setting up your model for animation or import into games.

    Download the plugin. (Requires Windows XP, AC3D 6.2 or above.)

    Share and Enjoy

    GDC Already?

    Saturday, November 10th, 2007

    In case you missed it, the annual Game Developer’s Conference is early this year! The conference is usually held in March, but this year it runs from February 18-22 in San Francisco, California. Alumni early-registration deadline is December 5.

    Share and Enjoy

    Cats in Zero-G

    Thursday, November 8th, 2007

    An amusing excerpt I ran across from the essay collection A Step Further Out, by Jerry Pournelle:

    And prior to (the) Mercury (program) we hadn’t any real experience at all. We flew transport planes in parabolic courses that might give as much as 30 seconds of almost-zero-g, and that was all we knew. I will not soon forget some of our early low-g experiments. Some genius wanted to know how a cat oriented: visual cues, or a gravity sensor? The obvious way to find out was to take a cat up in an airplane, fly the plane in a parabolic orbit, and observe the cat during the short period of zero-g.

    It made sense. Maybe. It didn’t make enough that anyone would authorize a large airplane for the experiment, so a camera was mounted in a small fighter (perhaps a T-bird; I forget), and the cat was carried along in the pilot’s lap. A movie was made of the whole run.

    The film, I fear, doesn’t tell us how a cat orients. It shows the pilot frantically trying to tear the cat off his arm, and the cat just as violently resisting. Eventually the cat was broken free and let go in mid-air, where it seemed magically (teleportation? or not really zero gravity in the plane? no one knows) to move, rapidly, straight back to the pilot, claws outstretched. This time there was no tearing it loose at all. The only thing I learned from the film is that cats (or this one anyway) don’t like zero gravity, and think human beings are the obvious point of stability to cling to.

    Which leaves me with only one question:

    If you wanted to know if it was visual cues, wouldn’t it have been easier to just blindfold the cat? 😉

    Share and Enjoy

    Escaping Through Air Vents, Not Just for Movies

    Wednesday, November 7th, 2007

    I found this great blog by screen writer John August. It’s full of tips and tricks for budding writers, and it’s a fun read. I about fell out of my chair laughing when I read this:

    One day, I’d love to win an Oscar. An Emmy. A Tony Award. But if all I accomplished in my screenwriting life were reducing the number of times characters climbed through air vents, I’d consider my work successful.

    Mr. August contends that “air ducts are for air” and shouldn’t be used as a magical escape mechanism for characters in otherwise hopeless circumstances.

    Now some may argue that people do fit in air vents, but it’s hard to disagree… It’s a silly cliché and it’s used much too often not only in movies but in games, too. I can’t count the number of times I’ve climbed through air vents in games of all kinds. Nonetheless, I don’t like to blindly dismiss concepts either. For example, there are very rare times when even climbing through ducts makes sense: AVP on the Atari Jaguar is a brilliant example. Allowing players as the alien to climb through the ducts added game play that wouldn’t have existed otherwise.

    It intrigues me how many Hollywood clichés have made their way into video games. I can’t help but wonder how long until video game clichés start regularly making their way into movies. I guess we’ll know the first time a movie opens with an ammo crate and a pork chop on the ground.

    Share and Enjoy

    Quick, Quick, Rewind!

    Monday, November 5th, 2007

    I admit it. I love cars. I don’t read all the latest car news–I rely on my brother to pass on just the juicy bits–but I can tell you the difference between a turbo charger and a super charger, and I’ve even helped my brother replace an engine or two.

    A couple of weeks ago, Wired posted an article about Alex Roy’s record breaking race across the county. In a car that would make the Batmobile feel under-equipped, Roy and his co-pilot shrieked from New York to Los Angeles determined to beat the real-life “cannonball run” record of 32 hours and 7 minutes. Their final time? 31 hours and 4 minutes coast to coast. Joyously, they video taped the whole thing.

    Yes, I know, illegal street racing is wrong. I don’t disagree, and I tell every kid I know who wants to race about Firebird Raceway’s run what ya’ brung nights in the hopes that it will keep one more kid from getting killed.

    Just the same, I’m still dying to know how these guys did it. On a lark, I popped over today to the 32 hours site to see if the video was out yet. The video is not available yet, but the trailer is.

    I was mindlessly watching the trailer when suddenly I saw a familiar face I wasn’t expecting. Wait… that couldn’t be! Quick, rewind. I looked again. Could that be… Will Wright?

    Another chat about procedural animation in Spore? Surprise! This one’s about fitting larger fuel tanks into a Mazda RX-7.

    Sure enough, it was. I’ve been in the same room as Will Wright before, and that certainly looked like him. Rattling around in the dusty corners of my mind, something about Will Wright and illegal street racing seemed vaguely familiar, so I looked it up. And there it was: Will Wright was the winner of the 1980 “US Express” race, with a cross country time of 33 hours and 39 minutes.

    And here, I thought my post about cross-country illegal street racing was going to be totally off-topic to game development. What a small world it is!

    Share and Enjoy

    How to Make a Torus

    Friday, November 2nd, 2007

    This step-by-step guide will show you how to make a torus in AC3D using the Revolve tool.


    Share and Enjoy

    NaNoWriMo Starts Today!

    Thursday, November 1st, 2007

    It’s November 1, which makes today the first day of “National Novel Writing Month”! If you haven’t heard of it before, this is the month when the brave, the daring and the possibly insane bust out their word processors and write that novel they’ve been meaning to all their life. It’s open to anyone who feels like doing it. The only requirement is that you must write a fiction story of some sort consisting of at least 50,000 words, all of which must be entirely written during the month of November. Short of that, pretty much anything goes.

    Scary as it seems, 50,000 words isn’t that much when you break it down: It’s about 1500-2000 words per day–two or three long blog posts, to put it in perspective. It’s a tough but achievable goal even for the gainfully employed. The novels aren’t judged in any way except for meeting the minimum word count, so it doesn’t matter how bad your writing is. The point is just to get it done. Surprisingly, though, quite a few of the novels written in past years have gone on to be published, including the New York Times best seller “Water for Elephants”… presumably with some serious editing after the nanowrimo event, of course. 🙂

    I haven’t decided yet if I’m going to participate–yeah, I know, I’d better decide soon, soon being now–but if I do, I know exactly what I’m going to write: a cheesy sci-fi novel. Didn’t see that coming, didja? 🙂

    Share and Enjoy

    Content Aware Image Resizing

    Tuesday, October 30th, 2007

    A friend at work just showed me this, and boy is it cool. “Seam Carving” is a new algorithm for image retargeting. Image retargeting is an alternative to scaling and cropping, but it is content-aware. Scaled images suffer from the problem that the re-sized content may be too small to see. Cropped images may eliminate important content. Image retargeting solves both problems by keeping the image elements the same size and simply eliminating the “unimportant” parts of the image.

    Graphic artists occasionally modify images this way by hand when doing page layouts for magazines–think of it like a visual form of copy-fitting–but an automated approach opens a world of possibilities. The number of of potential practical applications are immense, and include everything from dynamic web page re-flowing to widescreen-to-standard aspect texture fitting for games.

    [youtube: 350 292]
    A better version of the video as well as the research paper can be found on Dr. Shamir’s home page. What’s really neat is how straight-forward the method seems to be. The paper is well worth the read if you are interested in graphics algorithms.

    If you’d like to play around with this technique on your own images, someone’s already implemented the algorithm in Flash.

    Share and Enjoy

    The Nastiest Parasite Ever

    Saturday, October 27th, 2007

    Sometimes you run across something so disgusting you just have to share. I already traumatized my co-workers with this one, but then I realized I hadn’t shared it with you yet, my fine readers.

    Cymothoa exigua is, simply put, the nastiest parasite ever. I ran into this bugger studying crustaceans for a project at work. Cymothoa exigua is the only known parasite that functionally replaces a complete organ, in this case the tongue. It is born as a nymph and swims in the ocean until it finds a spotted rose snapper. It then enters through the fish’s gill and attaches itself to the base of fish’s tongue. The parasite diverts blood from the tongue to feed itself. As it grows and clamps around the tongue cutting off blood flow, the fish’s tongue eventually withers away and dies.

    Now here’s where it gets weird: Cymothoa becomes a functional replacement for the animal’s missing tongue. Attached to the tongue stub, the fish is able to use Cymothoa as it would it’s own natural tongue, except that Cymothoa shares what the fish eats. As the fish feeds, Cymothoa consumes some of the food right out of the fish’s mouth.

    After reading what the parasite does, I searched for a picture expecting to see a formless mass of flesh much like other parasites. To my shock and horror, I saw THIS:

    EEEEEEEEEEEEEEEEEEEEEEeeeeeeeeeeeeeeeeeeewwwwwwwwwww!! Now that’s an image I won’t be getting out of my mind for a while.

    Share and Enjoy

    Export Outlook Task Lists

    Friday, October 26th, 2007

    Outlook 2007 has a very cool feature that lets you embed your current calendar in an e-mail and send it someone else. Wouldn’t it be nice if you could e-mail your To-Do list as well? Now you can! This macro shows you how to generate a formatted e-mail that contains all of your current tasks, as well as a list of any messages that you’ve flagged for follow-up.


    Share and Enjoy