Archive for the ‘Misc’ Category

Meaning Through Game Design

A few weeks ago I was listening to a radio show on CBC called Rewind, in which clips from archived CBC interviews and shows are played back. They often replay sections of interviews with a Canadian personality taken from interviews that span years or decades. This particular episode was about a well-known Canadian author, Margaret Atwood.

What caught my attention was the first clip they played; an interview between Bill McNeil and Margaret Atwood from 1968, when Atwood was 29 years old. She had recently published a book of poetry, and McNeil was asking her to explain what it was about. I’ve transcribed Atwood’s comments from the episode here:

McNeil asks Atwood if she feels she can say what she wants to say better in poetry than in any other form.

“No, no no no. That’s thinking of poetry as a translation from prose, as though one were thinking in prose and then translating it into poetry as a form of expression, whereas one actually thinks in poetry. It’s not that I have a message in prose and then translate it into poetry, at all,” replies Atwood.

He asks her, “What is it then that you’re saying in your poetry?”

“Because I don’t think of my poetry as a translation from prose, I don’t think of it as being able to be translated into prose, so I can’t give you a neat little précis.”

He ask, “Well then, what is poetry for you?”

“It’s a form of thought, not a form of expression, because a form of expression means that you have something separate from what is being expressed.”

He says, “but you are saying something in your poetry.”

“Yes, I’m saying something, but you can’t separate what I’m saying from the actual form in which it’s said. Do you ask a painter, ‘what is this painting saying?’ Do you?”

(You can listen to the full episode here: CBC Radio: Rewind – Margaret Atwood)

I was so struck by what Atwood had said that I turned off the radio immediately and sat, thinking about it further. She was right, of course, that certain things can only be said via certain media. Through her poetry, Atwood communicates with the reader in a way that isn’t possible through any other medium.

I started thinking about other artistic media. Try describing to someone what a piece of music is about in a way that makes them feel the same things as if they’d listened to it. Can you make someone understand the texture, tastes, and smells of an amazing meal you had? The best films communicate with the viewer in a way that isn’t possible in a book, or painting, because they communicate best through the medium of film. The best books communicate best through the medium of the novel. This is why great books often make mediocre movies, because part of the art gets lost in translation to a medium that isn’t ideally suited for that particular message.


Even this photo can’t capture the experience of eating this sushi. (Photo credit: flickr user “e-wander” (CC BY-NC-ND 2.0))

If all that is true, and games are an artistic medium, then that means that the best games will communicate something that can only be expressed through the medium of games. But what is that? What kinds of thought can only be communicated through games, or can best be communicated through games?

In 2011, game designer Clint Hocking gave an amazing talk at GDC about game dynamics and “how games mean”.

In the talk, Hocking discusses how film generates meaning through the edit. He talks about a film in which a film maker cut together a shot of a man’s face, followed by a bowl of soup, followed by the same shot of the man, followed by a shot of a dead person, etc. When people watched the film, they attributed different emotions to the man, first that he looked hungry when looking at the soup, then sad when looking at the dead person, etc. Hocking argues that because the shot of the man is the same every time, it is the placement of the shots in time (i.e. the edit) that generates meaning.

Film Edit

Film creates meaning through the edit. The placement of imagery next to other imagery in time creates meaning for the viewer.

(You can watch the full talk on the GDC Vault for free: GDC Vault: Clint Hocking – Dynamics: The State of the Art)

If film creates meaning through the edit, how do games create meaning? Hocking argues that games create meaning through dynamics. To talk about dynamics, we need to first talk about the MDA framework: MDA Framework (PDF)

MDA stands for “Mechanics, Dynamics, and Aesthetics.” It is a framework created by Robin Hunicke, Marc LeBlanc, and Robert Zubek to describe a formal approach for understanding games. Briefly (including some quotes and examples from the MDA paper):

Mechanics can be thought of as the “rules” of the game. These are the components that make up a game “at the level of data representation and algorithms.” In poker, the mechanics include: shuffling the deck, dealing, betting, raising, hand ranking, etc.

Dynamics are the kinds of player behaviours that result from the mechanics as the game is played. In poker, the mechanics create dynamics like bluffing, or intimidation.

Aesthetics can be thought of as describing “the desirable emotional responses evoked in the player, when she interacts with the game system.” So in the MDA framework, aesthetics are not talking about the visual look of the game, but rather the emotional result of playing the game. In poker, the dynamics create aesthetics like challenge, fellowship, or expression.

If you start reading about game design, you will find a lot of books written on mechanics, and some on aesthetics, but writing on dynamics is much harder to find. Dynamics in games often appear as feedback loops, which can be hard to describe. But as game designers, our central job is to create mechanics that generate the dynamics that lead to the kind of aesthetic experience we want the player to have.

Monopoly Feedback Loop

Example of a feedback loop in Monopoly from the MDA paper

So, back to Clint Hocking’s talk. He argues that is it through dynamics that games create meaning. Thinking about what Atwood said about poetry, I’m inclined to agree. Dynamics aren’t present in other art forms because other art forms don’t let the viewer/reader interact with them the same way games do. Through interacting with mechanics, the player experiences dynamics, and Hocking argues that those dynamics are what create meaning in games.

If we accept Hocking’s statement, then my question becomes: what do we want to say with games that can only be or can best be communicated with dynamics?

When I look at some of my favourite games, this is what they do well; they create meaning in ways that would not be possible in other media. Proteus, one of my favourite games, works because what it evokes could not be experienced better in another medium. I think this is why I find it so difficult to explain to other people why I love that game so much. I can tell you about my childhood memories of exploring forests, and fields, and ponds. I can tell you about the beautiful island I explored in Proteus where I sat and watched the stars move overhead. I can tell you about the sounds I heard while walking through a forest in Proteus’s winter landscape. But it doesn’t capture it. You need to play it yourself to experience the meaning in it.


Sitting beside a lake in Proteus, a game by Ed Key and David Kanaga.

The thing is, I don’t know what this means for me yet; what this means for the games I make. I’m more and more interested in exploring games that best convey meaning through the medium of games, but I yet don’t know how that will manifest itself in my work. This is a process. I’m still learning. I’m still working it out.


Creativity and Self-Doubt

There have been some studies recently that look at the way social networks affect our perception of ourselves in relation to others. Some of the studies have talked about how since we tend to share only the best of ourselves online, it can lead us to feel bad about our own lives, as they seem so much less perfect than the lives of those around us.

I’ve noticed that this can happen when we talk about our work as creative individuals. We like to talk about our successes, but we leave out all the hard work and failure that came before the good parts. Maybe we don’t like to think about the difficult parts. Maybe we’re afraid of appearing weak. Maybe we’re afraid of looking like we don’t know what we’re doing.

Five years ago, when I was new to the indie game development scene, I was working on my first game, Dapple. I had been working on it for a couple of months, and what had started with great ideas and enthusiasm had turned to a place where I was starting to doubt every decision I was making about the game design. Should I match three colours or four? Does the game need power ups, or will it work better without? Should I let the player choose their colour each turn, or should I pick one of the available colours at random for them? I was getting stuck inside my own head, convincing myself that every decision I was making was bound to be wrong.

I decided to reach out to a game designer I respected and ask for advice. I sent an email explaining who I was and my situation, and asked for advice on how to get through periods of self-doubt. How do you make a decision when you feel like all your ideas are wrong, I asked. The response I got amounted to: “Sorry, this doesn’t happen to me. Can’t really help you out.” As you might imagine, this was pretty crushing. Now I felt even more incompetent and I started to feel like “real” game designers must not ever doubt themselves. What was wrong with me that I doubted my own abilities?

But the longer I worked, and the more game designers and developers I’ve met, the more I’ve come to realize that either this individual was, by far, the exception, or wasn’t being honest with me. I have shared my feelings of self-doubt with many other designers since then, and invariably they have similar stories. We all doubt ourselves and our decisions from time to time. We go through periods where we think our work is terrible and will never be good. We become convinced at times that no one will like our game.

What I’ve learned is that, for me, it’s just part of the process of making a game. Making a game is about making a huge number of decisions, and it’s only natural to feel at times like I’m making the wrong ones. And hell, sometimes I am going to make the wrong decisions. But that’s ok. The important thing is to take the information I have available and make a decision.

An old boss I had once said to me “don’t worry about making the right decisions, worry about making the decisions right.” At the time, I didn’t really understand what he was saying, but I do now. Sometimes you just need to make a decision and move on, or you can become paralyzed by it. If you realize later that the decision was wrong and makes the game worse, you can go back and fix it. But don’t let yourself get into a situation where you refuse to make decisions for fear of being wrong.

I wanted to write this in case any new game designers happen to be following me on twitter or read this blog. I didn’t want someone working on their first game to feel like the doubt they’re experiencing is unique to them. I wanted to say to you that self-doubt is common. It’s ok if you experience it, because everybody does. What’s important is that you find ways to work through it and move on.

Over the last few years I’ve found that a few things can really help me when I get stuck on a problem:

  • take a walk outside, preferably in nature
  • exercise
  • visit an art gallery and remind yourself of the beauty we are capable of creating
  • go to a movie and see something great
  • go to a movie and see something terrible
  • work on something unrelated for a few hours, or a day or two (but be careful not to jump indefinitely from project to project when things get hard, because things always get hard at some point)
  • do a game jam
  • just make a decision and start working on it. If you hate it, you can change your mind.

I hope that helps. And, if in doubt, read and re-read this quote from Ira Glass:

Ira Glass on having a creative career

Ira Glass on having a creative career

If you have any suggestions for what helps you get through the hard parts of development, let me know!


Thoughts on Proteus

I don’t often write about other games, but maybe I should. If you follow me on twitter, or talk to me about video games, chances are you’ve heard me talk a lot about Proteus over the last year or so. Proteus is a game about exploring an island. Proteus doesn’t have most of the goals or objectives many players expect from games, but I find it to be a wonderful game to play. It’s a game I come back to over and over, because it reminds me of exploring the country as a child. I talked about this in more detail in the Ignite Guelph talk I gave on art and games.

A few months ago I sat down to write down some thoughts on Proteus. What came out was not what I expected. It was much more personal that I thought it would be, even though there’s really nothing expressly personal in the piece. But I felt strange about sharing it publicly for some reason. I guess the experiences we have as children feel special and private sometimes. But, in the end, I still feel like this piece best describes why I love Proteus so much. I decided to publish it on the blog because I feel like other players might have had similar experiences.

And so, without further ado, here are my thoughts on Proteus:

I am 12 years old. I’m at the family cottage; a formerly abandoned place on Georgian Bay that my parents have been fixing up. I spend my summers here.

It’s hot today. The grass seems to be giving off heat in the mid-day sun. The air feels thick and heavy in the humidity. Even the wind feels hot. I stand at the edge of the road looking into the field across from the cottage, wondering if the bull is in there with the cows today. I can’t see the cows from here, but they’re in there, I know it. I cross the road, climb over the old wooden fence, and drop down into the tall grass.

I look ahead to the line of trees in the distance. The buzz of cicadas rings in my ears, over and over. As one winds down, another starts up, filling the air with their perpetual song. I start pushing my way through the grass, on the look out for the cows. I walk to the creek, but it’s dry. We haven’t had rain for a while. I turn and head toward the trees at the back of the field.

A flying grasshopper bursts out of the grass in front of me and its loud buzz startles me. I stop to watch where it lands and I creep towards it. As I approach it launches again and buzzes. I chase the grasshopper through the field until it lands in a pile of rocks and disappears.

I clamber up the pile of rocks – a pile left over from when this land was first cleared – to take stock of where I am. I’ve come about half way across the field. The trees are still a ways off. I start climbing down from the rocks and, as my foot moves one, a garter snake slides out and moves through the grass. I follow it.

The snake weaves its way through the tall grass and I have a hard time keeping up. Every time I get close, it seems to get away. Finally it burrows itself in a bush. I sit down next to the bush and wait to see if it reemerges. After a few minutes I move on.

