It's not about technology for its own sake. It's about being able to implement your ideas.
It started with schools of fish, then butterflies.
I was given a series of animals, with some art for each, and my job was to make them move around in ways that looked believable. Well, as believable as you could get on a 16-bit game system. It was more about giving the impression of how fish would swim in a river than being truly realistic. My simple schooling algorithm and obsessive fiddling with acceleration values must have worked, because I ended up demoing those fish half a dozen times to people who stopped by to see them.
Later for an indie game I designed, I implemented a variety of insects: swooping hornets, milling bees, scuttling centipedes, marching ants--sixteen in all. (My wife, Jessica, gets half the credit here; she did all the art and animation.)
I certainly never had it as my goal, but I've gotten pretty good at implementing naturalistic behaviors.
Not long ago I took a shot at getting loose flower petals to fly in the breeze. I didn't have a plan and didn't know if I could come up with something workable, but it only took a few hours. It's also the only time I've used calculus in any code I've written, ever. (Don't be overly impressed; it's about the simplest calculus imaginable.) In one of Bret Victor's wonderful talks, he proposes that mimicking leaf motion by tracing it on a touchscreen is easier than building it programmatically. That's the only time I've disagreed with him. I had already started thinking about how to model a falling leaf.
What kind of company am I in with this odd talent? Is there a society of insect movement simulation designers that I'm not familiar with? Or have I accidentally built up a base of arcane knowledge and experience that's unique to me alone?
Let me ask another question, one that I don't mean to sound condescending or sarcastic in the least: What are you the world's foremost authority of?
Surely it's something. If you have your own peculiar interests and you work on projects related to them, then you've likely implemented various solutions and know the advantages and drawbacks of each. Or maybe you've taken one solution and iterated it, learning more with each version. The further you go, the more likely that you're doing things no one else has done in the same way. You're becoming an authority.
And if you're stumped and can't think of anything you've worked on that isn't in pretty much the same exact territory as what hundreds of other people have done, then it's time to fix that. Go off in a slightly odd direction. Re-evaluate one of your base assumptions. Do something completely random to shake things up. You may end up an authority in one small, quirky area, but you'll still be an authority.
(If you liked this, you might enjoy Constantly Create.)
permalink October 28, 2013
I'm James Hague, a recovering programmer who has been designing video games since the 1980s. Programming Without Being Obsessed With Programming and Organizational Skills Beat Algorithmic Wizardry are good starting points. For the older stuff, try the 2012 Retrospective.
Where are the comments?