top of page

THE LAST SMILE

Position

Programmer, Game Designer, Project Manager

Description

A 2D side-scrolling mystery adventure built around a unique investigation and clue-gathering puzzle mechanic. Our core design goal was to craft a slow-paced, exploratory detective experience featuring simple yet engaging puzzles and a functional camera system for capturing evidence.

 

As the project manager, gameplay programmer, and co-designer, I collaborated closely with our narrative designer and art team to translate the story into gameplay.

 

My contributions focused on building the interactive multi-tab journal UI, implementing a dynamic narrative system powered by Ink (Inkle) and Cinemachine, and programming custom mechanical puzzles including a drag-and-drop piece-snapping map and a coordinate-based photo investigation loop.
 

Project period

5 month

Project type

2D Sidescroller, Mystery

Used Software

Unity, Riders, Sourcetree

Team size

5

UI/UX-Design Concepts

first UI sketch for the journal
final ingame journal pages with content

Journal Sketch

Journal Sketch

Journal Sketch

Journal Sketch

In-game Journal

The Journal Concept

Technical UI Implementation

  • Diegetic UI Design: Developed the core concept for an in-game Detective Journal to serve as the central hub for player progression, map navigation and puzzle tracking.

  • Feature Integration: Designed a multi-tabbed layout to organize critical gameplay information without breaking immersion, including:

  1. Dynamic Map: Helps players orient themselves.

  2. NPC Directory: Automatically unlocks and logs information about characters encountered during the investigation.

  3. Polaroid Clue Gallery: A dedicated visual inventory for collected photos that serve as puzzle clues.

  • Modular Tab System: Programmed a flexible, event-driven UI management system in Unity to handle seamless switching between journal pages and state changes.

  • From Sketch to Runtime: Transformed initial paper wireframes into a fully functional, responsive in-game Unity UI layout that adapts to real-time player data and unlocked clues. 

Programming

UI-Based Jigsaw Mechanics

  • Grid Snapping Logic: Engineered a 2D puzzle system entirely within Unity's UI System where players arrange torn map fragments. Programmed precision distance checks so that pieces automatically snap into their correct coordinates once dropped within a specific pixel threshold.

  • State Locking: Implemented a locking mechanism that disables user interaction and drag-and-drop capabilities for a piece once it has successfully snapped into it's final position

  • Global Progression Trigger: Tied the puzzle's completion state to the Journal, instantly unlocking the world map feature for the player upon solving.

Coordinate-Based Investigation

  • Interactive Search Circle: Developed a drag-and-drop inspection circle that players move across the screen to locate visual anomalies between two crime scene photos.

  • Hitbox Verification: Programmed a validation script that evaluates the circle's final coordinate positioning upon a confirmation button click, instantly checking if it overlaps with the hidden target zone. 

  • Feedback Loops: Created immediate win/loss response states that either advance the investigation or prompt the player to continue searching based on the accuracy of their guess. 

2D Photo-Investigation Mechanics

  • Scene-Based Execution: Programmed an interactive camera mode using a smooth camera fade transition to instantly shift control from character movement to a dedicated 2D inspection canvas within the same scene.

  • Cinemachine Viewport Constraints: Configured Unity's Cinemachine package and utilized the Cinemachine Confiner 2D extension. Tied the virtual camera to a custom Trigger Collider box in the scene to effortlessly constrain the camera frame within the edge of the inspection sprite, preventing it from showing any out-of-bounds areas.

  • Dynamic Target Validation: Coded real-time distance and overlap checks between the camera frame and hidden investigation hotspots. The camera frame changes color as visual feedback to notify players they have successfully aligned the frame with a key clue. 

  • Target Capture & Journal Progression: Wrote the evaluation logic to check the camera's position upon clicking the shutter. If a valid target is captured, the script triggers an event that permanently activates a pre-rendered Polaroid image asset inside the Journal's clue gallery. Invalid shots are discarded with visual feedback. 

Ink Integration & Data Parsing

  • Middleware Implementation: Integraded the Inkle Ink Engine middleware, using its API to parse compiled story JSON data and handle branching dialogue trees and player choices dynamically at runtime. 

  • Event-Driven Dialogue Triggers: Leveraged Ink's built-in external function binding system to bridge narrative progression with Unity's environment gameplay. Conversation choices directly trigger scene events, such as swapping out world sprites or instantly updating entry logs inside the Journal. 

  • Dynamic Profile & Emotion Management: Utilized Ink metadata tags to pass character definitions and emotional state variables directly to the Unity UI. The system automatically reads these tags mid-sentence to update character nameplates and switch character portraits.

Screenshot_2025-01-24_131006_edited.jpg
Screenshot 2025-07-01 101513.png

© 2024 Moritz Speckmann

bottom of page