Design – Why I chose SuperTuxKart to use as a “Game Engine”

“Game Engine” is a term that’s thrown around a lot these days, but at the end of the day what’s important is that, whatever it may actually be, it is used as a tool to create a game. Strictly speaking, the technical term for what I am doing with SuperTuxKart is “Total Conversion Mod”, which basically means taking one game and making it into an distinctly different new game. In this case the “thing” I am using is a really amazing, well tested, and extensible game that also comes with its own content creation tools. So… do the semantics really matter? Who cares, use what works for you, because… it works! 🙂 Forking a project to create something new or different is what open source software is all about – community, learning, sharing, daring to dream and DO.

I quite by chance realized that SuperTuxKart is a perfect fit as a game engine for “Loop Dipole …”. The kids and I have played it many times over the years, but I hadn’t thought about it in a while until they were talking about it the other day. Prior to that I was giving serious consideration to using Unity or Cafu to make the game. However, I very much prefer working/playing in Linux so as much as Unity is a great tool, I just didn’t feel it was right for me. So when I heard the girls talk about SuperTuxKart a light bulb went on in my mind and I said to myself,

“Hey… SuperTuxKart is a wacky racing game… and my game will essentially be a wacky racing game… hmm…”

I loaded up SuperTuxKart later on and nodded my head, because wow… this game has so many transferable skills it’s ridiculous! Here, let me point form some for you…

Edit: It occurred to me later that I had neglected to mention why I would need or want to use a game engine or another game as the basis for my own project. The answer is simple: I am not a genius, I am just one person, and why reinvent the wheel (pun intended) when you don’t have to?

Seriously, there’s a lot of complex math involved with ensuring objects “stick” to the terrain (calculus), projectiles move correctly along their trajectory (algebra), and generally a whole whack of things I would rather not spend my time learning/doing, unless I absolutely have to. Creating a complex computer game, be it 2D or 3D, is a massive task. Most often the games you play are created by teams of people, either a handful over the course of several years or 100+ if the project has a tighter deadline. When you sit back and think about it, the reason for this is obvious: so many deciplines are required to provide the visual art, programming, audio art, concept design, documentation, tools creation, build mastering… and so on for a good long while! So, for a hobbist (who is not a savant) one of the only ways to ensure that you can actually complete a project is to find a way to build what you’d like out of or on top of someone else’s work. It just makes sense.

Funny story about calculus and I… back in grade 13 (when we had that in Canada…), I got something like 11% for my final grade in calculus. After a couple of days into the class I realized that it wasn’t something I was ever going to actually use in my life time, so I asked to trade it for English. (Funny story about English: I was always great at it, but I failed grade 11 twice because… I didn’t bother doing any of the work! Yeah, apparently they don’t give you a pass if you don’t actually DO anything in the class. Shocking, I know. It was a busy time for me and I prioritized my extracurricular events over school work – kids… don’t do that! School is a pain in the arse, but doing well at it, in a timely manner, is important.). The school, however, insisted that I stay in the calculus class, so in protest I went every day and played chess with the teacher. He was some master level player that I could never beat, but playing chess with him was more entertaining than calculus. And the saddest thing of all? I had to take English in summer school that year to graduate, because I was one English credit short at the end of the year! That’s “the system” for ya… Let me tell ya, my summer school teacher LOVED the White-out covered essays I typed for her on our Underwood manual typewriter. I think I actually had to hand one in on green paper once, because that was all we had in the house. I’m not a jerk, we only had a Commodore64, without a printer, at the time and she positively insisted that the assignments be typed. She was a good sport though and it was one of my favorite class experiences in retrospect.

In any event kids, calculus is handy if you’re interested in programming physics or, at the very least, understanding what the physics libraries you’re using actually do. While I am personally content to “stand on the backs of giants” when it comes to those sorts of details, by all means if that sort of stuff tickles your fancy, have at it in earnest! Rocket magic is awaiting your firm hand and strong mind to hypothesize it into science. 🙂

Shut up, Rob and on with the point… form!

  • It’s a racing game with good sized maps where you can drive anywhere, not just on the track. My game is basically a driving game with puzzles and stuff to do on 7 decent sized maps!
  • The handling of the carts is very fast and fun. The only aspects I will need to alter is adding strafing and mouse look rather than turning, which will deliver on the whole “I am an energy being flying around the world close to the ground rather than a car” feeling. Likely one of the harder things I will need to do, but still “do-able”.
  • I want to use a third person and a first person view. STK’s default view is third person and it has a “look behind you” camera button… I can like totally just rotate that look behind camera around an adjust position to make it my first person view! Problem pretty much solved for me already lol…
  • STK has scripting for objects that interact with the player on hit, which is pretty much all my character will to: drive around and collect energy shapes or collide with bad guys.
  • In STK the computer controlled characters path around the tracks on their own. In my game the bad guys, “Chaoties”, are all just dumb energy blobs that spawn randomly and head toward an energy fountain they can throw themselves into. Pretty easy to envision ways to use the track system of STK to deliver a reasonable challenge to players, given that fountains are the puzzles in my game and they get randomized any time a Chaotie jumps into them. Players will be able to learn where to expect enemies so they can build strategies to deal with them and I… well, I can spend the least amount of time possible futzing with that game play system!
  • STK was amazingly designed to accept community addons for vehicle models and tracks. Tracks are maps. Vehicles are the character avatar. I don’t even need to change the existing things, I can just add and test my own custom maps and models without even having to change a thing about STK!
  • The menu system already has the options I would like to use. Sure, I will add, remove, and customize it, but that’s a whole lot easier than making it from scratch (especially things like graphics settings).
  • The art style of my game is basically faux line drawing world with glowing models and some particle effects, so using the older rendering engine in STK version 0.8.1 is great for me. I don’t need or want a lot of features and I’d frankly rather the game be able to play on a low spec device than to have differed rendering and a whack of features I’m just not going to use anyhow.

Anyhow, I could go on, but those are the main points that helped me realize what a perfect fit SuperTuxKart is for my GPLv3 open source, “for the love of doing it, just because I can” project. My motivation with this project is to “think, dream, and do”, because I enjoy managing the big picture and working on all the little parts that come together to make “the whole”; I like building things, so I’ll learn Blender, I’ll learn the STK mapping tools, and keep working with Gimp; I enjoy logic programming bringing a “system” to life; While I am not an artist, I have fun creating music, sounds, graphics… stuff; I’m a computer geek. In short, making a computer game is simply a wicked (and cost efficient!) hobby for me!

So much like I thank everyone who worked on SuperTux 0.3.3 (that I used as the basis for Rescue Girlies in 2013), I thank everyone from the SuperTuxKart 0.8.1 team for giving the world a wicked awesome game and an amazing tool for exercising one’s imagination.  I will do my best to give back to the open source community by documenting and releasing my game for any all to play and use as well.