Friday, 10 March 2017

Future Character Design/Gameplay Pre-Production


I am currently running this project with placeholder characters and animation, but in the future, time allowing would like to get my own character designs into the Project as well as different gameplay.

I had planned to implement a weapon system which allowed switching of modes, but realized this would require too many custom animation for the current time constraints.

You can see below a couple of weapon designs.



This allowed for 4 weapon modes, Sword, Pike/Halberd, Scythe and Axe.

For characters, I am hoping to implement a custom player character and main boss enemy. I hope to implement it so that they both use the 'Switchblade' type weapon.

The main playable character would be a Tiger Warrior.

Mood Board:


I have modeled this character up to the point where it is ready for detailing, though I am not sure which program to to use to take it forward, maybe ZBrush.


The main boss would be a Minotaur.

Mood Board:


This is also up to the point where I can take it to ZBrush and detail it.


Future development with the actual level will include improving the graphics and implementing the functions and feature rooms that were not completed, such as the enemy encounters, Puzzles and the Trap rooms.

Controller setup

To make it easier to set up and map my controls, I used the Project Settings > Input screen. This allows you to set a common name for a control input and assign several buttons for various controllers or input methods.


That way, the named inputs can be linked to the blueprint functions and your controls will already be mapped without managing several inputs fer function.

I think this method is actually more efficient on the system as well.

My control scheme was set up as follows:

This screen appears in game to inform the player.

Blood effects

To make the project more interesting with more visual feedback to the player, I created and added a couple of features.

First is a blood splatter generator. This is called when the enemies take damage and spawns varying decal projectors to put blood on the floor.


Theres 3 different blood designs, and they spawn in a random radius with differing scale and rotation, meaning they always look different, shown below after killing some enemies:


Then I decided they need some blood splash particles when being hit.

To create this, I took the starter content 'Explosion' particle and deleted everything except the shower of bits. I replaced the particle material with my own created blood droplet.


Health Pickup

I was finding that players were needing a health top-pup around half way through the level and just before the boss.

I created a simple health item consisting of 3 intersecting cubes making a healing icon. This has a rotation and a collision capsule.


The code checks if the player needs healing, and will only be collected if their health id below full. When collected the actor destroys itself.


Theres nothing more frustrating than a health pickup that collects when you don't need it!


Simple Minion enemies

Due to the maze construction of my level, it is required to have a lot of small minion enemies which die in a couple of hits.

I created these enemies based on my main boss, but used the PawnSensing approach to movement.


The smaller enemies only have a little health pool and will only perform melee attacks.

I created a blueprint object which I can place in my level which spawns a set of minion enemies, in a random scatter, and at different sizes, based on how far away the player is.


and in-game:


This saves manually placing hundreds of individual enemies.

Player and Enemy death/re-spawning

For the game to function fully, it is very important to have the player and enemies die correctly.

To control my death animations, I am going to use the State Machine to detect when the characters have died, then play the death animation.


Here you can see in my enemy state machine, I have three death animations, which when the enemy dies, it chooses one to play at random, so that when a large number of enemies are together and they die, it looks visually interesting.


Here is the code that destroys the character. This is triggered when the character's health hits 0 or below. The timeline is used to sink the body into the ground, so that it doesn't just disappear when it is destroyed.

This setup is almost identical for all my characters, including the player.

The only difference being, the player is able to re-spawn. This is done via an event in the Game Mode event graph.


And a system of Blueprint Checkpoints which update the re-spawn location when they are passed.


This makes it extremely efficient to place as many checkpoint re-spawns as required, anywhere in the level.

Shield Mode

What use is a shield if you can't use it?

Here I have implemented a shield mode to my Sword and Shiled stance, and also a Guard mode to my Broadsword stance.

Both of these use a Blendspace to choose and blend between which animation to play based on speed and direction.


To use this correctly a new set of branches on the state machine was required to go into and out of these modes.


Then finally, to make sure no damage was taken in shielded mode, I added a Branch and a new function on the damage check in my Character Blueprint.


This detects which mode is being used and plays a short 'Deflect' animation and a particle effect at the correct moment.