Inspiration
Most puzzle games challenge the player to control a single character. We wanted to explore a different idea: what if your actions controlled someone else instead?
That led to the core concept behind ShadowShift. Instead of directly moving the character that needs to escape, the player controls a being of Light while an imprisoned Shadow mirrors, opposes, or transforms those movements according to hidden rules. Every level becomes a puzzle about understanding the relationship between Light and Shadow rather than simply finding a path.
We also wanted the game to feel native to Reddit by making levels short, replayable, and easy to discuss with others.
What it does
ShadowShift is a grid-based puzzle game where the player controls the Light while trying to guide the Shadow to the exit.
Each level introduces a different movement rule:
- Same
- Opposite
- Rotate Clockwise
- Rotate Counter-Clockwise
- Previous Move
The player must learn how each rule affects the Shadow and use walls, teleporters, switches, and doors to solve increasingly difficult puzzles.
The game includes:
- Multiple tutorial levels
- Campaign progression
- Undo and restart
- Keyboard controls
- Responsive layout
- Settings including Reduce Motion and Colorblind Mode
- JSON-based level loading for easy expansion
How we built it
ShadowShift was built using Reddit Devvit Web, React, TypeScript, and Phaser.
To keep the project maintainable, we separated gameplay into independent systems:
- Grid system
- Entity system
- Movement system
- Rule engine
- Campaign manager
- Undo system
- Level loader
- Renderer layer
Levels are stored as JSON, making it possible to add new puzzles without changing gameplay code.
The movement rules are implemented as interchangeable strategy objects, allowing each level to simply specify which rule is active.
Challenges we ran into
The biggest challenge was separating gameplay logic from rendering.
As the project evolved, we experimented with different rendering approaches and UI concepts while keeping the puzzle mechanics independent. Maintaining that separation required several iterations.
Another challenge was designing movement rules that were simple to understand individually but could still create interesting puzzles when combined with different board layouts.
Building a reusable level format and ensuring systems like undo, movement, teleportation, and rule execution all worked together consistently also required careful architecture.
Accomplishments that we're proud of
We're most proud of creating a puzzle mechanic that feels unique while remaining easy to learn.
Some highlights include:
- A modular rule engine that allows entirely different puzzle behaviors without changing gameplay code.
- JSON-driven level loading that makes creating new puzzles straightforward.
- A clean separation between gameplay systems and rendering.
- Campaign progression with reusable puzzle architecture.
- A solid foundation that can continue growing with new mechanics and community-created levels.
What we learned
Building ShadowShift reinforced how important good architecture is for game development.
Separating rendering, movement, rules, and level loading made it much easier to iterate on mechanics without constantly rewriting existing systems.
We also learned that designing good puzzles is very different from implementing game mechanics. The simplest movement rule can create surprisingly deep gameplay when paired with the right level design.
Finally, building on Devvit taught us how to structure a web-based game for Reddit while keeping it lightweight and extensible.
What's next for ShadowShift
Our roadmap includes:
- More handcrafted campaign levels
- Daily community puzzles
- Community level creation tools
- Online leaderboards
- Achievement system
- Additional puzzle mechanics
- Improved visual polish and animations
- More accessibility options
- Ongoing balancing based on player feedback
Our long-term goal is to make ShadowShift a puzzle game that players can return to every day, with fresh challenges and community-created content.
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for Shadow Shift
Built With
- phasor
- react
Log in or sign up for Devpost to join the conversation.