Welcome back to another weekly devlog! As always, we’ve got a lot of updates to share with you, from our newly modelled Storm Elf Casters to brand new SFX for our playable Watertarg. So stick around to see all the exclusive updates on Depths of Erendorn, and make sure to follow us on Twitter, Instagram or Reddit for daily updates as well! 

3D Modelling 

After many weeks of sculpting and texturing, we finally finished modelling the clothes and equipment for the Storm Elf Caster Series. This enemy class is home to some of the weaker Storm Elves you’ll come across in Depths of Erendorn, such as the Initiate Wizard, as well as some of the most powerful, like the Seer Overloader – and if you follow us on social media, you’ll already know a ton about this masterful spellcaster.

Our 3D Artist made sure that each class within this series had a distinct set of clothing, whilst also ensuring that there was a clear theme that united these enemies together. This was pretty easy to do, since a lot of these characters share the same items, so only a few unique meshes had to be made:

  • The Initiate Wizard had a unique hood created. Unlike the others’, this is connected to its undercoat, rather than a shawl.
  • The Overloader, another novice wizard, is the first of this enemy class to wear the characteristic hooded shawl. It is also dressed in the same undercoat as the Initiate Wizard.
  • The Veteran Wizard wears the first set of shoulder armour, which our 3D Artist made unique to the Storm Elf Casters by essentially inventing their own galvanised and gilded metal.
  • The Seer, upon first glance, looks almost identical to the Veteran Wizard – but their higher ranking is actually reflected in the slightly grander underdress that they wear.
  • The Seer Overloader is the most powerful of the Casters, and this is shown in design elements such as their unique headpiece as well as their more extravagant clothing. 

Once our 3D Modeller was finished texturing the Storm Elf Caster series, we could begin transferring their textures and materials to the engine. We also added these textures to the Storm Elf base mesh, which was created last year, so that we could see how these enemies looked in their final form – and they looked pretty good! Check out our recent profile card on our socials if you’re curious to see how one of them turned out! 

Animation

This week, our Animator worked on a second attack animation for the Zombie, one of our Undead enemies from the game. Since the previous attack, which was created a few weeks ago, was a two-handed hit, the new animation only features a one-handed attack, and some gruesome sound effects were also added to the animation in order to really emphasise the Undead factor. 

With the Zombie out of the way, our Animator turned their attention to the Unproven Lionman:

  • A few bones were first adjusted on the rig, and some skin weights were fixed.
  • Animations for its idle as well as its walk cycle were then worked on.
  • We added two variations of how it holds the axe during a walk cycle. 
  • We finally spent some time planning out its next animations, like attacks and hit reactions.

We actually ran into a few issues when creating the idle for the Unproven Lionman because it kept looking like this enemy had, shall we say, gyrating hip movements… While this was probably pretty suitable for a lockdown workout video, as one of our Programmers pointed out, we thought it maybe didn’t suit this fearsome beast so much! But, after a few tweaks here and there, we managed to get the idle animation to a point where we were pleased with it – check it out below!

This is the current animation for the Unproven Lionman’s idle.
This is the current animation for the Unproven Lionman’s walk cycle.

Environment Art

This week, our Environment Artist used Houdini to create what they have dubbed a ‘Rockifier,’ which accepts a base mesh before generating complex rock sculpts that are based on the original mesh. This is a much more efficient way of generating rocks for the environments in our game. 

In addition to making our rocks a bit more refined, our Environment Artist also updated the lighting in the streaming level so that it can be used in the generated levels. Foliage tools were also looked into this week as a way of solving the issue of what to put on the insides of our walls. 

As well as this, they have also been conducting some research into the much-anticipated UE5, which has got all of us at Project Gamechange on the edge of our seats. When researching this, we were specifically looking into the potential optimisations that will have to be made to our workflow now in order for a smooth, future transition to UE5. 

A ‘Rockifier’ was created in Houdini this week for more efficient rock generation.

Visual FX

After getting started on some of the effects for the Watertarg Excursionist’s abilities last week, our VFX Artist managed to finish off this playable character’s arsenal by working on the last of its awesome spells and skills. As we’ve mentioned before, Watertargs are an amphibious race, so a lot of fluid and water-like visuals were used when creating the following abilities:

  • Mind Net: This allows the player to choose three enemies to root to the spot for one entire turn.
  • Ancient Invocation: This gives the player the choice to either deal Arcane Damage to a chosen enemy, or to heal a team member. 
  • Water Drops: In 2 turns from when it is used, this ability will heal a decent amount of Health on a chosen target, including the player itself.
  • Spiritual Whirlpool: When this is used, all 1-tile enemies in a room have their Movement speed reduced for 5 whole turns, giving you and your team an extra advantage in battle. 
  • Rock Barrage: A particularly hard-hitting ability, this not only deals significant Physical Damage to a chosen enemy, it will also deal some to all adjacent enemies as well. 
  • Pulsating Wound: This ability does a few things. Not only does it deal Physical Damage to enemies every turn for 5 turns, it also has a passive effect of making 1-tile and 4-tile enemies lose Movement speed whenever it is active. 
  • Flood Lungs: This spell deals Physical Damage every turn for three turns, with the highest amount of Damage being inflicted on the first turn. Even though the amount of Damage dealt decreases every turn, it is a very effective ability, and can only be used on beasts, humanoids and Dragons.
  • Arcanic Reverberation: If you ever find yourself facing a powerful enemy, with many other accompanying enemies in the room, this is the ability to use. It attacks a given enemy with 1 Arcane Damage per enemy in the room – so if there are 6 surrounding enemies, 6 Arcane Damage will be dealt to a single opponent.
  • Future Blessing: If you want to do future-you a favour, then choose this spell before entering a difficult room – especially if your stats need a boost. For the next room you enter, it will increase your Energy Regeneration and your Strength until you leave that room.

Sound Design 

Speaking of the Watertarg, our Sound Artist has also been busy creating sound effects for this playable character this week. Since Watertargs are amphibious, its sound design includes a lot of splashing water effects that were then brought together and manipulated. 

Creating these SFX for the Watertarg Excursionist’s abilities mostly involved our Sound Artist throwing a lot of water around their flat – so if you’re curious, you can check out the entire process on their Twitter

These are the draft sounds for the Watertarg’s ability ‘Water Drops.’

Programming

Projectile Custom Steppers

Work this week has been centred on adding more options to, and improving the user experience of creating ability templates. Included in this work is getting our Action System to handle more complex sequences of actions beyond Animation, VFX and Sound Custom Steppers, which we mentioned in last week’s devlog. A primary example of complex sequences of actions is projectiles, which we needed to define some basic functionality for. 

Projectile Custom Steppers take up to three separate VFX and Sound assets, one for each phase of the ability that is being cast:

  • Launch Phase: This allows assets to be triggered before the projectile is launched, i.e. directly after the character has cast the ability.
  • Projectile Phase: This allows a particle system to be shot at and animated towards a specified target. The moving object will also have a sound component so that a trailing sound can be spatialised.
  • Impact Phase: This allows assets to trigger as soon as the projectile hits the specified target – so this is when the final VFX and SFX will occur.
These are the draft sounds for the Watertarg’s ability ‘Mind Net.’

Custom Step Rule Additions

While we’re on the subject, our Programmers added the ability this week for Custom Steppers to reference a primary and secondary target. Secondary targets can potentially be used in a number of different ways. Although their main use at the moment is to draw projectile trajectories, they can also be used for rotating as well as providing extra positioning information to Custom Steppers that require more complexity.

With that said, there were a few rule additions we made to Custom Steppers this week:

  • We added offset options so that VFX and SFX can play x/y/z Unreal units, or a said number of tiles, away from their provided target.
  • We added the ability for Animation nodes to take an order of preference and, optionally, a modifier for that animation. This means that a basic attack Animation Stepper can trigger basic attack A, B or C.
  • We also integrated an Ability Target class so that affected targets can be accessed and applied as Stepper targets when initialising.
  • We finally added ‘Before Run’ and ‘After Run’ (as well as ‘After Launch’ and ‘Before Impact’ for projectiles) in order to delay times as an optional rule.
These are the draft sounds for the Watertarg’s ability ‘Magic Gland.’

Additions and Fixes

In addition to Custom Step rules, many other additions were made by our Programmers this week. The client, for example, was updated with the final remastered versions of the music, making for a greater audio experience. We also incorporated a Server Time Offset variable that controls the offset between your local time and the server’s time, ensuring that everyone can hear the same part of the music as each other. 

As well as all that:

  • We added simple functions for playing sounds at a certain location, as well as playing sounds that respect the players’ audio settings without needing to first retrieve the volume level.
  • We added Target Info parsing. Target Info is a class that interprets the target data a client sends to the server. It then adds functions for manipulating the data to retrieve useful information. This is used in the Action System to define what to apply VFX and other things to.
  • We added helper functions to aid in the retrieval of the arrays of player models by giving arrays of IDs or arrays of entity objects.
  • We added a first pass on movement over time. Up ‘til now in UE4, our players and enemies teleported when movement commands were issued, so we’re happy that by simply adding movement, the game has really started coming to life.

Where there are additions and updates, there are bugs to be fixed – and our Programmers certainly had their fair share of these this week. They:

  • Fixed a bug that occurred when rotating entities on an attack. Now, entities should always have to turn to face their enemy when striking them.
  • Fixed a bug where the start-time offset when starting a music track caused a potentially very long silence between tracks.
  • Fixed a bug that, when generating a new playlist, in some instances wouldn’t reset the current track variable.

Animation Controller

Work also continued on the setup of our Animation Controller for the Twilight Elf Assassin. Following this, we now have a template and a workflow that we can use when creating the rest of our characters’ controllers. This will mean that they will integrate well with the Action System, as well as the Custom Animation Steppers. 

These are the current animations for the Zombie’s attacks.

Thanks again for joining us this week! We’ve got a very special post planned for the weekend, so make sure you head over to our Twitter, Instagram or Reddit to check it out!