Heresy Platformer winter progress update
The winter has passed, sadly without any updates on my part since late November. This does not mean, however, that I stopped working on Heresy. Far from it, I managed to implement many features into the game. I will present the overview of additions in this winter progress update.
Combat system progress update
The combat system is the aspect that is easiest to demonstrate. At the same time it may be the most important aspect of the game for some people. Here are the basic features of the system that I already implemented:
- Different types of attack. Player may unlock new attacks may or upgrade existing ones. An attack may become faster, stronger or might cause the user to dash forward.
- Combo attacks as well as parries, ripostes and dodge/roll.
- Health, stamina plus the usual damage calculation stuff (armor, critical hits).
UI and inventory
Basic inventory system is already in place. The player may pick objects up from the ground, equip them from the inventory and discard them from the inventory. Armor influences available inventory slots and when all inventory slots are taken, no additional items may be picked up.
In addition, UI elements for Health, Stamina and Vitality are available for both the player and the NPCs.
Animation system progress update
The basics of the animation system remain unchanged from the initial version shown in November. However I have been experimenting with a way to provide each character with a set of unlockable attack animations. After lots of trial and error I managed to find a solution. I would like to describe it in more detail in another post, if time permits.
How the system works in short: each character has 3 types of attacks: Primary, Secondary and Combo. Each of these attack types has multiple possible versions. Currently selection relies on a dropdown, but in the final version I will move to a perk or talent system.
Enemy AI
The thing that I am most proud of in this progress update is the enemy AI architecture. It is a modular system that actually relies on a single character controller. This CharacterController class is used for both the player and the NPCs. It gathers inputs from PlayerInput or NPCAI classes, and both of these classes inherit from ControlInput class, which stores commands issued to the character controller. PlayerInput gathers mouse and keyboard input and sends it to character controller.
NPCAI class is a bit more complicated, as it actually drives the behaviour of the NPCs, however the outputs of this class are exactly the same as from the PlayerInput. NPCAI also contains several fields that allow for changing the behaviour of NPCs at runtime. For example the AIType is an enum with possible values of e.g. Basic, Aggressive, Passive, Mindless, Cowardly. The value of AIType determines the chances with which an NPC will perform certain actions. While an AIType.Basic enemy will balance defensive and offensive movement, an AIType.Aggressive enemy will constantly push towards the player and attack with less regard for safety. The AIType values can be also switched at runtime, an aggressive enemy might become cowardly after being severely wounded.
Summary
I hope I will be able to go into details of some of the solutions before the next progress update. I would also like to start sharing a bit more information about the game design philosophy for this game. Even though these initial builds focus on movement and combat, this is not the main focus of the game.
PS: The inspiration for gathering inputs for my game came from a fantastic series on the official Unity channel. The series about creating a 2D platformer spans across 19 videos. There are some truly marvellous gems of knowledge hidden inside.
Recent Comments