I’m teaching this fall. Well, co-teaching a couple of classes that were designed by another instructor. But these classes aren’t as advanced as the ones I’ve been teaching for the last 2 years. I’m working with students who 1) aren’t as far along, and 2) are sometimes not committed to games as a career path. And that makes me think again about the whole thing.
I love teaching, because…there was no one for me, when I was starting out. My father got me started on programming, but he helped by getting me resources, not by holding my hand. And when it came to programming games, he could only help with some math, not any game programming concepts.
I had a few buddies who were peers at the time. John Brunner was a total peer; we really enjoyed programming games on our VIC20s and C64s. Neither of us was very good at understanding the big picture, or coming up with complex algorithms. Instead, we were both enamored of the "magical" quality of those machines, the feeling that, if we found the right incantation, magical things would happen. Anthony Wood was way beyond me in ability. He was a year ahead of me at school, but several years ahead in understanding the purely technical aspects of computers. He wasn’t so "magical", but loved the purely technical aspects of computers, while I loved making games. Finally, Alan Taylor was several years ahead of me in school, but we became friends over D&D sessions, and when I was granted access to an Apple 2 at my mother’s work, his car conveyed us down there for many late nights of coding and playing games.
All of these guys were important in shaping my relationship with computers, but none of them were the older, been-there-and-done-that mentor I really wish I had. Of course, at the dawn of computer games, NOBODY had been-there-and-done-that yet, though many (who were about 5 years older than me) were in the process. So I got by without, and today I AM that been-there-and-done-that guy who has so much advice and info to offer, I just give it away. 🙂
And yet. One of the double-edged swords of youth is that they are eager to listen and learn, and ALSO willing to disregard what they’re told and make the mistakes we older folks would save them from. Nobody can really change that aspect of human nature (as far as I know). You can lead a horse to water, etc etc etc.
Anthony and I had arguments about this (so long ago). He felt that we had achieved competence with computers without anyone holding our hands, so holding anyone else’s hands was a waste of time. I’m still not entirely sure he’s wrong, but he was such a Randian, I couldn’t take him seriously.
In college, I tutored programming 101 students for $20/hour, so I know that a little bit of hand-holding can go a long way. When you’re learning something, sometimes a 60-second conversation can replace days of frustrating blind research into a problem. And whenever we create, we move at the speed of our confidence. So, sometimes having someone else’s confidence available can speed up our work tremendously.
But beyond all that, I’m coming to the conclusion that it’s all about algorithms.
Now, the word "algorithm" is just a $10 word for how-you-get-things-done. the algorithm for driving a car is 1) get keys, 2) get into car, 3) turn key in ignition, 4) release parking brake, …. and so on. When you make/program a computer game, the difference between a neophyte and a veteran is their command of algorithms. I not only know hundreds of useful algorithms for making games, I’m very confident about my ability to implement them appropriately and correctly.
I can look back on myself when I was much younger and recognize that I knew very few algorithms and had little confidence about using them. In fact, when I was starting out at 360 Pacific, my lead programmer (Mike Steele, at the time) tasked me and another programmer with building a windowing interface from scratch for the game. We quailed, and failed, and he expressed his disappointment, before going out and buying an off-the-shelf solution. The Thom Robertson of today would have quickly and easily finished the task, because NOW I KNOW HOW. And have much more confidence in my knowledge. 18 years later. 🙂
So it’s all about algorithms. And not just linked lists and BSP trees, but the myriad ways you could numerically represent a scaly green monster in a game space, and how those ways define its presentation and behavior.
Hmm. Mebbe I should write a book called "Algorithms for scaly green monsters."