DevLog Roundup: Updates from April
This month’s devlog roundup is loaded with all our most recent settlement shots from UE4, as well as many, many visual FX for our characters’ fantastical abilities. We’ve also got sound effects, animations, and a pretty hefty update from the Programming Department for all you hardcore devs out there. As always, join us on Twitter, Instagram or Reddit for daily updates on Depths of Erendorn – now let’s get into it!
3D Character Modelling
In April, our humanoid characters were updated with a new male base mesh, which we tested out on the Knight in-engine, so scroll down a bit to see that! We also worked on developing a material customisation system for our characters’ equipment, which will allow players to personalise their weapons and armour.
Resculpting the Male Base Mesh
A few months ago, our Character Artist began resculpting some of the base meshes used on characters in the game, including the human female, the Dwarf, and even some lions! Since then, their work was focussed on helping our Environment Artists set dress the game’s settlement (you can see all the updates in this devlog!) – but no more!
With the settlement nearing completion, our Character Artist turned their attention back to their coveted ZBrush and recommenced updating some pre-existing base meshes, namely the human male. This is used as the foundation for all of our male humanoid characters, including the Knight, Twilight Elf Assassin, Guards, Bandits, and so on.
Resculpting work included refining the facial features and giving more muscular definition to the whole body, in an effort to make it look more refined and realistic. When it was finished, our Animator then tested the new base mesh with the Knight in-engine to ensure it could be animated well. Here’s a before and after of the base mesh, as well as a clip of the Knight running through some woodlands!
Material Customisation System for Equipment
The next order of business was figuring out a system that would allow players to customise their equipment. Here are some of the key features we wanted this customisation system to include:
- 4 primary equipment slots (helmet, upper body, gloves and lower body)
- Some form of colour customisation specific to the equipment
- A lightweight system to account for the environment, other playable characters, and enemy characters while still retaining a high level of quality
You can check out this weekly devlog for all the juicy details about the challenges we faced in creating a robust system that can handle all of these features, such as the art style and number of total textures. But for now, we’ll cut a long story short and give you the skinny on how we ended up approaching this system!
- We decided to use a total of 21 material slots per equipment set so that players can mix-and-match whatever equipment they like without limitation. Now, this is a little high, which might interfere with our need for a lightweight system, but we’re going to be doing some stress testing over the coming weeks to see if this number will be an issue or not!
- Base colours will use a mix of greyscale and full colour. There will also be 1 mask texture to allow up to 3 customisable areas, which will correspond to the greyscale areas on the base colour, enabling for the colour of those areas to be easily altered.
- The customisable areas will be taken advantage of by detail normals in order to reduce the size of a character’s normal map. You see, high frequency normal details need a large texture size in order to read well, so by adding this detail in-engine, it gives us more control over the total number of textures being used.
- We may remove ambient occlusion (AO) maps seeing as it’s pretty pointless to show the interaction between changeable equipment slots. At the same time, AO maps provide a lot of useful shadow information, so we haven’t made up our minds on whether to remove them quite yet.
We’ll be working on getting this system up-and-running over the next few months, so for now here’s a screenshot of a quick test showing how colours of specific equipment areas can be altered:
We’ve got a ton of animation updates to show you from last month, starting with some of our beasts! New blueprints and skeletal meshes were made for spiders, canines, felines, and scorpions. We then created a line-up of all of these NPC idles to see how they looked:
Our Animator also implemented Dragon IK settings for a few characters, including NPCs like snakes, spiders, and scorpions, as well as some playable characters, like the Zentragal, Watertarg, and Dwarf. This took a little trial-and-error before we found the ideal settings for each character. For example:
- There was an issue that caused the characters’ feet to stick to their weapons
- Another issue presented itself by way of a floppy knee on the Watertarg
- The Dwarf’s pelvis was also too low to the ground when walking uphill
- Meanwhile, Human characters’ feet were too exaggerated when running downhill
Luckily, all of this has been fixed now! Here’s a look at our spider and snake using the Dragon IK system, as well as the snake’s new animation set!
After all this work, our Animator also found some time to update existing run cycles, namely for characters holding two-handed weapons, as well as the Watertarg Excursionist, whose run cycle was looking a bit stiff. Everything looks a lot more natural now after the animation updates – take a look:
As we mentioned earlier, the game’s first settlement is getting closer and closer to being finished, especially after the number of updates it received last month! For starters, a ton of new stalls were added to the outdoor marketplace, including a butcher stall, a stall selling crystals, a clothing stall, and even one specialising in wagons and cages!
Our Environment Artists also added a few more homey touches to indoor and outdoor areas, including the watchtowers and NPC housing. We even added a beer garden outside the Tavern, and made the streets look nice and cosy!
Probably the most exciting addition to the settlement last month was a portal, complete with VFX and everything! Players will be able to use this to travel long distances in the game, whether it’s to another city or to one of the dungeons. Here’s how it looks:
Of course, we weren’t just making aesthetic improvements to the settlement – we also carried out a ton of optimisations, including:
- Merging many of the same meshes into instanced groups
- Replacing all current wood ends for spiked fences with new wood end decals
- Merging these decals into a greyscale atlas to save on material slots and texture budget
- Creating our own custom palisades and fence posts, replacing the Megascan assets
- Moving all props into their appropriate sublevel, rather than having them scattered across different sublevels, which caused a lot of issues when making adjustments
In addition to optimising the settlement, a ton of optimisations were carried out on the world environment, including:
- Increasing the size of trees by 70%
- Improving lighting so that we’re now using SSGI (Screen Space Global Illumination)
- Adding fluffier clouds to the sky!
- Changing the trees in the world to improve shadowing at distance
Our Environment Artist also made a lot of improvements to the cliff material, including switching out the texture and adding in some normal detailing, as well as broader colour variation. They then created a new cliff generator in Houdini – here’s a look at the first cliff output using it!
As well as cliffs, our Environment Artist spent some time optimising foliage in the environment. For example, they created a new foliage spawning volume that populates cliff faces with trees, ferns, and grass. New foliage was then brought in from Megascans and had its RVT texture flickering fixed, before our Artist went through and individually tweaked LODs. Additionally:
- The randomness of procedural foliage volumes was made better
- New-and-improved birch trees were added into the environment
- A denser array of foliage, debris, and twigs was created
After all of these foliage improvements, the path that runs from the starter zone to the settlement was spruced up (pardon the pun) with new arrays of trees, plants, and general foliage:
In the VFX Department last month, all the visuals for level 2 skills and abilities were created. While some of these will need further improvements, we love how they all turned out. That said, there’s not a lot to say about visual FX in April, but there’s a hell of a lot to show!
So, without further ado, here are the level 2 skills and abilities that were created last month!
Last month, our Sound Artist created a lot of new sound effects for the settlement, including the fiery, metallic grunts of the blacksmith shop; the bustling activities of the Merchant Tent; and the gurgling, clinking jubilance of the Tavern.
For the Merchant Tent, the sounds were kept mystical and sonorous to echo the fantastical nature of the stalls, such the Parakaw Astromancer’s shop of scrolls, or the Twilight Elf’s potion grotto. Take a listen:
Speaking of mysticism, new sound effects were also created for the cauldron! The original sounds had to be remade because they were too bubbly compared to the visuals – not a bad issue to have, but they definitely sound more refined now. Here’s a before and after:
For the Tavern ambience, the addition of clinking glasses, glugging liquids, and bustling crowds adds an extra layer of immersion to this social hub. Close your eyes, imagine a Tavern, hit play on the video below, and you’ll see what we mean!
While we’re talking about creating immersion through sound effects, our Sound Artist also spent some time last month enhancing the auditory experience of going from outdoors to indoors.
This involved creating in-game volume boxes that trigger ducking when a player goes inside. When this happens, exterior sounds will be ducked, i.e. have their volume decreased, so that the sounds mimic the transition of going from an outdoor space to an indoor space, and vice versa.
Another way our Sound Artist increased immersion in the game is by remixing environmental sounds, like fire torches, to have a better stereo spread, as well as a different radius of spatialisation. For example:
- If a player stands within 1m of the torches, they play in both ears at equal volumes
- Outside of this radius, the sounds of the torches will pan between left and right
- This will improve the overall mix as the sound won’t have to jump from ear to ear as you run past, making it more realistic and, therefore, more immersive
The wind ambience in the game was also made more natural, dynamic, and immersive. This was achieved by changing the way it plays. Originally, wind ambience was played as one track on a loop. Now, there are three tracks (bass, mids, and highs) that play at the same time, while modulating their pitch and volume:
Finally, the last thing on our Sound Artist’s list last month was to create some sound effects for the level 2 skills our VFX Artist made! There’s not much to say about these, other than that they sound pretty damn awesome and really tie everything together. Now all we need is to match them with their respective animations!
Improving Character Movement in Dungeons
Last month, our Programmers improved in-dungeon character movement by implementing sprint animations, as well as making some tweaks to pathing. Character movement was also enhanced by focussing on seven key areas:
- Movement Calculation: Classes that handle character movement were refactored to be more readable, with a bigger focus placed on individual character speeds
- Global Speed Multiplier: A console command that allows character movement speeds to be set when testing was created
- Collision Profiles: We also created a number of Collision Presets that define how certain types of objects interact with each other in Unreal Engine. Set pieces were then updated to use these new presets
- Movement Smoothing: Thanks to the new Collision Presets, movement was made a lot smoother. It also now better matches the environment a character is traversing
- Camera Collision: The updated collision settings also paved the way for important camera improvements, which work together to enhance the feeling of navigating the dungeons!
- Acceleration: Characters were updated with more natural movements when moving in the dungeons, as well as with different base speeds depending on the character type
- Alternate Idle Animations: Made it possible for characters to use the correct idle according to which weapon they’re holding. Each weapon has a different idle to account for the change in weight, grip, or stance – holding a two-handed sword, for example, will look a lot different from holding a hammer!
Preparing Client to Record Gameplay
As our Programmers gear up to recording gameplay, a bit of preparation had to be done last month in the way of bug fixes and a broad clean-up of ability templates.
For example, one bug we had involved the toggle UI switching the outline of dead characters, and another issue meant that a single enemy would react to all Damage dealt via an ability – talk about unbalanced. So, these bugs, and a few others, were all fixed in preparation for the client to start recording gameplay!
As for ability templates, this work involved our Programmers working through tons of generic and class abilities in order to prepare as many as possible before recording starts. This work included updating triggers for animations, visual FX, and sounds across all classes. They also:
- Updated projectile speed calculation to allow or speeds to be set in Mp/s for each ability template
- Fixed offsets for targeting in all AoE abilities, which should now also appear in the correct locations
Hopefully, this work means we can now get some footage of all our spells and attacks in-action – like this one!
Fixing Visual Bugs
Before we could start recording gameplay, we also had to make some stylistic updates, namely on text panels, which were originally using a style that was inconsistent with the stat panel. Now, the designs of these UI features are much more cohesive.
Another visual bug we spent some time fixing included updating how the client deals with dead character outlines in-game and while using game filters. With all of this prep work out of the way, our Programmers then successfully recorded a group gameplay, complete with a full party and spectator! We’re still in the process of testing and refining, but we’ll have some new footage to show you soon – for now, here’s another one of our VFX and SFX combos!
The Replay System
While we’re on the subject of recording gameplay footage, last month also saw a lot of updates on the Replay System. If you were with us in March, you’ll remember that this is a new system our Programmers devised for recording and replaying footage of game tests!
This has proven useful for a number of reasons. Not only does it allow us to record gameplay, it also gives us a new perspective from which to debug or make improvements!
For any fellow devs reading, this section is for you! Last month saw a ton of major milestones being met by our team of Programmers working on the new Golang server.
We’re now at the stage where we can switch between the current PHP server and the Golang server whenever we want to! The only reason we haven’t made the complete switchover yet is because there are still a few optimisations we have left to do.
So, here’s everything our Programmers did last month to get us to this point:
- Shields and states are now a thing that can be created and applied in the code!
- The ability to summon other entities in as minions was also added to the code
- Triggers and states were added to the new server:
- Triggers manage when active effects occur. For example, if you have a Damage Reflection ability active, the trigger is called upon when taking Damage, which in turn activates the effect of dealing the Damage back to whoever hurt you.
- States are the eponymous status effects we see in many games with rpg elements – stunned, blinded, disarmed, and the like – and they can even be triggered by certain things!
- The possibility was added to alter the length of active effects and statuses
- Made some quality of life changes to projectiles! Now, when a player casts a skill, like Fireball, it won’t deal Damage until the ball actually lands at its destination, even if your allies are moving around and casting their own spells at the same time
- The Projectile Manager was finalised, allowing us to manage all the existing projectiles – accurate to the nanosecond!
- Created AI Intent, allowing AI to intelligently figure out when enemies will use their abilities. We also defined different types of AI behaviour, depending on the NPC. For example, aggressive animals will behave and attack different to Bandits, who are more tactical
- Made it so that Abilities and Active Effects are preloaded on the server. This means it only needs to request the information from our SQL storage once, rather than every time
- This is also beneficial because it means that the Active Effects that are stored on every entity no longer need to be held there. Instead, they’re taken from memory on the server rather than the entities themselves, thus reducing the amount of total memory being used by the code on the server
- Target storage was implemented, allowing us to store AI targets in the event that they temporarily can’t interact with their target
That’s it for this devlog roundup – remember to check out our weeklies for more in-depth updates!