Drag Everything – A Portal Inspired Puzzle Game

Screenshot aus Physics Sandbox

In the beginning of 2020 I started playing Portal. This was actually my first time with Portal and although this was quite an old game, I was really stunned by the greatness of this game. The premise to have a relatively simple but interesting physics mechanic and to create a game around this very special mechanic really fascinated me. So as I am always curios about my own abilities, I wanted to make this kind of game for myself. I wanted to create a game in which physics are very important and give the player a feeling of a very realistic and interactable environment. So I started a new Unity project, sat up a basic player movement and tried out some ideas, mechanics and ways of interactions. After I settled with a fun mechanic I figured out the kind of game to build around this kind of mechanic.

The First Attempts and Iterations

My first attempt was to make a shooter. I just wanted to be able to shoot in the game and to destroy or push objects around by shooting them. I thought about a game where you have to start some physical reactions, kind of like these marble machines some people built on the internet, by shooting at the right piece and cause it to fall down. Some kind of physical-based chain reactions could have been fun to look at. After I implemented the shooting and shot some balls and cubes in the scene I thought „This is fun but I would love to move the physical objects around without the shooting. Shooting is fun but too ordinary“. I wanted to be able to carry and hold things.

After implementing the ability to pick stuff up by clicking on it, I realized that this also didn’t feel very special. I was able to pick a thing and it kind of „popped“ into the according space in the players view. It did not feel very realistic or like some kind of real interaction. Then I thought: „What if I pick things up, by adding a physical force toward the center of the players view. Like physically lifting things through a force I create.“ (The fact that I always loved Star Wars helped me with this idea…)

So I implemented that feature and it was really fun. In the whole project this was the first mechanic I enjoyed playing around with. The object the player picks up kind of swings around the center of the view and can be speeded up by looking around. The higher an objects mass were, the more sluggish it moved. This felt realistic in a way. Just by picking things up and moving them around I became a feeling for how heavy things are. A big wooden table were much heavier than a small can in the scene. So I decided to stick with this dragging mechanic for now.

The Game Around The Mechanic

After figuring out a fun and from my point of view interesting way of interacting with the scene, I tried to figure out a game I want to build around it. At first, I thought about using the mechanic in fights. To through objects at enemies and to create a very action-loaded battle simulation was one Idea I had. But after some test I realized, the swinging and dragging were too unpredictable to really aim at something. Then I reminded myself of my initial inspiration to start this project. I played portal and besides the great story and atmosphere, I really dug the puzzles around the innovative mechanic of creating a portal. So I thought, maybe this is a good way to start. Giving the player the need to use the mechanic I created and exploring its possibilities. So I decided to create a puzzle platformer in which the player has to solve puzzles by using his environment to make progress in the game. This is not a top-notch gameplay innovation but It is good to learn something and the size of the project is not to big for one person.

Current Progress

Currently, I would say, I reached the first milestone. I implemented the swinging mechanic and visualized it by drawing a colored line between the object and the center. I also polished the basic movement and the mechanic so it is fun to use and there are no glitches anymore. I also implemented a first, very simple puzzle. (If you plan on playing the first prototype and trying to solve the first puzzle yourself, you should first download the game here and try it before you continue reading.)

In the first room, there is a pit of lava and some kind of pool filled with balls. There also are a door and a button beneath the door. Here is what I want to happen: The player is supposed to explore the room. The game only tells him, he can click and hold on objects nearby and drag them around. After that, the player is supposed to take the balls, swing them around and finally got to the door. There I want him to try use the button. (actually at this point the button is designed very poor. Using it with the dragging mechanic is very unintuitive and a want to change it to some kind of tilt switch). The button won’t work, because the puzzle still needs to be solved. Next I want the player to look again at the balls and start throwing them into the lava. He will recognize the balls disappear. But: One of the balls is red – the same color as the door button. The player has to destroy the red ball first and then use the button. After the ball is destroyed, the door can be opened.

A Short Demo-Video

Current Issues and next steps

As I already mentioned: There are still some issues. Some are just bugs or programming issues, others are design related. Here you find a list of them along with my ideas for fixes and the next steps I plan after that:

The Issues

  • The door button is hard to understand: I want to turn it into a tilt switch as the motion is better known by most people.
  • The jumping is too slow: This is a programming related issue. The pause between jumps is a bit too long and in general, is the jumping very slow. I want to increase the upward speed. I want to try if this increases the pace of the game and makes it more fun to play as a platformer. The inspiration actually came from Minecraft, where some players play parkour-style maps and jump through a course really fast.
  • There is no feedback when things work out: At the moment, the player does not know, if what he does is wrong or right. I want him to have some kind of feedback when he figures out a task. For example changing the color of the door button to green, adding a sound, or directly open the door, when he destroys the red ball.
  • I want to offer the player a little bit more guidance. At the moment it is very difficult to create a connection between the destruction of the red ball and the door button. I have the idea of making both of them glow when the player looks at them. Maybe not I the beginning but after a while without the puzzle being solved. By this, I want to decrease the possibility of frustration but also offer good players the option to solve a puzzle really fast on their own.

Next Steps

  • I want to build more levels. The goal might be to always burn the ball.
  • In the following levels, I want to include some more mechanics.
  • I want to implement slides, physical chain reactions, or big physical machines to get the ball to the lava pit. Here the player has to figure out the correct entrance for the ball, by looking at the reaction.
  • There might also be some obstacles the player has to overcome by dragging boxes and other elements to the right place.
  • I want a swing, the player has to use for overcoming a dangerous area like lava.
  • I want to make everything look better. I want to define some sort of art style making everything look cool and smooth. At the moment the levels are very „prototyped“. I used probuilder for the prototyping. This asset is specially made for building simple shapes and levels very fast.
  • After finishing the basic game and implementing all systems around the puzzles, I want to replace the placeholder with more realistic items.

Future Updates

The scope of the project is relatively big for one person. So it will take a while to finish the game. I have to treat it as a side project, but I will use this article to track my progress and give you some updates once I reached some milestones.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert