Tube LD29 Postmortem – Part 2
Part 1 can be read here and my entry can played here. Please play, rate and give feedback. Cheers!!!
The goal of my game is that the player has to create a pattern of pixels by using a set of magnets to push a beam around a screen
Basically for the rest of this Postmortem I am going to list what went well and what went wrong during the course of the LD29
What Went Well
Setting Constraints
My self imposed constraints was to make sure I had a ‘normal’ sleeping pattern, this meant that I had to make sure any ideas that I came up with where achievable within the shortened development time. Constraints are great things, they focus the mind and force you to come up with interesting solutions.
Lesson Learned: Always try and constrain your designs when it comes to Ludum Dare or a Game Jam, don’t try to bite off too much. Keep it something achievable in the time frame.
Tile Based Level
Each of the levels is made up of tiles where the number and type of tile is determined by entry in a text file. A typical text file in my game consists of a comma separated file where each entry is a cell on the grid, where 1 is a tile and 0 is a blank space.

The above file will produce a level like the following

This is a very flexible system which allowed me to define levels very quickly. It was expandable, if for example I wanted to add a new tile type, I simple add a new number(say 2) and then in my code when an entry of 2 is parsed I just spawn the new tile.
Lesson Learned: Find a way to quickly create content for your game. Don’t struggle creating some kind of level editor, use tools liked Tiled or a simple text file to build levels/content(unless of course you want to build some tools :) )
Style
My art skills are pretty non-existent so I decided to go for a very simple pixel art style which was very easy to create. This meant that I could produce art work very quickly using simple shapes, such as squares and circles. The art style was also linked to the theme as the background looked like the surface of a vintage TV
.

Finally, I managed to source a pixel art style font which was under a creative commons license.
Lesson Learned: Keep a consistent simple art style, this especially true if you are not an artist.
Tutorial
After playing my game for a bit, I realised it was 100% clear how you played the game. I felt that most people would assume you had direct control over the beam using the arrow keys. About 10 hours before the submission deadline, I decided to create a fully playable tutorial which has a full voice over explaining the game(tall order I know!!!).
For the voice over, I created a very basic script which hopefully conveyed the basic mechanism to the player. My Scottish brogue would make it very difficult for players to understand the instructions, after a bit of digging I found that I could dump the results of the mac say(text to speech) command into a file, e.g.
say -o HelloWorld “Welcome to the Tube!”
This gave the following file
https://soundcloud.com/brian-mcdonald-12/welcome-tutorial-vo
I then edited them together and converted them to ogg using Audacity. For the technical side of the tutorial, I just created an array of states which could be shifted on by the audio finishing or the player pressing a specified button.
Lesson Learned: Since you want people to be able to play your game you should make it intuitive to play. If you can’t, you should consider teaching the player how to play your game. This could be accomplished via a tutorial or by scaffolding(gradually introducing) mechanics to the player,
Content Generators
I have no musical skills and I personally find it time consuming to create audio effects, this where generators stepped in and saved my bacon.
In my game, I use Music generated by AudioTracker
http://www.ludumdare.com/compo/2011/12/13/if-you-find-it-hard-to-make-music-read-this/
This tool will create nice retro style music, just run it a few time and select the best one. The file produce is in a format that most engines can’t deal with, you can use VLC to convert it to a usable format such as ogg.
As for sound effects, I used bfxr
Bfxr can be used to quickly generate simple retro style sound effects like jump, collection and hit sounds. It allows you to expot as a wav files which can pretty much be used by any engine out there.
Lesson Learned: Use content generators to save you time, or to cover up for any skills you may have lacking.
What Went Wrong
Fun
I managed to get the core mechanics working fairly quickly, the game then came soon after. One thing bothered me through the weekend, the game wasn’t really fun. I was too wedded to my idea and I wasn’t really willing to scrap my game and start again, I tried and tried to find the fun, I added in a new tile type which acted as an obstacle to the player.
I probably spent too much time creating things like tutorials and not enough time finding the fun.
Lesson Learned: Find the fun early, and if it is still not fun ditch the idea and start a new one.
Scoring
The scoring for my game was very simple, you paint a pixel and then you gain a point, you hit a dead pixel and a point is removed. This was really not thought out very well, it was just thrown in there. It would have been better to carefully think of the scoring system, potentially reward players with bonus points, at least think of something a bit more engaging.
Lesson Learned: Think of a good reward system for the player, don’t just simply stick a score in. Carefully design the scoring to keep the players interest.
Variations in the Level
Because of the grid based nature of the levels and the lack of elements in the game most of the levels seemed fairly bland. To add some variation, I added a new tile type called a dead pixel which would punish the player by subtracting from the players score. This did help a bit but I think that the game requires some more tile types to add variety to the level and additional challenge to the player.
Also there was no challenge has players progressed through the levels, each level was very simple to complete with no urgency needed on the part of the player. While the layout of the level is loaded from file, I should have considered include other elements in such as time to complete the level.
Lesson Learned: The levels should be interesting to the player and be a challenge. Always play levels several times, revise and retest. Don’t put too much in and overwhelm the player
Polish
Even though I managed to get the main mechanics working fairly early on(within the first 12 hours) I didn’t manage to polish the game that much, I really only added some animation to the player’s beam. a particle system when the player draws a pixel and some post processing effects(bloom). I should have schedule more time for Polish as this usually adds value for the player.
Lesson Learned: Spend a fair bit of time on polish, this will make for a more engaging game.
Tutorial
After a few playtests it was apparent to me that the game wasn’t that intuitive to play and I needed a tutorial on order to teach the player the game. At that point, I should have considered a re-deign of the core functionality or I should have considered scaffolding the levels a bit better and allow the player to discover how to play. The time spent in creating the fully voice/playable tutorial could have been better used.
Lesson Learned: Don’t spend too much time on something that doesn’t add value to the core game experience. When it comes to teaching your game, consider making it part of the main game rather than some additional bit on the side!
Source: ludumdare.com archive