London Adventure, an unfinished JS game

28.09.2025

Pixel art as a medium to work through emigration experience.

Idea and structure

From what I read in the source code, the direct motivation to take on this project was to enter the js13kGames competition. But the idea must have been around earlier, as the introduction of 2016 theme (glitch) to the game was an afterthought - it didn’t affect any mechanics, but merely the visual layer.

The real deal, however, was the story I wanted to tell. A few years back I came to the United Kingdom in search of better life. I had 4 other people with me, who all failed in their own way. I overcame this period, but the memories stayed with me. The game was meant to be a tribute to uneasy reality of unskilled abroad workers more than some entertaining production. It was planned as a bunch of scenes, based on true events, described below.

Intro

A must-have. I coded simple scene with scrolled sky, sprite clouds, bold logo, and of course pixel font, inspired by NES titles. From technical point of view: I drew on <canvas>, all movement was linear and time-based. Logic also relied on subsecond synchronization, for example when to allow keyboard input. Gulp allowed rapid iteration. See this in action:

Travel

Stage one would take the player straight onto German autobahn, stylized exactly as Lotus series, albeit Ford Galaxy being the vehicle. From the (flying) start we can move freely, but after a while it turns into a reflex check: a massive traffic jam appears out of nowhere and the player must brake (with a space button, of course) just in time to save the car and the travellers.

Hub

From now on, the plot would be less linear. From the static screen representing a house floor, one could choose from 5 protagonists, in any order, to start the character-specific stage. We would be coming back here until all minigames were finished.

Playable characters

Greg

This is the only one I actually worked on, apart from the intro - but hopefully sufficient to feel the vibe of the whole. At the surface, we play a variation of sliding puzzle, putting together british banknotes. Time is ticking, points are stacking, and Greg’s head is in the corner, watching and making comments.

Implementation was nothing but fun. Coordinating the view with underlying state in the requestAnimationFrame() loop. A bit of sugar mapping keycodes to unicode arrow characters. For the subtitles, I placed them in regular HTML elements to have more convinient styling and positioning (so I did reversed “Canvas Over” here). You can give a try to non-balanced and time unrestrained version (arrow keys, space to select/deselect a section):

Score:

Time:

Plot twist: the game is rigged so Greg simply can’t keep his earnings. Just as in real life, unexpected expenses would push him into debt, giving the player a thrilling metaphor of the economy. Every lost piece of money would trigger an animation of scratching head - as amusing as increasingly daunting.

Gordon & Janush

I united them to cut on number of stages (yet still didn’t accomplish the joint one). The gentlemen would be taking part in some arcade play, requiring coordinated spacebar-bashing. This stage would depict some construction site challenge, probably mixing concrete - at least that’s what I can deduce from 9-year-old notes.

Isa

The only female character of the game would be set in a Hotline Miami-meets-Pacman style stage, where she would be the chaser, and the chasees would be… fuckboys. I guess that doesn’t leave much space for poetic interpretation. Catch ‘em all!

Michael

I sketched my take on job hunting as a remix of Track & Field’s javelin throw event, where the player would be shooting CV documents at the target, only to miss all the tries.

Game over…

…would be the words concluding the play; making the player’s decisions, efforts and gained points - meaningless. No “mission complete”, no “the end”, just the pessimistic closing.