top of page

Strata ² 

Concept

Strata ² is a first person bullet hell shooter. Kill aliens , upgrade your build and set a high score! Use the falling blocks carefully as your advantage in the arena otherwise they may crush you.
Take up the challenge to see how many ascensions and what high score you can set!

This was a group project made at Futuregames.
Role | Combat and Enemy Designer
Genre | First Person Bullet Hell
Team Size | 11
Download | 
itchio-logo-white.png
Duration | 4 weeks
Engine | Unreal Engine
  • Took ownership of Enemy Design and created 4 different archetypes including ground and air types. 

  • Implemented a dynamic navigation system in the game for ground type enemies.

  • Implemented different types of  weapons with different functions and shooting patterns.

  • Designed and Created different player abilities and ultimates.

  • Created scalable and modular systems such as Damage system , Loadouts,  Ability System.

  • Collaborated with programmers to polish both AI and weapons respectively.

  • Implemented all of the UI present in the game which included Menus , In-game HUD , Shop upgrades.

  • Designed additional gameplay systems such as level switching and upgrades.

Responsibilities:
My Design Workflow
Workflow.png
Design Goals
  • Make the player powerful.

  • The environment should be predictable but should inflict chaos.

  • A game that people would pay for and us as developers should have fun building it.

Enemy Design Goals
Enemy design goals.png
Enemy Prototypes and Implementation
  • The player we made for this game was super powerful. Players would have an arsenal of weapons and abilities to play with and can probably defeat all enemies easily.​

  • "Easily" this meant that the players would get bored eventually with easier enemies.

  • This led to the creation of different Archetypes of enemies.

Archetypes:

We planned for 4 archetypes:

  1. Grunt Aliens​

  2. Simple Drones

  3. Heavy Aliens

  4. Shield Drones

  • Each archetype builds from the previous one in the same category.

  • This means that the enemies are going to be predictable but at the same time challenging for the player.

  • For example , we have Air type and Land type enemies. So the heavier alien is almost similar in behaviour to the Grunt alien but with a different attack type and bigger size.

  • Similarly the drones are flying enemies which hit the player in regular interval and follow them around , which means the player can quickly realise how the shield drone will behave but also should be ready for a different behaviour.

Enemy types.png
Archetypes Attributes
Enemy Beahviour_Updated.png
Archetypes Behaviour
Enemy behaviours.png
Implementation for Enemy Behavior
BT_Zombies.png

Grunt Aliens:

AI states - Attack and Passive (Where passive was not used as enemies were spawned and were directed to attack the player from the start)

  • These were the simple aliens so, the only thing they needed to do was go to the player and start attacking.

  • They also had crowd detour class so they won't stack around the player.

Drone attributes.png

Drones:

AI states - Attack and Passive (Where passive was not used as enemies were spawned and were directed to attack the player from the start)

  • The drones were tricky to implement , as they needed to be in air all the time and they were hard to connect with the navigation mesh.

  • We set their Z value to be an offset to the player so everytime they reach the player they stay a bit high in the air and try to shoot.

  • Collaborating with our AI programmer we set different variables that can be tweaked accordingly for the drones to behave properly.

Heavy Aliens:

AI states - Attack , Charging & Stun.

  • For the heavier aliens , we wanted some sort of knockback effect.

  • In simple terms , we wanted the enemy to run at the player like a juggernaut and knock the player with some force.

  • But during the charging state we did not wanted the enemy to be invincible , so we added a check where when the health drops to half , they enter a stunned state.

  • This was done primarily because enemies are going to be populated in the world and if everyone is invincible during the charge , it is going to be very tough for the player to kill them. 

  • We also made adjustable values for the force and damage feedback.​

Heavy BT.png
Zombie Attribute.png
Shield Drone attribute.png

Shield Drones:

AI states - Attack and Passive (Where passive was not used as enemies were spawned and were directed to attack the player from the start)

  • The shield drones had the same behaviour as the normal drone as we just used the attributes we had from the previous archetype.

  • The only change was we had to add an extra layer of damage values for the shield and have a laser beam added.

  • As our level was made dynamically with falling blocks , this meant verticality will be an issue for enemies especially the ground enemy types.

  • When we were prototyping our game idea , we noticed that if the player is going on top of the blocks the enemies can't reach them high up.

  • This created the problem of dynamic navigation.

