Chroma – Analysis

Posted by (twitter: @@gameXcore)
May 1st, 2013 1:46 pm

So, I have never actually wrote a post-mortem / analysis for a game, so here goes nothing!

Chroma is a marble rolling game, where you attempt to navigate a ball through randomly generated mazes themed and created to look like you are playing inside one of Piet Mondrian’s “Composition” paintings. The name Chroma “Purity or intensity of color” and is a reference to the importance of the colored zones within the game-play.


This is the second Ludum Dare I have entered, therefore I felt a knew the ropes and as a result, was somewhat complacent. I didn’t myself nearly enough time to do things in, allowing other less important things, such as visiting family come between me and my laptop! The result was that I had to fudge a few things here and there, fortunately the theme came to my rescue, what better excuse then cutting mechanics then in the name of Minimalism.

In the end my game had 5 mechanics:

  • Rotating a maze so that a ball can roll around under gravity.
  • Find and collect a key.
  • Get to the exit.
  • Jumping.
  • A limited number of lives for a level.

By the time I had submitted I kind of wished that I had cut the final two, leaving as minimal a game as possible – just the 1 mechanic.

The complete list of tools I used:

  • Visual Studio, c# & XNA.
  • Photoshop.
  • bfxr.
  • Chronolapse for recording a time-lapse video.

Post competition I used to port the game to Silverlight so that I could host a web version.



What Went Right

  • The idea! I got lucky with the theme, I had given it an up vote and a thought and knew what I wanted to make. The final game didn’t quite match original ideas but with a competition such as this, design has to evolve.
  • Work-pace, coming from a fairly hectic AAA background, a fast work-pace is second nature to me, one piece of advice I would give to anyone reading this thinking “I just cannot work fast enough”… hack, be messy, don’t worry about neatness, just get it done. If you care about code cleanliness and what people may think when they look at your code, format it once you have finished.
  • Sleep, its easy (I did it last time) to think “I’ll sit up till 3am, then get back up at 6”, in reality, you may get more hours in, but they will be of a very low quality, instead, on the Saturday night I had an early night, and a lazy morning on the Sunday, there is of course a difference, however subtle, between well-rested & lazy!
  • Realistic goals & tracking those goals, basically, if I had an idea,  I gave it a good think before doing anything with it, before heading headlong into a brick wall and losing 4 hours I would plan the whole thing, including an estimated time scale, basically what this means is lots of paper, and lots of lists!
  • Testing. It may feel like your just playing your game, but do it, and then do it some more, and be critical!
  • Recording a time-lapse video, I didn’t do this last time, I did this time, I will do it next time, it looks ace!
  • Randomly generated levels, randomly generating your levels is a great thing, it means you can have endless level and that you don’t spend half your weekend making and editor, and the other half making the levels, however…

What Went Wrong

  • Randomly generated levels! While randomly generated levels are a good thing they don’t allow you to control the learning pace of your game, I found I was throwing the player into an enormous level without a map. During the twilight hours of the weekend I very quickly threw in 3 tutorial levels which introduced the player to the game, at this point I thought all was well… not quite so! Now the players are asking, “why does the difficulty ramp up so much after level 3”.
  • No real game tutorial, in my experience players don’t read the read-me, or the “how to play” screen, they just want to dive in and learn as they go along, from my point of view I think an explicit tutorial is a bit naff, you introduce every mechanic at once, and almost immediately, the player forgets about them. The best way is to bring your mechanics in gradually, and explain them well… with reference to the above point, I didn’t achieve this. As an example, most people don’t seem to realism that the little dot points you to your goal.
  • Audio, audio is massively underrated, without graphics or code, your game is unplayable, however without audio your game is in-complete, the audio in Chroma is thrown in at the last minute and not the best it could be.
  • Physics, for a game based around rolling a physical ball, around a physical maze, my physics sucks! No more can be said on this point.

The Port

I like working with c# & XNA for a number of reasons, the main two being API familiarity, and the turnaround speed of c#, two very important factors to consider when working to a tight deadline, if you attempt to learn a new API/engine during the weekend, you are destined for failure! This approach does have its drawbacks, this is something I felt during LD25, and something I wanted to avoid for LD26, windows only games will not get played as much as web games, its a fact… I do it myself! Looking back to not attempting to learn a new API during the weekend, I went windows only, then on Monday morning decided I wanted to do a port, I stuck to the rules of keeping all functionality the same, however getting the port done was more stressful then getting the game made!

I had set myself a side-challenge for the port to have it done before the end of the jam, this left me with around 3-4 hours of programming time.

I ported to silverlight using the ExEn librarys, if a little un-documented these did the job fantastically, I would recommend anyone else who made a C# / XNA game to have a go at porting it. One major fail I came across was my use of primitive rendering to draw everything, something which I couldn’t, this meant I had to re-write all the rendering code, and the result was the game being a little bit slow in silverlight, and not looking as nice. However next time, I now have the knowledge to target both Windows and Web during the weekend.

Final Notes

The weekend was really good, I will be entering the next, and I will be spreading the word and getting everyone else to enter. One of the best parts is writing this, it really gave me a chance to reflect back on what I have achieved. If you are reading this, and have not wrote your own, then right one, and post a comment, I look forward to reading what you have to say!

3 Responses to “Chroma – Analysis”

  1. JoeDev_net says:

    Really cool. I also made my game using C#/XNA and went a different route to get a web version. I used a project called JSIL to convert my game to javascript + HTML5 so that it can run in a browser. In general the port was pretty easy, but I did get some help from the developer of JSIL. It’s cool to see that there are multiple options for deploying XNA solutions beyond just a executable download.

  2. gameXcore says:

    JSIL, I’ll have to give that a look, it looks even easier then ExEn. Was there anything special you needed to do, or special considerations?

    • JoeDev_net says:

      No, not really. I ran into some problems because I used the Texture2D.GetData() function and it hadn’t been implemented yet, but other than that it was pretty straight forward.

Leave a Reply

You must be logged in to post a comment.

[cache: storing page]