I’m nearly at the tree line now. I can see the hill the trees growing on in the shadows of the forest. I pass into the shade and immediately feel cooler out of the intense sunshine. The air smells different in here, damp, and alive. I climb up the hill, following an old cow path up the slope. I still haven’t seen the cows. Maybe they’re in the back field near the pond trying to stay cool.

I come out of the trees at the top of the hill into another field and follow the path to the pond, but the cows aren’t here either. I stop next to the pond and stand motionless, listening. The air up here is still, the wind blocked by the trees. The buzz of the cicadas continues. As I crouch very still by the pond the frogs begin to croak. I listen carefully. I can hear one nearby. I look through the cat tails in front of me and see a big green leopard frog. I reach out my hand and, just as I’m about to touch it, it dives into the water.

I stand and look around to get my bearings. The cow path weaves off up the hill. I follow along the path for a while. I reach the big pile of rocks in the back field I’ve been looking for. I clamber up the rocks to look around. I still haven’t seen the cows. Maybe they’re in the back forest, but I can’t see them from here. I turn left, climb down the rocks, and hop the fence into the neighbouring field. In the distance a group if poplars grows on a small hill, rising above everything else. I make my way towards it.

As I start up the hill, I turn around. From up here I can see back down across the fields, all the way to the water. The lake is a deep blue in the sun. White caps from the wind dot the blue expanse. Water extends to the horizon. Islands in the distance hint at new things to see and places to explore.

I circle around the hill until I find the stone foundation from a house that is long gone. I drop down into grass at the bottom. I lie down in the grass and close my eyes and listen. Here there is no wind and the cicadas’ buzz fills my ears. The sun is warm on my face. This is Proteus.

5 Years Old

I can hardly believe it myself, but Streaming Colour is five years old today! Five years ago today I arrived in Toronto after moving back from Vancouver, sat down at my computer, and started my indie career. When I started Streaming Colour I had no idea if I’d survive for five years. It was a gamble. I had a left a good job as a senior programmer in the console games industry and I was taking a big risk. My goal was to build the business to the point where I was making a livable income after five years. Not be rich, just making enough to keep doing what I wanted to do.

It has been a very long and very short five years filled with lows and highs, and everything in between. Being an independent game developer definitely hasn’t been easy. In fact, it has been a huge struggle at times. But it has also been incredibly rewarding on a personal, professional, and creative level. There are few things as creatively rewarding as taking an idea in your head and turning it into something that people can experience for themselves.

Over the past five years I have taken on some really interesting contract work. I’ve spoken at conferences in Guelph, Toronto, and San Jose. I wrote a chapter in a book on iPhone development. I moved to Guelph, Ontario with my amazing wife, and we’ve had two incredible children. Through it all, I somehow managed to release seven games/apps. I’m not releasing any numbers today, but these are those games ranked from most revenue to least, for those curious:

  1. Finger Tied (Oct, 2012)
  2. Baby’s Musical Hands (July, 2011)
  3. Dapple (Feb, 2009)
  4. LandFormer (June, 2010)
  5. Monkeys in Space (Nov, 2009)
  6. Dirty Diapers (Dec, 2010)
  7. Finger Tied Jr. (May, 2013)

Update: A couple of people on twitter were curious about relative revenue. Here’s a graph showing each game/app as a percentage of total revenue earned on the App Store:

Game Revenue Percentage

Breakdown of revenue by percentage of total App Store revenue. Accurate as of 2013-07-08.

I have learned some hard and important lessons about developing games on my own. I’ve learned some very hard lessons about marketing and PR. I feel like I’m getting better every day at what I do, and I intend to keep learning and improving with every game.

After releasing Finger Tied last fall, one thing I realized was that I really missed working with other people. Working on one’s own gives you a lot of creative freedom and choice, but it’s also really difficult to see the big picture at times. Late last year, Matt Rix and I teamed up and started prototyping some game ideas. He and I had worked together a couple of times at TOJam in Toronto, and we decided we’d see if we could make a game together. Earlier this spring we founded a new company called Milkbag Games and we’re currently hard at work on our first game: Snow Siege. It has been a fantastic experience working with Matt so far and I think Snow Siege is going to be a really great game.

Finally, I wanted to extend a big thank you to everyone who has supported me and Streaming Colour over the last five years. If you bought my games, offered encouragement, talked with me about game design at GDC or 360iDev, or just sent a friendly message of twitter, thank you! Nobody can do this alone, not even those of us who work alone. I wouldn’t still be doing this if not for all of you. Here’s to the next five years!


Finger Tied: A History

Yesterday I released a big update to Finger Tied (get it on the App Store) which enables the sharing of levels in the game. You can now share the levels you create, and download levels created by other players. I think it’s pretty cool, and I hope the players do too.

As I was working on the update, I started thinking back on the process of creating the game from start to finish. I like it when other people talk, in detail, about the process of creating their games, so I thought I’d do something to share the process of making Finger Tied. I wished I’d kept a diary or journal about the development of the game, but then I realized that I had the next best thing: my commit logs from my Git repo for the game. Every time I check in code or art, I add comments about what I accomplished.

With that in mind, I exported the logs and wrote a little PHP script to generate HTML code of all the commit comments. I’ve also gone back through my screenshots and pulled some that are relevant to given dates. I haven’t edited any of this, so you’ll see references to features that don’t appear in the finished game, because I decided to cut them.

The first commit comments are from Guelph Game Jam 3, in April, where I first prototyped the game. It was a game about planting flowers, called Trillium Fillium. From there you can see it involve into something more abstract and into the final game.

This post is long. I wouldn’t blame you if you don’t read it. I hope one or two of you find it interesting. 😉

Finger Tied: From Start to v1.1

Wed Apr 11

  • Adding cc2d files. Adding shell project for GuelphJam3.

Sun Apr 15

  • Background renders.
  • Drawing dirt.
  • Adding some flowers
  • Starting condition.
  • You can draw flowers.
  • Lose condition
  • art & sounds
  • Broken attempt at 2 touches
  • Multitouch mostly works. There’s some buggy behaviour, but it’s somewhat playable.

