P6 - Spite: Web of Decay
Reference game: Diablo 3
Engine: Custom engine developed by our group
My contributions:
All of the game's combat, attacks, and abilities
Hierarchical finite state machine tool for designers, animators, and technical artists to create characters and behavior
Entity stats and base character architecture
Animation state linking
Time: 10 weeks, 20 h/week
Coding the Attacks and Abilities


Player and Enemy Attacks
For the player I implemented the following abilities:
A melee AOE attack originating from the player.
A homing projectile.
An AOE that spawns where the cursor is pointing.
A shield that heals the player and makes them immune to damage for a limited duration.
A homing projectile that bounces between enemies.
A summon that follows the player and engages enemies if they come near.
The mobs in the game all have rather simple attacks, but the boss uses a more complicated pattern of abilities. Because the boss relies heavily on the state machine I specify more on its attacks there.
Hierarchy
An important part of the attacks and abilities in P6 is their hierarchial structure. All attacks share the same hierarchy but differentiate in how far down it they go. Because the attacks follow the same structure they are highly modular and well suited for implementation through the state machine.
Hierarchical Finite State Machine Tool
The state machine forms the core of the entity behavior in the game. Each character executes the logic of its current state each tick, then checks if it should transition to another state using transitions created with the state machine tool.
Boss Phases
The boss relies on the state machine more than any other entity in the game. Because the state machine is hierarchical the boss can have three different phases with completely separate behavior, allowing it to become more dangerous as it reaches later phases.
Boss Attack Patterns
Thanks to the versatility and modularity of the state machine, the boss' attack patterns can be created by linking states in unique ways. For example, one of the boss abilities is a chain of several AOE attacks that transition to each other in rapid succession, giving the illusion of them being part of a single, bespoke state when it in reality they are several states stringed together in an unique way.
Factories
Attacks are created using the state machine when a state is given an ability. Each state can contain a single ability, or none if it something like an idle or move state. When an entity is saved both the entity itself as well as all its states are stored as binary files.
As the game starts the entity factory and attack factory read and store the information from the binary files. Each entity then gets their states from the state factory. If a state contains an attack, that attack is created from the attack factory when the entity makes the attack.




Entity Stats and Base Character Architecture
Much like in P7 I implemented not only the stats of the player, but also nearly all the base variables and functions shared between all entities and characters.
I implemented much of the shared code between the classes at the start of the project, rapidly setting up the initial structure and design of the classes, but I also iterated upon it during the rest of the game's development.


Animation State Linking
Again like in P7 we implemented animations into the game using a animation state system. Each animation state has its own exit conditions, meaning that they can have their own tailored transitions to other animatons.
For P6 I implemented most animations and exit conditions for the player and enemies.


dexter@abrisius.se
+46 72 172 70 66
dexter@abrisius.se
+46 72 172 70 66