360iDev 2012 & Game Jams in general

A couple of weeks ago, I went to 360iDev, an iPhone/iOS conference that has been going on for a few years now, devoted entirely to iPhone (and now iPad) development. I actually went last year too, and that year had been to WWDC only a few months before. It was my first time at either conference, and I got a lot out of both of them. But the fact that 360iDev can even hold a candle to the flame that is Apple’s flagship developer conference (WWDC) speaks volumes about how great it is. This year, I elected to go to GDC instead of WWDC, but I still wanted to go to a big tech-focused conference, so I went to 360iDev.

Both years at 360iDev, I took part in the 360iDev Game Jam. (I also wrote a blog post about the game I made last year, which I then called ColorWheel.) This year, I teamed up with a guy named Levi that I’d never met or worked with before, we managed to make a pretty cool (albiet very simple) little puzzle game in the allotted 12 hours. I’ve tentatively started calling it Cloud Growth. I just finished a write-up of Cloud Growth (UPDATE: I’ve recovered the text from the game jam site, which no longer exists, and posted it below this post.), including some more details about the game’s development over on the Game Jam website. The theme of the game jam this year was “growth”, and our game heavily features clouds, so the naming was not particularly creative. The mechanics aren’t particularly creative either, but I can’t remember playing a game with them before, so I do want to polish this little prototype up, and release it at some point.

Anyway, Game jams are awesome. If you are interested in making games I would highly recommend the experience. But don’t take my word for it! At 360iDev, I attended a talk by Phil Hassey, an indie game developer who made a name for himself with a fantastic RTS called Galcon. Phil’s talk was mostly a postmortem for Galcon and his latest game Dynamite Jack, but he must have plugged Ludum Dare about twenty times. (He helps run the thing.) Ludum Dare actually happens bi-monthly. I was going to participate in August, but spent Friday evening working on a project to make games easier for me to write instead. (I will probably talk more about that project here on this blog eventually.)

It feels these days like there’s a game jam every weekend. Last weekend, for example, there was a game jam devoted to making games in the universe of Adventure Time, the TV show. (If I hadn’t been exhausted from a full week of 360iDev, and my lack of sleep that Tuesday night, I’d have been seriously tempted to take part, because Adventure Time is awesome.) A few months back there was a game jam where the participants were supposed to create games inspired by a twitter parody (@petermolydeux) of the relatively famous game creator/producer, Peter Molyneux. I think Peter Molyneux even attended the event!

Previously, I’ve also participated in the Global Game Jam. I can’t wait to do more of them.


Cloud Growth is a simple action puzzle game collaboration between Martin Grider (@livingtech), and Levi Brown, (@levigroker, blog).

We did about ten or twenty minutes of brainstorming, and eventually decided on this concept where we are placing simple clouds on a grid of open sky. There is a cloud “queue” in the upper right hand corner of the screen, so you know what the next one to be placed will be. Clouds have different colors, and if two clouds of the same color are placed next to one another, they will grow into a square of one size larger than the largest sized cloud of the two. You get points for placing clouds, and more points for growing clouds.

Martin wrote all of the game logic and most of the view controller code. Part of Martin’s enthusiasm for this particular concept was that he wanted to continue work on a generic GameModel object he’d been writing that abstracts away the “game grid”, as well as touch interactions on that grid. This was a resounding success, and much code was added to that library.

Levi did all the artwork and animations. These screenshots do not adequately capture the awesomeness of those animations. When a cloud is placed, for example, there is a really great bouncing effect, that is just fun to see. A good portion of Levi’s time in the wee hours of the morning was spent ensuring that the lightening bolts (currently shown when clouds reach the 3rd largest size), begin at the cloud of their origin, and end at the lightening tower at the bottom of the screen.

Future ideas:
* Part of the original concept was that the clouds would get removed from the gameboard after a certain threshold, but as the clouds cannot currently grow more than three times, that made the game far too easy. When code is written for larger growth, this idea will be revisited.
* Some kind of lightening counter would be fun, maybe with progressively harder levels as the counter is filled.

Music for Oppo-Citrus

I have spent probably about a day of the last 2 & 1/2 weeks playing around with Pure Data and its iOS counterpart, libpd. After some digging and asking around, I think this is the best way to synthesize music on the iPhone. (By that, I mean generate music “from nothing”, rather than just play mp3s and stuff like that.) I now feel I know enough to be dangerous, but also have reached the point — inevitable in every learning endeavor — where I’ve realized and feel a bit overwhelmed by how very much there is yet to learn. Pure Data (and it’s closed-source predecessor Max) is one of those programs that is so open-ended that you could probably spend your entire life working in it. It’s not so much the program that is overwhelming though. It’s the realization that ultimately what I’m doing is making music. Even if I want to cheat in every possible way, it still comes down to composition. I am composing music. Pure Data is just like any other musical instrument (although possibly the most complex one I have ever encountered), and I’m just not sure whether my compositions are worthy of inclusion in a game.