Original Prototype created for Guelph Game Jam 3 (Apr 15, 2012).

Fri Apr 27

  • New artwork. Removing 2nd touch for now for testing in sim.

Mon Apr 30

  • New artwork, start of json data implementation.
  • Passing level data through to the game scene, but not using it yet.
  • Added triply animation to the stripes…not sure if it’ll stay or not…
  • Experimenting with changing the speed of the frame animations on the fly.
  • Crazy colour anim experiment.
  • Fixing size values used for the experimentatl animations

Tue May 1

  • Tying the animations to the percentage complete. Tying the colour animations to the colours of the touches.
  • Doing a bit of refactoring to set up for tracking touch history.

Wed May 2

  • Limiting how much of the screen fills with colour.
  • Committing for posterity: Trying out a moving stripes colour animation. WAY too distracting.
  • Loading all the level data from the json file and using it to build the starting conditions for the level.
  • Tying touch index to the start point index, instead of the order you touched the screen.
  • Fixing a lot of problems with the multi-touch handling logic.
  • Adding a separated level. Fixing some of the math that a split level exposed.

Fri May 4

  • Properly handling highlight state updating.
  • Fixing bugs in multi-touch
  • Fixing ending the level if you work yourself into a corner.
  • Fixing starting presses logic.
  • More multitouch fixes.
  • More multitouch fixes. Multitouch *seems* to be working like I expect it to now? Hopefully…
  • Added a four touch level. It’s showing some weird behaviour starting the level, though…
  • Fixing a bug where all starting fingers needed to happen without any movement.
  • Added spin animation to show history.

Sat May 5

  • Splitting the game scene up into play/edit classes in prep for an editor.

Mon May 7

  • Getting the main editor UI flow working.
  • Adding start highlight markers so you can see which fingers are active on start.
  • Adding easing equations to the animations for little tweaks.
  • Refactoring some code, and fixing a bug that would allow multiple touches to start in the same tile in editor mode.
  • Improving the editor start touch stuff. Fixing some bugs in the multi-touch stuff in the editor start stuff.
  • You can now draw your areas in editor mode.
  • Handling end tiles in editor.
  • Unhighlighting in editor after done editing.
  • Starting to work on generating level data from the editor.
  • Fixing a bug where you could take your finger off the ipad once you had no more options to move without ending the level.
  • Working on more level data output.
  • Start/end points exporting.
  • Writing the tile histories to the json data.

Tue May 8

  • Fixing a bug where you could move your finger around (without lifting it) once you’d backed yourself into a corner with one finger. Now you can’t.
  • Adding some rough sfx for select/cancel.
  • Starting to rough out the UI flow.
  • Colour theme support/implementation added.
  • Changing the history animation so that it only starts once the whole previous anim has finished.
  • Adding some transitions to the FE screens.

Wed May 9

  • New buttons in the play menu, and pagination now. Yay!
  • Copying the play menu code into the level editor menu.
  • Adding ability to delete levels created with the editor.

Sun May 27

  • UI mockups file.

Wed May 30

  • Lots of UI mockups and colour changes.
  • UI mockups and font projects.
  • Starting to work on the new front end. NOTE: You CAN NOT launch the game in this build. I removed some art from the texture atlases, so we get crashes going into the sub-menus for now.
UI Mockups:


Fri Jun 1

  • Playing around with a texture applied to the game in the UI mockups.
  • Solid implementation of the square button.
  • fonts galore!
  • Setting the clear colour to magenta to make it obvious where I’m not drawing.
  • Making the BM font label pay attention to padding values.
  • Default colours.
  • Adding fonts to project file.
  • Main menu buttons hooked up. New fonts in.
  • Some quick fixes to stop the missing art crashes in the play/editor menus.

Mon Jun 4

  • Switching the FE implementation around so that screens aren’t scenes, they’re nodes. WARNING: This build crashes if you go passed the Main Menu then try to get back to it.
  • Font padding tweaks.
  • Playing with a “stamped ink” effect over the screen.
  • Screenshots.
  • Converting all the remaining screens to the new class format to get rid of the crashes. Also handling the colour changes better.

The style of the game is starting to come together.

Tue Jun 5

  • Refactoring FE “scenes” to “screens”. Setting up zOrder on tiles so that they mask the FE contents. Reworking the Main Menu squares to centre anchors so they can be scaled for intro animation nicely.
  • Main menu intro animation, but also broke screen-to-screen transitions somehow…
  • tweaking spacing on sd-font
  • Fix for broken MM buttons
  • MM outro anim (for now). Also put in temp code for other screens to handle exit properly now that the hack code isn’t in the base class.
  • Tweaking MM anims
  • Play menu. Setting it up for the 4 finger buttons. Just animating them in and out right now. Set up a back button for all screens, managed by the FrontEndScene.

Wed Jun 6

  • Switched MM animations to move-based instead of scale-based
  • Disabling input during screen transitions. Disabling multitouch in the FE.
  • Adding text and finger icons to the play menu buttons
  • Changing the back button’s highlight colour when the theme is changed.
  • Hooking the play menu up to load the level select screen and pass a variable that tells it which file it should load (not used yet).
  • Changing the squarebutton to use standard touch delegate instead of targetted, so that I can get it to play nice with the scroll node. Starting the scroll node implementation.
  • More work on the scroll node.

Thu Jun 7

  • Non-dragging scroll works.
  • End bounce working.
  • Cancelling input to children of a scroll node once movement starts.
  • Fixing the case where the innersize was smaller than the viewsize. It was causing weird bounce behaviour.
  • Fixing gaps between scroll view elements by setting “Extrude” to 1 in TexturePacker. Setting 2D projection.
  • Better spacing on the 40pt font
  • Working on the level select screen.
  • Hooking the level select buttons up to the game to launch the appropriate level. Fixing a crash that resulted.
  • Font spacing
  • Adding more things to the level select buttons.

Fri Jun 8

  • New editor UI screens implemented. Main FE flows now working.
  • Lots of new colour schemes, mockups, things tried, fonts. Progress with visual style!
  • Tweaking position of screen titles for new font.

