CHRONOCLASM
Masters in Game Design and Development Project
1 Year | Aug. 2022 - Aug. 2023
DESCRIPTION
Chronoclasm is a first person shooter roguelite where the player can slow and 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, manage the GitHub repository, and handle QA testing and bug fixing.
​
Additionally, I designed the core combat. Keeping our vision in mind, I designed the enemies and boss, balanced their combat values, and managed the game's difficulty.
​
With my experience working on other large projects, such as Disaster Golf, I contributed greatly to the project's schedule, scope, and other administrative tasks.
Engineer Responsibilities
-
Developed ~90% of architecture for the game.
-
Created prototype systems to showcase options before full implementation.
-
Advised team on technical solutions.
-
Streamlined pipelines.
-
Maintained GitHub repository.
-
Created builds weekly.
- QA testing and bug fixing.
- Optimization.
- Researched solutions for project problems.
Engineering Skills Learned
-
Applying OOP patterns, like observer, state machines and pooling.
- Practical applications for Linear Algebra in games.
-
Pooling complicated objects.
-
Creating state machines.
-
Input manager with rebind support.
- Robust save system.
-
Implementing randomness in multiple way.
- Writing clear documentation for systems.
- Managing team GitHub.
Design Responsibilities
-
Designed enemies and boss.
-
Designed player's Timestop Grenade.
-
Balanced combat for all difficulty modes.
-
Brainstormed to achieve and refine game vision.
-
Developed tutorial sequencing.
-
Established playtest goals and plans.
-
Recorded game play footage for marketing material.
-
Competitive analysis of similar games.
Design Skills Learned
-
Developing design pillars, vision statement, and target audience.
- Collaboratively designing with others.
-
Playing with existing systems to create new gameplay.
-
Compromise with team members.
-
Analyzing playtest data and creating a plan.
-
Designing difficulty around a target audience.
-
Establishing pacing to the core combat.
-
Tying systems into narrative.
Engineering
Time Stop Structure
-
This architecture supported the core mechanic of freezing time using Observer and Singleton 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.
Click to view in a higher resolution
Click to view in a higher resolution
Target Structure
-
This Target architecture made it easy to review and improve before implementation.
-
Designed to be simple and expandable.
-
Abstraction ensured each type was created with a purpose in mind.
-
Flexibility allowed ResourceBar to be used outside target structure, such as the time gauge.
-
This system was used creatively to implement bubble shields on enemies!
-
In retrospective, I would've loved to expand the system to include buffs and debuffs by adding an 'EffectManager'.
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 for cheap.
- The diagram to the right was done 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.
Click to view in a higher resolution
Pooling & Performance
-
Core gameplay of enemy hordes and hails of bullets required pooling to prevent gameplay lag.
-
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, handles requests and returns for pooled objects.
-
In public playtesting, pooling these objects drastically minimized lag spikes associated with the garbage collector and CPU usage.
Audio Back End
-
One blocker was our Audio Designer struggled with the Unity audio pipeline, so I established a new one.
-
AudioClipSO, pictured to the right, is an object that contains data and functions the designer desired.
-
It allowed for editing sounds in one place to immediately update every instance of that sound.
-
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.
Click to view in a higher resolution
Design
Core Combat Loop
-
A core pillar was chaotic, bullet-hell combat which I envisioned as dodgeball in The Matrix.
-
My favorite goal was making time stop a reflexive instinct for the player.
-
-
Reducing cover in levels was done to keep time stop the most reliable defensive option.
-
Binding time stop as "Hold to use" established a link similar to ADS in other shooters.
-
- Keeping time stop a resource instead of cooldown expanded player's choice on when and how to use it, from short dodges to long waves of bullets.
- Bullets were made large to feel like dodgeballs, making them more visible and more satisfying to dodge around.
Hover to grow video
Hover to grow video
Enemies
-
Enemies are my favorite part of games as they act as primary obstacles. As bullet hell encompasses numbers, I designed simple enemies that attacked in hordes.
-
Similar to Left 4 Dead, there were Normal and Elite enemies that could be mixed and matched.
-
Rangers [Normal] stayed back to bait the player into combat.
-
Babies [Normal] were fast and startle the player, but easily defeated using time stop.
-
Mines [Elite] were a double-edged sword that created bombs dangerous to the player and enemies, encouraging creative play via resourcefulness.
-
Turrets [Elite] overwhelmed the player with bullets while their shields punished reckless usage of time stop and grenades, encouraging more thoughtful play.
Difficulty & Pacing
-
I was in charge of balancing the gameplay difficulty for pacing and accessibility.
-
Pacing the difficulty during the game ensured the player could get used to enemies and gameplay style before engaging the more difficult challenges.
- A trend from playtests was that player skill level affected enjoyment. To improve enjoyment for both extremes, I added customizable difficulty modes 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 more of it.
Click to view in a higher resolution
Click to view in a higher resolution
Time Grenade
-
The time grenade was a controversial topic amongst the team as some loved it while others preferred a classic version that acted as a normal grenade.
-
To ensure every voice was heard, I experimented to find a middle ground between the two.
- The two arguments were the classic grenade was too generic while the time stop grenade wasn't impactful enough.
-
The solution was a combination grenade that would detonate, freeze time, and detonate again. The whole team loved it as it felt impactful while still making our core mechanic front and center.
Scope & Cuts
-
We were bound to run into issues with scope and I wanted to ensure our team maintained healthy habits.
-
Chronoclasm was originally third person but we lacked animation and had camera issues. Switching to third person resolved both of these blockers in one go.
-
Mid way of development, I realized our existing upgrade system was dangerously behind schedule. It was overly ambitious and needed time we didn't have, so I suggested scaling back majorly to the system we have now.
-
The suggestion and decision were both made before too much time was put into the old system, so little time was lost.
Click to view in a higher resolution
Chronoclasm can be downloaded here!