The Spirit of Adventure is an isometric dungeon crawler that features 3-D environments and props in the background, with 2-D sprites to dictate interaction. The player controls both the adventurer, who is quite pitiful at his role, along with the spirit. Using both characters together, the player must traverse from one end of the dungeon, a goblin hideout, to the other, where the goblin king awaits. This project was created in Unity 5, and I served as the lead programmer on a team of 6.
My main tasks for this project included creating systems for movement, unique interactions (levers for doors, furnaces, a bridge), enemy AI, and a completely new cursor to be controlled by an XBOX controller or mouse. Many other small tasks were completed when needed as well. From inception to completion, this game took 8 weeks to make.
Key Programming Tasks Completed:
Movement was not created quickly for this project in comparison to previous movement systems I’ve built. The camera was rotated in order to view the game at a -45 degree angle, relative to the origin of every other Game Object. This meant that the values from the left joystick axis needed to be offset to compensate for the direction. This movement took some time to flush out, but the end product worked to our liking and needs.
All interactions with the world around the player are performed using a cursor, or in this game, the spirit that is the Spirit Of Adventure. All objects that can be interacted with are sprites, separate from the world, which is comprised of 3-D models.
Upon clicking on a pickup, the spirit’s hand will grab the item, which than then be dragged and let go anywhere on the screen, even above the player.
In the Spirit of Adventure, the spirit can also interact with levers that the player cannot reach, providing opportunities for the player to make their own choices on how to progress through levels.
Aside from these burners, levers also control doors and bridges in this game.
At one point, the player must pick up a lever handle and drag it to the base in order to repair the lever, and open to the door to progress.
Enemies all share the same base enemy class, which serves the following purposes:
- Prevents enemies from following the player unless they are on screen
- Rotate the enemy sprite in intervals while following the player
- Prevents enemies from attacking the player unless they are with a certain range
- Keeps track of enemy health
- Controls stun state of enemy
There are 4 unique types of enemies, each with their own class: Melee, Ranged, Mini-Boss, Boss.
The melee class was the most simple to make, as all necessary behavior was derived from the enemy class.
The ranged class first conjures a ball of magic, then launches it while it accelerates towards the player. The projectile follows the player for only 1 second, then it’s direction remains constant until it hits a collider component. One projectile is launched every 3 seconds.
The mini-boss in this game, an over-sized goblin, is different from weaker goblins in that he cannot be attacked unless he is stunned, and cannot be stunned while facing the camera. With a larger attack radius, the mini-boss must be turned around so that his band-aid is exposed. Then, he may be stunned by the spirit, and the player can attack his weak spot safely. Once hit, the mini boss turns red, falls into the ground, knocking the player back if nearby. Upon standing, the mini boss gains 6 seconds of increased speed., after which his color returns to normal. After being hit three times, the mini-boss collapses and two new paths are revealed via a cutscene.
The final boss, the goblin king, is unable to be attacked with his armor on. He is also immune to the spirit’s stun, so the player must lure him near a pillar and use the spirit to push it on him. This is made more difficult by giving the king a ranged ability, in which he picks up a stone and throws it towards the player.
If the player is successful in hitting him with three pillars, then the king’s armor is knocked off, revealing his true size is less than the player’s. With less weight holding him back, the king will now charge at the player after a slightly randomized interval. At this point, the king must be hit with two more pillars to defeat him, playing the credits.