top of page
Sniper-ezgif.com-optimize.gif

KnightLight

2D Puzzle Platformer Built in a Custom C++ Engine

Custom C++ Engine  •  JSON  •  Custom C#  •  Systems Design  •  UX  •  QA

About the Project

KnightLight is a 2D puzzle platformer built from scratch by a 7-person team in a custom C++ engine. As Design Lead and Systems Designer, I helped redefine the project’s scope into a focused puzzle experience built around a dual-form mechanic where the player switches between Light and Knight.

I prototyped the player controller in Unity, as well as designed and implemented multiple core gameplay systems, including the flash ability, lamp-door puzzle logic, checkpoint torches. the armor recall system, and pipe traversal network. I also implemented visual guidance systems to maintain readability in the game’s dark environment and ran regular playtests to iterate on mechanics and player feedback.

Project Details

Goal: Create a cohesive and enjoyable experience within an evolving custom engine.

Role: Design Lead, UX & Systems Designer
Engine: Custom C++ Engine
Team Size: 7
Duration: 9 months
Year: 2023 - 2024

Contributions

Design Direction

  • Helped refocus the project from a metroidvania to a puzzle-driven experience.

Core Mechanic Design

  • Designed the Knight / Light possession mechanic.

  • Prototyped and refined the player controller in Unity.

Systems Design

  • Flash interaction ability

  • Lamp–door tag pairing system

  • Checkpoint torches and armor recall

  • Pipe traversal network

  • Hazard proximity glow readability system

Playtesting

  • Organized playtests and authored 12 playtest reports.

  • Iterated on controller feel and mechanic feedback.

Custom Engine Collaboration

Because the project was built in a custom C++ engine that was still evolving during development, implementing gameplay systems required close collaboration with programmers. Mechanics initially prototyped in Unity were later recreated in the custom engine and adapted to its architecture and tools. This process required frequent iteration as the engine’s capabilities expanded.

image.png

Core Mechanic: Light and Knight

The central mechanic of KnightLight allows the player to switch between two forms: Light and Knight.


The player primarily controls the Light, a small mobile entity capable of navigating tight spaces and interacting with puzzle elements. When Light encounters an abandoned suit of armor, it can possess it to become the Knight.


This transformation changes how the player interacts with the environment. The Knight has limited mobility but can safely traverse hazards that would destroy Light.

I designed the Knight / Light possession mechanic that forms the foundation for the game's puzzle design.

Light Form

Fast and mobile

Can navigate tight space

Can illuminate areas and activate lamps

Knight Form

Slower but durable

Can safely traverse spike hazards

Can launch Light across larger gaps

Gameplay Loop

Most puzzles follow a simple loop:

  1. Explore as Light to scout the environment and activate lamps

  2. Equip the armor to become the Knight and traverse hazards

  3. Separate again to continue exploring and solving the puzzle

This repeated transformation between forms is what creates the foundation of the game's puzzle design.

Mechanic Expansion: Armor Launch Upgrade

Later in the game, Light gains the ability to launch upward when exiting the armor.

This upgrade expands the core mechanic into vertical traversal puzzles while maintaining the same core interaction of entering and exiting the armor.

Gameplay Systems

To support the core mechanic, I designed several systems that structure puzzle interactions and environmental progression.

Flash Ability

Light emits a short burst of illumination used to navigate dark areas and activate lamps. This became the primary interaction method for puzzle elements.

Lamp and Door Pairing

A tag-based system that links lamps to specific doors.

When activated by Light’s flash, the paired door opens, creating clear cause-and-effect puzzle interactions.

Checkpoint Torches and Armor Recall

Torches function as checkpoints and anchors for the armor recall system.

If the armor becomes separated, the player can recall it to the nearest activated torch.

Pipe Traversal

A network system that allows Light to travel through pipes using directional tags, enabling traversal puzzles and hidden routes.

All the systems working together

Guidance and Readability

Because the game takes place in near-complete darkness, readability was a major design focus. I implemented several systems to help players identify objectives, hazards, and progression paths without breaking the atmosphere.

Signiflyers

Small glowing fireflies that act as collectibles while subtly guiding players toward important paths and puzzle elements.

Hazard & Dialogue Proximity Glow

Spike hazards gradually glow red as the player approaches them, ensuring hazards remain visible even in dark environments.

A similar glow effect was also used for dialogue interactions to clearly communicate interactive objects.

Prototyping and Custom Engine Transition

Gameplay systems were initially prototyped in Unity while the custom engine was still under development. This allowed mechanics and puzzle interactions to be tested quickly before committing to implementation.

Once the engine stabilized, these mechanics were recreated inside the custom C++ engine and adapted to its custom tools and components.

Video showing other prototype

Because the engine continued to evolve during development, many systems required iteration and close collaboration with programmers.

To support future designers, I co-authored an Engine Design Guide documenting how we used the engine’s tools to implement gameplay systems and build levels.

Forgeborne_Other.png
PageBackground_1438_810.png

A 36-page document

Playtesting and Evaluation

Playtesting was conducted regularly across both semesters to evaluate player experience and gameplay clarity.

report5_2.png

I organized testing sessions, recruited participants, and authored 12 playtesting reports documenting player behavior, usability issues, and technical problems discovered during testing.

A quick look at some of the prototypes from the first semester

Prototype Playtesting Reports

Forgeborne_Other.png
PageBackground_1438_810.png

Reports I've written during the first half of the project's lifetime.

Full Game Playtesting Reports

Forgeborne_Other.png
PageBackground_1438_810.png

Reports I've written during the second half of the project's lifetime.

Outcome

• Released on Steam as a fully playable student project
• Completed over 9 months by a 7-person multidisciplinary team
• Successfully transitioned gameplay prototypes from Unity to a custom C++ engine during development

Lessons Learned

KnightLight was my first experience designing gameplay systems within a custom engine while collaborating closely with both programmers and another designer.


The project reinforced the importance of:

  • Maintaining a strong core mechanic

  • Adapting design to technical constraints

  • Using player feedback to guide iteration


Focusing the design around a single mechanic ultimately allowed the team to deliver a more cohesive and polished puzzle experience.

Play it yourself!

  • pdf_icon
  • LinkedIn
  • Discord

Taylor Cadwallader

bottom of page