One question that people often ask when they see our games is “How did you make this?” It is a question asked both by people who have very little computer experience and by other professional programmers. When another programmer asks us how we made a game, what they are really asking is: “What set of libraries and code did you start with?” Writing a game (or really any software) is a little like cooking: There are lots of different levels of “from scratch”. Did you buy a pre-made pie and put on the whipped cream? Or did you buy the can of fruit and a crust and bake it? Or did you make your own crust and filling? Or did you harvest the fruit and grind the flour and refine the sugar?
In computer programming, when you make an application like the PracticeLog. You are using all of the built-in tools of the C# programming language and Windows graphics environment. With a good set of tools, you can build a simple windows program without having to write too much of your own code. This is kind of like buying the crust and can of filling and putting it together.
Game programming traditionally starts with fewer building blocks than application programming. For programmers who haven’t written a game, it can be hard to imagine where to start. But there are a variety of tools available that make game programming easier. Even with these tools, making a game is more like making your own crust and filling. The most popular game engine is Unity, but it is primarily a 3D engine, and it doesn’t provide you with the source code. The game engine that we use is called Torque 2D. It is specialized for making 2D games and the source code is provided. Getting the source code allows us to make changes to the engine at the lowest level which allows us to easily add things like QR Code generators and web servers.
Torque is made by GarageGames and they have been charging $130 for the engine and then also charging for support to companies that need it. Early this year, GarageGames decided to change their business model. Instead of selling the engine, they decided to give away the engine and just sell support. So they changed the license to the MIT open source license and setup a GitHub project. At the same time, they made some big changes to the engine itself to improve performance, incorporate Box2D, and to remove a few features that couldn’t be released as open source.
It took a while for the new version of the engine to stabilize, and we’ve made so many upgrades and modifications to the old engine, that we were hesitant to switch. But shortly after GenCon, William started work on the new engine. He added touch support and fixed a bunch of bugs in their code.
He has now got a playable alpha of a mini-golf game written in the new engine. It takes advantage of the new Box2D physics engine and looks like it will be fun. We have also decided to go to a single executable model. All of our games will run as modules in one executable that we are calling “Table Of Fun”. There are a couple big advantages to this. Having a separate executable for each game was taking up a lot of space and making our builds take a long time. We had written a launcher for the old engine so that we could see all the games and run them. Now we will have the launcher built into the program itself.Note: this post was written on 3/23/2014 and retroactively published to 11/15/2013 which is when these events happened.