We’re excited to show you our new longship-inspired fire pit this week, as well as the heavy Viking door we concepted a few weeks ago. Both of these feature carved wooden dragon heads, so there's definitely been a theme this week. We’ve also got a few tips on streamlining your SFX workflow, so stick around for that if you’re curious. As always, give us a follow on Twitter, Instagram or Reddit if you like what you see - now let’s get into it!
Additions To Talent Abilities
Talent abilities are part of our new Talent Selection functionality that we introduced to Character Creation. As a recap, these are skills and spells that a player can customise their character with. You’ll be given a choice of two Talent Abilities out of 6, all of which are diverse and unique so that a range of playing styles are catered for. This week, we began creating animations, visual fx and sound effects for the spells and skills that were added to the new system last week. Here’s what we’ve done so far.
Animations For Talents
Our Animator created animations for the following characters and abilities:
- Earthen Dwarf - Guided Fissure: When you use this, a great fissure erupts five tiles ahead of the Earthen Dwarf, weakening any enemies within that range with Earth Damage and reduced Movement.
- Zentragal Illusionist - Cursed Ground: This allows you to target a 4x4 area, causing all enemies within this selected tile range to lose a bit of Movement.
- Parakaw Astromancer - Meditation: When this is activated, any remaining Movement point is transformed into extra Mana, with one Movement point equalling 2 Mana.
- Parakaw Astromancer - Crystallic Preservation: Using this, you can encase yourself in a crystal and become immune to all damage. Once preservation has ended, it also restores a bit of Health.
Visual FX & SFX For Talents
Our VFX Artist got started on bringing some visuals into Talent Abilities this week. Here are the ones that have received VFX so far:
- Aquatic Swiftness: As the name suggests, this grants you additional Movement for 3 turns
- Mending Hands: A self-casting ability that restores a little bit of Health every turn for 5 turns
- Forest Fury: Reduces the Resilience and Strength of enemies, as well as making their spells doubly expensive
- Savage Instinct: Allows you to deal Physical Damage to an adjacent enemy, as well as restore some Energy and Health
- Ancestral Focus: Gain a bit of Strength and a lot of Current and Maximum Energy for your entire turn when you use this ability
- Summon Geyser: Target a 3x3 area to reduce enemies’ Resilience and deal Physical Damage
Our Sound Artist then added some draft sounds to these visuals:
Fixing Talent Abilities
Of course, something was bound to go wrong while working on Talent Selection, so our Programmers also had to spend a bit of time this week fixing Talents that had broken. For example, Void Flicker, a Twilight Elf Assassin Talent that allows you to teleport within 3 tiles, was sometimes transporting players back to the same tile they started on.
Similarly, one of the Talents for the Zentragal Illusionist, known as Charged Spiderling, had a bug that was causing the spiderling to miss its first turn. This is an ability that spawns an aggressive spiderling to fight alongside the Zentragal in battle. Luckily, the issues we were experiencing with this, as well as with many other abilities, were soon fixed. We’re going to be continuing to add animations, VFX and SFX to Talent Selection, so expect to see more over the coming weeks!
Creating A Longship-Inspired Fire Pit
Last week, we were playing with the idea of creating a longship-style fire pit with two dragon heads. With the use of ZBrush, Substance Painter and 3ds Max, this vision was manifested into a badass piece of woodwork, featuring engraved Nordic patterns and a cast iron bowl for the fire:
- A unique sculpt was created in ZBrush and baked in Substance Painter
- We combined the normal map with the normals of the wood and metal textures in the engine
- The details come from the ornamental trim sheet we created for props a couple of weeks ago
We feel that this will be a better centrepiece for the Guard House, where players will be able to mingle and exchange items. In the screenshot of it below, you’ll also notice two flame torches in the background. These were another new addition: torch blueprints were made using a new flame effect that our Visual FX Artist has been working on, and they really help to tie the aesthetic of the settlement together.
Creating A Dragon Head Door
More work was carried out on our dragon-headed door this week and we’re really excited to see it come to life. We started by making a 3D blockout of the main door in MAYA, which was then later refined and UV mapped. Some adjustments were then made to the master tiling material so that the sculpted detail normals would blend with the tiling textures used throughout the settlement. This will give us some unique damage on the door and dragon heads while maintaining a visual consistency.
For the carved dragon heads, these were sculpted in ZBrush, using masking to pull Nordic knot patterns from the geometry. We then:
- Baked and textured the high poly dragon head onto the low poly, and proceeded to texture everything in Substance Painter
- Ensured that the UVs for the door were all oriented correctly so that they worked well with the tiling wood material in the engine
- Created a high poly mesh for the Viking door and sculpted in edge damage to make it look like it has stood the test of time
- Baked the normals from the high poly door onto the low poly and imported them into the engine to check for any errors (happy to say there weren’t any!)
- Finally, we applied decal trim sheets to the door frame and imported everything into the engine
Streamlining Workflows For Sound Effects
This week, our Sound Artist began working on a Generic Magic bank of sounds. This will let us create a sound profile for each character in the game, ensuring all their spells and abilities are unique. So far, we’ve done this for the Forest Druid and Watertarg. Once these are finished, we’ll very easily be able to use their sounds to create multiple new SFX clips for use in a wide array of things throughout the game.
Another streamlined workflow was created this week when our Sound Artist set up some templates for footstep surfaces. Basically, they’re now able to create one ‘step’ for a character, and then overlay and mix this with a different ground surface, be it rock, snow or water. This saves our artist from having to re-record steps on different surfaces. This was done in Reformer Pro, which will be useful for a lot of aspects in the game - for example, using a similar workflow, we’ll be able to turn a fiery spell into a water spell.
While lots of new generic skills have been designed this week, and even more Talent Abilities have been worked on, our Programmers also had some general housekeeping to do, as well as some ability movement types to create.
Ability Movement Types
The two remaining ability types were created this week, including linear movement and jumping. With this integration between the Action and Animation systems, characters are now able to perform movements with synchronised animation triggers.
Ability Templates now also have the ability to define what kind of movement occurs for abilities that have the effect of changing character positions. This means a Custom Step Rule can be set to calculate direct, linear or arching movements. As well as this, it can define the speed at which the target travels to its destination. With these rules, abilities that change the character’s end position are now usable, and should trigger any implemented animations.
Another focus this week has been on nailing down the issues facing Entity States. This is because the method in which the client was keeping track of State durations was causing health bars to fall out of sync with the server's actual values.
To fix this, functions that will more accurately update the UI and logic, and prevent multiple instances of a single State type showing on the same target, have been added. While states still suffer from early removal, the work on this area has helped to highlight the next steps we can take to fix this issue.
This was being inconsistently used throughout the code. Sometimes, the server would send a relative change, while other times it would send the new value to the client. Now, cooldown change logs consistently send the new value, rather than the amount it was changed by.
There was an issue with states expiring when they shouldn’t have been. While only some cases of this have been fixed, it can still happen - just hopefully a lot less frequently.
Preparing For A Server Rework
We’re soon going to be re-creating the server code in a new language. Doing this will give us a much more performant language that will be built with concurrency in mind. We’re currently being throttled by only having a single execution thread, which leads to long pauses in execution during intensive tasks, like level generation. To facilitate the rework, some prep and planning has been done, like installing new tools required to make it work.
That’s it for this week, but have you checked out our monthly devlog roundup yet?