Hi there! I’m Tom, and I’ll be doing some game development and sharing my progress here. I’m not a professional or anything — I primarily make software for the web, but have a side interest in graphics and game programming.

I’ve always been interested in playing games, but making them myself is something new. For the past few years, I’ve been building a native 2D graphics engine from scratch, called Simple 2D. It’s written in C, uses OpenGL for rendering, and SDL to create windows, interact with input devices, and handle media like images and audio. Simple 2D was designed to be a, well, simple and easy-to-use tool for creating native, cross-platform 2D applications and games. However, using C and Simple 2D directly to build games is a bit too primitive, and not very natural. As a web developer, Ruby is my language of choice, and so I also built Ruby 2D to bring the same level of natural expressiveness and joy to game development. Ruby 2D uses Simple 2D under the hood. (I actually built Ruby 2D first, then extracted its native C extension which would eventually become Simple 2D.) In addition to having cross-platform native applications, I also wanted them to run on the web, so I ported Simple 2D to JavaScript (see Simple2D.js) and built a path for Ruby 2D apps to get compiled with Opal. Finally, I wanted the ability to compile the whole thing down to native code for easy packaging and distribution, so I incorporated MRuby as well. If you want to learn more about this crazy journey, check out my RubyConf talk.

Building Simple 2D and Ruby 2D have been extremely rewarding in and of itself. I’ve learned a ton about how graphics work, building cross-platform libraries, and enjoyed the opportunity to share my experiences. That said, these are just tools and they exist to build other things. I’ve made a couple things, like these N-body simulations 🌌, but I’m ready to start working on a real, actual game.

Building a game will provide a nice creative outlet, which I don’t always get at work (doing government tech). I’m looking forward to making some pretty pixels and composing music. I also want to build something where I can incorporate my own style of humor (I greatly enjoyed games like Happy Wheels for the record 🤣). While I don’t have lofty goals, I do hope it’s at least good enough to publish on an app store (and it’s fine if it doesn’t make any money). Oh, and I want to make it both playable on mobile and using a traditional game controller 🎮, ideally.

As for the type of game, I’ve thought about a few different concepts. Growing up in the 90’s, I got to live during the heyday of the 16-bit consoles. We didn’t own a Sega Genesis, but rather a made it a ritual of renting one at the local video store when visiting the grandparents. My brother and I would stay over the weekend, renting games like Streets of Rage and Road Rash (convincing our poor grandma that our parents would totally approve of the content). Those games (also Rampage on the NES) were so hilariously destructive, full of action, and fun for casual play or longer if you were up for it. I imagine creating a game inspired by the past, capturing the essence of what made them so fun to play, while being solidly modern. It’s a foggy vision at the moment, but through some rapid prototyping, I hope to gain clarity and direction.

That’s all for now. Next time, I’ll show off some game prototypes.