Monthly Devlog | June 2022 | No. 41
It has been a busy month for the developers on Depths of Erendorn. The Draconian receives an update while a new set of city props is in the works. Additionally, the animators work on bringing a variety of enemy models to life, and the visual effects team focuses on the Zentragal ability effects. Finally, the sound team continues their work with VFX and enemy audio, and the wizards of coding have updated the engine to the newest version and taken a close look at the combat system. As always, join us on Twitter, Instagram, and Reddit for daily updates on Depths of Erendorn – now let’s get into it!
Over the last month, the 3D modelling team has worked on the Draconian model. Going from finalising the sculpt to completing the many colours of the Draconian race. Our artist started the month by taking care of the muscle structure and scales that cover our lizard warrior. The team has used references from other bi-pedal humanoids to keep the form in line. The outfit for the Draconian also got a rework during this time. In doing this, fixing some minor issues that were occurring during animation. Examples of the finalised sculpt can be seen below.
Once the high-poly sculpt was completed, the team turned their attention to retopologising and unwrapping the updated Draconian model. Firstly, creating a low-poly model that will be more efficient within the game-engine. This model will then have the detail of the sculpted model ‘baked’ onto it. Giving the impression that the highly detailed model is running around within the game. Secondly, the team worked on unwrapping the model, a process that involves flattening the model down to a 2D image. In doing this, the team could start work on adding colour to the Draconian. The low-poly model can be seen below.
The Draconian then got a splash of colour! Starting with a shade of red, the artists have used tones of the colour to emphasise where the Draconian will have skin moving over muscle most frequently. The team has also used different tones to highlight areas of natural armour that the Draconian has. This is also shown with larger scales on the legs and down the spine. Once the base colour was finalised, the team would alter the colour to bring the other sub-species of the Draconian race to life. Each sub-species of the Draconian inherits a unique ability, only the most knowledgeable will know what danger they impose. While the colours of the Draconian were being changed, the artists also took the time to adjust the mouth of the model to amend some animation issues other team members were having. Examples of the textured model and colour alternatives can be seen below.
Set Piece Design
The set-piece team started the month by implementing many of the models completed the month prior into the engine for a texture test. Once in engine, applying procedural textures to the models gives our artists a well-rounded vision of how the assets will look once they are introduced into the buildings within Erendorn. Using procedural textures in such a way can give the unfortunate effect of the assets looking very clean with little depth. Finding a solution to this problem once the models were placed into the game area, placing assets together shifts focus away from the textures and more to the wider environment. An example of the textured assets in the game can be seen below.
Moving towards the latter part of the month, the team started work on an alternate set of assets for the cities of Erendorn. Utilising concept work completed by other artists, the team started on a new set of props with a more brutal and harsh aesthetic. Assets such as these will furnish buildings such as Blacksmiths and Jailhouses. Many of the props in this set will focus on form over function, which will fit into these types of buildings perfectly. Examples of the props created for the new city set can be seen in the pictures below.
For the start of the month, time was split between further upgrading message compression to massively reduce the size/amount of messages received by the DoE Client and upgrading the World Session to be capable of handling the spawning and grid movement of enemies. Once this was complete, the team has been full steam ahead on transferring the most up-to-date version of the Depths of Erendorn Unreal Project over to our new source-built Unreal Version 5.0.2 and uploading both the engine and the project to source control ready to distribute to the rest of the team. Some time was also dedicated to interviewing a new Client-side programming candidate. A breakdown of work completed by the Client-side team can be seen below.
- Added the ability for sectioned burst messages to be decompressed, reformed and parsed reflecting the recent Server changes. Compressed messages are now subdivided twice to minimise the number of characters sent to connected clients.
- Added the ability for NPCs to be spawned into World Sessions, allowing enemies to spawn when leaving the Settlement to start an Adventure.
- Updated the Movement Manager to handle pathing updates to ongoing movements and adjust correctly. Players can now click around to move without having to wait for their current movement to finish.
- Added the ability for movements to be queued. In the event that multiple movement messages are received for the same character, the Movement Manager is now capable of queueing movements chronologically to prevent character teleporting and contributing to smoother visuals for weaker connections.
- Replaced tile collision for Dungeon movement with the use of terrain coordinates. As we’ve made improvements to the way players interact with the environment ready for the World of Erendorn, the same principles have been applied to Dungeon terrain.
- Downloaded, built, and modified Unreal 5.0.2 ready for project conversion.
- Fixed an issue with movement that could crash the server.
- Fixed a bug that caused all temporary stat changes to be applied as permanent changes in combat.
- Removed Enemies from The Settlement (implemented for ease of testing).
- Implemented many aspects of the dungeon combat into the world sessions (not complete yet).
- Added helper functions when working with coordinates.
- Added an offset value to the Combat Area class used in combat.
- Improved the logging of combat updates to work with world combat.
- Session updates can now contain logs from multiple events. This will help improve server and client performance in sessions with high activity.
- Added log clearing to world sessions to avoid server memory issues from long-running sessions like settlements which we want to be able to run indefinitely.
- Enemy groups can now start combat with players if they get too close.
- Refactored the combat to fit better with both dungeon sessions and world sessions.
- Improved enemy world movement code.
- Applied updated versions for all project plugins.
- Updated references to deprecated plugin functions.
- Worked through project conversion compiler errors.
- Updated the latest project state from Source UE5.0 Early Access to Source UE5.0.2.
- Uploaded the new UE5 and converted the project to source control in chunks.
- Analysed project memory size and usage.
- Interviewed a new programmer.
- Created a test for interviewing the new programmer based on the day-to-day requirements of working on the Depths of Erendorn Client.
- Finished testing with Dave and Jack to ensure the engine and project run smoothly after team members switch over.
- Updated the documentation guide for the steps it takes to download and run the new project.
- Helped with any team members that had issues not covered in the guide.
- Updated the engine code to prevent Visual Studio compiling the project using 2019 tools.
- Finished up the transition from using collision tiles to using runtime mesh terrain for mouse interactions in Dungeons.
- Removed unused plugin classes and sequence assets.
To start off the month, the server-side team has been doing a miniature rework of how our ability effect blocks work. Before, active effects were triggered based on a number of predefined things, ‘Start of Turn’, ‘On Attack hit’, etc, but we’ve increasingly found that there are instances where we need a more robust system in place. As a result, any stat can become a Trigger subscription, meaning Active effects can listen to, and trigger off of one single stat changing its value at any point. Further work to help implement Zeal has been done, including the ability for effect blocks to manually alter the running order the effect blocks are in, as well as their error count. This gives us a much more robust way to create logic trees for abilities. Additionally, once Zeal was implemented into the game, the team had an inevitable laundry list of associated bugs with it. Just as a passive ability for the Knight, it was the longest list of Effect Blocks ever put onto an ability by a factor of 3, and there were many niches that had to be ironed out. Furthermore, the new Effect Block (Trigger Subscription) created to allow Zeal to work had a few bugs of its own to be fixed, and Aggressive AI was fixed to correctly choose the closest target by the distance they can walk, rather than by how the crow flies.
Coming to the end of the month the team set to complete two major tasks. Firstly, enemies can now spawn in with passives once again, allowing Rats to infect you with the disease debuff, Skeletons to get tougher, and Boars to charge at you when they’re close enough! A little bit of bug fixing was needed once the abilities were in, since some of them were written so long ago they were a little broken. Secondly, the Watertarg was updated with its new abilities and balance pass, as well as a few bug fixes, which were done to the revamped abilities. Additionally, some time was spent this week fixing how Active Effects are attached to abilities, this will allow us to tell the client whether some active effects should be visible, only visible on selecting the Entity they’re attached to, or completely hidden. This will help us from too many passives stacking and flooding the game with too much information. In the text below you can see a breakdown of other work completed by the server-side team.
- Enemy Groups now spawn in the world zones.
- Fixed Subzone creation in world sessions.
- Fixed XP counts not updating when a new enemy group spawns.
- Updated the server’s compression code to be a lot more efficient when sending large amounts of data.
- Enemies in the world sessions now move around close to where they spawned.
- Enemy Movements now cause updates to be sent to connected clients.
- Fixed many bugs which were crashing the server with the newly implemented features.
- Enemy groups and players joining mid combat nearly finished.
- Separated movement handling into two separate functions for movement in combat and movement in the world.
- Improved the progression data tracking and structure.
- Attacks, abilities and movement added to world session combat.
- World session combat handling.
- Entity / Combat Mapping.
- Enemy group and player entities initiating and joining an existing combat implemented server side.
- Combat ending and clean up processes implemented.
- Added the ability to get entities within the range of a location in the world.
- Refactored the progression data handling.
- Zones track groups now.
- Subzones now have an ‘index’ to make them easier to use.
- Added Events for combat join and escape.
- Entities now track the combat they are in.
- Added coordinate transformation functions to the combat area.
- Added Groups joining combat, mid combat.
- Added multiple ways to add entities to a combat.
- Added the ability to escape combat.
- Added the ability to get an ‘escape tile’ from any point in a combat.
- Escaping a combat now wipes your gained progression data from the combat.
- Tiles now track if a player can escape from them.
- Refactored the end of combat.
- Combat Immunity Added but not implemented yet.
- NPC groups now get placed out of combat after combat ends.
- Added loot drops to world combat.
- Adjusted loot distribution too to have a concept of vendor items.
- If an NPC group joins an existing combat then another loot roll is added giving the chance for multiple pieces of loot from world combat.
- If you escape combat then you become combat immune for 7 seconds, to avoid combat starting again instantly if you’re still in aggro range.
- NPC groups should go back to wandering around after combat ends with some NPCs remaining alive.
- New client source control repo fixed.
- Fixed an issue where dead entities could have been added to combats resulting in weird behaviour.
- Added a function to make getting random loot drops easier to maintain and use.
- Refactored Active Effects to reduce the size of message sent over the network.
- Watertarg Character Class Ability Redesign/Rebalance.
The sound team has worked on a wide variety of audio for the game over the last month. Starting with iterating on some of the audio created for the Watertarg, changing the audio clips to be much clearer and distinct. Using layers of water sound effects can give the unfortunate effect of sounding like white noise. In changing the audio the team has made the effect more defined and much better for the user.
The team also worked with many of the animations completed over the last month to bring new life to them. Starting with some movement cycles for the Draconian, the team worked on adding audio to the death and Dragon Breath animations. These animations and audio effects now give the viewer a good understanding of how the Draconian will present itself within the game. Additionally, the team also worked with the Frog enemy. To add audio created a couple of months ago to their animations, this involved clipping and editing the sounds to fit the video. Similar to the Draconian animations, these audio clips and cycles give the view a good impression of how the Frog enemy will hop around the world of Erendorn.
Getting to the latter part of the month, the sound design team tackled the visual effects audio for the Zentragal. The team has had their work cut out for them, as the visual effects team has been working at a lightning pace. All the effects worked on throughout the month are as follows; Pain Replenishment, Mana Thirst, Touch of the Damned, Shadow Blast, Quick Escape, Cocoon, Skitterer, Mirror Illusion, Time Displacement, Venomous Bite, Grappling Web, and Encapsulate. The team has collected and worked with primary audio sources to bring the abilities of the eight-legged illusionist to life. Creating a selection of metallic scraps and swooshes that have been mixed to create the mystical audio for the exploding and imploding nature of the effects. The team has also ensured that all visual effects audio is clear and distinct to make it easier to differentiate between abilities once used in gameplay.
All audio, with accompanying animations or visual effects, created by the team over the last month can be seen in the video below.
The environment team has spent the month working on some foliage for the world of Erendorn. Taking the time to craft trees using references from the real world. To create a tree for the digital world the team first needed the branch system, creating the tree from the ground up adding roots and notches to emphasise the natural structure of the great Oak.
Once the branches were finished the team turned their attention to the leaves that would populate them. Creating oak leaves in clusters would ensure the spread of them throughout the branches followed nature as closely as possible. All the leaves created within these clusters would vary in size which gives the illusion that the tree is constantly growing. Once these leaves were complete they were placed on the branches to reach a completed tree which was ready for the game engine. Examples of each of these stages of design can be seen in the images below.
It has been quite the monster mash for the animators this month, working with a variety of enemies that will inhabit the world of Erendorn. Starting with updating the Stone Frog, which needed updating due to a change in the rig. The team cleaned all the animations to get the asset ready for the game engine. This involved quick updates to skin weights and joints so the additional rocks on the back of the model move as expected. Once this was completed, the model was imported into the game engine ready for gameplay. The updated model with animation can be seen below.
After updating the Frog enemy model, the team turned to a more complex creature. The slime enemy required a bespoke rig to give our animators the freedom to move the tentacles as they needed. Creating a movement, death, attack and idle cycles with the gelatinous consistency that, a creature of this substance would be expected to have. With these animations completed, this model was also added to the game engine ready for gameplay. Examples of the slime enemy animations can be seen below.
The Gorilla enemy also saw some attention from the animation team over the past month. The team took the model from the very beginning of the pipeline, by fitting a skeleton to the model and also adding skin weighting. To the final stages of the pipeline by animating a roar, attack and death cycles. Through these animations, the team has portrayed the strength and ferocity of the enemy. Examples of these animations can be seen below.
Finally, the Mantisar got a skeleton and a quick idle animation. Working on this asset meant another bespoke rig and skeleton, due to the number of legs. Taking reference from the Praying Mantis the team has created an idle animation that gives the oversized insect an aura of skittishness. The team will continue to work on animations over the coming weeks. Examples of the idle animation for the Mantisar can be seen below.
At the beginning of the month, the VFX team finished off the ability set for the Watertarg. The abilities created are Ancient Timeshift, Armoured Carapace, Hydro Transference, and Orbiting Arcane Sword. All of which was the more complex of the Watertarg’s abilities. The team would later iterate on some of the visual effects after some feedback was given. Examples of the abilities can be seen below.
The majority of the month would be consumed by creating the VFX for the Zentragals abilities. Using the old Zentragal model for scale. The abilities created over the last month are as follows; Pain Replenishment, Mana Thirst, Touch of the Damned, Shadow Blast, Quick Escape, Cocoon, Skitterer, Mirror Illusion, Time Displacement, Venomous Bite, Soul Twist, Grappling Web and Encapsulate. These abilities convey the ethereal and mysterious nature that surrounds the Zentragal race, using darker colours such as reds, blacks, purples and greens. As these abilities were completed through this month, they have all been imported to the game engine ready for gameplay. All these abilities can be seen in the video below.
That’s it for this week’s devlog, but have you seen our monthly roundup of May yet?!