Archive for June, 2010

The final mobile port (for now)

Saturday, June 5th, 2010

I actually finished on Sunday, but the final mobile port of Smiles is now sent. The port is for Samsung’s Bada mobile platform. I was pleasantly surprised how straight forward it was to get things up and running there. The system API is very much like a C++ version of Apple’s ObjC iPhoneOS API. The whole endeavor took no more than 4 days worth of work.

Running in the simulator

So done!

I will continue to support the existing plethora of ports as needed, but now it’s time to switch gears, and get going on the new project!

In fact, I’ve already started digging through and refactoring my code, doing all kinds of note-taking and what have you. The reason I didn’t send the Bada port right away was because I wanted to get started. 😀

Deciding what sort of project to do next is always tricky. Like any designer worth his weight, I have several ideas in the back of my mind, each with its own rationale why I should do this as opposed to another. I tend to classify projects by their needs, unknowns, how long they should take, and how much I actually want to make them. Some ideas are potentially as short as a month, others a lot longer.

I could go on and on about the decision making process, but I’ll save us both the writing and reading effort here.

I will be making a bigger game next, not a quickie mobile game.

I haven’t got rich with Smiles, but I am satisfied with its success. For a while I was concerned that I’d need to throw together a quickie mobile game just to inch me in to a more comfortable earnings bracket. But the recent iPad featuring of Smiles HD, and a bunch of recent news about Intel’s AppUp finally launching on devices, it was enough for me to say “okay, I think the ports will support me just fine”. This past month was good. I doubt it’ll be this good again next month, but a little fear is a good motivator too. 🙂

I’ve set myself up well. iPhone, iPad, Windows and Linux Netbook PCs, Palm Pre, Nokia N900, and Samsung Wave (Bada). And if any new opportunities come up, I’m ready to go with any new device featuring OpenGL ES 1.1 or 2.0. Plus, the past few devices have taken me less than a week to finish each. Now that’s more like it.

And while it would be great to utilize this for making a quick game and bringing it to A LOT of platforms at once, it’ll add a whole other product for me to support, delaying my big game even more. No, lets not do that.

It is time to get started on it.

It’s weird being “the Smiles guy” or “the Car guy” in conversations with my colleagues. Don’t get me wrong, being “the Car guy” is totally awesome, but that’s a label that impresses only the first 2 times it comes up. It justifies Smiles and the porting frenzy, but by the time GDC rolls around next year, it’ll be old news. Smiles is nearly 2 years old now. Released some 19 months ago, but I started development 4 month prior in July. There’s not much more to prove here.

If we were to delve in to character flaws, one of mine might be that I’m overly conscious of self image. I’ve worked on a lot of games, but I’ve yet to work on something I think really qualifies my interest in games. Why did I become a game developer? I was a fanatical game making nerd growing up, so I have this picture/feeling/mood in my mind of what a game should be (i.e. “the awesome”). But my entire portfolio of games from the past 10 years is all kid (girl) games and casual games. Given the conditions I am proud of what we made. But to me the game nerd, the games that I’ve developed are what define me. They’re not bad games to have associated with me, but if that kid who wanted to be me did the math, he would not be impressed.

I turn 30 in a month (July). It’s time to start the next decade.

What I’m working on now

To start, I’ve been refactoring my code. I now have (including unreleased) 17 supported platforms in my code base, which is A LOT! So now that I have implemented this many real world targets, I can look at what’s worked or what hasn’t structurally. And it’s not that it hasn’t worked, but I can take this opportunity to make changes.

Compiling a Smiles target requires specifying several code folders (src/Game, src/OpenGL1, src/SDLMain, …), and #defining several macros that describe the platform (USES_OPENGLES, USES_UNIX, etc). This is fine, but I’ve come to the opinion that it’s easier to find (for example) the sound code for Platform X under Audio/PlatformX, than it is to find it under PlatformX/Audio. Every platform needs to share a common interface, otherwise it wouldn’t really be that portable.

So I will be (have been) moving a bunch of all-over-the-place code to where they make sense. That then means a whole bunch of specific define checks like “#ifdef USES_UNIX_TIMER” at the top of the platform specific files. But hey, that’s fine. Being able to actually find the code is totally worth a little scoping messyness.

What about Mystery Platform?

That’s coming too. The Smiles for Mystery Platform port I’ve decided to do over the summer, since I want the new game to also run on Mystery Platform (at least!). So rather than hack 1 more platform in to the code base (well actually, it’s already there and compiling), I’ve decided to tackle my refactoring plans now.

The other thing, much of the TODO list for this Smiles port meshes with my TODO list for the new game. So since I need a break from Smiles anyways, my thought is to start the new game RIGHT NOW, and by the time my needs are met by my library and tool changes, spend a week or two crunching the port together.

And yet another thing, Smiles makes a REALLY GOOD guinea-pig. Like really, it’s a fully functional complete working game. What better way to test a code base than with a fully working game?

What’s next?

Tools. Lots of tools.

Contrary to my usual indie wisdom “make games without content”, I will be making a game with content. Lots of content! But the trick to content is it needs to be very fast to create, and to test. So I’ll be spending a lot of my time over the next few months building what I need, to make the game I want.

I’m sure I’ll do another rant eventually about doing a game you (I) want to create, as opposed to one the “market” wants. But for now, tools.

Where are we going?

By the end of the summer I hope to have:

– Smiles for Mystery Platform finished and submitted.
– Tools for new game up and running, in use, and already producing content.
– To have run an awesome Ludum Dare (LD18 coming in August!) 😉

Like many people, I’m aiming to have something ready for IGF time. I’m confident in the concept, but there’s a lot of work ahead of me to get there. Lots of research, lots of things to make, but man, I’m soooo excited to be working on it! FINALLY! WOO!