Main Menu design is largely what shipped, though obviously with different colours.

Tue Jun 12

  • ASL fonts and new UI designs.
  • Adding ASL letters to MM
  • Swapping finger icons on Play Menu for new ASL font.
  • New ASL font and layout in Level Select screen.
  • Playing with title text colours…
  • Applying text colour to a few labels in the level select screen that were missing it.
  • Adding a whole bunch of new colour themes.

New colour palette is in the game.

Wed Jun 13

  • Splitting levels into their respective json files based on num fingers used. Adding a bunch of new levels.
  • Create now launches straight into the level editor. Adding a “My Levels” button to the Play Menu. New animations for the Play Menu. Quitting to appropriate FE screen from inside the game now.
  • saving some level editor json files.
  • Fixing bug in level select where extra row of space would show up in scroll view when even number of levels present.
  • Bug fix: colour animation was kicking in full-blast if you sat at 25% completion
  • Bug fix: you could move a finger onto an end point that wasn’t appropriate for that finger
  • Adding a one-tile buffer around the play area for the “audience” animations
  • Bug fix: resetting tiles to the background colour (instead of white) when stopping the colour anim. Also tweaking the math that calculates how much of the screen to use for the anim to take into account the new buffer around the play area.
  • bug fix: flicker on startup. failure animation (breaking glass) added. added a buffer to touches so the game feels a bit more forgiving.
  • Failure anim only plays on tiles playing colour anims.

Fri Jun 15

  • New start/end point art
  • Switching the start/end icons. Playing with the colour/lines animations to make them come in sooner, appear right away as the user completes the level. This makes the tiles dropping off feel a lot cooler.
  • Save implemented for percent complete progress on both built-in levels and created levels. Also painting the preview using the background colour.

Tue Jun 19

  • Hooking up the Testflight SDK and adding some checkpoints.
  • Adding a few more one-finger levels
  • Tuning FE animations.

Wed Jun 20

  • Adding in scroll-to animation functionality to the scrollnode class.
  • Limiting the level creation area to a 12×12 centred grid. This gives room for UI elements that are guaranteed not to overlap gameplay area.
  • Colour palette inspiration from wes anderson movies
  • Creating new button class. Replacing the back btns with the new btn class to make sure it works.
  • Converting the custom buttons to use selectors instead of delegates. Changing all relevant code. Added a temp “back” button to the game that returns you to the FE immediately. This will become the pause button.
  • Removing several unneeded source files.
  • Starting work on the pause screen class. Cleaning up a bunch of compile errors.

Thu Jun 21

  • Removing the stars hand and percentage complete when user hasn’t completed the level.
  • New pause button art. New art and positioning code for the stars on the level select screen.
  • Functional pause menu. Needs some new fonts. Needs intro/outro animations.
  • Pause menu for main game play complete?

Fri Jun 22

  • WIP: Batching tile draw calls. NOTE: FE is currently broken as the background tiles render in front of the FE buttons.
  • Changing the tile default bg to be the on-square with a colour tint as a lighter version of the bg colour. This looks really nice when the tiles fall away on failure.
  • Fixing the FE drawing by splitting the tiles in the bg out into a separate batch node.
  • Adding classes for the other soon-to-be in-game menus. Hooked the existing pause menu up in the editor scene.
  • Building new post-level-play menus. Buttons all quit for now.
  • Level retry implemented.
  • Fixing a couple of compiler warnings causes by method name changes.
  • Implementation for the post-edit menu.
  • Adding a new, really hard, 3-finger level.

Wed Jul 4

  • New created levels.

Mon Jul 16

  • Most of the failure cases are displaying the fail point (except back-tracking). Build Target renamed to “FingerTied”. Game display name now “Finger Tied”.
  • Handling showing the failure marker for backing up over a tile already added to the path.
  • Adding an animation to the failure point sprite.
  • Splitting fail point sprite into two sprites, that can be colour tinted…though not sure how to get the colours to them properly, yet…

Tue Jul 17

  • Tinting the fail point to be in the same colour family as the touch that caused the failure. Doing conversion to HSL so I can adjust the brightness.
  • Saving a few new created levels.
  • Reskinned the editor “how many fingers” menu.
  • Starting working on the tutorial.

Wed Jul 18

  • Lots of work on tutorial system. You can launch it now and run through the tutorials. A bunch of bugs to do with retry levels, or actually finishing the tutorial, though.
  • Fixing some colours in the tutorial post screen.

Fri Jul 20

  • Checking in progress on the tutorial, but I’m about to rip it out.
  • Removing all tutorial code.
  • Pulsing all the starting points to make it more obvious that you have to touch them. To do this meant switching the main game atlas to an anti-aliased texture…no side-effects so far…
  • Tweaking start tile pulse anim time. Adding a pulse to the end points once all start points are activated.
  • Displaying a reason message for failure and reworking the success message for when I have timing working.
  • Implementing the “next” button on post-game screens.

Mon Jul 23

  • Removing “next” from the play fail screen. Timing levels and displaying the time in the success screen. Times are not saved yet.
  • Tutorial levels json file. New screenshot.
  • Saving and retrieving per-level best scores.
  • Changing time format strings. Displaying total time for a level pack if the whole pack of levels is completed.
  • Fixing some labels that weren’t using the same naming convetion as other places.
  • Adding the tutorial levels to the start of the various level packs.
  • Saving the scores for the user created levels properly by adding a -1 score when the level is created to the NSUserDefaults.
  • Bug fix: levels with start/end point on the same tile would show the failure marker even though level had been properly completed.
  • Hiding pause button when pause/postgame menus are up.
  • Adding a whole bunch of created levels to the appropriate level packs. These are NOT in any particular order yet.
  • Fixing missing comma in one of the level files.

Post Game screen. It’s becoming clear that lanscape orientation is becoming problematic.

Tue Jul 24

  • Bug fix: changing colour theme would reset all the tiles in the FE so the black background would disappear.
  • Fixing font spacing for non-retina chunk 18pt.
  • Disabling the fps counter.
  • Adding temp app icon so testers have something to see at least.
  • Better testflight beta tracking points. Anonymizing TF tracking data.
  • Reordered all level packs based on some difficulty testing play-throughs.

