Lots of Learning

So I haven’t made any games since Text-Based Minesweeper. Fortunately, this is not due to the fact that I have been slacking off. I have been learning, reading, tutorialing, and coding like crazy. Matt Rix really was right when he said:

Stop playing games. Seriously. Not fun little indie games or iPhone games, but the soul-sucking, time-stealing, life-owning games like World of Warcraft, Starcraft and Counter-Strike [Halo and Call of Duty in my case]. As a general rule, if it has online multiplayer, a strong social aspect and isn’t free, you’ve got the recipe for a life-owning game.

While I don’t plan on completely stopping by any means, it really is easier to focus when you don’t return to them often. I haven’t even bought Black Ops yet and I was really excited for that!

I zoomed through Programming in C, which was great and gave me a really good overall understanding of the language. I’m still pretty new to pointers and structs and such, but I understand them a lot better than I used to, and I’m beginning to use them more naturally.

Graphics? How the . . .

Once I got through the book and knew all the basics of C, I freaked out a little. How the hell do I progress from writing terminal-output code to actual graphical games? I asked a ton of people for suggestions, posted threads on Reddit, annoyed my Twitter followers, and generally had a very hard time settling in on the next step.

Most people suggested that I try implementing SDL with C to start using graphics. So I did. Thanks to a TON of help from Colin at Celsius Game Studios and my friend Brando, I just broke the very surface of using SDL. Without their help I would have been completely over my head and probably would have given up after 10 minutes. They gave me some starting pointers (should I write it *pointers instead?) and told me not to worry so much about all the little details that I don’t understand. Understanding everything will come later. I have a tendency to want to understand everything, and I freak out if I see some random, indecipherable code.

So I took a simple SDL program and basically kept tweaking it to see what I could come up with. The first thing I made was a colorful striped pattern. It didn’t do anything at all. It was just a static code-created image:

I then figured out how to make blocks of different colors and then fill [most of] the screen using a ‘for’ loop:

Finally, although it doesn’t look like much, my big accomplishment was to create a colorful Etch-A-Sketch type thing that could actually take user-input (arrow keys) to draw:

A Path to Follow

Okay so you know how earlier I said, “without their help I would have been completely over my head and probably would have given up after 10 minutes”? Well, it turns out I still gave up SDL after about a day and a half, but for a few reasons.

First of all, my next main goals are to remake my text-based Minesweeper clone in actual graphics and to also make a Tetris clone, and I just realized that to make either one of these in SDL would take a LOT more studying the framework, because it was still very confusing to me and I hardly understood anything.

Secondly, and most importantly, my eventual goal is to make an iPhone game, so I just didn’t see the point of spending a ton of time learning SDL only to then have to completely start over with the iOS framework. Well, that’s not entirely true. I definitely see the point, because obviously it would help me be a better programmer, but I really did feel very lost with SDL due to lack of any great (keyword: EASY) tutorials and documentation, and I also just wanted to get to making iPhone apps!

Let me just take a quick detour into an email I got from Matt Rix a few weeks ago (maker of the amazing game Trainyard). I had asked him for some tips on what the hell path to take from not knowing a thing about programming to eventually making a game like Trainyard. I’ll post some of the highlights of his email that have really helped me focus on a path and a goal:

“To make a game like Trainyard . . . all you really need to understand are C, Objective-C, and Cocos2D (in that order).”

“If you understand the basics, the other stuff will make so much more sense. I see way too many people try to learn the hard stuff after only skimming the basics.”

“Pretty much all programming languages have 3 core parts: variables, functions, and objects. That’s really about it. Objects hold variables. Variables hold references to objects and functions. Functions do things with objects and variables.”

“Objective-C has everything from C, and then they added a bunch of stuff so it’s more “object oriented”, so you can create classes and stuff like that. It’ll probably take a little while to wrap your head around how the memory management works, but just start small, and keep working at it and you’ll definitely get it.”

“Finally, it’s time to tackle Cocos2D. Cocos2D is really a framework built on top of Objective-C, so once you get how Objective-C works, it shouldn’t be too tricky to start grasping how Cocos2D works.”

“As for graphics, you can make your graphics in just about any program, whether it’s Photoshop . . .”

“PS: I love how the bullets on your site are music notes





Matt really helped me out with this list because I had absolutely no idea what I needed to learn. I was swimming in a vast sea of programming languages and frameworks and ideas and concepts and . . . so on. This really narrowed it down for me. And because I’m so grateful, I even put his quotes in the music-note-bullet-list style that he likes so much.

iPhone at Last!

And now that I’ve got the basics of C under my belt, I’ve decided that it’s time to move on to Objective-C. I may be moving faster than I should, but I’m too excited not to. I’m currently in the process of reading at least three different guides on Objective-C through the Apple Dev Center. I also started the Big Nerd Ranch’s iPhone Programming book and it’s excellent. So far, the documentation and process I’ve taken to understand the iPhone programming basics have been far easier and more intuitive than SDL. Let me just say that I’m already in love with Object Oriented Programming. I have hardly used it yet but I can already see why it makes the coding world so much easier.

And now the big reveal: my first iPhone game! Well, sorry to ruin the hype, but it’s not really my

iPhone game because I followed the Big Nerd Ranch’s tutorial almost word for word. It’s also not even really a game – it’s just an app called “Quiz” that asks a few (well, three) questions and then displays the answers when you push a button. But I don’t CARE if it’s not very exciting. Just to get that first app on my actual iPhone and open it up felt really cool. And even though it’s the stupidest, most basic app ever, it’s on my home screen (I actually customized it a little by adding my own questions/answers, making my own icon, and dedicating it to my girlfriend – at least she liked it).

So that’s my story. I’m on sort of a game making hiatus now because I’m just going to hold off until I know more about iOS dev. But I’m hoping to eventually make a Tetris or Minesweeper clone just for practice (not for actual app store release). When I do, I would love to give it to some people for feedback (I think I can give it to up to 100 through the mobileprovision).

Upcoming Chiptune Album

In other news, music is going great and in December I’m releasing a 9-track album of various chiptunes (don’t worry, it’ll be cheap). Some of the styles of chiptune include:

Mario 2-esque jazz

Little Nemo: The Dream Master-esque melodic piece

Spacey ambient-rock

Intense Sonic-style theme

Funky blues





More details to emerge later, when the game I’m writing them for (a secret at the moment) is released.