Skip to main content

Rogue Malfunction

Rogue Malfunction

What Is Rogue Malfunction

Rogue Malfunction is an isometric puzzle adventure about a robot trying to escape the Overlord. In some levels, the Overlord changes the controls to make the escape harder.

The game has four puzzle levels built around remapped controls, parkour, moving boxes, pressure plates, and route-finding.

I came up with the control-remapping idea because I wanted the Going Rogue game jam theme to affect the gameplay, not just the story.

Project Details

Role
Programmer and Game Designer
Team
Four people
Development
5 days
Engine
Unity 6
Language
C#
Status
Released

What I worked on

Programming and UI

  • Built the control-remapping manager
  • Built the timed door-puzzle system
  • Adapted the player controller for the Sequencer level
  • Added moving obstacles and falling hazards
  • Built the main menu, level-selection screen, settings, credits, pause menu, and controls page
  • Added volume controls and saved volume settings

Game design

  • Created the control-remapping and Overlord concept
  • Designed the Sequencer level
  • Designed the three timed door puzzles
  • Designed the parkour route
  • Revised the level three times after playtesting
  • Added the Extremely Hard label after players found the level harder than expected

The artist created the UI artwork. I integrated it into Unity and built the menus, navigation, and functionality.

How the four levels differ

The final build has four puzzle levels. I created Sequencer. Other developers created The 3 B's, Sokoban, and Tiles.

  • Sequencer uses timed door puzzles, control changes, parkour, moving obstacles, and falling hazards.
  • The 3 B's uses movable objects, buttons, doors, and control inversions.
  • Sokoban asks the player to move boxes onto four pressure plates.
  • Tiles asks the player to cross 25 tiles without stepping on the same tile twice. Repeating a tile resets the puzzle and returns the player to the checkpoint.

Robot character

An artist created and rigged the robot model after the game jam. We had trouble getting the animations and player controller working together, so we used the robot as a non-playable character in the Sequencer and Tiles scenes instead of delaying the release again.

Why we split the player controller

We began with one player controller that all three programmers would use. Since we were building different levels at the same time, that meant multiple people would be editing the same script.

We made separate copies of the controller so each programmer could work on their own level without constant merge conflicts. It worked for the game jam, but it also left the project with duplicate movement code across several scripts.

Control remapping in Sequencer

I built the Sequencer level around three timed door puzzles. Each door gives the player a WASD sequence to enter before the timer runs out.

The first door swaps W and S. The second swaps A and D. By the final door, both swaps are active.

Three timed door puzzles

I built a control manager that tracks what each movement key currently does. Before moving the robot, the player controller checks that manager for the active mapping.

I also built the door system, including the sequence prompt, timer, input feedback, failure state, control change, and exit.

Each door uses a fixed control change rather than a random one. For Sequencer, I updated the controller to read the current key mapping while keeping smoothed movement, full air control, grounded jumping, wall anti-stick logic, and input locking while a door puzzle is open.

  1. Door 1Three inputsThree seconds
  2. Door 2Six inputsFive seconds
  3. Door 3Nine inputsEight seconds

Adjusting Sequencer after playtesting

Playtesters found the Sequencer level too difficult. I changed the parkour route three times and moved several jumping sections closer together.

I still wanted Sequencer to be the hardest level, so I added an Extremely Hard label to the level-selection screen. Players could see what they were getting into before entering.

Playtesting also exposed progression bugs and edge cases that we fixed after the game jam. During that work, I completed the remaining menus and improved navigation between them.

Results

800+Browser plays
4.8/5Average rating
14Player ratings
4Puzzle levels

Rogue Malfunction is available in the browser and as Windows and Linux downloads. After the game jam, we combined the four levels into one release and fixed issues found during post-jam testing.

What I would change

Player controller setup

Separate controllers solved a short-term game jam problem, but I would not structure the system that way again. It left the project with the same movement code in several scripts.

If I rebuilt the game, I would keep one player controller for physics, jumping, and interaction. A separate system would handle control remapping, while each level would define the control setup it needs.

GitHub workflow

I would set up main, development, and feature branches from the start. I would also define ownership for shared scripts, scenes, and prefabs so multiple people are not changing the same files.

Connecting the levels

Each developer built their level mostly on their own, so the four levels feel separate. If I rebuilt the game, I would plan the full level order and story before production.

I would also use the environments to show more about the robot, the Overlord, and why the robot is trying to escape.

Play Rogue Malfunction

Play in a browser or download the Windows and Linux versions through itch.io.

Play or download

Expanded project image