Skip to main content

Project

 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:


After:


Allowing the player to spawn a clone by pressing spacebar was a complex task. I originally tried to deactivate the player and spawn a new one at the beginning, transferring control to this new player. However, I soon found that it would be simpler to move the character to the start and spawn a non-controllable one at their previous location. I could now start testing the level to make sure it worked as intended. I had my character stand on the button, then deactivate, spawning a new character. This second character could then walk to the goal button to complete the level. 

There were more qualities I added that were not imperative to the function of the puzzle, but would be important for the function of the game in other contexts. Some of these qualities include: taking control from the player while they are falling or when they have completed the level; allowing a character to stand on another character's head; displaying the number of clones the player has available; and configuring collision so two clones cannot share a space. 

I decided to further demonstrate how the puzzles would work by creating another level. This one consisted of two planes that were separated by a one block gap. Since the player cannot jump, they must walk into this gap, letting their character fall off the plane. When a character falls, it counts as deactivation and a new clone is spawned. However, the new clone can then progress to the goal button as the deactivated clone has created a bridge that can be walked across.

The following video demonstrates the two levels I created:








Comments

Popular posts from this blog

Semester 2 Submission

Project Outline This project is an exploration into player feedback and player reward in game mechanics. I have explored this by creating mechanics in Unreal Engine, imagining how they might be used in a game, and how a player might feel when using them. This exploration progressed into player reward in puzzle scenarios, which links into my current area of research. I looked into how visuals can create a language that the player will learn to understand while playing the game, and will guide them through problem solving in the game.  Project Context My semester 1 project was a core puzzle game, meaning the game was centred on a central puzzle mechanic and expanded from that point. I wanted to explore a mechanic that was more of a peripheral puzzle that exists as side quests to the main gameplay. Many popular game series have main gameplay mechanics with puzzles along the way, such as Batman Arkham, Resident Evil, and Tomb Raider. As these types of games are extremely popular and (a...

Design Inspiration Semester 2

First person adaptation I decided to switch the view of my game from third person to first person. I made this decision because movement around the levels would sometimes give the player a confusing perspective (if they had their back to a wall for example). I moved the camera to instead hover above a pair of arms, that would be used to show the hand movements from a first person perspective. The challenge now was to recreate every animation in first person instead. I looked into first person games that think have good first person hand animations. I think Dishonored (2012) is one of the best example, as it relies heavy on the tools and abilities that centre around the player character's hands. One of my favourite aspects of the design is the way the knife moves from a regular to a reversed grip when entering stealth. The knife is clearly visible and serves its purpose in both grips and it tells the player they are in stealth mode without the need for another visual prompt (there i...

Semester 2 Project Progress

13th January 2025 To begin this project, I am experimenting with creating different game mechanics. This is to build up a repertoire of skills in Unreal Engine and also see if any mechanics seem as if they can be adapted or incorporated into a game. I began by using free assets to make a character that can run around and execute an attack pattern. This was just to experiment with the assets and create a character that I could test other mechanics with. The first mechanic I created was one that lets the player grab an object and pull it toward them. When within a defined range, the player's reticle changes shape to indicate to them the object they're looking at can be grabbed. Grabbing it moves the object on an arcing trajectory toward the player. This could be used to grab a weapon to use, to bring an enemy closer to be attacked, etc. 14th January 2025 I added functionality for the player to hold an object and attack with it. When an object is pulled toward the player and reach...