This book is a work in progress, comments are welcome to: johno(at)johno(dot)se

Back to index...

Background

My name is Johannes Norneby, a 34 year old swedish-canadian-swede. I have always been into games; growing up in Canada in the 1980s I constantly hung out at arcades. I was a fair player, not the best, but I always found the worlds that one could enter into through these games to be deeply fascinating. At the time I dabbled a little in BASIC on an Atari 800XL, but I couldn't fathom the PEEKs and POKEs required to do anything serious on that machine.

Much later, around 1993, something happened to get me positively rabid about games again. I was in a computer room in my last year of highschool, and a classmate of mine said "hey, you have to check this out". I turned around and saw the shareware version of Doom on his screen. I was totally blown away. We played Doom in network mode every chance we got, much to the chagrin of the teachers (and I was later to learn, many bosses of computer networks around the world). There was absolutely no question for me; I HAD to learn how do that!

I started to code seriously in Pascal. I made a game called UfoPilot for my end of term computer sciences class, in which the player flew a little spaceship around in caves, searching for the exit/landing pad. I remember it being insanely hard; if you bumped the walls you instantly died, and tapping keys to accelerate the little ship in a gravitational field wasn't easy. It didn't have any timer code, so it basically only ran the way it as intended on a 486DX66 or something like that.

The next year I stayed at the school, taking a pseudo-university style program which involved a lot of programming, image processing, math, etc. I don't know what the people in charge of the program were trying to accomplish, but I used every opportunity to learn everything I could about making games. I built levels for Doom obsessively, I learned enough Photoshop to be able to make coder art. And last but not least, I learned C++.

I suppose it was the language that was in style at the time. What did I know? People said, I did. I read Dr.Dobb's Journal. I read everything I could about Doom and id Software and John Carmack. I ate it all up. And one thing I couldn't avoid eating was Object Oriented Programming. Like I said, it was in style. It was logical. It was conceptually easy to grasp. It made the first "lots of bouncing balls on the screen" program that much easier to write and understand.

A few years later, hot on the heels of Quake, I was at Blekinge Tekniska Högskola in Ronneby, ready to study software engineering. I believed in OOP. I had already coded tons of little half-finished games in Modex. I was using the Watcom compiler and running under the DOS4GW extender. DirectX was right around the corner. I did my final project of the first year of the software engineering program for a guy named Dan Andersson, an older student who had recently been employed by the budding company Novastorm (soon to be Massive Entertainment). I managed to land a summer job there. I took a leave of absence from my university program. I never went back. I had found my calling.

I have later come to realize that not all programmers feel this way about programming; that is is an art, a craft, a calling. You will of course find a large number of individuals in the highly competitive computer games industry who indeed feel this way, and whom can be quite obnoxious about their own understanding of "the true way". But you will also find a number of programmers whom, while being very good at what they do, have not given much thought to any concept of central theme or thread to what they do for a living. Even more so outside of the games industry; it is my experience that egos are smaller and established norms are more readily accepted.

Well, not so for me. I have always been one to question everything, and to constantly yearn for an ever-increasing understanding of the things that I am passionate about. In the summer of 1997 I had set out to learn the "one true way" of games programming, a thing that I firmly believed existed and was his/hers to have whom would only reach for it.

During the years that followed, in the trenches of commercial games production, I slowly found that the things that I had been taught in school and held to be true didn't seem to be so true in the realm of "real world" games programming that I was involved in. Old beliefs died (quite hard mind you), but at my lowest and most disillusioned point unexpected things happened to lend me new strength and curiosity. Here's a brief overview of the places and projects of the past 12 years:

And so here I sit, over a decade later, and I feel that in a way I have come full circle. I started out searching for The Way, only to find that it didn't exist, only to cautiously discover that I do have a sense of "a way" after all. There are things that I do now that I have always done, and there other things that I have slowly and clumsily learned to do. Maybe it's not a Religion or a Method, maybe it's more like a bag of tricks. But there is light at the end of the tunnel (of 3 year death-march style projects). There is a trend. There are fundamental principles that I firmly believe in. And so, I realize that I indeed have something cohesive to say about software engineering in general, and about games programming in particular.

This book is about my way.

Back to index...