So I’m going to look for a musician for Oppo-Citrus. One who can work for peanuts, or better yet, virtual peanuts, because that’s what I can afford to give them. Ideally, I’m looking to turn a grid of numbers into a looping sound mosaic. But more importantly, a mosaic that doesn’t completely suck.

I actually came here to write a post about having registered my LLC officially with the state. The name of my new company is Abstract Puzzle, and I’m sure you’ll read more about it in the near future. It’s already got it’s own facebook page, and if you’re reading this, and you haven’t already, it’s be super great if you could go over there and like it.

But then I started listening to my old friend John Keston’s music on SoundCloud, and felt inspired to write about my libpd “research”. Music is incredibly inspirational, and I’ve been reprimanded in iTunes reviews (well, maybe only one) for not including some in ActionChess. My reasoning was always that it’s also incredibly subjective, and one person’s mozart is another person’s … well, mozart. Anyway, music can be as abrasive as it is immersive. I really like the idea of creating a truly unique and interesting sound experience though, and I think if done correctly, that might be worth the extra effort.

Announcing Oppo-Citrus

You already saw the logo in my last post, but here it is again for posterity. Cool, huh?

I realized I was procrastinating this post, partly because I don’t know what to write here. I mean, this should be a teaser, so I don’t want to give away all the details, but I also want to be honest about giving an insight into the work I’m doing, both technically, and from a game design perspective.

There was another reason for not writing, a personal one that I normally wouldn’t go into here, but since I said I was going to have this post done a couple of days ago, I figure I should at least mention the real reason it’s later. The short of it is that I haven’t gotten anything done the last couple of days because my 2-year old daughter has been sick. The doctor thinks it might be whooping-cough, which despite having the silliest sounding name of any child’s illness, is actually fairly serious, and can lead to death in very small children. (Fortunately, she’s beyond that age, but it hasn’t been easy, and the most frustrating symptom is coughing until she vomits or gets very short of breath.) Anyway, it’s been a rough first week as an indie. I keep reminding myself that this is at least part of why I wanted to do this. I have the freedom to drop everything now and take care of her as needed. Yes, I might be delaying a product launch by a couple of days, and maybe I won’t make as much money in that time or whatever, but those are tradeoffs I get to make now.

Moving on… Lets start with the basic premise.

game_screenHere’s the current mockup of the game screen for Oppo-Citrus. The first idea I had for this is still intact: you drag a bar of colored squares into the column above, trying to position it such that you make a shape with four (or more) of the same color. You get points for every unique tetris shape. Right now, you get 1 point for the first one, 2 for the second, 3 for the third, etc. I thought about making additional shapes a multiplier, but since it’s fairly random right now, it seemed like that might be too rewarding. There is skill to it, don’t get me wrong, but a lot depends on getting the right combinations of colors.

The red shape and faded red squares around it are because this screenshot is mid-animation of removing the shapes made from placement of that top row from the gameboard.

As you can see, this first level is just two colors (lemons and limes), and as you might imagine, it’s actually fairly easy to make shapes. The real question is whether you can make enough shapes before filling up the board to progress onto the next level. That half-filled yellow bar below the row at the bottom is the level progress indicator. As you make shapes, it fills up, and eventually you get a screen that asks whether you would like to continue on to the next level or keep playing this one for points. I’ll leave what happens on subsequent levels up for a future post or posts, but in addition to the obvious (adding more colors), I have lots of ideas for powerups and additional game mechanics that actually change the game pretty radically while sticking with the original premise.

Game Design, and the Search for Emergent Complexity

Elegance in Game Design
Wikipedia says elegance is “the attribute of being unusually effective and simple”. I think the word “effective” here is very important. Essentially, if a strategic game is our goal, the more strategy we can create with the fewer (and thus more “effective”) rules, the more elegant the game design. Obviously, fewer rules equals a simpler design. Thus a simple game with complex strategy is elegant.

When I say a video game is elegant, (or board game, or a piece of art, or music), I actually mean it is deceptively complex. It may seem simple, either through simple rules, or simplicity of design, but through the interactions of those, it turns out to have some hidden complexity. For example, the rules for chess are fairly simple, a child can learn them, but the strategy that emerges from these rules is incredibly complex and there have been literally hundreds of books written about it.

When I play board games or video games, I have always appreciated this simplicity that leads to complexity. So far, even without necessarily thinking about these concepts explicitly, I have also attempted to incorporate elegance into my own game designs.

