We’ve kicked off the month by completing the remodel of our iconic Parakaw, creating some brand new VFX and working on a new method of level generation! Keep reading to see how our team has fared through the week – and if you want to check out our daily updates, head over to our Twitter, Instagram or Reddit!

3D Character Modelling

More texturing work was carried out on our Parakaw this week, particularly on the feather tiling pattern that we used across the whole body. We revised this several times until we found a good balance between the size of the feathers and their viewing angle. As we mentioned in last week’s devlog, we then continued adding a slight blur to the feathers’ normal/height details in order to create a softer, less stony look. 

This brought us to the end of the texturing phase. Next, we could begin the process of refitting the original Parakaw Astromancer’s clothes to the new base that we had created. This was actually pretty straightforward and, luckily, didn’t require a whole lot of reworking. With this playable class of Parakaw all finished, we then refitted the clothes for two other, non-playable classes:

  • The Watchers: Elite guards of the Parakaw kingdom, Watchers are powerful spellcasters who use their skills to protect the main city.
  • The Civilians: There are many Parakaw civilians in Depths of Erendorn. These NPCs can appear as enemies you fight, or as harmless townsfolk of the Parakaw kingdom.

We now have a completely remodelled Parakaw and, best of all, it has a base mesh this time! With that out of the way, we decided to go back and make a few small tweaks and fixes to a couple of characters for better skinning and animation, especially on the Daggerclaw Harpy. We decided to use a similar technique for the Harpy’s feathers that we used on the Parakaw, blurring the feathers slightly to remove the statuesque quality they originally had. 

Next up on our list of characters to model are the Rockbark Treemen. You may remember these awesome creatures from one of our character profiles as a race of ancient guardians whose duty it is to protect the High Forest. We’re really excited to start modelling these characters because of their unique design. So far, we’ve simply blocked out their general shape in ZBrush – so come back next week to see how we get on!

Animation

A lot of work was carried out on the Human base mesh in the Animation department this week. After painting skin weights on the face, creating a few different facial expressions and adjusting the idle, we were able to skin the Knight onto this Human rig so that we could import it into the engine alongside its walk and idle animations. To do this, we had to:

  • Export the rig and mesh, making sure that the skin weights transferred well onto the UE4 rig version.
  • Export the animations before being able to import the rig, mesh and animations into the engine.

Doing all this continues our efforts towards using a single, unique rig for all characters in Depths of Erendorn. We will carry on exporting characters to the engine until we are satisfied with how all of their skin weights, rigs and animations are performing under this new rigging system. It’s going to take a lot of back and forth adjustments, but we’re getting there!

Environment Art

Work continued on the character selection scene this week. We started by fixing an issue where some assets had no roughness, metallic texture or AO maps, which create realistic, soft shadowing on an object. Resolving these issues was imperative to the level of realism we wanted our environment to achieve, so we were relieved to get those sorted. 

We were then able to focus more on building our character selection scene:

  • We started by adjusting the overall composition and field of view.
  • A plinth rock was then added for the character to stand on.
  • We also added mesh mountains to the backdrop, which will be textured at a later date.
  • Other background elements, like rising campfire embers, were also introduced to the scene.

Aside from that, there were a few other tweaks we made to our environments this week, particularly in regards to grass. Not only have we improved our grass wind, we have also improved our grass material with automatic grass propagation functionality. This basically makes it so that grass will automatically be placed wherever the grass texture exists. It makes our workflow more efficient, and also keeps our grass placement consistent – so we shouldn’t have grass randomly growing on places it isn’t meant to!

WIP character selection scene from Depths of Erendorn
Our character selection scene received some mountains in its horizon this week, though they still need to be textured.

Visual FX

It’s been a bit of an ad-hoc week in the Visual FX department as our Artist continues experimenting with different visuals. A lot of generic effects and buffs have been created, adding to our arsenal of VFX. We’ve also been working on some cool little orbs that can be used as weapon glows, enchantments or even projectiles. 

A visual effect for a poison cloud, which will be used alongside many poison-dealing abilities, was also worked on this week. We decided to show this as a soft cloud that bursts and dissipates, releasing luminous particles in order to tie this effect in with the fantastical side of the game. In the future, we will be able to modify this poison cloud to suit all abilities that deal poison.

Programming

There’s only really been one task worked on in the Programming department this week – but it has been an important one! With this in mind, both of our Programmers have been working on level generation using Cellular Automata, which will help process generated data into walkable cave systems:

  • Using a Noise Generation plugin, we created a prototype level generator in the game client, iterating on the prototype in order to improve and optimise results.
  • We implemented this Noise Library in order to give us a seedable foundation for map data. We then created display modes that use either Perlin Noise or Billow Noise Data to seed a base map.
  • Using this base map, we created the code to run ‘Cellular Automata’ over it in order to create cavelike maps. 
  • We then theory-crafted a method to remove inaccessible parts without using expensive pathfinding. This process involved thinking of, discussing and then implementing said method.
  • Extra edge noise was added over the top of the base map to ensure that the edges of the generated maps are encased in walls.
  • Another theory-crafted method was then discussed, this time to allow ‘set piece’ assets to be incorporated into the level generation. We will implement this next week. 

While our old level generation was much more basic, transitioning to UE4 has made us decide that this is a good time to take a look at how we’ve been creating new room generation algorithms and what we can do to get better results for gameplay and visuals. There were a few reasons why we decided to change our old system of level generation:

  • Due to the more basic nature of our old system, it didn’t produce natural enough cave dungeons.
  • While it offered a good amount of variation, our new method of generation offers much more.
  • The ways in which we improved variation on the old generation can also be used on our new method, allowing us to improve it even further.

Furthermore, by creating a room builder test scene, we can use this as a tool to allow us to generate, examine and tweak the parameters for generated rooms. Also, by using generated noise (such as Perlin) as the base for our map data, we’re hoping to create a more organic starting point that we can work with for the next steps in room generation.

Next week, we will be adding set pieces as well as making further improvements to the entire process in order to get much more interesting level generation than we had previously. That wraps up this weeks devlog! We hope you liked hearing what our team have been up to – we certainly enjoyed having you!