Wed Jul 25

  • Various project/code changes readying the first tester build.
  • Making the available tiles highlight significantly more subtle, as it was confusing some testers.
  • Trying a new version of the play menu that shows two hands instead of single hands for multi-finger level packs.
  • Working on a popup message for multitasking gestures warning. Works when returning to gameplay, but not if the game is quit while it’s in the background…
  • Multitasking Gesture warning is implemented. It gets stored that a gesture was made and displays a message next time a 4-finger level is launched.

Fri Jul 27

  • Adding random tips to the menus.
  • Increasing the fudge factor by a few pixels to make it a bit easier to larger fingered players.
  • Wasn’t comfortable with how much I increased the fudge factor. Slight decrease.
  • Applying a fade to the non-active start/end pieces. So end pieces start faded, then start pieces fade out once all active.
  • Removing testflight SDK, adding Flurry for beta testing analytics.
  • Tweaking some tips wording.
  • Post-level screenshots for doing mockups.
  • Conversion to Portrait mode, step 1: Front End
  • Portrait step 2: post-level screen and pause button.
  • Portrait step 3: level editor.

Game has been reworked to render in portrait orientation, making everything better.

Mon Jul 30

  • Better flurry event names.
  • Adding first pass at music loop to the game.
  • Disabling the history animation during gameplay and playing it as soon as the user finishes a level instead. Several testers mentioned the animation was confusing/distracting during gameplay. This feels much nicer.
  • Applying the stripe animation to all FE tiles.
  • Adding some interactivity on the menus. Touching the background tiles plays a one-time colour tint animation.
  • Attempt at new finger icons for the play menu, but I don’t like them. Checking them in, but will be removing them.
  • Reverting to the ASL letters on the Play Menu screen.
  • Fixing an animation in the Main Menu. One of the squares was sliding in slightly faster than an adjacent square.
  • You can set mandatory and directional tiles and they render properly. There’s no UI and the values aren’t stored yet, but you can draw them.
  • New music loop from the composer. No sax.
  • Bunch of artwork that needed adding.

Tue Jul 31

  • Created new flurry api key.
  • Special tiles can be saved and loaded from json data.
  • Making the square button class toggle-able.
  • Adding top menu for the post edit screen that has buttons for directionality and mandatory tiles. Buttons do nothing yet.
  • Exposing whether the square button is on/not on as a property. Allowing other code to set the state of a square button.
  • Post edit UI hooked up and functional. Allows full creation of levels with special tiles.
  • Gameplay now has rules for special tiles. However, failure reasons not implemented yet.
  • Adding all the logic to detect new failure reasons: diagonals, directionals, mandatory colours, slipped end points, and a catch-all. Adding help text to the failure screen for the new cases.
  • Bug fix: post editor screen wasn’t dismissing properly when Erasing or Quitting

Wed Aug 1

  • Removing the upside down screen title text (doesn’t work in portrait) and moving the tip text up into its place. Shortening the tip text (and adding some new tips) so that they fit into the new space next to the back button.
  • Tweaking the sizes of the mandatory square markers. MUCH nicer now that they all feel the same size.
  • Removing unused iPhone icon sizes.
  • Adding some temp code to kill any level progress save data for this version because the level ordering will change.
  • Fixing button order dismiss for fail screen.
  • Upping version number to 0.2
  • Not sure what’s changed in this PSD, but checking it in.
  • Adding new levels with special tiles to the level sets.
  • I had broken the FE when switching colour themes during the switch to portrait. Fixing.
  • v0.2 build sent to Testflight.

Fri Aug 31

  • Latest music loop. GameCenter implementation (no icon in main menu yet).
  • Latest adhoc build.
  • Game Center leaderboard icon art.
  • Custom game center icon added to the main menu.
  • Disabling the GC icon on the MM when the player isn’t authenticated. Also, setting up a notification to the MM to let it know when the state has changed, so that it can enable/disable based on the async event.

Tue Sep 4

  • Adding the “More Games” popup.
  • Replaced the AAC music loop with an AAC-compressed CAF file. This eliminates the stutter when looping.
  • Build the UI for the Options screen. Still needs to be connected to things…
  • Hooking up a few of the options menu items.

Thu Sep 6

  • Adding icons for the music/sfx controls in the options menu. Properly updating them based on state. Initializing music/sfx on launch based on saved states.
  • Uncompressed WAVs for the various versions of the music loops.
  • Credits screen implementation. Needs final credits list.
  • Adding particle effect on level completion. Needs tweaking, but looks pretty good so far.

Fri Sep 7

  • Finished tweaking the level complete particle system.
  • Various screenshots.
  • Improving the “fail” icon animation. Is much more obvious now, which should help people recognize a fail state has occurred when playing.
  • First pass at a “select” found effect. Still a bit too loud, but a good start.
  • Tweaked volume on the select sfx. Added new “back” sfx. Changed the button class to expose the sound it plays on trigger.
  • First attempt as lose SFX.
  • Fixing bug where launching in upsidedown portrait didn’t launch in proper orientation. Upping version to 0.3
  • Changes to credits.
  • Fixing bug where returning to game from multitasking to a FE screen outside the MM caused a crash because it wasn’t cleaning up its NSNotificationCenter registration.
  • Some new screenshots.

Mon Sep 10

  • Bug fix: leaving a directional from the wrong edge generated an “incomplete” fail state instead of a “directional” fail state.
  • Bug fix: if finger 1 is stationary and finger 2 boxes finger 1 in, the game didn’t end.
  • Final music track!
  • First pass at COMPLETE LEVEL REORGANISATION. UI still needs work, and level progression needs extensive play testing.

