Single-Player Isometric Puzzle Game
Designer & Gameplay Programmer
Made in Unity, coded in C#
2 weeks, 3-man team
Captura is a 2D isometric puzzle game where you follow the adventure of Bërit, a single mother trying to reimagine the world and cure herself and her baby of sickness.
In Captura, you can capture world objects in a magical lamp and place them elsewhere. The game features 3 levels, and each level introduces a new object / mechanic as well as a new slot for you to capture it with.
Bërit can take her baby throughout the game, or abandon it at any place along the way. Carrying the baby makes the game more difficult as you’ll find yourself backtracking and juggling your capture slots a lot more. In the end, you get a different ending depending on whether you abandoned your baby or not.
In the game, you can capture your baby, boxes to put atop pressure plates and open gates, bridges, portals that change the destination location based on which pedestal you placed them on, and statues that shoot a force-field.
This was one of my first projects in Unity3D. For this project, I did all of the gameplay programming as well as a few simple tools to aid the level design in unity. Although the game displays in 2D isometric, it was built using 3D cubes with sprites overlaid on top of them, in the correct isometric perspective.
The bulk of my work in the project has been:
- Movement Controls
- Translating controller input from a 3D space into an 8-axis isometric perspective
- The capture mechanic (capturing – casting)
- Taking objects from the world space and storing a prototype, and cloning them upon casting back into the environment
- Some objects must be placed in scripted positions, like portals on pedestals or bridges across gates
- Controlling edge cases like casting boxes outside the level tiles, capturing things from behind gates, etc.
- Level Design streamlining
- Built a pipeline wherein you can build the level out of cubes, set their properties in the inspector and it turns into the proper objects & sprites in runtime.
Captura started off as a very abstract feeling, taken from very diverse reference. One of them was the Ainulindalë, the story of the origin of the Universe of the Lord of the Rings, and another was simply the cold and silent dusks of Sweden’s Tundra’s, and how they are "kind of scary but comforting".
We started talking about a world reimagined at the face of a lantern, and soon moved to a story about adoption. A mother so disillusioned with the world her baby had to live in, that she would shape the Earth itself to make it better. Unfortunately, this is wishful thinking. She never had any hopes of making the Dream a reality, and in the end she accepts this and knows that she needs to give her baby to another man, because she is the one incapable of taking care of it, not the world.
As Bërit descends deeper into denial, the world becomes harder to grasp, using the isometric camera to create illusions of perspective that make it difficult to figure out space and depth. The game’s progression is an exercise in inducing increasing confusion on the player.
Since the game was made in a very short time span and without any real risks (it was simply a small project to be done during my time at Vancouver Film School), we decided on making something more alternative like purposefully layered confusion and abstraction and backtracking. In the end, we were very happy with the result.
- Collision Layers
- The Prototype design pattern
This project was really useful for me to learn all about Raycasting, since the nature of the capture / cast mechanic implies a lot of checks for adequate placement of objects.
Naturally, since there are a lot of scripted-placement objects (e.g., portals can only be placed on pedestals), other objects that prevent you from capturing / casting across them (e.g., you can’t capture a bridge behind a closed gate), among other edge-cases, this project has also been a really good experience into getting used to effectively use Unity’s Collision Layers.
Whenever you capture an object in the world, it becomes a prototype object that gets cloned upon cast. Architecturally, it made sense to implement the Prototype Design Pattern.
Bruno Hayne (Level Design)
Lucas Josefsson (Art)