The game can be found at:
- RTS style camera and click-to-move system
- Multiple playable characters, each with unique abilities
- Enemy AI pathfinding
- Using ScriptableObjects to store information on various character stats and abilities
- Rendering out the radius of character abilities with world-space sprites
- Using the Unity NavMesh to create movement systems for the characters
- Creating flexible systems that can be expanded upon with ease
- Using Git effectively as version control for a large project
#Olympus was developed over the course of 5 weeks, with a team of 10 people. During the project, my main responsibility was creating the movement system for the main playable characters, and creating the special abilities that each character can use. There are three characters in the game, and each one has special abilities that behave different from the others. As an example, there is the special "Sword Spin" ability of Ares, which hits all enemies in a circle around the character, and there is the "Freezing Wind" ability of Demeter, which hits enemies in a cone-shaped area of effect. The indicator the ability's area of effect is shown by displaying a sprite on the ground beneath the player.
When developing these ability systems, I tried to keep things as clean as possible, and avoid reusing code or making entirely new solutions. I used ScriptableObjects to store ability information, such as damage, radius, and who the ability targets. This made it quite easy to change values without having to dive into the code every time. It also had the benefit of letting us create abilities directly through the ScriptableObjects - any ability that made use of existing systems could easily be created by selecting a few values.
One unique challenge was the character of Demeter, as she is actually two characters: her Spring form and her Winter form. One of her abilities allows her to change between the two forms, which meant changing her model, her UI elements, and the abilities she can currently use. The development of the character required a lot of time and effort, and definitely proved to be one of the hardest elements of the project. We did, however, get there in the end - working closely with the artists to ensure each form of Demeter looked and played the way we wanted it.
One of the systems that I implemented towards the end of the project was a tooltip UI system. We found through testing that the abilities may be hard to understand at first, so we added these tooltips as a way to give that info to the player.
The tooltip system is flexible and customizable, allowing the colour and font of each tooltip to be changed with ease simply through the Unity inspector. There is also an option to make the tooltip anchor to a set position, which can be set as a Transform in the UI space, or for the tooltip to follow the mouse. There is also an option for a delay, which will make the tooltip fade out over a given time when the player's mouse leaves the target area. My main motivation for making this system so flexible is that we foresaw that we may need to make use of tooltips on the next game the team was working on, Headless Chickens. I also seen some use cases for it in personal projects, and plenty of areas in which I could expand on the flexibility of the system.