Partway through developing Entangled (* working title) I started to feel that it should be in 3D. I was comfortable with 2D, but I felt that the game might be more interesting and fun with an extra dimension. The game felt like it would have more potential in 3D. And the challenge of using 3D (my previous completed games have all been 2D) was interesting to me. A big influence on the game is the Portal series, so it made sense to have a similar view to those games.
After a bit of thought, I decided to bite the bullet and create a 3D prototype. It took surprisingly little work to get the core entangling mechanic to work in 3D. It was basically just swapping components from 2D to 3D versions. The game’s core mechanic is relatively simple from a programming perspective, and I mostly implemented it in 3D by changing Vector2s to Vector3s (I cheated and left out some more complex aspects that I didn’t need for a prototype). I threw in a 3D character controller from the Unity Asset Store, built four puzzles based on the first four from the 2D game, and had a basic prototype in no time:
Here are some of my notes from when the 3D prototype was put together:
- 3rd person view seems like it will work best, and allow similar gameplay to the 2D version
- Should be able to switch between 3rd and 1st person if it works out better to use 1st [NOTE: this is referring to me being able to change the camera view, not allowing the player to switch at game time]
- Player could have no hands and be more like an R2D2 style robot.
- This would fit in with the game’s theme better (they can’t just pick things up and move them easily)
- Make the mechanics simpler – just pushing with physics, no pulling
- Add restriction to make the game trickier – can effectively only push in the direction of movement
- Shouldn’t cause problems as the player can move on the Z axis now, so can get to the other side of an object if they need to (and if the level design allows)
Problems with the 3D Version
When I started playing and experimenting with the prototype, I found some problems:
- I had not anticipated that the 3D view would make is difficult to ensure the player could see what they needed to at all times. In the game, it is very important to be able to clearly see objects that were entangled to each other (the core mechanic is ‘entangling’ objects together so they move together). This is a classic example of what you have in your mind ending up different in reality. I had thought of the 3D version would just be the game with an added dimension. The (obvious in hindsight) differences between 2D and 3D never occurred to me.
- 3D controls made it difficult to move objects precisely. For example, if you were trying to push an object on the X axis there would be some amount of movement on the Z axis. With the game’s mechanic it makes a lot of sense for objects to move in straight lines, otherwise the puzzles would feel awkward. It is difficult for a player to move precisely along an axis in 3D, especially when they player will expect movement to be aligned to the camera view. Typical 3D movement is more fluid and intuitive than the restrictions of 2D, but my game benefits from 2D restrictions.
I spent some time trying to solve the issues caused by the pesky 3rd dimension. I added the ability to pick up and carry objects rather than pushing and pulling, which helped a little bit, but didn’t fully solve the problems caused by the imprecise nature of moving around in 3D. Picking up and dropping things also felt clunky and didn’t work neatly with the entanglement mechanic.
I tried to solve the camera issues by implementing several different camera views and behaviours, but nothing I did would solve the underlying issue of needing to keep multiple objects in view at all times for the puzzles to ‘read’ well. The main mechanic in the game is indirectly moving objects by moving objects they are entangled to. This doesn’t work well if you turn around and the object you want to move indirectly goes out of your view. In 2D, this works perfectly, as I can control the view independently of the player’s movement or where they are looking.
In the end, the only thing I could get to work well in 3D was effectively a 2.5D side-on view that allowed movement back-and-forth along the Z-axis, but didn’t really add much to the game. So I deemed the prototype a failure and went back to the 2D version. The 2D version suits the mechanic better, and has better ‘game feel’ because simplified 2D movement lets the player focus on the goal of the puzzles rather than trying to move precisely in three dimensions.
I put quite a lot of work into the 3D prototype before abandoning it, and I have not completely given up hope on the 3D version, and may use it as a sequel or adapt the mechanics to something that works better in 3D. It’s back in the pile of ideas so that one day I might find a use for it or solve its problems.
While it’s easy to see the 3D experiment as wasted time, I don’t see it that way. I learned more about my game, and gained confidence in the way I was going with it. I won’t spend any more time thinking ‘what if it was in 3D?’ as I already know the answer. Any time spent brainstorming (I think of prototyping as a type of brainstorming) is time well spent, as finding that an idea doesn’t work is still knowledge, and still a step towards completing a project.