Another Friday, another devlog, and this week we’ve got some awesome updates to show you. Give us a follow on Instagram, Twitter or Reddit if you want more daily updates on our fantasy RPG, Depths of Erendorn

3D Modelling

This week, our 3D Character Artist has started working on the models for the Storm Elf Caster series. This is a series of enemies that appears in the game, and there are five classes of Storm Elves included in it, each one pertaining to its own piece of lore:

  • The Initiate Wizard: The weakest of the spellcasters, these are novice Wizards, identified by their plain clothing and ability to cast a moderately powerful lightning spell. 
  • The Overloader: Although more learned than the Initiates, Overloaders are fairly inexperienced. Wizards can only rise to this rank if they can cast multiple spells without overloading themselves.
  • The Veteran Wizard: This is the highest ranking class in the Storm Elves’ Lightning Syndicate, an institution that teaches novice wizards, Initiates and Overloaders included, how to master spells. 
  • The Seers: These are the most proficient of the Veteran Wizards, and their mastery of lightning magic gets them the esteemed honour of being invited to join The Arcane Circle, a hallowed institution that teaches other forms of sorcery to those who can handle it. 
  • The Seer Overloaders: These are the best of the best, the crème de la crème, and the greatest spellcasters that the Storm Elf race has ever boasted. They are distinguished by the spiked crown that adorns their head, and appear as very powerful enemies in the game. 

You can read more about the Storm Elves here, but for now let’s get into how our 3D Modeller started sculpting these enemies.

These are the original concept designs for the Storm Elf Caster series.

Since a lot of the classes share the same items of clothing, we were able to streamline our workflow by modelling three of the ‘staple’ wizards in this class: the Initiate, the Veteran and the Seer Overloader. This saves us from having to remodel the same pieces over and over again:

  • A long gown and undercoat is worn by all five spellcasters. The stronger a wizard is, the more items they have layered on top of it.
  • A dark, hooded shawl is worn by all but the Initiate Wizard, so this will be placed on top of the undercoat for these characters.
  • The Veteran Wizard, Seer and Seer Overloader all wear the same set of shoulder armour, so this is another piece that is getting reused.

Once we have finished sculpting all the clothing and armour for these characters, we will eventually be able to create all five wizards from the Caster series by mixing and matching the different parts. With that said, it meant that we only had to create a couple of unique clothing meshes to finish off certain classes: 

  • In the concept design, the Initiate Wizard’s hood is connected to their undercoat, whereas the other wizards have it connected to their shawl. This meant that a unique hood had to be made for the Initiate Wizard. 
  • The Seer Overloader’s undercoat also had to be made differently, since it is slightly more extravagant than the others’. A spiked head piece was also sculpted especially for this enemy, as well as a front cloth piece for the undercoat. 

When creating the shoulder armour, our 3D Artist experimented with several different tethers for it, from leather straps to pieces of cable. In the end, we went for the leather straps, and that brought to a close this initial phase of blocking out. Now that we have fully blocked out the meshes, we are ready to start sculpting some detail onto these badass wizards. 

Animation

A lot of work was carried out on the Wolvajin’s animations this week, including its idle, walk cycle, hit reaction and death animation. Our Animator then used the sound effects that had already been created for this enemy to show how they worked with the final animations. The combination of the Wolvajin’s frenzied, wild movements and wet, animalistic snarls really brought this enemy to life, and it’s awesome to see it fully fleshed out like this. 

Animations were also worked on for the Skeleton this week, namely its ranged bow attack. Our Animator could then start preparing and exporting the Wolvajin and Skeleton animations to the engine so that we can test them out properly, as well as check that they still perform well with the unique rig setup. 

This is the current animation for the Wolvajin’s attack, accompanied by its sound effects.

Environment Art

This week, our Environment Artist began researching spline wall variation. Since the walls in the game will be procedurally generated, we need to research this stuff so that the wall splines spawn variations of different meshes, rather than the same one over and over again. 

Having variation in the wall splines, then, will be great for avoiding repetition, and we’re currently in the process of creating a random mesh variation blueprint for them. Although it needs further work, it’s definitely heading in the right direction. 

In addition to this, our Environment Artist created an overlay material this week that will be used for props. They did this by using a mix between the z-axis normal and the occlusion map blending in UE4. This material will be used to add things like moss, snow, soot and many other materials to the tops of prop meshes. We’re still making some tweaks to this in order to get it working properly, so we’ll show you some examples once it’s up and running. 

This is the current animation for the Wolvajin’s hit reaction.

Visual FX

