The Forest of Agora
Time spent on Project: Two Months
Originally this was just to be a simple level design skill building exercise, but I couldn't help myself but to make a world and then a game.
Credit for Unity Art Assets: Luiz Melo
Level Creation and Flow
I had two months to build a world, inhabit it, and make it somewhat unique. Well, technically all I had to do was build a couple of levels, but it would be so much more interesting to challenge myself to build a small prototype of a game. So let the world building commence. I know from the beginning that if I wanted to make my own thing, besides art, thank you unity store, that it would more than likely be 2D given the far less complicated nature of 2D vs 3D. Going from there I had some experience from past classes with puzzle platformers.
Yet, unlike those pasts works, I wanted to make a game with more action. Although what type of action, did I want to use ranged weapons or go for a melee-based slasher kind of action? Since I had never made I melee-slasher game in unity I wanted to give it a go and learn how one would go about this process. Before I could dive into making this melee-based action platformer I needed to build a world for all of this to take place.
Due to the game's many movement mechanics such as dashing, jumping, double jumping, and a ground pound I wanted to make sure that I taught the player through level design/enemy design how to use these abilities affectively. Thus I built each level around the use of a certain skill. The only level that didn't follow this structure was the first level which acted as the tutorial level. While playing through this level, the player had to overcome a variety of different environmental obstacles using their different abilities. Given that it was technically a tutorial level, I decided to not have any enemies as to prevent new players dying before they could even learn to play. After the tutorial however the training wheels came off and the player was thrown into the world of Agora.
Thus I sat down and started come up with some possible names that might lead to a story and then use that story to create a world. I started piecing random sections of letters together before I came up with Agora. Yet, Agora what? I couldn't just call my game Agora that wouldn't gave the player any sense of location or what the game was about due to Agora not being a real word. Although I had been hiking as of late and nature such as mountains and forests kept coming to mind. I eventually went with forests for in my personal opinion, The Forest of Agora sounds much better than The Mountain of Agora, but that's just my opinion. Now that I had a story and a setting I could start constructing the levels within this world of Agora.
The fire mage or the ranged enemy archetype went through quite the design process. Originally I tried to make them move in shoot, but due to the manner in which they detected the player, and the range, both height and width, this made them too powerful. Thus I tried to nerf their range bubble (good old unity gizmos), yet they still were burning the player to a crisp. Well, given that I already had a fast enemy, why not diversity the roles a little more.
Thus I decided to make the fire mages more a sentry type enemy. Thus their role became more a roadblock that didn't just try to stop the player from cruising on, but also would cook their chicken as well. This for the most part fixed many balancing issues with the fire mages. Since I removed their ability to move around I decided to increase their range and damage a little bit. This mistake became evident when I watched not only myself, but testers getting fried over and over.
With this data in mind, I nerfed their range, but kept their damage the same. For most of the time it wasn't just their range in general that was the problem. The problem was how their range allowed them to cover crucial points in the map. For example, one fire mage became a little notorious for it covered a jump that if missed would kill the player. Given how ranged combat worked within the game i.e. players who were hit would lose a little bit of speed due to the projectile hitting them. This the lead to this fire mage sniping people and causing them to fall to their deaths. Therefore, I decided to change the range of fire mages dependent on their location on the level. With this change more players were finally able to take their revenge on that one fire mage.
With my general world creation set in stone, I wanted to have something to inhabit this world other than plant and rock art assets, something to fight against, some goal for the player to achieve. As in other projects of mine that I didn't have that much time to create I follow the rule of three. Although in this case it was for enemy design. I wanted to have a melee, a ranged, and a boss enemy type. The melee enemy I wanted to fast and small as to make hitting them more difficult.
Thus what better generic enemy to fit this role than the goblin. These goblins were programmed to quickly patrol platformers armed with their rusted shives. Their role within the game was to act as small hindrances on the player and to slowly weaken them via the HP damage they would inflict upon the lone swordsman. Since they were fast, small, and numerous, the goblins had a much smaller hit point value than the other enemy types as to act as their balancing factor. With the goblins' design out of the way it was time to make it rain fire.
With the fire mage cooking and the goblin ready to stab, only one remained, the boss enemy. Since the story was all about a lone swordsman dueling an evil tyrant, I chose the boss enemy to look like a crimson king of sorts, his armored stained with the blood of the innocent. With the look of the boss all set, quite a large problem came up, how do I design this boss?
At this point in time I had never really design, animated, and tested a boss fight and thus lacked the experience. Never being one to step down from a challenge I learned how to use state machines within unity and animate enemy attacks. Of course since I was very new to doing this sort of work, it wasn't perfect, but it was a jumping off point. After setting the boss up with his different states, such as attack, move, hurt, and more I was ready to start balancing the fight a little.
At first the boss did way too much damage, I mean he would two hit the player and since I wasn't making a souls-like, that had to rebalanced. With some testing I found the sweet spot of damage. It would take the boss five hits against the player to bring them to their knees. Although a problem still remained, the boss had too little health and would easily be beaten after its attack was nerfed. Thus back to the drawing board I went till eventually I found a solution.
Given the player has two different attacks, one being a fast, but less damaging, whereas the other was slowing, but more damaging I had to balance around these two attacks. Since I gave both of them numeric damage values the balancing was all that difficult. In the end with the basic attack it took around ten, if only the basic attacks were used. Or if the player only used the slower damaged attack it would take five, but given the speed of the attack it took the same amount of time. Thus the best players used a combination of both to fell the evil tyrant.
The world was created and was populated, but our hero lacked one thing, skills not only to pay the bills, but to defeat the evil Belios the Tyrant of Helios. The overall combat design of The Forest of Agora was broken down into two main parts. Those two parts were the two different attacks and how both are used for different, although similar purposes.
The fast attack being more of a general use attack for deal with lower end enemies such as the goblins who might smarm you if you don't deal with them quickly. Whereas the slower heavier attack was designed around helping the players deal with the fire mages due to their high DPS via fire rate.
Although with both of these things said, most players who had a little more skill with the game had a tendency of comboing the attacks to deal much more damage. These combos to advantage of how I coded the attack time and attack wait time.
The basic attack had a very small wait time as to better fit its design and role, but the heavy attack had a wait time of around 2 seconds as to prevent heavy attack spam. Thus what players would do is perform a heavy attack and right after do a fast attack.
While the player character was performing the basic attack animation, the heavy attack timer was still running. This means that by the time the animation for the basic attack finished the heavy attack was ready to be used. All of this lead to people doing this combo over and over. Which with this combo people had found a way to min-max the game and remove much of the challenge.
I am honored that people took the time and played enough to see this loophole, but man removing those golden paths or min-maxing is quite the challenge, and one that at this point in time, I had simply run out of time to fix. Although I planned on adding a variety of different enemies types that would fix this combo issue via shielding and flying abilities, but time wasn't on my side.