Tue Sep 11

  • Adding additional “trumpet” particle systems to the sides of the screen. Had to convert blend mode back to additive after discovering I was using an invalid blend fun parameter in previous blend.
  • Only playing the new side-of-screen fanfare particles if you set a new record on a level. Otherwise you just get the end points bursts.
  • Bug fix: Game would slow down significantly the longer you played it. Discovered the post-puzzle screens weren’t being cleaned up, so were still be rendered and reallocated every time you finished a puzzle. Eventually caused massive slow down. Now being cleaned up properly.
  • Improved the handling of mandatory and directional tiles. These could produce “blocked” fail messages, which were confusing. Now lets the user move incorrectly onto them first so that they get a more useful fail message.
  • Starting to reorg the layout of the level select buttons.
  • Finished new layout for the level select screen.
  • Two-pixel tweak the positioning of text on the level select screen.

Final layout of the Level Select menus.

Wed Sep 12

  • New stars art. Positioning stars. NOTE: this build displays random stars for every level, just for positioning testing.
  • Only displaying stars in the level select screen if you’ve completed a level, and displaying the correct star based on the par times.
  • Par times for beginner levels
  • Displaying target times on post-level success screen.
  • Adding animated star awarded for your current time. Fixing case where 3rd significant digit would prevent you from winning a star.
  • Par times for easy levels.

Thu Sep 13

  • Only showing the goal stars above what you just earned. So you just got silver, it only shows you the gold target time.
  • Post game screenshot.

Fri Sep 14

  • Adding the star target times to the play fail screen.
  • Making the centre of the screen tappable to restart on fail. Has a 0.5s delay before activating to try to prevent mistaken triggering at the end of a level.
  • Allowing user music to play instead of game’s music.
  • Par times for Medium and Hard. Rearranged a couple of levels.
  • Bug fix: double play music on startup.

Mon Sep 17

  • Returning the play menu screen to use single-handed icons for different difficulty packs.
  • Adding trash can buttons to the level select screen when viewing your created levels (but they don’t actually delete yet).
  • Converting the SquareButton to use either standard or targeted touch. Adding new input blocker class. Adding popup for delete confirmation to the level select screen. Delete still not actually being done.
  • Actually deleting levels and their associated save data!
  • Touching up the font bitmaps: fixing holes and funny spikes.
  • Updating music/sound credit.
  • New launch screen.

Tue Sep 18

  • Locking level sets until prev set has 10 levels completed. Added lock icons and lock explanation text that fades in when a locked button is pressed. Reworded the “incomplete” text to show how many levels have been completed.
  • Adding a compile-time cheat to allow me to unlock all the level packs.
  • Displaying stars for each level pack on the Play menu. Displays the star for the lowest star level you’ve got across all the levels in the pack.
  • New tips.

Fri Sep 21

  • LOTS of work on the icon.
  • Lots of new icon art, including final icon designs!
  • Copying final icons into the project.
  • Adding first pass at SFX files. Adding in hookups for the FE sounds.
  • In-game sound hookups for first pass SFX.

Sat Sep 22

  • Applying a tiny random pitch to the soundOn SFX so that they give a bunch of really subtle variation in the sound.

Mon Sep 24

  • Adding promo popup code in case I ever need it.
  • Some screenshots
  • New SFX files.

Tue Sep 25

  • Bug fix: side particle effects systems were not cleaning up on restart. Resulted in big slow downs on iPad 1 after playing many levels.
  • Adding SFX hooks to the editor for edit start and end.
  • Some new raw level files.
  • Tweaked SFX files.
  • Icon design progression image.
  • Final raw SFX from audio guy.
  • Increasing default capacity of sprite batch nodes since they were overfilled every time, which caused a realloc.
  • Adding in final levels and doing some removal and rearranging for difficulty tuning. No par times for new levels yet.
  • Created levels.
  • Tweaking the character padding on the 18pt font for non-retina iPads, as it was rendering too wide in the UI.
  • Fixing some buggy behaviour in the scroll node. Touching it wasn’t stopping an scroll in progress. And performance dips on 1st gen iPad would cause really messed up behaviour because of where the dt was being used.

Evolution of the icon design.

Fri Sep 28

  • Made the silver/gold targets for beginner levels easier to achieve.
  • Fixing float rounding display bug on the play success screen and level select menu.
  • Tuning target times for all easy levels.
  • Tuned the Medium difficulty target times.
  • Replaced accidental dupe level. Tuned target times on Hard up to level 28.
  • Finishing the tuning of the hard level target times.
  • Tweaking the ‘tap to retry’ time on the fail screen. Needed to be slightly shorter delay.
  • Bug fix: Disabling input to the game when the pause menu is up. Also disabling the pause button while fingers are playing a puzzle.
  • Bug fix: play menu lock text was displaying incorrect instructions (wrong level pack name displayed)
  • Upping project to v1.0 in preparation for submission.
  • Upping reset value to 1.0 so it resets beta testers’ builds because all levels were reordered.
  • Rewording some tips text.
  • More levels exported from ipad.
  • xcode scheme file changed?
  • Release Candidate ad hoc IPA.
  • Thanks sections added to Credits screen.

Sat Sep 29

  • Adding help message for players to the My Levels screen if they haven’t created any levels yet.
  • Removing a bunch of unnecessary flurry events.
  • Repositioning the multitouch gesture popup for portrait layout.
  • Pointing the twitter button to the new @FingerTiedGame account.
  • First draft of app store description.

Sun Sep 30

  • App store screenshots.
  • Updated description and keywords.
  • Screenshots PSD file.

Tue Oct 9

  • FT description updates.
  • PressKit WIP
Thu Oct 18
  • Launch Day!

Fri Oct 19

  • Displaying Multitasking Gestures popup *as soon* as a gesture is detected, instead of on next launch. Should help with people getting confused.
  • Sound files show as modified, but not sure why. They appear to be correct, so maybe I forgot to check them in?
  • Lots of finger tied ads and screenshots.
  • A whole whack of screenshots.
  • Archived builds.
  • Latest changes to the FT app description.

Wed Oct 24

  • Added Parse framework and started working on level sharing. Realized how huge this is going to be. Going to set this aside for now and come back to it later.
  • FT description changes.
  • Created an iPhone target. Builds and deploys, ready to start work on iPhone version.

