About Canyon (twitter: @james_a_forbes)

Hi my name is Canyon. I'm a programmer and musician from Melbourne, Australia. Ludum Dare is one of the best sectors of the internet.


Ludum Dare 31
Ludum Dare 30
Ludum Dare 29
Ludum Dare 28
Ludum Dare 27
Ludum Dare 26
Ludum Dare 25
Ludum Dare 24
Ludum Dare 22

Canyon's Trophies

Canyon's Archive

Precipice: Post Mortem – Entity Component System Library

Posted by (twitter: @james_a_forbes)
Saturday, August 30th, 2014 6:06 am

Here are some links:

Play | Rate

Short version:

The jam went well, because I because of a library I made called e – which is a functional Entity Component System library in Javascript and because I knew my limitations. But if I had have slept more, I would have got a lot more done, instead of staring at my screen for 10 hours like a zombie.

Choose your battles:

Before I started I already had two ideas that I wanted to try.  The first was a top down stealth game, the second was an arcade minimal touch shooter.

I decided against the top down stealth game because I didn’t have a lot of experience with path finding, and AI.  And if I was going to do that game justice I would probably need more than 48 hours to complete it.  A few Ludum Dare’s ago, I wouldn’t have made that decision, I would have just gone for it and missed the target.  So I am happy that I am more aware of my limitations and what I can reasonably achieve – that means I am definitely learning.

The touch arcade idea was a lot more pure than what I ended up with.  Retrospectively, I think I simplified it because it was harder to communicate exactly how those mechanics were going to work, without iterating constantly.  So I made a more conventional game.  I will definitely revisit the original idea, but the idea is so abstract that, again, trying out wasn’t going to do it justice.

As I am writing this, I can hear a devils advocate’s position, which is: I shouldn’t be aiming to make a more “complete” game, I should be following my instincts.  And I am very aware of that perspective, but I think it is actually more balanced for me to think in the “finish something” mindset for the next few jams.  Because honestly, if I make any more half baked prototypes, I would probably burn myself out.

The more jams I do, the more I understand that I have so much more to learn.  The more I come up against my own limits, and just choosing one weakness to focus on and improve is more productive for me, than learning on all fronts and not making any progress.  Life is short, and you really only get to make so many things in life.

That all said, this jam went pretty swimmingly and here’s why.

Why did it go so well?

I stumbled across Entity Component Systems 6 months ago, and I’ve had enough time to allow my head to get around the concepts.  I did a lot of research and read everything I could find on the topic, and often came up against a lot of bad advice.

I ended up writing a library, which I call ethat has completely changed how I work, and made my jam code very neat and extendable.

In fact, there is nothing I would really change about the existing code, which challenges the myth of prototype code needing to be redone for production.

After working as programmer for a few years now, on fairly large projects, I am more familiar with the tools and having great tools really helps.

I tracked down this horrible collision bug using the Chrome debugger, I hosted my game using the gh-pages of github and I used Light Table to be able to inject changes to my game code without refreshing the page.  All in all, it was fairly joyful.

What went wrong?

There was a stretch of 10 hours at the end of the jam, where I just was completely unproductive due to being so tired.  I should have slept for 2 hours and came back.  It would have made the game so much better.  And because I was so tired I stopped working on the game 4 hours before I needed to.

That time could have been spent on a tutorial, different levels, better animations, a menu system you name it.  Sleep is important.


So far I have had a great time judging games, and I would like to a round up of my favourites so far.  I’d also like to do a post on why this library was so great.




I’m in (obvi)

Posted by (twitter: @james_a_forbes)
Friday, August 22nd, 2014 6:01 am

Ludum Dare is one of the most wonderful things and as always I am honoured to be a part of it and grateful that it exists.

I’ll probably be using the following tools:

– BFXR for sound, maybe garage band depending on the game
– Pickle for sprites
Frame.js for animating the sprites
e.js for the Entity Component System
– Sublime Text / Light Table for an editing the code
– Javascript + Canvas
– Chronolapse for the Timelapse

I released Frame.js and e.js today so my brother could use them for his first Ludum Dare. I’ve used Frame for 4 or 5 jams and it is an absolute pleasure as long as you can keep all your spritesheet as a single row.

e.js is a newer library I wrote that I’ve been using more recently. It is untested in a jam except for previous rushed entry. But I have used it for lots of little projects through the year and it has changed the way I think and work.

