I have a lot of extremely creative and driven friends. I never set out to find them. It’s like I hang out with people I like and then all of a sudden they’re all “hey man, we’re like, working on Marvel Heroic Roleplaying” and then before you know it they go all Kickstarter on you. Some are even given the blessing of the Wheaton.
Me, my dreams are smaller. I want to develop a videogame, and I want it to be so fun that everybody wants to play it on the toilet.
This Must Be How Level 1 Wizards Feel
I’ve had the game development bug off and on for years, but this time the stars seem better aligned. One of my good friends from my gaming group, EmhemX, has been talking to me for over a year about his adventures in videogame development. We’d kick around game ideas sometimes, and they’d usually be far too grandiose to implement. One idea I thought might be fun would be to have some sort of D&D-themed mini-golf where the party was made out of balls, and so were the monsters, and there was still magic and stabbing and perhaps an evil windmill. After some intense deliberation, I determined that I would, in fact, very much like to play this game seated upon the Porcelain Throne. So begins this tale.
I’ve started on this road before. Usually, the part where I don’t know how to do the graphics and physics makes me get intimidated, distracted, and eventually never finish. Indeed, that urge has manifested several times thus far. This time, however, I find all the weird little esoteric skills I’ve picked up over the years able to provide me with just enough synergy bonuses to get me over the humps. The system I’m using for menus and animations treats game objects much like I’ve seen Flash do it. I’ve known how to compose music on a computer for ages, but now I have the ability to import it into my projects. And decades of Photoshopping people’s heads onto other people’s bodies is going to come in handy when I need to Photoshop a character’s head onto another character’s body.
I also decided to get some help with the stuff I didn’t know how to do. As such, one of the major hurdles of the last few months has been landing on a language and/or set of libraries to write the game in. I’d known for years that game development tools existed that could help me with the “game engine” stuff, but those still involve a learning curve (although nowhere near as steep as starting from scratch). One thing I wanted to shoot for was cross-compatibility between platforms, so I could make a game that worked on iOS, Android, PC’s and consoles without having to start again from scratch. The reaction I’ve gotten thus far from other developers (and indeed, expect to get in the comments) regarding wanting a cross-platform solution has been, well, negative. I’ve seen the whole concept labeled as a myth, or that everything won’t run as well (or even well enough to be playable). Some products I looked at promised powerful features and rapid development, but every error message was like staring into an incomprehensible abyss. Some tried to be no-code happy fun times and wound up being severely limited in the things they could do. Others were completely amazing and looked really easy to use, but were a few hundred dollars to start with and deploying to multiple platforms cost hundreds of dollars per platform on top of that. I’m an enthusiast on a budget, not a game development studio.
What I eventually landed on was libGDX. It’s an open-source Java-based game development framework. The nice thing about Java is they made it so that it’ll run on damn near anything. There are, zero sarcasm, toasters in this world that run Java. As such, this thing can deploy to lots of different platforms (though no consoles except Ouya), and it’s a nice mix between “we did a bunch of the really hard stuff for you” and “you probably need to have a strong programming background”.
That being said, this has been a rough month — and I sling code for a living. I did nothing but read documentation for a week, then went through some tutorials. This framework had some sprite collision routines, but I was getting worried about how to do realistic physics for when the balls in my golf-dungeon hit each other. Then I saw something that changed everything: libGDX had a physics module called Box2D. I was telling a friend at work about it, and he says “isn’t that the one Angry Birds uses?” It was, in fact. This was going to help a lot. It also meant spending the next few nights reading up on stuff I had no synergy bonuses to help with.
It paid off. A week later, I could make a level with walls, balls that could bounce off the walls and other objects, and overlay graphics on top of them to make them look nice. I even got it to work on my Windows PC and my Android devices. I was finally on my way.
Yup, Definitely Still On My Way
You may be noticing at this point that I’m not talking about how fun my game is, or showing off loads of cool screenshots and telling you where to get it. That’s because it’s not even close to being done (or even playable). Doing this in my spare time means it’s going to be slow going, but I can’t stop now. This is bucket-list stuff. I want my son to come up with game ideas, and for me to be able to make them real. My nephew likes to design videogames on paper, and I want to try making one of those real. I want to make people happy and give them a brief escape from life (even if they’re on the toilet).
All that comes later. For now, I build, and I refactor, and I do it again until the corpses of a thousand spherical kobolds lay upon the blood-soaked green of the savage 8th Hole.