Friday, April 24, 2020

Introduction

Introduction

I've wanted to make video games for as long as I can remember. Having always been creative, it was natural for me to discover the world of Doom level editing as I entered middle school. (Ah, the era of the internet when you REALLY had to scrape to find the fringe websites with things like game editor programs and tutorials on how to even use them.) It didn't take long for me to find the limits of the Doom engine--the lack of "slopes" or ramps--as I was trying to make a level of my neighborhood. Having basically no one to talk to about this stuff, no viable Internet communities to hang out in, or even just the wherewithal yet to figure any of it out on my own, I talked to one of my oldest brother's nerdy friends about my struggles. It was this conversation that ultimately changed my life forever, in which he told me about how Duke Nukem 3D supported ramps.

Duke Nukem 3D had ramps. It also allowed you to code your own weapons and enemies. It had rotating doors, complex moving level geometry, "rooms over rooms", among other things. But man did I spend a lot of my tween years trying to master that stuff. Levels of my neighborhood and the construction site across the street from it, my middle school, the YMCA, and even scenes from the movie "Army of Darkness" were among my crappy attempts at level designs. I never could quite get melee weapons working in custom code--and to this day I'm still convinced that custom "Duke C" was never actually used by the engine in the ways it promised. All of these endeavors led me to feel that even Duke Nukem 3D was too limited. Having toyed around with the original Quake but being disheartened by its lack of rotating doors or moveable transparent objects, I naturally found my way to Quake II.

Quake II was starting to be the "real deal". It was written in REAL C--not some "fake" language specific to the game. It was true 3D and had mind-blowing detail. I was entering high school and starting to learn to "talk the talk" about game development, and while I lacked any real skills yet I was beyond eager to learn. I spent most of my time trying to make believable, animated 3D models with my pirated copy of 3D Studio Max 2.5 and mastering and exploiting the level design features, with the occasional attempts at learning C.

Man, this stuff was hard. And there weren't good tutorials on it. And the tools sucked, and my computer sucked, and books were scarce and archaic when I could find them, and I had literally two peers in real life that actually knew what I was talking about and were WILLING to talk to me about it. And then on top of that, Quake II didn't even support skeletal animation or transparent, moving level geometry. Being immersed in modding forums and IRC channels though, of course I found out about Half-Life.

And ah, Half-Life. I worked and worked and worked at modding that game, roughly between my sophomore year in high school and my 3rd year of college (when Half-Life 2 came out). I finally learned C++ for it and got decent enough with the code base that I implemented volumetric fog, mirrors, that smokey effect used on the creatures in Ico, and underwater caustics. I really felt like I was hitting my stride, but then college was sort of "this thing I had to do," and I was also very passionate about trying to be a professional rock musician. (Whatever, laugh if you must.) My point is, still--after all this time and work and dreaming huge and seeing cool environmental effects I wanted to recreate when taking late night runs--I was just one person with a lot of limitations. At some point it kind of slipped away from me, whatever "it" was that I was pursuing. Truthfully, 11 1/2 years into my career as a professional software developer, I still feel very lost with the nature of my work. Like, I just don't and can't really care because that "game itch" has never really been sufficiently scratched.

I feel like there's a distinctive point in time--perhaps somewhere in the mid-2000's--that if you were ever into level creation or modding before it you were probably familiar with the very real limitations of game engines and the subsequent "hacker" mindset to try to exploit them beyond their original intentions. Mirrors or volumetric fog via BSP manipulation in Half-Life 1, using sprites with physics to try to emulate visible "rooms over rooms" in Duke Nukem 3D, even per-pixel steps to try to emulate ramps in Doom: these were all but a few examples of ways in which I tried beat out various game engines at their own rules. And then of course, the archaic, poorly-documented tools and crufty workflows necessary for actually getting your custom content into the game. The limitations were part of the fun for me though, perhaps too much of it. Games became so complex and capable that I think I lost the spirit. The rush of making it to a sailing ship that I ultimately missed is what really drove me.

I've obviously reflected on this stuff a lot. There's a lot I'm still trying to reconcile, but I know that I still yearn for the creative and professional outlet of game development. I know I only really learned to code for game programming and that I'll only ever be happy or feel like staying put in a job that I am doing just that. I know that I am more interested in content creation and the fine art side too, but I don't know how to really pick those skills up at this point in my life. I also know what I feel the game development workflows should be like, and ultimately that's what drives me now. I could create games using someone else's engine, tools, and workflows, but I want my own. I want to do it my way. It is who I am, and I'm okay with that.

So here I am: writing my own game engine using the technologies and architectural decisions I want; creating the game I want, the game I want to play; investing in technologies that I hope to use for many future projects that others might even use. And to that will be the subject of my next post.

No comments:

Post a Comment