A 2D story-driven adventure platformer about being the last source of light in a world consumed by darkness.
- Overview
- Features
- Gameplay
- Screenshots
- Technology Stack
- Project Structure
- Getting Started
- Development Roadmap
- Team
- Contributing
- License
- Acknowledgements
The Last Lantern Keeper is a 2D story-driven adventure platformer built in Unity 6. A mysterious darkness has extinguished the ancient lighthouses that once protected the kingdom, allowing shadow creatures to spread across the land.
You play as a young adventurer whose name is chosen by the player, the last surviving Lantern Keeper. Armed with a magical lantern—your only tool, your only weapon, and your only true protection—you must journey across the kingdom, relight the ancient lighthouses, and restore light to a world that has long been consumed by darkness.
The game combines exploration, environmental puzzle-solving, platforming, and a signature light-vs-shadow survival mechanic into a single, cohesive experience built around one idea: light is life.
- Story-driven adventure across a slowly-restoring kingdom
- Light-based puzzle solving using the lantern's evolving abilities
- Living Shadow enemy mechanic tied to lantern energy
- Precision 2D platforming
- Progressive lantern abilities (Light Orbs, Plant Platforms, Reflection, and more)
- Ancient lighthouse restoration and world-state progression
- Stylized 2D environments with a signature light/dark color palette
- Persistent save system
- Atmospheric, state-reactive soundtrack
Checklist reflects current implementation status and will be updated as development progresses.
Each region of the game follows the same core loop: explore → solve → survive → restore.
The player enters a new region, platforms and explores its environment, solves environmental puzzles using the lantern, and either fights or evades shadow creatures along the way. Reaching the region's ancient lighthouse and overcoming its final challenge relights it — restoring light to that part of the world and unlocking a brand-new lantern ability that carries forward into every region after it.
Signature Mechanic — The Living Shadow
The lantern has limited energy that depletes over time and with use. As it weakens, the world grows darker, the music grows tense, and shadow creatures grow bolder. If the lantern's energy hits zero, it extinguishes — and the player's own shadow separates from the ground and comes alive, hunting them until the lantern is reignited or another light source is found.
This turns lantern management into the game's core tension: light is never just visibility — it's survival.
Coming Soon Gameplay screenshots and trailers will be added during development.
| Technology | Purpose |
|---|---|
| Unity 6 | Core game engine |
| C# | Gameplay programming and systems |
| Git | Version control |
| GitHub | Repository hosting and collaboration |
| Unity URP (2D) | Rendering pipeline and dynamic 2D lighting |
| Unity Tilemaps | Level construction and collision layout |
| JSON Save System | Player progress and settings persistence |
Assets/
│
├── Animations/
├── Art/
├── Audio/
│ ├── Music/
│ └── SFX/
├── Data/ # ScriptableObjects (lantern tuning, ability configs, enemy stats)
├── Materials/
├── Prefabs/
│ ├── Player/
│ ├── Enemies/
│ ├── Environment/
│ └── UI/
├── Resources/ # Runtime-loaded assets only — not a general dumping ground
├── Scenes/
├── Scripts/
│ ├── Core/ # Core.asmdef — engine-agnostic systems, shared utilities
│ ├── Gameplay/ # Gameplay.asmdef
│ │ ├── Player/
│ │ ├── Enemies/
│ │ ├── Lantern/
│ │ └── Managers/
│ ├── UI/ # UI.asmdef
│ └── Utilities/
├── Shaders/
├── Sprites/
│ ├── Player/
│ ├── Enemies/
│ ├── Environment/
│ └── UI/
└── UI/
Notes:
Data/holds ScriptableObject assets (e.g. lantern energy/drain values, per-ability configs) so gameplay tuning never requires a code change.Resources/is reserved strictly for assets loaded at runtime viaResources.Load— everything else lives in its normal folder to avoid bloating build size.Scripts/is split into three assembly definitions (Core,Gameplay,UI) to keep compile times fast as the codebase grows and to enforce clean dependency boundaries between systems.- Binary assets (
Art/,Sprites/,Audio/) are tracked with Git LFS to keep repository history lean.
- Unity Hub with Unity 6 (2D URP) installed
- Git installed locally
- A code editor with C# support (Visual Studio, VS Code, or Rider recommended)
git clone https://github.com/Hjeandedieu/the-last-lantern-keeper.git
cd the-last-lantern-keeper- Open Unity Hub
- Click Add → select the cloned project folder
- Ensure the project is opened with Unity 6
- Let Unity import all assets and packages
- In the Unity Editor, open
Assets/Scenes/and load the main scene - Press Play to run the game in the Editor
Progress against the project's 8-week implementation plan:
- Project Planning & Documentation
- Environment Setup, Git Workflow & Learning Phase
- Player Controller & Core Movement
- Lantern System (Energy, UI, Lighting)
- Living Shadow Mechanic
- Enemy AI
- Chapter 1 — The Fading Village
- Chapter 2 — Whispering Woods
- Audio & Visual Polish Pass
- Menus, Save System & Game State Flow
- Bug Fixing & Optimization
- Final Build & Presentation
| Name | Role |
|---|---|
| Developer 1 | Gameplay & Systems Programming |
| Developer 2 | Level Design & Player Experience |
This is currently a closed student/capstone project, but the workflow below is used for all internal collaboration and will apply to any future external contributions:
- Fork the repository
- Create a branch for your feature or fix:
git checkout -b feature/your-feature-name
- Commit your changes with clear, descriptive messages:
git commit -m "Add: brief description of the change" - Push your branch and submit a Pull Request against
dev, describing what changed and why
Please keep pull requests focused and scoped to a single feature or fix where possible.
This project is licensed under the MIT License — see the LICENSE file for details.
- Unity Technologies — for the engine and tools powering this project
- Open-source asset creators — whose work supports rapid prototyping and learning
- Contributors — everyone who helps improve this project
- The game development community — for the tutorials, forums, and shared knowledge that made this project possible
"Light is life."