Re-Bot
A 2D problem-solving platformer game about a robot whose first second of movement is recorded and played back in a loop for the rest of the level. Some levels also have objects that the player can drag into the room to help the robot reach the door to the next level.
Play the game on itch.io!
Role
- Game Developer
- Level Designer
- Game Designer
- Object Artist
- Sound Designer
Team
- Michelle Lin – Environment Artist, Game Designer, Level Designer
- Jenise Cheung – Character Artist, UI Artist, Game Designer
Tools
- Unity & C#
- Visual Studio Code
- FigJam
- Aseprite
- Google Docs
Context
A game made in 4 days for the GMTK Game Jam 2025, which took place from July 30 – August 3, with the theme "Loop".
The submissions were rated in 5 categories, and this jam does not have an "Overall" ranking. Out of 9645 entries to the jam, Re-Bot ranked #650 in Creativity (top 7%), #1150 in Enjoyment (top 12%), and #1615 in Audio (top 17%) from 31 ratings (#1409 and top 15% rating count).
Game Walkthrough
Here is a link to the video if the embedded one doesn't load.
Play the game on itch.io!
Process
Movement Recording & Playback
The core mechanic of the game is recording one second of the player's movement and replaying it in a loop. This was the first thing I prototyped.
I created a script with methods for the specific actions of the player movement, including horizontal movement and jumping, and used these methods for both the player's controls during the one second of recording and the movement playback. The data on the player's actions, specifically the keys they press and when they press them, was stored in a List.
After creating the first prototype of this mechanic, I noticed that sometimes the first action in the loop is only played during the first iteration of playback, and never again afterward. To approach this problem, I tested the mechanic several times with various different movements to try to find a pattern between the instances when the bug occurred. I realized that this happened if I moved both left and right but didn't release the key during the recording stage, and I was able to solve the issue by stopping the player's horizontal movement at the end of a loop during playback.
Dragging Objects
The second mechanic in our game is dragging objects into the level, with the object snapping to the tilemap grid, not colliding with the player until it has been placed, and only being able to be placed in certain tiles (for example, you cannot place an object in a wall). Additionally, an object cannot be dragged before the recording stage ends or after it has been placed.
This game was my first time using tilemaps, so this mechanic was my greatest concern in the development, especially with the placement constraints of the draggable objects.
I looked up tutorials and documentation about tilemap manipulation and movement, and was able to apply the knowledge I learned for my purposes. I converted the object's position to and from the type used for tile positions, and used a separate unrendered tilemap to determine the valid placement positions of the object.
Reflection
This was my second game jam, and my first one was over twice as long, so the time limit for this one added quite a bit of pressure. Despite this, I really enjoyed making this game and am very happy with how it turned out. Through working on this project, I was able to gain more experience and skills in game development, as well as more confidence in my abilities to both make a game and to do so in a limited amount of time.
Something I would do differently is to playtest the prototype early with a placeholder level. We made the levels quite late on the last day of the jam, so we did not get the chance to playtest with people outside of our team, and we did not see much point in playtesting the game before it had levels. During the jam's rating period, the most common piece of feedback we received was regarding the controls of starting the recording by pressing any key or mouse button, and how some players would accidentally start it when they didn't mean to. From this experience, I learned that playtesting something is always better than not playtesting with other people at all, even if the prototype that is being tested does not have proper levels.