I’ll probably use the result of this game jam as the code example for both libraries.

Good luck to you all!  So excited!

Postmortem “InVS” or How I didn’t learn Flash Punk.

Posted by (twitter: @james_a_forbes)
Monday, April 29th, 2013 12:32 am



Before I get into the Post Mortem I’ll introduce the game itself.

I made a game this Ludum Dare called InVS (pronounced inverse).

You can play/rate the game at this universal resource locator.


On with the show…


I’ve been pretty slack these past few Ludum Dares.  2 Ludum Dares ago I made a game called Tree.  Many people said it was not a game, more an interactive experiment, or a toy, or an amusement.  I seem to have a different definition of game.

I had many ideas for Tree and I ran out of time.  I cut the “game” part out of the game and it became simply an application that let you draw trees.  There was no goal or missions or quest or win condition.  But you can play with it.   And it was released with the intention of the player whimsically crafting a tree, unburdened by a score or a purpose.

The game is actually better that way.  The game I had originally intended to make had more hooks, was probably more fun, possible addictive.  It was going to be a micro management game, where branches, leaves, fruit etc cost resources and leaves collect resources.

But once I could draw the tree by forking branches, that was actually more interesting in it’s simplicity.  The expectations of a game possibly ruins Tree.   Playing tree is like playing with your food or your hair.  Noodling.

Is it a waste of time to try to define abstract concepts?  I am interested in games that are toy universes, so that when the system is understood by the player they can explore a mathematical truth that is not defined by words but actions and interactions.










Because of this, most game projects I have worked on have been procedural in nature.  I like the idea that InVS is 26Kb, that the sound and graphics are produced from the same logic that powers the interaction.  When I work on games now I try to remove distractions and just represent the system as best as I can.

I thought my simple geometric graphics were a crutch though.  I have started lots of projects and not finished many.  So this Ludum Dare I decided to use FlashPunk for the first time.  The theory was that if I use a framework I could spend more time on the game design and less time on the “boring bits”.


The theme was minimalism and I began to type any ideas that came to my head.  My initial idea was a:

Fascist Dictatorship that enforces Minimalism where it makes no sense.

Plot Concept:
Destroys anything organic or natural

“I had a dream! That the world was designed! That everything was logical!
That everything was beautiful. There was no chaos! There was just black, white aluminum.
and buttonless surfaces.”

“Even when we destroy chaos, we do it beautifully.”

“Nature can be beautiful but nature is also disease”

“Wipe out the beasts, the plants, the inconsistent and the strange.”

Game mechanics:

As you win the background becomes more citylike and minimalist.

When you die your body turns to grey and forms a wall that the nature has to breakthrough to move in your direction.
Game is like a tug of war. You can lose, nature can win. But you can also wipe out nature.

Painterly chaotic (Jerry’s Map) vs Organised Pixels
Grid vs Non-Grid
… Sketching …

Designs for Fascist units
Vector, Smooth

Design for nature/chaos
PASTICHE! Paper sketches, Paint.NET, Photographs, Procedural Graphics/Colours




The idea was to procedurally generate the race that was obsessed with simplicity, design and minimalism.  They would have clean hard lines.  And they would wipe out the organic, random natural world.  I thought I’d create nature out of mixed media and somehow roll it into Flashpunk.  You would have a contrast of art styles for each side.

Oddly enough I never drew one organic creature.  I did all the art for the above characters procedurally in Flash.  The real battle was between procedurally vector based graphics and hand painted rasters.  And procedural won.  I scratched this first game idea because the game wasn’t very interesting.  I felt it would be a game that was trying to be clever but not actually enjoyable.

The texture for the landscape were just mixed cuts of a photograph of a leaf I took.


Leaf Progress LeafMountain BG



After I gave up on that idea I had lost most of the first day.  And I had my head in my hands while my girlfriend was trying to give me ideas to make the game more interesting.  All her ideas were really cool.  But I didn’t want to add anything to the design.  I just wanted a more interesting concept.

Getting sick of Paint.NET. Wish I had Photoshop and CS5/6 Installed So I could onion skin animations.
This is so ridiculously difficult to do the simplest things. I’ve got to think of something that will let me
be quick.

I’m considering going hand drawn, cutting out pieces of paper and no animations.
It might ruin my idea, I am sick of the theme and my current idea sucks. I’m just going to get something on the screen
and iterate.

Maybe make a 2d shooter. I don’t care anymore.