Fri Oct 26

  • Main menu converted. Loading iPhone textures. I think I found a good size for the tiles, but it’s hard to tell yet.
  • Rough pass at Play menu for iphone. Functional, but not pretty.
  • Level select screen working on iPhone. Editor basic functionality working (but not UI)
  • Working on the editor post edit screen for iPhone.

Mon Oct 29

  • Editor post screen layout works, but still needs tweaking.
  • Better layout on the editor post screen.
  • Pause menu updated for iPhone
  • Play fail screen for iPhone.
  • Success screen for iPhone

Tue Oct 30

  • Centering the completion time lbl on success screen when no star to render (iPhone)
  • Duplicating the levels json files and splitting them into iPhone/iPad folders. And apparently I forgot to
  • Options screen for iPhone
  • Credits screen for iphone.
  • TexturePacker 3.0 file for the game atlas.
  • Better layout for play menu screen (iphone) and intro/outro anims
  • Splitting tips into iPad/iPhone. Customizing iPhone tips. Reducing tip display time from 10 to 7s.
  • Some first iPhone level designs.
  • Adding button for 4 fingers in the editor for iPhone.
  • More iPhone levels.

Wed Oct 31

  • Temporarily putting all created levels into Beginner so I can send an iPhone build to testers.
  • Fixing the More Game popup for iPhone.
  • Changes to prep a test build for iPhone.

Fri Nov 2

  • scheme files.
  • Some debug code that forces the iPad build to run at iPad Mini size. Committing inactive.
  • Fixing a few UI glitches introduced to iPad code during iPhone porting.

Tue Nov 6

  • Adding “more levels” button to the main menu.
  • Stubbed out the more level screen.

Fri Nov 9

  • Working on level sharing stuff. Built a popup widget I can use for general popup messages now. Converted the level select screen to use the new popup. Adding Parse code back in.

Tue Nov 20

  • GC sign in popup when trying to share a level if not signed in.
  • A whole whack of Finger Tied related files. Not sure why some are marked as modified, but checking ’em in.
  • Uploading levels and tying them to a player object works. Tracks which levels have been uploaded. Does not handle the errors well yet.
  • Starting to work on loading “more levels” data from parse server.

Mon Nov 26

  • More Levels screen properly loading/closing without generating extra buttons.
  • Added buttons for filtering results with stubbed out calls.
  • Implemented 3 of the 4 queries we want for filtering. Search needs more UI. No caching yet.

Wed Nov 28

  • Displaying search UI in more levels. Non-functional yet. Textfield needs property tweaking too.
  • Properly positioned/sized search field. Not doing proper attributes yet.
  • Proper text field attribute settings.
  • Two search fields now. Search works.
  • Caching the queries. Handling network failures nicely. Canceling queries when moving between filters.
  • Adding a constant upward counter for created levels. Renaming levels player has already created to conform to the new system on first boot after update. Adding proper level naming to editor code.
  • Killing active queries when leaving the more levels screen.

Fri Nov 30

  • Built the popup menu for settings on the My Level screen. Upload/delete now done via this popup.
  • Bringing up a popup when a level is selected in the More Levels screen. Buttons just call callbacks, but don’t do anything yet.
  • Fixing a bug where the game became unresponsive if you closed the keyboard from the search page and attempted to back out of the screen. Also added some text to the screen in cases where no results are returned from the server.
  • Likes and Reports working. Game auto-ignores any levels with 3 or more reports.
  • Implementing the download button in the More Levels screen. Though you can’t actually view the levels anywhere.

Sat Dec 1

  • Adding a downloads screen, and a button to the play menu. Seems to be a crash trying to save best time on downloaded level. May be bad data in the NSUserDefaults? Need to update the level buttons in More Levels screen to use the new font/level name stuff from Downloads screen.

Sun Dec 2

  • Fixing the crash after completing a downloaded level. Handling deleting best times on downloaded levels properly.
  • Displaying proper levels names for More Levels screen. Displaying # likes on More Levels. Fixing some bugs with incorrect Setttings displays.

Mon Dec 3

  • Implementing pagination of search results.
  • Displaying a “loading” animation when a query is running.
  • Displaying game center message to user when going to “my levels” sub-screen. Shrinking button text on the FEPopup slightly to accomodate slightly longer text.
  • Displaying network errors as popups in More Levels. Fixing a bug where some queries weren’t being cancelled.
  • Fixing a bug in the More Levels where rapid tapping would result in a duplicate copy of the level data.
  • Fixing a bug where tapping the Refresh button when search boxes were showing caused a crash.
  • New settings button art.
  • Implementing deletion of shared levels.
  • Fixing a bunch of potential crashes. Better network error handling and display. Not displaying Like/Report buttons if already liked/reported. Displaying proper level names in popups.
  • Created new art for more levels filter buttons (but they’re not in-game yet). Removing some unused art from the atlas.

Tue Dec 4

  • Added icons to the filter buttons for More Levels screen.
  • Delete/settings popups on My Levels were showing incorrect level name.
  • Adding delete confirmation when deleting uploaded levels. Making popup msg scale to fit text that’s too long. Fixing some calls to open vertical popups that were displaying level name incorrectly.
  • Adding instructional popups on upload/download telling the player where to find the levels.
  • Ordering the user level’s query by creation time so they see their most recent uploads first.
  • Adding a “new” icon to the More Levels button on the main menu that disappears once clicked.
  • Improving the promo system so I can show popups with users with specific builds. Will be used so I can show players who haven’t updated a popup announcing the update.
  • Upping the build version to 1.1.
  • Parse requires iOS 5.0 or higher, so upping the min supported version to 5.0 from 4.3.
  • Adding version (read from info.plist) to the credits. Pointing the twitter button to my own account instead of the FingerTiedGame account.
  • WIP: Level sharing and custom URLs.

Wed Dec 5

  • Handling custom URLs to load into the search page properly.
  • iOS 5 pasteboard sharing.
  • New splash screen.
  • Doing proper copying to pasteboard for iOS5 (previous version wouldn’t copy both text and images).
  • Removing the level id search box. Making the level sharing shorten the fingertied level link with tinyurl. Made it async so it doesn’t hang things.

Fri Dec 7

  • 1.1 build and what’s new notes.