top of page

Current project

Now that I’ve finished my master’s degree I wanted to work on a project that is very me. I thought of a few ideas, but then I remembered a test scene I made in unity during my undergraduate course. The scene was just meant as a test to think about how the idea could be implanted rather than trying to make a game about it, so it was relatively simple. Seen below is a split screen showing “two rooms”

I made this scene as I’ve really liked exploring higher-dimensional representations since an extracurricular maths program I was a part of in year 9. In this program, I attended maths workshops that covered a variety of different topics at several different university campuses in Cambridge. It was at one of these workshops that I was first introduced to four-dimensional topology, and it created a spark that has turned into a love of dimensional representation. I originally wanted to do something around this for my undergraduate dissertation but I could not come up with a way to make it work within the restrictions of a dissertation so I instead did my dissertation on game tutorials in 2D games and 3D games. 
There are lots of ways for games to play with the dimensions of the game world, a great example of this is “FEZ” (https://store.steampowered.com/app/224760/FEZ/) as it looks like a 2D game but it allows the player to rotate 90 degrees, but the movement is all 2D. There are also people working on  4D games such as “4D toys”( https://4dtoys.com/) the creator of this has also been working on a full game that exists in a 4D world, Miegakure [Hide and Reveal], ( https://miegakure.com/) but the player is able to rotate around the 4th geometric axis and has full 3D movement in a similar manner to FEZ. There is also the aspect of time where some games with time-based mechanics allow free control over time or have very limited control, this is still another dimension to the game. then there are the games that take existing games and add more dimensions to them, a very common example of this is 3D noughts and crosses, or 3D chess. My favourite of these types of games has to be
“4D minesweeper” (https://store.steampowered.com/app/787980/4D_Minesweeper/) , currently, my fastest time on a 4x4x4x4 board with 10 mines is 2 minutes and 18.96 seconds.
I knew that this is the area my current project would have to be in. That’s when the old scene pictured above made me realize something, the physics in that scene are unlike any of the previously mentioned games but are in the style of another game that played with 3D space, and that is the Little Big Planet (https://www.mediamolecule.com/games/littlebigplanet) series. In this series of games, the play space is a 3D environment with 3D objects and a 3D character, but the player can only freely move in two dimensions left and right and up and down. These games existed in layers, the first 2 games had 3 layers and the third game had 16 layers. Movement between the layers was limited and there could be objects in between the layers which could prevent movement between the layers. This way of representing the play space is wonderful and would love to expand on how that would apply to a 4D world with 3D layers but I realize that this would be hard to imagine from scratch so while I could have jumped straight into that as a project, I decided I would go down a dimension and create a 3D play space with 2D layers so start with to be a way to think about how it would work a dimension higher. So I will create a game with all the mechanics I would want in the 4D game so I can create a lower-dimensional version of them. I do want this to be a full game and not just a demo or a prototype for a later game. This game is going to be a Logic-based puzzle game with a sci-fi theme. I want it to start off as a smaller game with the ability to add levels later so I want there to be different level themes, this is where the sci-fi part of the game’s theme comes into play. There will be different sections and the aesthetics will be either teleporting the player to different areas or a hologram environment imitating different areas. The first and only theme I currently have set in stone is The Lab this will be a very technology-based theme and acts as both the tutorial and has the player building the circuits for the device that allows them to go to the other themes. Because of that, this theme will be very logic gate based and will have the player gather components, this will create a natural environment for the player to get to know the controls.    
To start with I created a scene in Unity with 3 stretched cubes to act as the layers for the player to move on, and the player needs to be able to move between the layers.

Next, I created an “enemy” I use quotes because the purpose of it is to just follow a movement pattern, so this will sometimes use dangerous objects which could kill the player or just be used on harmless objects. This movement pattern is just to move back and forth, the object will move in the other direction when it goes near a marker.

At this point, I felt that interaction with the world was needed so I wanted the player to be able to push and pull objects. While holding onto objects the player cannot change layers, this means that objects will remain on the layer they are in, later I think I’ll add something that will either move an object between the layers or have an object movement pattern that moves between the lanes when it comes in contact with a marker. But to start with just basic push and pull were implemented.
Now how things interact was the next thought, the simplest option would be buttons, just have it so that when anything is on the button it is active, and I think that buttons like this will be added but I wanted something I felt was more versatile and to go with the theme. As seen with the movement pattern (enemy) I created an object to look like a computer chip. While this asset is just a temporary asset for development purposes and is not the final design it is a rough idea of what I want, and I want this to be used across the logic-based components of the game. so a key and receiver were made, the receiver just checks if there is a correct key in the area and if there is it becomes active and passes on an active signal. To test this in-game the next component is the destruction component if this component becomes active it destroys the object it is attached to. Then I wanted to have it so key then leaves the area it will deactivate the receiver’s signal so a component to move an object up when active and return to its original position when deactivate was made. 

At this point introducing actual logic gates seems natural so the question was how to implement them, at this point, I realized the best way to do this is with Polymorphism by having an “Activatable Object” class that has the methods “activate” “deactivate” and “changeState”. The change state method is so it can just pass in a boolean value and then put it in the appropriate state. The previous components are also these activatable object-derived classes. Now for the logic gates, two different classes are derived from the activatable object are used for these, the first of these classes to for the inputs, and the other one is where the logic from the inputs is calculated. This could have been done with a single class if it was just trying to be a logic gate, but as this is a game element I feel that this solution will allow more freedom when designing later elements and should be flexible enough that no future elements will require this to be reworked.

bottom of page