So a little while ago, I basically figured out how easy it was to progress toward your dreams. Not necessarily accomplish them — that is hard, and usually takes a lot of time and effort. But just moving towards your dreams is pretty easy. All you have to do is figure out what they are, and then put some actual work in going to get them accomplished. Pretty simple.
The first dream I had was publishing a book, and I can tell you that The Shape of Teeth (as I’m calling it — see last post) is coming along quite well. It’s been delayed again (sorry!), but I’ve got a few really talented and really nice artists putting together some art for me, and once that’s all set, I’ll assemble it and it will be ready for your reading enjoyment and pleasure in the ebook reader of your choice.
In the meantime, I’ve decided to follow another dream of mine, which is to actually develop some games. I still love writing, and I still plan to be a writer for the rest of my life. But just like some people build things out of wood or paint for fun on the weekends, I want to really try my hand at making some solid video games. This is one that I’ve struggled with for a while — to make really solid games, you not only have to be really good at math, and really understand computers, but you have to be good at art, and know how to have fun, and a whole bunch of other talents, some of which I don’t actually have.
Still, I’m driven to do this, so after a few unsuccessful starts with coding in various languages (did I mention that you have to be really good at math? I’m generally not), I decided to get all the way back to basics. When I was a kid, I used to literally code in BASIC, which is the old “20 GOTO 10″ language that we all probably learned in school. And I wasn’t bad at that one — I programmed an address book, and some text adventures, and even a maze game in Extended Color BASIC on my Tandy computer. But since then, programming has all moved from messing around with variables in a pretty linear manner, to object-oriented programming. Now, you don’t get a $STRING and output it, you build an object that will input or output a string object whenever certain conditions are met. At least that’s how I think it works — I can’t seem to wrap my head around the structure and thinking behind object oriented stuff. It’s too complex for me.
So I decided to shoot low — I poked around for ways to build games without actually programming them, and I eventually landed on the bottom rung of the ladder, with a system called Scratch. Scratch was developed at MIT as an educational tool for kids — it’s as basic as programming gets. Instead of coding scripts, you just drag and drop certain visual rules together, and then those rules move images around, and if you put it all together in the right way, you can make a game. So I decided to sit down and play with this a little while back, and after about an hour or so, I had made my first game, simply called Cat Jumps Over The Dog. And here, in fact, it is:
Just press the spacebar to jump over the dog, as many times as you can. The record is somewhere around 130, I think.
Simple? Yes, but that was kind of the point — it was simply an experiment to see if I could build a real, working game, no matter how easy or how dumb it actually was. And I tweeted that out, and a few people actually played it. I even got beta-style feedback — players told me that seeing “You Lose,” even when they had really tried, was disappointing. And I got some good feedback on the flags in the background (which were the only part of the game that I actually drew myself — everything else in there was clipart from the Scratch app). It was at this point that I realized, holy crap, that I had made a game that people had then gone on to play. Dream, here I come!
I decided to ramp things up with Scratch a little bit then — the system is really simple, but I wanted to see what would happen if I tried to push the limits a little harder. I’ve always had an idea for a 2D game where you see a car driving from above, and you can pick up ammo and fire weapons at enemy cars — sort of like Spy Hunter, but without all of the instant reflexes required, and all of the crashing and danger. I worked for about a week and a half with Scratch, and even drew some of my own graphics for the game (which are terrible — I have never in my life had an aptitude for art or design, unfortunately). I used Scratch’s in-app music system to create some sounds for the game, and I implemented a few tough things to do in Scratch (you’d be surprised at how hard it is to determine collisions between objects sometimes, or make a van that spawns mines stop spawning them whenever it’s dead). The result of that work was my second game, Race Attack! (The title of which, my friends later informed me, had some unintended overtones of racial violence. Totally unintended! It’s just a game about racing and attacking.) You can use the arrow keys to steer your car, and then the spacebar to fire missles (when you have ammo).
You’ll notice that in that one, the end of the game always says “Game Over” — except (hint hint) when you actually win. I programmed an actual ending to the game, unlike Cat Jumps Over The Dog, because people asked for one — just score 50 points to see it in action. And I couldn’t really resist throwing a fun nod in from one of my favorite games, Metroid.
Man, I had a heck of a good time making both of those games. Sure, you could argue that they’re boring and terrible, and that the art sucks. But I was overjoyed to make an actual game with an actual set of rules that people could actually play, and even get better at, and even succeed with. Even though Scratch is completely visual (and meant for children), I found parts of my brain that I hadn’t used in years lighting up and sparking like crazy: a problem would arise without a clear and convenient solution, and I’d turn it over in my head, even when I was away from the computer, and mess around with the code and try different things, until I finally would land on something that worked. And then I’d work on that thing, and make it better, and eventually I’d come up with a solution that wasn’t just clear and convenient, but actually quite elegant. In other words, I was coding, you guys! I was really doing it!
My success with Scratch has inspired me to go even further — I decided to move up the chain just a little bit to Gamesalad, which is another visual development system, though one that’s a little closer to code than Scratch’s Playschool-style development. Yes, I’m not really coding still, but I have found that Gamesalad’s system of actors is actually closer to object-oriented programming than I’ve ever come before, not to mention that I actually understand what I’m doing. Plus, it has the benefit of what’s supposed to be a pretty easy port over to iOS and even the Mac App Store, so while everything I’ve done over there has only been in HTML 5 so far, presumably I could eventually take a game to an actual commercial enterprise without a lot of trouble.
My first game on Gamesalad is going to be an inside joke from The Incredible Podcast of Amazing Awesomeness — a while ago, a listener asked what kind of game we’d make if we ever made one, and we came up with the idea for Cat Wars 3: Feline Frenzy, which is a dual-stick “barker,” in which a dog takes on a whole army of cats (we figured that the best games in trilogies are always the last ones, so we’re starting with Cat Wars 3 rather than the two nonexistent earlier games in the series). I actually have a working version of the game running, and lots of ideas to put in it for later builds, but since my temporary art is so terrible, my Tipoaa co-host Turpster (who is actually an animation student and thus has a proclivity towards art) is revamping the art completely. I haven’t seen anything he’s done yet, but I’m sure it’ll look better than the junk I drew.
After he’s done with that (and we’re done with a few other things I want to put in the game), we’ll be actually releasing Cat Wars 3 as a free to play HTML5 game — my first real, actual game release. After that, there’s a chance we’ll take it to the iOS App Store, actually implementing the iPhone’s touch screen for the controls, and putting in a few more extras that would only be available on the App Store version. I don’t have a playable version of Cat Wars to share yet, but it’s coming soon — we’re aiming to have it out by the end of October at the latest, hopefully before then.
And then, guys, I have even more. I’m already working on another prototype in Gamesalad, and I really do want to learn to actually code, so I’ve been looking at Cocos2D and a few other “helpers” for developing my programming skills. Unfortunately, Cocos2D is an iPhone-only thing, and that requires an Apple Developer account, which I haven’t actually grabbed yet. If anyone knows of a similarly free and relatively simple system for making games on either Windows or Mac that would help me figure out this object oriented stuff, I’m all ears.
I also saw Notch coding in Java for his Ludum Dare project, and man, that really looked amazing, though he’s obviously a talented and very experienced programmer, two things that I am not yet. But I definitely have no end of game ideas, and the prototype I’m working on in Gamesalad is a game that I’ve wanted to play for a long time, though no one (as far as I know) has ever made it yet. I’d love to tell you more, but I don’t want to promise something I can’t do, so we’ll have to wait and see on that one.
In truth, I’m worried that the idea is a little too complex — that despite all of my success so far, I’ll end up bumping into a problem that just requires too much math (or, you know, an actual computer science degree, of which I don’t have course one) for me to ever actually understand and figure out. But for now, it’s still a lot of fun, and all of the issues I’ve come across have eventually been solved. After all, it turns out it’s not all that hard to actually follow your dream: Just go out and chase it down, one step at a time.
Posted on Tuesday, August 30th, 2011 at 2:53 am. Filed under general.