Last Light
Inspiration
Last Light started with a simple idea: what if home was the most important resource in a survival game?
I wanted to build a survival experience where the player wasn't trying to conquer the world around them. Instead, they were trying to preserve one small piece of safety within it.
That became the Hearth — the last warm light in a darkening woodland.
The central question behind the game became:
How much longer are you willing to stay away from the light?
Every expedition into the forest is necessary. The player needs Wood, Stone, Herbs, and Spirit Essence to survive. But every step away from the Hearth means leaving safety behind, and as the thirteen-minute night progresses, that decision becomes increasingly dangerous.
How I Built It
Last Light is a portrait-oriented Three.js/HTML5 game built to run completely offline.
The game was developed iteratively with AI-assisted coding, but each major system was introduced in small milestones and then tested before moving forward.
The initial prototype established movement, collision, the Hearth, resource gathering, and the basic survival loop. From there I expanded the woodland and added a limited inventory that forces the player to make choices about what to bring home.
Lanterns became a particularly important mechanic. Carrying one provides personal light but reduces pack capacity. It burns for a limited amount of time and can be placed in the forest to create temporary islands of safety.
Wards provide protection against Shadowlings, creatures that emerge from the darkness and move toward the Hearth.
The final survival layer added player health. Darkness slowly wears the player down outside protected light, Shadowlings cause immediate damage, Herbs provide field healing, and returning to the Hearth gradually restores health.
Everything is orchestrated by a thirteen-minute director that moves the game from twilight through increasingly dangerous phases of night before finally reaching dawn.
Challenges
One of the biggest lessons from this project was that a mechanic can technically work and still fail the player.
An early resource-discard system was functional, but a fresh player couldn't discover how to use it. That led to replacing the hidden interaction with visible discard controls.
Collision was another challenge. An early implementation caused the player to jitter against trees and rocks. I replaced it with swept-circle collision and sliding behavior, which produced much more stable movement on both desktop and touch controls.
Playtesting also changed the game substantially. The original map felt too small, Lanterns lasted forever, drag movement wasn't responsive enough, Herbs lacked a meaningful purpose, and an early darkness-health implementation was far too punishing. Each problem led to another focused iteration rather than simply adding more features.
What I Learned
The biggest lesson was the value of depth over breadth.
Several planned mechanics and enemy types were deliberately left out. Instead, I concentrated on making a small group of systems interact meaningfully.
Wood keeps the Hearth alive and helps create Lanterns. Stone contributes to Lanterns and Wards. Spirit Essence enables magical defenses. Herbs allow longer expeditions. Lanterns trade carrying capacity for safety. The Hearth is simultaneously the player's objective, light source, sanctuary, recovery point, and the target of the darkness.
AI accelerated implementation and helped explore solutions quickly, but human playtesting determined which ideas actually survived.
The finished game is much different — and much better — than the first prototype because of that process.
At its heart, Last Light is still about the idea that started the project:
Venture into the darkness because you must. Then find your way home before the light goes out.
Log in or sign up for Devpost to join the conversation.