Skip to content

Neroro64/Mirrorception

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Mirrorception

A platformer puzzle game where you traverse between the real world and a mirrored dimension with inverted physics.

Gameplay

Mirrorception challenges you to solve environmental puzzles by switching between two dimensions:

  • Real World: The physical space with normal gravity and movement
  • Mirrored World: A reflection with inverted physics — gravity may point in different directions, and the environment is transformed

Core Mechanics

  1. Mirror Traversal: Walk into mirrors and press SPACE to enter the reflected dimension
  2. Dimension Switching: Certain actions in one dimension affect the other — solve puzzles by thinking across both worlds
  3. Object Interaction: With gloves equipped, grab and move objects to alter both dimensions
  4. Ladders: Climb vertical structures to reach new areas
  5. Treasure Chests: Collect items that unlock new abilities

Controls

Input Action
WASD / Arrow Keys Move
SPACE Enter mirror / Interact (grab objects, open chests, climb ladders)
R Reset level

Project Structure

Mirrorception/
├── Demo/                          # Unity project (built for Windows)
│   ├── Assets/
│   │   ├── Scenes/
│   │   │   ├── Prologue_1.unity   # Tutorial level — basic mirror mechanics
│   │   │   ├── Prologue_2.unity   # Introduces object interaction
│   │   │   └── Prologue_3.unity   # Advanced puzzles
│   │   ├── Scripts/
│   │   │   ├── Player/
│   │   │   │   └── PlayerController.cs    # Player movement and input
│   │   │   ├── GameSystem/
│   │   │   │   ├── GameSystem.cs          # Base class for dimension switching
│   │   │   │   └── Prologue/              # Level-specific logic
│   │   │   ├── Objects/
│   │   │   │   ├── Mirror.cs              # Mirror component
│   │   │   │   ├── grabbable objects/     # Physics objects
│   │   │   │   └── Ladder/                # Ladder mechanics
│   │   │   └── Graphics/
│   │   │       └── MirrorReflection.cs    # Real-time reflection rendering
│   │   └── Shader/
│   │       ├── Mirror.shader              # Custom mirror shader
│   │       └── showThrough.shader         # X-ray vision effect
│   │   
│   └── ProjectSettings/           # Unity configuration
└── README.md

Technical Details

Dimension Switching System

The game uses a world-clone approach for dimension traversal:

  1. Entry: Player collides with a mirror surface (tagged Mirror)
  2. Animation: Player plays entry animation while position is interpolated
  3. World Clone: A new world instance is spawned at a calculated offset
  4. Rotation: The cloned world is rotated based on mirror orientation:
    • Up-facing: 180° flip (gravity inverted)
    • Side-facing: World mirrored horizontally
  5. Camera: Camera smoothly transitions to the new viewpoint

Mirror Orientations

Direction Code Effect
Up U Gravity inverted, world flipped 180°
Down D Gravity inverted
North N Horizontal mirror
South S Horizontal mirror
East E Horizontal mirror
West W Horizontal mirror

Key Components

  • GameSystem: Abstract base class handling dimension transitions, world cloning, camera movement
  • PlayerController: Movement, collisions, object grabbing, ladder climbing
  • Mirror: Determines mirror orientation and provides data for dimension calculations
  • MirrorReflection: Handles real-time planar reflection rendering using frame buffers

Building

The demo is built for Windows using Unity.

To build for other platforms, open Demo/ in Unity and configure platform settings in Edit > Build Settings.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors