Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Role: Lead Designer | Systems Designer | Technical Designer
Genre: 3D| First-Person| Puzzle-Platformer| Adventure
Release Date: March 11th, 2020
Platform: PC
Crystal Chaos is a 3D, first-person, puzzle-platformer that I worked on with a team of 5. We were expected to produce a fully functioning game within 10 weeks as part of our class, and I served as the lead designer and developer for the team.
The game is set in a cave filled with mysterious crystals. The player wakes up from a fall with nothing but a flashlight at hand and a breadcrumb of notes left by their companion, who has gone on ahead. The crystals in the caves react strangely to the player’s flashlight and they must use these crystals to traverse the dangerous caves while avoiding traps and falling to their death.
The game is published on itch.io and is available for a free download on Windows.
There were a number of systems designed for Crystal Chaos, with a focus on making them cohesive and flexible. This was done to make level building and puzzle design easier to implement with the game’s mechanics.
The systems breakdown will cover the various crystal mechanics, the flashlight mechanic that the player uses to interact with the crystals, as well as some of the feedback systems implemented.
The main gameplay loop focuses on puzzle solving by activating crystals. The player can activate the crystals by charging them with the flashlight. Every crystal’s charge goes from 0 to 1, where 0 is no charge and 1 is fully charged.
The following table shows how much charge each crystal type gains per tick (frame) as well as an approximate amount of time it takes to charge the crystals. The function performed by each crystal type once they are fully charged and activated is also shown.
The variation in charge rate was decided based on the function of the crystal as well as its importance with respect to the completion of the level. More important crystals have a smaller charge rate and thus take a longer time to charge.
The small white crystal, for instance, only opens up paths within the level and has a much higher charge rate and charges faster than a large white crystal, which serve as keys to open doors that lead the player to the next level.
All crystal types lose charge slowly once the player stops charging them.
The core functionality of white crystals is to serve as keys to open blocked off paths or doors. The smaller white crystals open up vines which block paths when activated. The larger white crystals, which sit on pedestals, serve as keys for large doors that allow the player to proceed to the next level. All the keys linked to a door need to be opened for the door to open.
The latest activated large white crystal also serves as the checkpoint/ respawn point for the player if they die. Considering the importance of the large white crystals and that players traverse the level particularly to search for them, they serve as iconic and easily distinguishable locations for the players to respawn.
White crystals are the only crystal type that remain fully charged once they have been activated. This was done as the white crystal does not serve any purpose once the vines or doors they are linked with are opened.
The system for the white crystals were built such that they could easily be used for level building:
Purple crystals are capable of growing to a designated height when activated.
This can be used to push up platforms and bridges to allow the player to cross over.
They can also be used as bridges for the player to cover long gaps.
The level designer was given full control over how long the purple crystal could grow by changing a scale variable. This was done to make the level and puzzle building process easier and more flexible.
Purple Crystals grow only once they have been fully activated. However, they start to lose charge after growing and shrink back to their original size once they run out of charge. This was done to give the players a sense of urgency and add time-based puzzles into the mix.
Honestly, we just wanted to do something that blew up. Making puzzles out of that was the challenge however. And thus, the red crystal, which produced a large explosion on activation, was created.
The red crystal can shatter specific rocks and boulders within its explosion range.
This can be used to remove obstacles blocking the player’s path, revealing hidden content, or making platforms drop down if they’re hoisted on top of a rock.
Oh, and the player dies if they’re within the explosion range (we just had to).
There was a fixed constraint given on the range of 5 meters for the explosion unlike the purple crystal, for which the scaling size could be varied. This was done as it was important for the player to be aware of the range since being within the explosion would result in the player’s death.
Red crystals explode once activated and immediately lose all their stored charge after the explosion. This was done as we wanted to show that the charge stored in the crystal was converted into an explosion. Additionally, making the red crystal lose charge slowly after being activated will make the player keep causing explosions relentlessly and that was not a gameplay feature we intended.
The yellow crystal is capable of shooting out a beam of light in a specific direction once activated.
The player can rotate the yellow crystal and activate other crystals which are out of reach using its beam. The speed of rotation of the yellow crystal was slowed down when compared to the player’s usual camera rotation as we wanted to give the player a greater sense of urgency and make them feel like they were moving something heavy.
The system was built in such a way that the yellow crystal was capable of charging every type of crystal that its beam could reach. This feature also gave scope for more chain-reaction based puzzle solving.
The range of the beam was fixed at 50 meters as it was important for the player to know what crystals in their line of sight were capable of being hit. A varying range would confuse the player otherwise.
Once activated, the yellow crystal begins losing charge and the size of the beam reduces in relation. This was done again to instil a sense of urgency in the player and create more time-based puzzles.
The player’s core mechanic is using their flashlight to activate crystals. The flashlight range was decided to be 15 meters as it was thought to be the ideal distance the player needed to be from the crystals at most to build the kind of puzzles we wanted.
As the player keeps using the flashlight, its charge reduces consistently. The amount of charge in the flashlight is represented diagetically through the charge bar present on the flashlight’s head.
The flashlight’s charge is replenished by collecting the various fireflies called ‘Spark Bugs’ that are floating around each level. Collecting one set of Spark Bugs replenishes about half the charge of the flashlight. The Spark Bugs respawn at the same location after 10 seconds. We decided on this respawn time after playtesting and feeling this was the ideal time between promoting resource management and avoiding the player feeling frustrated about lack of charge.
It takes approximately 8 seconds of use for the flashlight to be drained of charge entirely. This was decided as we did not want the player to be able to charge two key crystals continuously without replenishing charge. This way, the player is provided more challenge through resource management.
Right at the beginning of designing and developing Crystal Chaos, one of the core philosophies we wanted to implement was the ability to teach the player the game’s mechanics and rules without direct or explicit tutorials of any kind. We hoped to achieve this with clever level design as well as an intuitive feedback system.
Wanting to avoid text or GUI and HUD based feedback as much as possible, we resorted to using visual and audio based feedback entirely.
These are some of the feedback considerations we took for various aspects of the game: