top of page

Designing a 2D Puzzle-Platformer

  • Writer: Harshita Shetye
    Harshita Shetye
  • Jun 11
  • 4 min read

Updated: Jun 12

Final game prototype

Gaze is a 2D puzzle platformer where you play as Medusa, turning enemies to stone to solve clever environmental puzzles.


My work included:


  • Audio – Integrated Wwise for dynamic sound (attenuation, fades, pitch shifts)

  • AI – Built a Finite State Machine enemy system for smooth state transitions

  • VFX – Added particle effects & shaders (like Gaussian blur) for polish

  • Integration – Brought together art, audio & design assets into Unity


To see how these design concepts were brought to life with C#, I invite you to explore the technical deep dive, where I break down the implementation of the core physics, AI, and audio systems.


Game Concept & Core Mechanics


Game Concept

  • 2D Puzzle Platformer​

  • You play as Medusa, the cursed gorgon, who, after spending centuries trapped in a dungeon, finally makes a break to escape.​

  • Solve puzzles by using your petrifying gaze to freeze the enemy characters and use them to solve puzzles or as platforms, travelling upwards and out to your freedom.​


Core Mechanics

  • The player can petrify enemy characters, temporarily turning them to stone.​

  • They can then use these statues to solve puzzles and unlock additional parts of the level.​The player also has a shield they can use to protect themselves from enemy attacks.


Design Rationale: The "Flip It, Reverse It" Theme


Our concept for "Gaze" was born from the game jam theme, "Flip It, Reverse It." We decided to explore this by 'flipping' the classic Medusa myth: instead of a monster to be slain, the player is Medusa, and her famous curse becomes the core puzzle-solving mechanic.


Based on our team's strengths in 2D pixel art, we committed to a visual style that would be both achievable and beautiful. After collaborative brainstorming using tools like Milanote and Discord, we landed on the key narrative hook that would drive the game's design:


During her escape from Perseus, Medusa loses an eye, making her petrifying gaze temporary. This narrative twist transformed her curse into an engaging, repeatable gameplay mechanic.


This decision allowed us to build a 2D puzzle-platformer where players must strategically turn enemies to stone, using them as temporary platforms to progress. We chose Unity as our engine for its robust 2D Tilemap system, which was crucial for streamlining our level design process.

AI System: Finite State Machine


Video showcasing the states and their working

To create predictable yet dynamic enemies, I designed and implemented a Finite State Machine (FSM) using Unity's Animator, which provided a clear and organized way to manage enemy behavior.


The AI operates on the following core states:

  1. Patrol: By default, the enemy follows a set path.

  2. Chase: If the player is detected via Raycast within a direct line of sight, the enemy transitions to a chase state.

  3. Attack: Once in chase, the enemy will attack if the player moves within close range.

  4. Wait & Return: If the player moves out of detection range, the enemy will briefly wait before returning to its designated patrol path, ensuring it doesn't get lost.

  5. Frozen: At any point, colliding with the player's "Gaze" ability triggers this state for a few seconds, turning the enemy into a platform. A respawn function was also added to reset any enemy that might get stuck or fall off the map​.


Player Experience & Game Feel


Early development: Choppy camera handling and player movement
Mid development: Player fall and camera shake is still a bit choppy
After adding Cinemachine and crucial mechanics mentioned below

Videos showcasing progression and improvements made throughout development


A platformer's success lives or dies on the feel of its movement. Getting the controls to feel responsive and fair was a top priority. After studying professional platformers, I implemented several crucial mechanics to achieve this:

  1. Coyote Time: Giving the player a small window of time to jump even after stepping off a ledge, making the controls feel more forgiving and fair.

  2. Variable Jump Height: Implementing jump and fall multipliers to give the player more nuanced control over their movement in the air.

  3. Precise Ground Movement: Carefully tuning friction, acceleration, and deceleration values to prevent the character from feeling slippery or unresponsive.

  4. Air Control: Limiting horizontal movement while airborne to ensure jumping remains a strategic choice rather than a way to fly across the level.


Achieving the right balance for these variables required weeks of iterative testing and tweaking, incorporating feedback from the entire team to ensure the final result felt great to play.


Challenges Faced


Every project is a learning experience, and "Gaze" was no exception. We navigated several common development hurdles that provided valuable lessons for future teamwork.


1. Communication & Role Clarity: Our initial challenge was maintaining clear and consistent communication. Fragmented decision-making sometimes arose from inconsistent meeting attendance. We also navigated some role ambiguity during the project.

  • Key Takeaway: This experience highlighted the importance of defining primary roles at the very start and establishing a robust communication pipeline, whether through flexible meeting times or structured project management tools like Trello or Jira.


2. Maintaining Creative Momentum: After the initial excitement of brainstorming, we experienced a dip in energy as we worked through creative compromises. Similarly, our initial audio direction didn't quite match the game's tone.

  • Key Takeaway: We learned that aligning on a project's mood and feel with clear references (like mood boards and music tracks) upfront is crucial. Regular mid-project check-ins are also vital for keeping team morale high and ensuring everyone feels their creative voice is heard.


Personal Retrospective


On a personal level, this project was a fantastic opportunity to deepen my understanding of the entire development pipeline, from the fundamentals of pixel art to the intricacies of what makes a platformer's movement feel great.


Looking ahead, I'm excited to build on this foundation. My next technical goals are to master Unity's 2D Pixel Perfect camera tools and dive deeper into writing custom shaders to create unique visual effects. This project reinforced my passion for not just building systems, but ensuring they contribute to a polished and cohesive final product.

Comments


bottom of page