Introduction
A game developed with Habitheque to educate about the dynamic interactions of aquatic environments and their inhabitants.
Gameplay
Platforms: PC, MacOS
The player takes on the role of the Otter Guardian to explore a 3D land and water world to find resources to solve 2D hexagon grid puzzles to generate essences of various aquatic flora and fauna to populate the environment to restore its health, which was depleted by an infectious Taker force. The player attempts to balance the biodiversity of what they are adding to the environment to maximize positive impact on the environment itself.
My Work
Team: Producer, Game Designer, Lead Engineer (myself), UIUX Designer/Engineer, 2D Artist, 3D Artist, Technical Artist, Art Lead
Game Systems
Eco System Simulation
There are two major parts of the eco system: the environment and its inhabitants. The environment’s health impacts how well many of the inhabitants perform. The inhabitants health impact both how other types of inhabitants are contributing to the overall system, as well as sometimes directly impacting the environment. These different inhabitant species could be given different jobs to determine how they contributed (whether it was directly to the environment, directly to other inhabitants, or other ways, such as combating the enemy force).
Hexagon Grid Puzzle System
I created a hexagon grid system for our game’s puzzle feature to create new inhabitants to add to the environment. We used a cubic coordinate system to create a robust hexagon grid system that easily allowed us to create multiple puzzles with different boards and solutions. It fit different puzzle pieces made up of multiple hexagons in different configurations, rejecting those that overlapped or went off of the board. It also checked if a given puzzle state satisfied the solution of the puzzle to give the player access to creating that inhabitant species type.
Takers (Enemy) Inhabitants
There were several types of enemy presences that could appear in the habitat, which had various negative impacts on the environment. They also had different, unique interactions with the player so that they could be dealt with to restore balance to the environment.
Turn Based Event Heavy System
Most of the primary elements of the game updated on more of a turn based fashion than in real time (when the player would advance through the menus and traveling). Along with the project being primarily for demo purposes, requiring heavy iteration, we built a heavy event focused architecture for the game to easily control the timing of our game’s system updates, as well as add and remove different game features with little hassle.
This could be seen at work best when the game elevated from just having the player add inhabitants to needing to add the enemy Takers into the game. The Takers ended up taking on many different forms that had different impacts on the game.
Topdown Engine
We used a large Unity plugin named Topdown Engine to help with prototyping. This was primarily used to quickly get a 3D character controller up and running, which was then modified to add all of our swimming functionality.
Dynamically Updating Art Assets Based on Environment
I created a tool for our artists which could be added to any art asset primarily using an Animator or Shader to drive its visuals, and it could have values within those tied to the environments values. The artist could just draw a curve which associated a continuous range of values from the environment with a given value(s) within an Animator or Shader. This was used for example to dynamically have the flora in the game look healthier or less healthy based on the changing health of the environment itself.
Architectural Systems
Heavy Scriptable Object Usage
Again in support of strong iteration, I built the game to heavily rely on Unity’s scriptable objects. This was in support of making a lot of the values that needed to be tweaked and modified, or entirely swapped in and out, easy for the designer or others to find and modify without needing to search through scenes and prefabs. This could be seen most strongly used in the creation of the different inhabitant species objects and all the systems for handling the environment and the Taker presence.