Why dynamic navigation?

  • First of all , our enemies felt bland. They would come at the player but once the player jumps upwards to a block, they just stay down and do nothing.

  • This just made our players get bored often and there was no challenge or surprise present

  • The idea was to create either a horde climbing system or make the aliens jump. We went with the latter as it suited our gameplay.

How did we tackle it?

  • We used Nav links in Unreal. 

  • The Nav links could be dynamically generated in the level which made the falling blocks a part of the nav mesh at runtime.

  • We created our own nav link proxy actor and added a simple logic of launching the character to the blocks whenever they detect the nav links.

Grunt Aliens

Dynamic Navigation for Ground Enemy types

Before Nav Links

Drones

Shield Drones

Alien Jump.png

After Nav Links

Heavy Enemies

Weapons

3 Types of weapons were created for this game.

  1. Assault Rifle - High Fire rate  with overheat functionality 

  • The overheat functionality was added to not have the player just press left mouse and hammer enemies , it felt overpowered.

  • As our gunplay did not have a reload system , overheating the gun and stopping it for a while helped a lot in balancing combat.

   2. Shotgun - Slow fire rate , multiple bullet shots and piercing damage.

   3. Dual Wield Pistols - Medium fire rate , and medium damage.

For all weapons we decided to go with projectile damage rather than hit scan. This was primarily done to have the player predict enemy movements rather than instantly kill them. 

                                                                                                                                All Damage values Are Upgradable.

Rifle

Shotgun

Dual Wield Pistols

Player Abilities and Ultimates

The primary design goal for this project was to make the player powerful. So only weapons won't help give that feeling , which directed us to create abilities and ultimates.

So what is the difference first of all between abilities and ultimates in our game?​

Abilities :

  • Auto recharge within x amount of seconds

  • Simple abilities such as AOE damage , hit damage.

  • Tweakable duration , damage and AOE radius

Ultimates

  • Can be recharged by killing enemeis

  • We decided to go with 3 ultimates due to time constraint but we made sure they were powerful.

  • Longer duration , high damage

Abilities.png
Ultimates_New.png
Attributes.png

Ability types:​

Grenade Launcher - AOE Damage , Projectile movement which follows gravity , can be used to target multiple enemies.

Laser Net - Shoots out a laser net for x amount of duration , can pass through multiple enemies.

Shuriken - A boomerang ability where the player can throw it in any direction and it comes back to the player in x amount of time.

Ability - Grenade Launcher 

Ability - Shuriken 

Ability - Laser Net 

Ultimate types:​

Tornado - High AOE Damage , stays active for a longer duration.

Fan of Orbs - Shoots x number of orbs from the player in a 360 degree angle and the orbs can bounce off walls and be present for x amount of time.

Aim Hack - Sounds odd right, but we thought it would be a cool thing to add. The aim hack when gets triggered it stays active for 10 seconds and it just detects multiple enemies within certain radius.

Ultimate- Tornado 

Ultimate- Fan of Orbs

Ultimate- Aim Hack

  • We needed these abilities and ultimates to be upgradable as well. So it was very important to have almost all of their values to be tweakable.

  • Visual and audio feedbacks were also important to potray the power behind these attributes.

Damage System

We wanted to design a damage system that can be used by any actors in the engine without the need of Casting much in the game.

  • Created a damageable interface and an actor component for the same.

  • In the interface , added different types of event dispatchers that are called when either the player is dead or it takes damage.

  • Created states for different types of damage response such as Hit reaction, Stagger , Death.

Instances.png
Loadout Flow.png
Other Systems

The loadouts needed to be connected from the menu to the player when they enter the game. 
So we had to use game instances to carry forward the data we added using different states such as weapons, abilities and ultimates.

  • Created a damageable interface and an actor component for the same.

  • In the interface , added different types of event dispatchers that are called when either the player is dead or it takes damage.

  • Created states for different types of damage response such as Hit reaction, Stagger , Death.

Damageable.png
Loadout_1.png
Loadouts
Learnings
  • Keeping the vision intact throughout the process is very important for game development. At any point we made something and thought does this go with the vision and the answer was no , we did not completely cut it but thought how can we change the system to be aligned with the vision.

  • Should never underestimate UI in games. UI was a key part in our development and with each feedback we realised how much information we needed to convey the player without crowding the screen.

  • Have fun while making games. Doesn't matter if its a small system or the whole game , if we are not having fun ourselves in the process , the project will always suffer.

  • Prototype helps a lot. Rapid prototyping is what started this project in the first place , but also putting your design goals in early helps shape up the game really well.

Thank you for reading!​

bottom of page