CHRONOCLASM
Masters in Game Design and Development Project
1 Year | Aug. 2022 - Aug. 2023
Summary
Chronoclasm is a first person shooter roguelite where the player can stop time at will. I acted as the Lead Engineer and Lead Combat Designer in a team of 4.
​
I developed ~90% of the project's code, managed the GitHub repository, and handled QA testing and debugging.
​
Additionally, I designed the core combat. Keeping our vision in mind, I designed the enemies and boss, balanced the combat, and managed the game's difficulty for both entertainment and accessibility.
​
With my experience working on other large projects, such as Disaster Golf, I also maintained the project's schedule, scope, and other administrative tasks.
Time Stop Structure
-
This architecture supported the core mechanic of freezing time using OOP patterns.
- TimeStopManager changed global time at the player's command.
- TimeAffectedEntity handled how each object was affected by the time system.
- LocalTimer streamlined time-based systems without compromising performance.
- ITimeObserver kept time compartmentalized but expandable.
- ITimeInfluencer allowed other systems to utilize its functionality in its own way.
Target Structure
-
This architecture was made to control the behavior of entities that could be the target of an attack.
-
This Target diagram made it easy to review and improve before implementation.
-
Abstraction ensured each target type was created with a purpose in mind.
-
The encapsulated ResourceBar allowed usage outside the Target structure.
-
In retrospect, I would've loved to expand the system to include buffs and debuffs by adding an 'EffectManager'.
Audio Back End
-
Our Audio Designer struggled with the existing audio pipeline, so I established a new one.
-
AudioClipSO, pictured to the right, is an object that encapsulated all desired settings in one place.
-
Editing a sound in one place immediately updated every instance of that sound in the game.
-
Aside from streamlining the addition of sounds to the files, it also streamlined their integration to code.
-
The Audio Designer was incredibly happy with this system saved both time and sanity.
Pooling & Performance
-
All of the enemies and bullets required pooling for for optimal performance.
-
Pooled objects include: enemies, projectiles, health and time orbs, and generic VFX such as muzzle flashes.
-
To the left is a snippet of code for a Pool object that auto expands. Full script available to download.
-
Pooling managers, such as the EnemyPoolManager, handled requests and returned pooled objects.
-
In public playtesting, pooling these objects drastically minimized lag spikes associated with the garbage collector and CPU usage.
Difficulty
-
I was responsible of balancing the gameplay difficulty for pacing and accessibility.
- A trend from playtests was that player skill level dramatically affected enjoyment, with some unable to finish the demo at all.
- To improve enjoyment for both skill extremes, I added a customizable difficulty so players could challenge themselves in their own way.
- In playtests, the solutions for both pacing and accessibility were hugely successful.
- Players said the pacing made them feel more prepared for the chaos near the end of the game.
- The difficulty settings allowed more players to get further into the game and enjoy it more.

Click to view in a higher resolution
Linear Algebra
-
Heavy use of linear algebra to implement player movement, AI, and more.
- Favorite application was using DOT product to establish 'vision cones' for enemies and the boss.
- The diagram to the right was made to figure out how to make enemies flinch in the direction they were shot.
- The vector between the center and impact point crossed with a down vector gave the perfect rotation axis.
Time Grenade
-
The time grenade was controversial amongst the team as some loved it while others preferred a traditional blast grenade.
-
After trial and error with the team, I found a middle ground between the two styles where the grenade would blast, freeze time, and blast again.
-
The whole team loved it, ensuring that everyone on the team could be happy with the final product.

Click to view in a higher resolution
Chronoclasm can be downloaded here!