Ok Completely New Idea


I started thinking about a game idea.  Something to do with deflecting bullets of opposite colours and objects changing colour when they collide.  It was vague but interesting.  That led me on the path towards this.


At this point I didn’t really know what I was making.  I didn’t have an idea as such.  I had a feeling.  I feel like I was just carving away, getting to the core of an idea.  And it was hard.  One choice on how an object interacted with another had huge repercussions for many other follow on interactions.

The name came at the  very beginning:


Two players.

Black VS White

Shield Deflects Projectiles of the Same Colour
Projectile of different colour changes the colour of the shield but passes through
You can shoot your own shield too

If you get stuck you can shoot a wall infront of you to kill yourself.

Spawn at a random spot. No score, just an end game winner. So they don’t feel punished.

4 directional Shield, Shooting
???Level shrinks with each kill?
???If the border crosses you when it moves inwards, you die.

Split Screen//Won’t implement because it might take too long.
Move on a grid of nodes

Using a shield on a node, removes the node, and the shield only lasts as long as you are not moving.

Players and projectiles wrap the map


Throughout the process I forgot the idea multiple times but in the the final game ended being very true to that original idea.


In InVS everytime you kill your opponent, the map shrinks.  As the map shrinks the pace of the game increases.

Projectiles wrap the screen, so the fact that the size of the map is decreasing effectively means you have less time to avoid

an incoming bullet.

Players can place walls around them.  Shooting a wall of the opposite colour, changes the colour of the wall.

You can walk through a wall if it is the opposite colour to yourself too.  But once you pass through, the wall changes colour.

This means it is easy to escape but escape comes with the risk of trapping yourself.

If you are hit by a projectile of your own colour, you will die, but there is no penalty other than a respawn.  The map only shrinks if you are hit by your opponents colour.

Individual games are short, anywhere between 20 secs to 4mins.

I am just rambling on and on.  I haven’t slept for 30 hours so maybe this will all make more sense tomorrow.


– Canyon

I’m in

Posted by (twitter: @james_a_forbes)
Monday, April 22nd, 2013 11:23 pm

I’m in.

This will be my first Ludum Dare living in Melbourne.

I have always done Ludum Dare in AS3 using FlashDevelop but I’d like to give JavaScript a go.

If I use JavaScript I’ll code in Sublime Text 2.

I have very little experience with coding in JS so I may chicken out and go the Flash route.

If my art isn’t procedurally generated, it will be in Paint.NET as I don’t have PhotoShop on this laptop and my tower is

still in the Mountains.

Next Ludum Dare I plan to have a different machine (most likely a Surface Pro for it i5 and Wacom Pen) and I will likely use PhotoShop a lot for that.

I have been reading a lot about NodeJS and maybe will try and package my game as an executable using NodeWebkit

I’d be very impressed with myself if I could implement some kind of networking (not gonna happen).

Very much looking forward to the jam.


Sleep now Mortem Later

Posted by (twitter: @james_a_forbes)
Monday, August 27th, 2012 7:59 am

Play/Rate the game here

Watch the timelapse here

I feel very honoured to have once again taken part in such an amazing competition.  You are all amazing!

I’m very much looking forward to writing a post mortem, but for now I just need to sleep.


A tree I made in the game!  You can make one too!

Making progress that is hard to demonstrate as a screen shot.

Posted by (twitter: @james_a_forbes)
Saturday, August 25th, 2012 3:08 am

So far on screen I have just two lines.  Two lines you can click and drag and the changes made to either is mirrored in the other.

I’m trying to make a game about trees.


I’m in!

Posted by (twitter: @james_a_forbes)
Friday, August 24th, 2012 10:10 pm

I know that the competition has already started and been going for a few hours.

But I completely forgot to do an “I’m in!” post!

This is my 2nd Ludum Dare.  I was in on LD22 and missed LD23,

which is a shame because I really liked the Tiny World theme and had an idea for it.

So I hope that is the last LD I ever miss.


I’m using a laptop without anything really installed.

So no Photoshop or Flash IDE to help with graphics, and as I’m not too familiar with GIMP or any other alternatives I am just going to generate graphics dynamically as much as possible.

Sometimes limitations like these actually help you focus!

I think I’ll be coding in AS3 and maybe adding some sound with Garage band if I can borrow a friends laptop.

It’s highly likely that I’ll use freesounds.org and BFXR.  And I am Chronolapsing as I type this.


Good luck to everyone participating!

I can’t wait to see what everyone creates.  A lot of my favourite games came from this competition.


‘First Cell’ Post Mortem

Posted by (twitter: @james_a_forbes)
Wednesday, December 21st, 2011 7:13 am

I’ve wanted to do Ludum Dare for a long time, but for one reason or another kept missing it.

This time I decided I wouldn’t miss it, no matter what happened, I would be doing LD22!

And then my brother’s wedding happened to fall on the first day of Ludum Dare.  And added aspect of complication was that I was the best man and celebrant of the wedding.
Initially I thought I couldn’t do it, I wanted to be quite ambitious with Ludum Dare and create something very polished.  But I’d most likely lose most of the weekend to the wedding and planning it.

So it inevitable I’d have to make a minimalistic, simple, procedurally generated game .

Play the game

Rate the game


Intro to First Cell


‘Alone’ is a difficult theme…

because game design is based around interaction with other entities.  It limits the possibilities of your game when you are meant to be alone.
But I also firmly believe that external limitations bring focus and help the creative process.
I was at the wedding when a friend emailed me which theme was announced.  And I had a good 12 hours before I’d be home coding.  But the entire time I couldn’t think of an idea I could complete in 24-36 hours.
But I had a game mechanic floating around in my head for a while that I had never coded, so I thought I’ll work on that idea, and if I can’t get it to work with the theme, so be it, at least I would be productive.

The mechanic:

The columns on the left are before collision, the columns on the right are after collision

The concept behind the mechanic was a system whereby shapes would morph into new shapes based on the number of corners on each shape.
In the diagram you can see that if a square hits a triangle, they simple swap, same goes for a square and a pentagon.  This is because there is only a difference of 1 in the corner count.
At the bottom of the diagram you can see that a square colliding with an octagon will result in both shapes becoming pentagons.

In essence the shapes lose or gain the difference between there corners when they collide.

But I did not know what the game was going to be, a 2d shooter? a puzzle game? an evolutionary art piece?

A similar diagram but in the case of the triangle collisions.



My workspace during the LD22 Compo

A great workspace, I came to visit my parents in the Blue Mountains for the wedding so I set up my computer //Atlas, on their dining table.

You can see the garden as you code, it’s much nicer than Sydney.

Something I ate while doing the compo.



When the reception was over I got home and started coding straight away, probably about Midnight.  I decided I’d get shape generation working first and assumed I’d figure out how to turn it into a game as I went a long.

Here is my notepad file which I used to brainstorm as I coded:

acceleration increase when collide
friction over time
interaction keeps the system going!
ENTROPY > lonely?

Initially nothing moves, but you bump into it, and it brings the world to life!

mist, and prisms!

darkness, you emit light!

when you accidentally bump into an object, it slightly illuminates and begins to move, but will 
slow down over time unless it collides with something else.

this sets of a chain reation, lighting up everything!

sounds to represent this change!

the shapes change when they collide.
You need to be a certain shape to fit through certain parts of the world

NO lighting - too hard

just use shades of flat colour.

Lighting actually easier than expected.

1.Wake up your friends
3.Become a goal shape
6.Eventually create a fish creature out of composite shapes.
7.Cell replication?

So the fish creature didn’t happen and I had a few problem with collision along the way.
I really could have benefited from setting up a simple simple engine beforehand to save me from figuring out simple issues.  Next time I’ll know and maybe try out Flashpunk or Flixel or lwjgl.

Alone – Aha Moment!

There was a moment where I realised how to make this game that was fairly interesting I literally stood up and did a dance.  It was a great feeling.


can be found here.

Gameplay Video

can be found here.
What worked, what didn’t, lessons learned.

What worked:

I like the aesthetic, I like the game mechanic, I feel the game is really fun.  It is just kind of arthouse and obscures how easy it actually is to play.

I accidentally made the game quite in depth.  Because there is a system behind the game there is possibilities to master that system, and also for emergent gameplay to arise.

Blending modes in AS3 are great.  The red glow has this brilliant effect of creating silhouettes of shapes around you, it’s almost like a sonar.  It dissipates over distance.

I really like the sudden flashes of light at the beginning of each round, combined with the thunder.  The sounds in general work very well, and even though most people didn’t understand how to play(my fault), they all seemed to enjoy the mood of the game.

I showed a few friends, and after explaining to them how it worked they contacted me later saying they have been playing it since and really like it, and that they actually find it quite addictive because it has no precise ending(muahaha!).

Blending Modes in AS3 are really powerful.


What didn’t work:

It is a dark game, it is also not a recognizable genre, it is abstract.  So that means I had to fight for the players commitment.

To see around you all you have to do is move.  The trouble is the timid uncertain players will probably not move.  It is a game where you have to remember where each shape is and navigate there quickly before the shapes change.  But that isn’t communicated, that is only observed after playing a while. If you sit there, everything will go dark and your opportunity to hit the once shape you need will escape.

I don’t like the fact that it isn’t accesible.  A few hours after the submission time I added some in game help and made the glow colour red to help differentiate the player from the other shapes.

But really the nature of the game is that it is abstract, and it is hard to have pure aesthetics and also accessibility.


Lessons learned:

Play testing is actually important?
Submit now, test later?  It doesn’t work.  If you are lucky you will get 10 reviews from users, I had 3 within the first few hours of submission.  Their feedback was great, it helped me make the game a lot better.  But they were judging the game  based on that snapshot.  Probably best to test on people that aren’t going to affect your score.  It’s good to get a friend to ask their friends what they think, they will be more brutal when they aren’t saying things to your face.

In game help is actually important!
Sure have a blurb, on your website, but a lot of people prefer to download the binaries.  People also often skip reading the help, because we always think we will understand things immediately.
Have in-game help and make it unavoidable.  I made my help context sensitive, so if the player was going well, I wouldn’t give them hints.  But I think you can take that a lot further.

Have a tutorial, or some kind of learning curve.
I really really wish I went down the route of levels designed to teach the mechanic and the concept.  I think of the first few stages of Osmos and how short that tutorial and how it so smoothly bleeds into the game.
I also think about Miyamoto saying to never blame the player if they don’t “get” your game.  It is always the game designers job to work around that, to communicate better.

Ludum Dare is more work than just the 48 hour jam.
    I am sure a lot of the veterans know this, but once you submit your game you should rate and review other peoples games.  You should probably have created a time lapse, a game play video.
You have a short period of time where you can make subtle bug fixes, so you are actually working a lot after the competition.  Uploading, testing and dealing with the consequences of doing a 48 game jam.

Assume nothing!
    I assumed that people would just assume (double assume!) that you used the arrow keys to move.  But when I tested some people tried to accelerate with space bar, some people used WASD, some people tried to use the mouse.
So I ended up adding a lot of alternate control schemes.

Uploading takes ages.
Especially  in Australia.  The site couldn’t handle the simultaneous uploads so we were given extra time.  Without that extra time I wouldn’t have made it in time.
I suggest upload your resources and other larger files early on, you will most likely only be changing source code.  Then you can upload a single zip file after the competition is over.  That way you cover all bases.



A lot of my favourite games…

are Ludum Dare games, and as a game development student I use them all the time as game design and code examples.  I tried to encourage friends and other students to participate and maybe they will next time.

I am actually honoured to have submitted a game alongside so many creative and talented people.

Shapes illuminated at the start of a round.

Thanks for reading the Post Mortem, I hope you play the game, and I wish you the best.





Play the game

Rate the game







Sleep now, mortem later.

Posted by (twitter: @james_a_forbes)
Sunday, December 18th, 2011 8:56 pm

I’m so happy I finally participated in Ludum Dare, it’s been something I’ve wanted to do for a long time.

This weekend my brother had a wedding, and I was the celebrant and also the best man.  So I was fairly busy but I managed to get the game done.

I had no idea what I was making but it came together in the end, and I’m proud of what it is.  It’s kind of zen.

It was also strange to think of the theme of ‘alone’ during a wedding, because I was surrounded by friends and family.


I made sure I still made a game, because I want to do every ludum dare from here on in, and I was worried if I make excuses this time it will be easier to make excuses later.

I made the game in 24 hours, so next Ludum Dare I will try to be more ambitious.

I’ll do a blow by (jonathan) blow analysis of the whole process when I wake up.  I’ve had no sleep all weekend so I’ll see you on the otherside.


Can’t wait to jump in and play all your games.



Hello World

Posted by (twitter: @james_a_forbes)
Tuesday, August 23rd, 2011 8:57 am

Unfortunately I only just joined up after the competition finished. But I’m very eager to participate in the next Ludum Dare
So watch this space.

[cache: storing page]