Our VFX Artist finished their work on creating the visuals for the Zentragal’s class spells and abilities this week. They started by changing up the effects for Siphon Movement, which was worked on in last week’s devlog. This ability allows the player to reduce an enemy’s Movement while increasing their own Health. 

The original visual FX for Siphon Movement showed a green ‘raining’ effect over the enemy, while another green cloud effect opened up beneath them. To really show the healing aspect of this ability, our Visual FX Artist decided to rearrange these effects so that green particles now burst from the Zentragal, while a sinister-looking cloud effect opens up where the enemy stands. We think this alteration does better justice to the nature of the spell, and we’re really pleased with the results.

Other abilities worked on for the Zentragal this week include:

  • Spider Swarm: An arachnophobe’s worst nightmare, this allows the player to summon a swarm of skittering spiders, each one able to deal a significant amount of damage.
  • Debilitate: This causes a chosen enemy to lose Energy every time it moves one tile. Lasting for seven turns, this is a great way to strategically weaken your opponent. 

Sound Design 

A ton of new sound effects were worked on for the Rockbark Treemen this week. In Depths of Erendorn, Rockbark Treemen are the appointed guardians of the High Forest. They appear in three main classes: Rockbark Saplings, the youngest and weakest of the race; Large Rockbarks and, finally, Immense Rockbarks, who are among the oldest and strongest. 

Our Sound Artist kept these different classes in mind when working on their sound design because it was important to figure out the right amount of scaling for each class. We want every stage that the Rockbark Treemen go through to feel bigger than the last. So, in order to achieve this, our Sound Artist added more bass and ‘impact’ sounds to the Large and Immense classes.

Another way we differentiated the sounds between the different sizes of Rockbark Treemen was by increasing the length of each sound so that the older the Treeman is, the longer it takes them to ‘speak.’ We’re hoping that this will give an auditory indication of their age and size, making each class feel unique to itself. 

These are the draft sounds for the Rockbark Sapling’s idle.
These are the draft sounds for the Large Rockbark Treeman’s idle.
These are the draft sounds for the Immense Rockbark Treeman’s idle.

Programming

Back to the wall system that we talked about in last week’s devlog, a bug occurred in it this week that prevented some walls from rendering in on map seeds – so we kicked off our week by fixing that. The cause was that not all unreachable wall tiles were being correctly removed from the map, thus creating walls that couldn’t be connected.

The rest of the week was mainly focussed on improving and re-integrating the audio manager. Part of this work was making it so that there are now different settings for audio. Currently, we can change the master volume, the music volume and the SFX volume independently of each other, and it’s also possible to add a lot more to that. In addition to this:

  • The audio manager now exposes its volume setting to other classes in the project so that the settings can be honoured.
  • The audio manager now also saves a player’s preferences between sessions, remembering things like volume.
  • The audio manager will now try to keep all connected players at the same point in the music playlist.
  • The audio manager now randomises the in-dungeon playlist based on the map seed. This, combined with the last point as well as some coding magic, means that players will be hearing the same music at the same time.

Finally, the settings screen was updated so that audio settings are easily changeable. Speaking of the settings screen, we’ve added tabs to it this week for different types of settings, giving us much more flexibility when editing the screen at a later date. 

Our Programmers also worked on the character selection screen this week. Following some improvements, it now remembers the last character a player selected, and stores it in the same save file as the rest of that player’s preferences. The save system was then upgraded so that all settings can now be stored together.

The rest of the week was dedicated to improving the structure of and adding capabilities to the Action System, a development structure that will open up the project to better in-engine collaboration between visual FX, animations and sounds. Our Programmers work on this included:

  • Ensuring that the execution of steps can work with any set of logs, and prevent infinite loops being triggered by circular recursive execution.
  • Creating the framework for Custom Steps. These work like the Log Steps, which were implemented last week, but contain clientside assets and logic for displaying those assets.
  • Creating Custom Step templates for animation, VFX and sound, as well as for their individual methods of execution and parameters.
  • This means that if, for example, a specific frame of animation is due to follow a visual effect, it will wait for the specific event to happen before proceeding, i.e. it will wait until the VFX have finished playing.
  • Creating methods for calculating where, within existing Step queues, Custom Steps should be inserted. We did this by searching through and appending based on occurrences of other Log Step types.
  • Adding a Custom Step initialisation phase to Stepper logic to allow Custom Steps in the queue to be initialised after they have been added.

The Action System is really starting to come together after all these improvements have been made, and we’re eager to see how it will optimise other team member’s workflow when it comes to implementing and modifying their respective content. 

This the current animation for the Wolvajin’s death.

That’s it for this week, and thanks for joining us! Have an awesome weekend, everyone – and keep your eyes peeled for next week’s roundup of everything we got up to in April.