"Back to Ghoul" was a team project spanning four weeks. We had time allotted 9-3 Mondays and 9-12 Wednesdays. My role was head of game design.
This entailed three main facets:
- Creative decisions
- Game structure
- Practical implementation (Dialogue, Combat, prototyping)
DIALOGUE
One of my tasks was creating a dialogue system. Some of the specifications were:
- Typewriter FX
- Ability to change SFX and dialogue per character
To do this, I made a base blueprint which inherited from a dialogue bpi (interface). Whenever the player pressed 'E' (interact key), it would check if the player was colliding with an object that implemented the dialogue interface. If true, it would then call the 'talk' function. The basis of the talk function was the same for all characters:
Check if a dialogue window is already open -> if it's not, then create one -> based on the dialogue index (what line of dialogue the character's on), showcase the matching string (dialogue contents) -> display the dialogue and increment the dialogue index.
While the creation was fairly straightforward, I ran into a problem upon finishing - I realised I was also supposed to add in the ability for the MC to respond. This meant adding an option to swap dialogue portraits, names, and content. Due to a lack of time, I went about this very convolutedly. I created custom events per each dialogue interaction, separate arrays of strings + portraits, and an index that handled which character spoke when.
At the end, my variable list looked a little something like this:
Nonetheless, it served its purpose - but I would definitely go about this in a less hard-coded way, as it wasn't intuitive for a team (or me). Thankfully, I ended up being the only person who had to touch this code as I ended up programming level 0 and the start of level 1. 
COMbat
My other task was to create the base attack system. We decided to have three different melee attacks that you could 'chain' if you clicked fast enough. Some of the other specifications were:
- add in ability to set SFX
- add in ability to set VFX
To prototype this, I made a placeholder Niagara system and sourced audio from Soundsnap. To program this, I had an integer variable to count the attacks. If the player waited too long between mouse clicks, the counter would reset and play the according attack. e.g. if integer = 0 -> play first attack, if integer = 1, play second attack, etc...
To handle death / damage, I created a different interface with a 'damage' function. I ended up using this both for enemies and damageable objects - like the vending machine. 
To blend between the walking and combat animations, I used montages to isolate the leg and upper torso. 
During the final phase of the game jam, we were unable to incorporate the polished damage function with my chain attack as they were done in separate blueprints. I've learned that cross-over elements should be discussed between programmers beforehand to mitigate this.
I had never done a combat system before, so it was pretty interesting wrapping my head around approaching this. I'm sure my end product was very 'clunky', but it was fun to do!


Overall, 'back to ghoul' was a very fun experience. I learned a lot about working in a team across all departments. We used p4v as version control, so navigating all of our separate bps, folders, and assets was a super helpful and invaluable experience - especially considering it's currently the most prolific version control for unreal.

You may also like

Back to Top