Systems
The first thing I did was configure the models that Unity released to be humanoid so they would play nice with Mixamo's animation packs. It was a pretty standard rig adjustment. There was one funny joint in the jaw that, for whatever reason when playing the "Axe Pack" animations, would swing wide open producing a constant yelling look. Removing the jaw from the rig was the solution but in the interim it was amusing.
I then wanted to be able to move the guy around the map. In the past I had used A* solutions, but felt it was time to learn Unity's built in navigation. It's a fairly easy system to get used to and provides accurate data when meshing with my state machine scripts to find pathing distances, stopping thresholds, etc. For the path through Midgard, instead of using uneven terrain and models I decided to put a series of planes over the walk-able route which kept the boundaries nice and clean without a whole lot of clip-through on the y-axis.
Now that Volund could move around, it was time to sync animations with movement. I hadn't really used Mecanim before, but began to love the node based layout and how easy it was to see where transitions and hiccups were occurring. I wrote all of the state machine script from scratch for both the skeletons and Volund. Volund's was quite complicated and involved a sub-state machine for his auto attacks that were monitored so that each new target acquired wouldn't repeat the same starting animation but remembered where it left off in the cycle (yay, animation parameters).
Volund's
Base State Machine
Auto Attack Sub-State
Skeleton's
Abilities/Attacks
I used different approaches for the systems behind the auto attacks and the abilities. All of them used animation events to determine when damage should occur or a specific collider should turn on and "search" for enemies. For the auto attacks, I triggered the damage after the swinging frames so long as the damage dealer was in range and had a target.
UI
The UI was made entirely through the built in Unity system. I wanted to demonstrate a variety of input functions for interacting with the character and UI.
- The abilities are activated through key press.
- The potions are activated when their button is clicked.
- The passive and item tooltips are activated on mouse hover.
All of the represented systems are working accurately including tracking life steal and spell vamp, as well as health and mana regeneration, both inherently and increased when potions are used. The values are also correctly represented on both Volund and the skeleton's overhead resource bars. Additionally, the cooldown system works for both abilities (with radial and numeric displays) and potions (radial display) that show the player how much longer they have enhanced regeneration or until an ability can be used again. If Volund does not have sufficient resources to cast an ability (either mana or rings) the appropriate icons are grayed out.
Voice-over
I recorded 7 lines of dialogue for Volund and edited them using Audacity. I found a YouTube tutorial of a guy who makes death-knight voices (a class from WoW) and used his process to create an ominous, pained voice appropriate for Volund's character and story.