I decided to start this development blog to share some thoughts and experiences during the development of my recent game project “Entanglement” (provisory title).
I started to implement the idea about a year and half ago (beginning of 2015) but due to the current circumstances at the time, I couldn’t dedicate as much time I'd like to it. I was finishing my master thesis on Computer Science/Multimedia, which consisted on developing a software to create interactive digital installation art that reacted to a third person's body movement. This involved Kinect sensors, real-time computer graphics and interactive soundscapes.
Since that time I was able to finishing my master’s degree and I started to pull some time off to dedicate myself to this project (although I’m working on it after other full-time programming work).
HOW IT ALL BEGAN
I've always been interested in Physics, and while I was reading Brian Greene's “The Fabric of the Cosmos” I came across this section "The Red and the Blue" (from the chapter “Entangling Space”) which dived into the concept of Quantum Entanglement.
Quantum Entanglement as most of you may know refers to a situation where two particles spatially distant from each other have correlated properties.
Between these entangled particles, their physical properties such as position, momentum, spin, and polarization, are found to be appropriately correlated. Once we observe a particle it assumes a specific value for its spin, for instance, and instantly the entangled particle changes to the opposite of the first one. This information between the particles is mysteriously interchanged between them in a speed faster than light (“spooky action at distance” as Einstein called it).
So I thought it would be interesting to explore this concept in a macro scale, as between two human bodies.
I've always been fascinated by the relationship of bodies between each other and space (I have some background on dance as well) so this was a natural way I thought about presenting it to the player (instead of using simple geometric primitives).
I also have a twin brother and when we were younger we sometimes played this "mirror game" where we should stand in front of each other and mimic each other's movement. It's also a very common exercise in dancing to developing body awareness.
THE PROTOYPE
So I started to implement a prototype where you move a human character (the blue one) with a doppelganger (the red one) which mimics all your moves symmetrically (like the symmetric spin between entangled particles)
This felt really interesting to me so I started to think about what the goal in this situation would be.
By the time I was developing this prototype I came across some games (by researching due to the interest in this topic) which explored this concept of coordinated movement between two characters.
The most similar one I came across by that time (which also explored the concept of symmetrically movement) is a web browser game called
"Opposition", made by Mathew Vandevander with PuzzleScript. The goal in this game is to guide two mirrored characters to their respective cell in a grid like map in order to beat the level.
Another game which explores this interconnected movement between two characters is
"Binaries" by Ant Workshop (released recently). In this case, you have to guide two characters at the same time to their respective doors in order to complete the level.
Other games like
"The Rabbit and the Owl" and
"Thomas Was Alone" also explore this concept of getting different characters to their exit doors or portals.
In all these cases the goal was to move all the characters and, recurring to their own properties or to the environment, place them in a specific position, implementing some portal/doors felt like a natural solution.
Since I'm mainly exploring So I also decided to implement these doors that port you to another room with other puzzles, which is a natural solution when dealing primarily with character placement.
By this time I had this basic rule implemented: You must guide your character to his exit door, ensuring that by the moment you arrive the doppelganger is also at his exit door, otherwise no one can exit the room.
This was an interesting enough ground for me to explore the intricacies of symmetrical movement in a side-scroller/platformer scenario, so I decided right away that the game would be about exploring the symmetric relationship between the characters properties, exploring different possible variants of this relationship.
I also introduced a new rule in order to make the puzzles challenging, which is: the characters should not collide with each other. This new rule felt interesting and it also drives me away from the games I stated previously.
After playing with this basic idea and implementing some puzzle rooms I decided to implement a new scenario regarding the symmetry aspect.
As you can see on the first example, your character and his doppelganger have an inverted movement along the x-axis but their jump behave the same way.
By this time I also had the idea of having different twists on the core mechanic so that it fully explores the intricacies of symmetry between these two bodies.
So the next step in my prototype was to implement the first twist in the mechanics, in which I add a different layer to the symmetric behavior between the characters. I experimented inverting the values on the Y axis for the doppelganger and the result was very interesting.
Of course I had to fine tune the algorithm in order to prevent the doppelganger from ascending when the player jumped if he was still in mid-air, otherwise, the doppelganger could ascend multiple times before hitting the ground, resulting in a kind of floating behavior.
But I could see right away the interesting scenarios with this mechanic.
What if I need to get my doppelganger atop of a really high platform? Well, if our axes are inverted it means that the vector that pulls me down (gravity) will be the same that pulls him… hum, you can see where that goes.
Currently I have some ideas sketched out on which particular twists I can introduce to the characters relationship (always regarding this symmetry between their properties). I currently have ideas for 3 more mechanical variations and the next steps are to implement each one of them and experiment A LOT with each one.
My main design goal is to distil each mechanic variation the most in order to get to the most interesting situations out of them, so that I present them to the player.
CURRENT STATE
The prototype I did in the beginning of 2015 had the mechanics of the first two areas of the game already implemented (with something like 5 puzzle rooms for each of them). In each area you could play with two different takes on the mechanics (the two I just described above). As soon as I tested it with people I discovered they also found the concept interesting so I decided to really pursue this idea and build the game the best I can.
So, a few months ago I started to transfer the 2D prototype I had to a 3D project (since the aesthetic I envisioned for the game was in 3D) and implementing more rooms for each of the first two worlds.
The game currently has some 3D placeholder art with a mixture of assets made by myself (like the characters and the doors) and assets from free online resources (I’ll probably make a blog entry just to talk about the art style, as soon as have some work on that).
The reason for not having the art in a good development stage is because I’m primarily focusing on game design and level design and when I feel that the game is almost fully build out (all, or most, of the worlds implemented and the story more solid) I’ll than start to increase the visual aspect of the game (probably by having a good 3D artist working with me).
The game (which is in an early 3D prototype phase) currently looks like this:
TECHNOLOGY
I’m currently developing the game with Unity 3D, programming in C#.
I’m developing in an OSX machine and currently the target platforms are PC/Mac/Linux (although consoles would be a great platform as well due to the nature of the controls).
I used Blender to create the protoype models of the main character (and the doppelganger, which is the same mesh but with different textures) and the doors. Using Photoshop CC for texturing.
_________________________________________________________
It is my wish to continuously update this devlog throughout development and I hope I can pull some time off to write here the most relevant updates and interesting situations I arrived.
Thank you for reading!
Filipe