Emergent Complexity vs Rules Complexity
There is a whole camp of board games that doesn’t even attempt simplicity. If you’ve played a lot of board games, you probably know what I mean, rule books that are 20 pages long are not all that uncommon. I would generally have called them ‘ameritrash’ before today, (although the term is stupid for many reasons, not the least of which is that not all games with that monkier come from america) but then I read the board game geek page on ameritrash, and realized that I’ve been thinking of that term slightly differently from its commonly accepted use. The wiki page emphasizes the importance of theme in these games, and luck. It’s probably the luck I have a problem with, though that is not in opposition to simplicity and emergent complexity.

Anyway, let it suffice to say that there are a whole crap ton of games out there with what I’ll call now ‘rules complexity’, by which I mean that the game is complex, but that complexity comes more from complicated rules than elegance of design.

360iDev Game Jam
This last week I had the pleasure of attending the 360iDev Game Jam, where I designed and spent approximately eleven hours creating an iPad game I call ColorWheel. I had a simple design, one that I do hope will turn out to allow for some complex strategy when it’s all said and done. In case you haven’t visited the site yet, here is the description I wrote for the game:

Essentially, this is a two-player game, so you play on one side or the other. On your side are six fairly large buttons, one for each color. The colors that are situated across from one another are opposites (in the standard color wheel, google for “color wheel” if you don’t know what I mean), and they cancel each other out when they contact. You press a button, to select a color, and then touch in any of the six rows to “send” a piece down that row. The gameboard is only 6×6, so it’ll fill up pretty fast. Right now I’m thinking two game modes, both limited to 100 moves, or “sends” of pieces across the board. Mode 1 will be “real time”, where you are basically sending blocks as fast as you can to out-race/color match your opponent. Mode 2 will be “turn based”, where you make a move, then your opponent makes a move. When the 100 moves are over, whichever side has the least pieces on it is the victor’s.

I actually think the jury is still out on whether this game will have emergent complexity. There are a lot of choices at any given time (well, 36, I guess–maybe that’s not so many), but the problem as I see it is that for every move you make, your opponent has exactly one move that will counter it. The game, especially in a turn-by-turn mode, could easily stalemate. I haven’t really thought of a good “fix” for that problem… then again, it was made in a night.

ActionChess is free until the next version is released

As extra incentive for myself (and possibly to drum up some pre-release interest in the next version), I’ve changed the price of ActionChess in the app store to free.

The next version will have Game Center support, as well as retina display graphics and iOS 4 multitasking.

It’s really very close to complete. I just need to copy over all the achievements (there are over 50 of them) from OpenFeint to Game Center. I’m hoping to get to that this weekend.

Thanks for downloading!

ActionChess in the Star Tribune

ActionChess was featured yesterday in a list of apps made in MN — in the Star Tribune.

UPDATE: Here is the entirety of the mention (for posterity):

Cross the line-clearing aspects of Tetris with the moves of chess pieces, and you get this fun puzzle game.

It was featured in the upper left-hand corner of a page with an iPhone in the middle and all the local app icons on it. It ran with another much larger and longer article about MN made apps in general titled Land of 10,000+ apps. (That article also briefly features Clockwork, where I am gainfully employed.) Both were written by Randy Salas, who I do not know and have never communicated with. Thanks Randy!

ActionChess Update 1.1.5

A new ActionChess update (1.1.5) is in review. Here are the changes in the update:
– Minor changes to help text across the board.
– New scheme for saved games. One save per game mode is allowed. You can return to the menu to save your game, so when you unlock a new game mode, go try it out right away!

If you’ve been paying attention, (and I don’t know why you would be), you’ll notice that the version numbers should all match now also. There was a discrepancy between all the various versions because I wanted to number things 0.1.x, but I’d launched with 1.0 (by default, I just hadn’t changed the string in my plist project file), and since apple only allows upward version number changes, I had been trying to mirror the “real” version number, but with one instead of zero. This is a silly little discrepancy, but I’ve given up and moved everything to 1.1.x to avoid confusion.

As I mentioned in an update to a previous post, I wanted to get “global high scores” and a new “Puzzle Mode” into this update, but both features are proving to be fairly time consuming endeavors. I do have some progress into both tasks. So far, I’ve finished most of the shell for puzzle mode (still needs some UI love, and there are a couple of bugs). I’ve also programmed enough puzzles in to figure out that this mode is totally worth the effort. It is harder to make puzzles than it is to solve them, but I should have some more progress made by this weekend. I’d like to launch the feature with 100 puzzles. I don’t know how realistic that is, but that’s my goal for now.