My submission for Friday 25th October is a demonstration of a puzzle game I am calling "Clone Bot". It is a puzzle game in which the player must reach the exit of a level using multiple clones of a character. Many of the puzzles will follow the process of the player completing a task with their first character, then spawning a clone who can then solve the puzzle. There are different ways this process could be played out and the puzzles could be made more complex by giving the player access to more clones.
I started with Unreal Engine's top down project template. This provided me with a basic level containing some obstacles, a character that moves to the location the player clicks, and a camera that follows this character. The first thing I did was remove everything from the level except the floor and the boundary walls, and instead placed a plane for the puzzle to take place on. The material used for the ground in the level is a grid pattern, so I altered the scaling of this material to style my plane as a 5x5 grid.
My next task was to change the player movement from point-and-click to WASD. I did this by amending the existing blueprint, but observed that the game made more sense with discrete movement instead of continuous. By this, I mean a form of movement that doesn't allow free roaming around the level and constrains the player to only moving a defined distance with a single move, This communicates to the player that the puzzle can be solved simply with standing on certain tiles. Simplifying the game in this way serves the purpose of decreasing the state space of a solution. The player can only move in at most four directions at any one point, instead of an infinite number, and the player can only ever be in a set number of positions (depending on the width and height of the level). While this simplification makes development simpler, it also helps the player deduce exactly what they must do to find a solution. I programmed in this movement system by offsetting the player's location, by a distance equal to the distance between two grid points, when a button is pressed. The player could then navigate the level and be standing in one of 25 positions at any point.
The next thing I did was set up a basic level. It would consist of a goal button that the player must stand on to complete the level; a cage around this button that prevents access; and a button that would lift this cage. If the player stands on this button, the cage object is moved upwards so the player is able to step on the button. This was the simplest version of a level I could think of. I then wanted to adapt the level into one that incorporates the clone mechanic. My idea to do this was inspired by a level in Portal (2007). In this level, the player stands on a button to open a door. When they step off this button, the door closes, so the player must place a cube on the button to keep the door open. This is a strategy taken when designing puzzle games that teaches the player about the mechanics of the game (more info).
Before I could start on the clone mechanics, a problem occurred with my project's save files, and the next time I opened it I had a blank scene. While I couldn't restore my project to what it was, I found that Unreal had autosaves stored in the project files that I used to restore the blueprints I had created. I just had to recreate the scene as it was. After this, I also arranged the blueprint nodes that controlled movement into a function so it was less cluttered, shown below.
Before:


Comments
Post a Comment