I have wanted to make games as long as I can remember, going back to my younger years when I would fill notebooks with levels for imaginary sequels to Mario and Mega Man for NES. I was self taught at a young age to learn how to program as well as draw. For college it seemed more practical to pursue programming, however I would continue drawing and learning about 3D modeling, texturing, etc. whenever I could. I attended DigiPen Institute of Technology for a time, and while I was unable to complete a degree there for various reasons, it was an invaluable experience. I obtained my first professional game development job working on the MMO Fallen Earth at Icarus Studios. From there I moved on to working on cell phone games (pre iPhone App Store!) at Oasys Mobile, and much of the rest of my career has been working on mobile games. One of my primary claims to fame so to speak has been founding Mighty Rabbit Studios with a friend and working my ass off on Saturday Morning RPG.

Report RSS How I decided to make an engine and software renderer

Posted by on

Ever since I first saw Doom and its contemporaries, I wanted to learn how to make my own 3D engine, to understand how these amazing images could appear on my screen. A friend of my brother's introduced me to Doom by showing me how I could make my own maps with DoomCAD and Doomed. This was a fascinating start that appealed to my creativity but I certainly had a long road ahead of me before I could understand computer graphics.

I was a fairly good student, getting As and Bs for the most part. My interest in game development and particularly 3D rendering helped make my choices for college too. I started college early as a dual enrollment student, and was even able to take OpenGL programming classes before finishing high school. I learned a lot in my college years, but many of the things I learned wouldn't click for me until much later. For 8 years after college I would think 'I want to make an engine'. I'm a very slow paced person. In that time, I got my first and 2nd game development jobs, as well as other jobs before and after. But then, there was Unity.

Up until that time, my encounters with game engines usually went a little like this: 'Okay, it's great for that game, but will it work for MY game idea?'. Before college I would toy around with things like the original Unreal here and there. But Unity was different than those experiences. It felt more like a new programming language and specialized game IDE. I spent 7+ years using Unity, across dozens of game projects both professional and personal. Unity really can be great, and while I think it's really easy for a programmer to learn to use compared to other engines, its ease comes at the cost that it's difficult to use to it's full potential. Unity has a bad reputation I think due more to inexperienced users than the engine itself.

Recently I got a new job. In this job I'm learning to use Unreal 4. As game creation tool, it is much improved over past experiences with older versions. However, like Unity, it still has lots of pros and cons. Things like blueprints are actually pretty awesome, something I never thought I'd say of visual scripting in a game engine.

Ultimately, learning Unreal is what sparked my interest in making my own engine again. I have a lot more experience making games now, and was able to delve really deeply with Unity thanks to my last job. I don't want to make an engine just because I can though. I want to have concrete reasons for doing it, after all Unity and Unreal can both be extended and each offer great benefits.

The last factor in the puzzle comes along: a new wave of single-board computers. The current Raspberry Pi is a pretty darn capable computer, and to my knowledge, there's no support from the two aforementioned game engines. I have seen plenty of source ports available for older game engines such as Doom, Duke Nukem 3D and Quake. And that's great too, people could certainly build their own game off of them, which is something I was considering doing myself.

A little more than a year ago I got a Raspberry Pi. I started looking into what I could do to make a game on it, keeping it somewhat relevant to my skills and job. Part of what that meant is making something I could easily port and work on between my primary computers as well as on the Raspberry Pi itself. This is when I found SDL. It is a great piece of software, offering a wide array of device support, and giving a great set of features that would be a royal pain to port, like input support, window handling, etc. At this time I'm still thinking 'Oh, I'll just do a quick 2D game'. That could've been fine, but I've never been nearly as excited about working on a 2D project as I have been about 3D, so I ended up setting that project aside. Fast forward to about 2 months ago, and I ordered a new single-board computer device, the GameShell. I'm now bringing all my past experiences together and learning a ton of new things to make a 3D game engine to run on this tiny little device. It is the best feeling I've had working on something in over a decade. I'm really excited to share what I can about it!


Here's a sample of my software renderer in action!

20190206 BlogPic0

20190206 BlogPic1

Post a comment

Your comment will be anonymous unless you join the community. Or sign in with your social account: