top of page
2d RPG.PNG

hero's

journey

  • Project Status: On Hold

  • Project Type: Personal

  • Project Duration: ~ 3 months

  • Software Used: Unity

  • Languages Used: C#

  • Primary Role(s): Designer / Scripter

About hero's journey

Hero's Journey is a project that started where I wanted to learn how to make a traditional RPG game. The game was developed entirely by myself with help from Unity's forum and asking questions on a Game Developer Discord Server. This project helped me improve and taught me a lot with how to script and design a game within Unity and with C#.

gameplay mechanics

Wood Enemy

The Wood Enemy detects whether a player is within range with it or not. If the player is within range it would walk towards the player and deal damage to the player, and when the player is out of the enemy's range, it would go back to a rest or "sleeping" state:

The inspiration for this came from other classic RPG games such as Legend of Zelda, which had the same behaviour of enemies walking towards the player once the player got close to it. I wanted to implement something similar in my game to add some life and interactiveness between the player and the game world, which most RPG games had.

With that in mind, the approach I decided to go with, was to create a base enemy script that can later be inherited by other enemies which had the same behaviour of activating when the player got within a certain range of it. With the basic script, I made different types of enemies, all of their basic behaviours inheriting from the standard wood enemy script through code. I just had to tweak a few different behaviours and interactions for each different enemies, and voila, I managed to create several different enemies by reusing 1 base enemy script. 

This method was not originally thought up by me and was actually suggested to me by a fellow Unity game designer through a Unity discord server and YouTube video. The help was very much appreciated and not only saved me from having to code 5 different scripts with most of the same behaviours, but it also thought me a new feature when coding with C# called Inheritance that I previously was unaware of which helps tremendously with script reusability.

Player combat

The player has 2 ways of fighting within the game. Either with melee attacks or long-ranged attacks:

The melee can be used multiple times without running out of mana and deals a certain amount of damage to the enemy. The long-ranged attacks would deal less damage than the melee and requires mana to use, but allows the player to attack from a distance without risking taking damage from the enemy.

The approach for combat was done to player's more option and variety when engaging with an enemy as now they could either choose to charge in headstrong with a powerful melee or play it safe with a long-ranged attack. The long-ranged attack uses up mana when attacking that can only be replenished when the player picks up a mana potion. If the player has 0 mana, it will not fire anything. 

This was done to balance out the attacks so that the players won't just use one type of attack throughout the whole game which can get very boring, very quick and to also encourage the use of both attacks together when playing.

Interactable Objects

There are multiple objects within the game that the player can interact with. Each object has its own unique property and interacts differently with the player:

This was done to give players a sense that the game world that they are in is actually alive and has consequences when a player interacts with them so the player won't feel like the world is just there for decoration.

By having pots break and signs telling players information, this not only gives the player the feel of a more lively game world but now I could give players reward when they decide to explore and journey around the game such as, giving them information about the world from reading signs or, important key items that are needed to advance in the game from breaking pots or opening chests. 

bottom of page