FLICKER · Project Story

Inspiration

What I love most in games like Don't Starve Together, Soul Knight and Enter the Gungeon is being forced to decide: that moment where two needs pull against each other and you have to commit to one. I wanted a survival game built entirely around that feeling, paired with one image, the quiet panic of a light burning down in the dark. So I made the meter the thing on screen: the ring of candlelight is the only safe space, and it shrinks in real time.

Add the tactile "chunk" of digging (the part of Raft, Subnautica and Minecraft I never get tired of) and the hook wrote itself:

Mining for treasure is the very thing that snuffs the light keeping you alive. So… how deep can you go?

The hero is a mole-rat miner: a digger by nature, cute enough to make a pitch-black cave feel inviting, with a candle on its hard-hat as its whole identity.

What it is

FLICKER is a single-player mining survival roguelite for mobile (Meta Horizon, landscape). You descend an endless cave lit only by your candle. There is no health bar; the flame is your one life meter. It burns down on its own, faster while you mine, and every hit from a foe or trap knocks light off it. You haul ore up to forge a growing arsenal of weapons, and each run asks the same tightening question: bank what you've got, or push one floor deeper?

A bit of background

I built this solo. I've been making games since I was very young, and developing on Meta Horizon for the past year, so designing for the platform and its constraints is familiar ground.

What I learned

  • Using AI to brainstorm is insanely effective. Being able to visualise an idea almost instantly changes how you ideate: you see a concept, react to it, and steer it in seconds instead of days. It made the whole design process faster, and a lot more fun.
  • One resource clarifies everything. Once light was the pressure at every scale (moment, room and run), most of the design clutter fell away. I didn't need parallel meters; I needed one screw to keep turning.
  • Honest scoping is a feature. Writing the "If I Had More Time" section forced me to separate the core loop from the content I'd add later, and to actually cut co-op and the deeper biomes down to a believable first slice.

How I built it

This is a pre-production design package (the competition judges design, not a built game), so building it meant building the idea and everything needed to show it could ship:

  • I used AI as a brainstorming and visualisation partner to sketch concepts fast and see them immediately, then made the calls on what stayed and what got cut.
  • The four artifacts (Game Design Document, Player Journey Map, Visual Concept Package, Production Plan) were authored as hand-written HTML/CSS and rendered to print-perfect PDF with Chromium's printToPDF (via Electron), so the layout and a single consistent design system were fully under my control.
  • The "content as data" idea is mine: rooms authored as small character grids, and a cave as a data file tagged by archetype (entry / fight / treasure / camp / boss / exit), with a validator to keep every generated run completable and fair. It's a sensible roguelite technique rather than anything fancy, but it's what makes a daily / seasonal content cadence realistic for one person.
  • Art is a low-poly, flat-shaded style chosen to read on a small screen, generated with an image model and composited with Python + Pillow for the pieces that needed precision: the landscape HUD mockup, the icon set, the gem "ore language", the wordmark logo, and the mood / reference boards.

The maths of the core tension

The whole game is one equation the player feels rather than reads, the flame at time \( t \):

$$\text{flame}(t) = F_0 \;-\; \int_0^{t}!\big(r_{\text{idle}} + r_{\text{mine}}\cdot m(\tau)\big)\,d\tau \;-\; \sum_i d_i \;+\; \sum_j R_j$$

where \( r_{\text{idle}} \) is passive burn, \( r_{\text{mine}} \) the extra burn while mining (with \( m(\tau)\in{0,1} \) the "am I mining" flag), \( d_i \) the light lost to each hit, and \( R_j \) each campfire / flickore refill. The run ends the instant \( \text{flame}(t) \le 0 \), and your score is simply how far you got, \( \text{score} = d_{\max} \). Every design lever (vein richness, enemy damage, refill spacing) is just a term in that expression.

Challenges

Honestly, the headline is that I had a huge amount of fun building this idea.

The real challenge was getting a consistent art style. Generative art drifts: every render wants to hand you a slightly different character, so the hardest part was wrangling it all into one coherent look and keeping the same mole-rat across every image. A close second was stopping the ore from looking like Minecraft, which took a few passes before it settled into faceted gems instead of cube ore. And I deliberately tried not to oversell: the data-grid is a normal technique, not a revolution, and the documents say so plainly.

Built with

game-design · survival-roguelite · meta-horizon · mobile · html · css · electron (Chromium printToPDF) · python · pillow · blender · higgsfield / nano-banana-pro (generative art) · claude / claude-code (brainstorming & build partner)

Built With

Share this project:

Updates