R. Lastey post-mortem

Posted by (twitter: @AurelDev)
September 5th, 2016 3:20 pm

(mirror of article on my site)

This weekend I participated in yet another Ludum Dare. This one was exceptional, however, because there were no ratings. It was also exceptional for me, because it’s the first time I submitted a (mostly solo) Jam entry, meaning I had 72 hours for creating the game. The theme was Ancient Technology, a clear winner compared to the other themes.

Apart from Ludum Dare, there was another important event – moving to our flatshare in London (I’ll study here, woo) from our temporary hostel accommodation. The plan was to move in as soon as possible in the morning, but naturally, got there around 3 in the afternoon. Luckily I could get my hands on a computer for some two hours before that, in a café.

In a way it wasn’t so bad, because for the longest time I wasn’t really sure about what kind of game I was making.

The future idea

From the very first moments I was considering a bit of a twist of the theme – it is the far future, humans discover ‘ancient technology’ (something from our time), completely misunderstand it but are amazed nonetheless. Like discovering ‘windows’, then placing them in the middle of the rooms instead of in the walls, or discovering forks and knives, then using them like chopsticks. You get the gist.

In a way it’s similar to Asimov’s ‘The Feeling of Power’, although that wasn’t my intention!

The alien idea

Although it was a funny idea, my girlfriend insisted it was too complex – and indeed, I don’t think I could have a good gameplay while also revealing a story like that (in a fancy way).

The next idea was still quite similar – humans in the distant future travel to a distant planet, where they discover ancient alien ruins. The player would have to decipher the alien language, solve puzzles to enter the ruins, and explore. At the very end, the player would find the ultimate treasure! … a rick-roll, and the aliens have a laugh and leave.

Occam’s razor

It was still a bit complex of an idea, but I realised it could be made much simpler by simply removing the aliens and making it a human ancient temple. So the player became Richard Lastey, a somewhat-obvious reference to Rick Astley, who inherits an ancient family estate and explores it. At the end he finds, of course, the melody of Never gonna give you up, and proceeds to become a pop star.

With the plot prepared, I set out to design the actual gameplay. I thought a couple of puzzle-types interleaved with ‘archaeology’ would work well enough. The setup was a bit similar to my LD27 entry, Thade, but not quite as heavy on the story-telling. This time, I wanted to avoid a game where the gameplay would be completely lack-luster because I tried to have a very complex plot. (Which is why the intro and outro consisted of two ‘newspapers’!) I also decided to make the game un-loseable – there would be no time challenges, no way to fail. Even if it takes two hours with a track pad, it’s still possible! Originally I wanted to make this more interesting, however, by introducing a rating system based on your accuracy and time spent doing the archaeology. I didn’t have time for this, unfortunately.

The lighting

One of the first things I worked on was the ‘archaeology’. This involved a simple particle system with some fancy lighting. The game was actually a 320×240 scene (scaled up to 640×480), which is small enough for doing some pixel-by-pixel operations without a major loss in performance.

First, I created a couple of light maps, which would show how light any given pixel would be around a light source. I wanted the light to follow the player’s mouse in certain cases, so I needed 640×480 bitmaps for the lightmaps – so there’s a 320×240 clearance in each corner of the central light source. The bitmaps themselves were just simple white-to-black radial gradients, like so:

About 10 of these were created at game start, each with a different radius. The next step was to apply this to the environment somehow – and a simple alpha overlay would look too cheap. I thought I would attempt simple bump-mapping – instead of drawing graphics for the archaeology bits normally, I would draw the normals. So, instead of deciding which colour (and therefore light level) each pixel has, I would decide which way each pixel is pointed and then, based on the light intensity and direction, I would decide its colour.

This didn’t happen in the end, unfortunately, although I could have invested a couple more minutes into it. What I had in the end was graphics that would ‘shift’ their limited 5-colour palette into darker shades if the light was not close enough. It still produced some nice effects.

On top of these graphics I rendered some dust particles, which changed pixels to different, mostly random, shades of the palette. When dusting them off, they would show as little sprite clouds.

The final step in making the lighting look pretty was some dithering. This is a useful technique in pixel-art and when working with limited palettes. In my case, instead of having a hard threshold for deciding whether a given light value is the first or the second shade in my palette, the threshold is slightly different based on the location of the pixel. This creates a pleasant-looking transition between two shades:

The alphabet

One of the puzzles for the player would be to decipher the ancient language. This was just English with every letter substituted for a different symbol. The symbols were simple enough to think up, as variations of a 7-segment display:

At some point I thought of a way to make the player actually have to ‘do’ something to solve the alphabet. Because the writing was just a substitution of English, having an easily-recognisable pictogram associated with a word in the ancient language would make it possible to determine the connection between the two alphabets. This puzzle has some additional benefits – it ‘brings together’ all the archaeology from the previous levels, although this could have been made even more obvious to the player. For example, I could have displayed the puzzle to the player after each level, without showing the missing letters or pictograms. They could try to solve the discovered pictograms, or they could decide to find more letters and pictograms instead.

The lightchess puzzle

This is the only -actual- puzzle in the game. People liked it, but I only had time to make two levels – one essentially a tutorial, the other one quite difficult. I thought I should have a chessy puzzle somehow, and having thought about the n rooks / n queens problems recently, this seemed an interesting concept. I am especially happy with the lighting in this puzzle, which changes depending on the player’s progress.

I don’t know if this puzzle is truly original, but I personally never played anything similar. Some people have pointed out that this could be a puzzle game of its own. The only problem is that I have yet to find the optimal way to create the levels themselves. The two were really just sketches in my notebook that happened to work.

Apart from these, I did think of the base for one or two more levels, but they would probably be too obvious – the solution could be inferred too easily from the level itself. Maybe they could serve as tutorial levels. To create more difficult levels, I would probably have to resort to some sort of genetic programming, with the fitness measure being the difficulty of the level, measured using the number of moves to reach a solution, the number of possible solutions, and the number of possible positions in that level. So, nothing for a Ludum Dare!

The problem with vines

At some point I thought vines would add a more authentic archaeology / exploration vibe. While this idea might not have been wrong, the realisation of it was. What I came up with was a simple variation on the mouse-cheese maze (trace the line from the mouse to the cheese). Simple enough … But very tedious, not only to play, but also to create:

I had to draw the maze on paper, then code that in. I think I did realise it was not that much fun when I decided to replace one of the later vine parts (that I couldn’t be bothered to create anymore) with spider invaders, which provided some comic relief, although hardly any challenge at all.

I wish I had thought of something more creative and fun to do with vines. Unfortunately, I didn’t, and I didn’t exactly feel like not using a part of the game to which I had already committed so much time.

The jam continuation

After 48 hours, I had a game submitted. It lacked music, the graphics were not completely fleshed out, the spider invaders were not there, and so on. I was mostly happy with it anyway, … But on the third day I woke up (around 10 am) to this piece of paper from my girlfriend:

And just like that, I couldn’t not participate in the Jam! With the extra day, I could afford to polish the game a lot more. I didn’t feel bad about asking my friend, Jano, for some help with the music. I spent a couple of hours on a call with him, trying to communicate how the songs would sound better (with varying degrees of success).

The music

So I was quite happy with what I had in the end – a couple of little tunes for different parts of the game. The music is, once again, procedurally generated at runtime, using my own nsmod audio library. I plan to release this library along with the nsmod DAS soon, I promise! The actual DAS still has no recording capabilities, however, so I had to resort to quickly writing code for processing bitmaps into pattern data for the songs. Obviously I didn’t think I had the time to learn to use an actual music programme. So this is how I drew my songs:

The black and white bars at the top are a guide, corresponding to the black and white keys of a piano. Little dots outside of the guides are ‘drum’ (really white noise) patterns. As stupid as this is, it was just a very LD-esque technique. Got the job done in the limited time I had, and it used environments which I felt pretty confident in (haxe code and Photoshop). Hopefully I don’t have to resort to such measures again though!

Wrapping up

I think those were the most interesting parts in the development of R. Lastey. Once again, this LD is not rated, so I won’t get any results apart from the comments from other people. So this time the feedback is much more important than usual! In other news, Danae (a.k.a my girlfriend) streamed lots of games on her channel, here. Timelapse and source for this game coming soon … And, two bonus journal pages!

(those were all the journal pages I had)

Tags: , , , ,


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]