Monthly Devlog | February 2023 | No. 49
The second month of the year has been a productive one for the team. The new Human Knight’s armour sculpt has been finalised and the retopology process is well underway. During this time, the Wizards of coding have been improving performance within the client and settling some crashes occurring with the open-world lobby. Also, the sound team has worked on alternate cave audio and idle sounds for several enemies within Erendorn. An update for the castle ruins gets started by the environment team. Additionally, a variety of looting animations are created for bi-pedal characters and the Zentragal. Finally, the VFX team has worked on the aura for the Twilight Elf Assassin! As always, join us on Facebook, Twitter, Instagram, and Reddit for daily updates on Depths of Erendorn. Alternatively, join our Discord for all the latest! – now let’s get into it!
February has been an armour-centric month for the 3D modelling team, who have been going through the motions for the new Human Knight protective gear. Throughout the month we have seen the armour begin to take shape, with new plates and opulent details being added all over. The biggest changes would come to the shoulder details and helmet, both of which would go on to sport some avian characteristics. The added wings to both these areas build up the silhouette of the Human Knight, giving the character a bold and imposing stature. Additionally, the team would start the work on retopologising the armour. A process we have seen before, the team make a start on creating the lower poly model that all the additional detail will be baked onto. The team would nearly complete the process throughout the month, once they have finalised the lower poly model, they can then move on to giving a splash of colours to the new protective gear. Examples of the progress made throughout the month, along with the retopology process, can be seen below.
The start of the month was focused on bugs relating to joining Dungeons, reroll ballots and implementing new methods for dealing with connection speed differences in the Client. Also, the team worked on sound implementation and refactoring the visual component of some core gameplay milestones. Additionally, work was completed on improving performance during adventures by adding the concept of ‘distance relevancy’ to Overhead Health Bars as well as working through several bugs that cause problems for World Combat. Examples of more work completed by the client-side team can be seen below. Finally, the team started exterminating some World Combat-breaking bugs and fine-tuning how they are concluded. Improvements have been made to Projectile Steppers to ensure they still function when provided with invalid information and several UI audio triggers have been implemented. Additional work from the client-side team completed throughout the month can be seen below.
- Updated how sounds are triggered on the Audio Manager to keep gameplay sounds using their intended volume settings.
- Interactable sounds now play 3D sounds at their location and adhere to the player’s SFX volume setting.
- Added Turn Start and Turn Ended sound triggers for the currently focused combat.
- Added Entering Combat, Victory and Defeat sound triggers.
- Added an animated screen message for Entering Combat, Victory and Defeat.
- Cleaned up and added settings for determining when to play screen messages trigger sounds based on combat focus.
- Updated how the reroll ballot and room detail panel are dealt with during Dungeon setup. Ballots now correctly show votes and outcomes even if they occurred before the player was connected.
- Added the ability for Dungeons to step through the actions taken before a player joins, ensuring the game’s state is identical for all connected.
- Players now automatically re-join their adventures if disconnected.
- Added Loot and Eat animation logic to character Animation Blueprints.
- Fixed party member’s icons greying out when a user disconnects.
- Adventure summary window now correctly identifies players and displays their gains. Further testing is needed for groups and large loot pools but for solo adventures, it is now working.
- Some further fixes to the character select and creation screens to remove some visual bugs and remove renders for deleted characters.
- Added sound cues into the inventory screen for equipping items of different types and buying/selling interactions in the vendor window.
- Fixed an issue where items sold or deleted would return to the player’s inventory until logging in again.
- Fixed several visual bugs in the vendor to correctly update the player’s inventory when buying and selling new items.
- Fixed being unable to sell items after making a transaction.
- Corrected the transaction price display to show the correct amount when selling.
- Added a method for hiding Overhead Health Bars when outside of a relevant distance to the camera.
- Updated UI hiding toggle to work correctly with distance relevancy.
- Added developer console command for changing distance relevance range.
- Updated Scorpion Sting, Unholy Bolt and Quickening Poison ability templates.
- Narrowed down the source of the World Combat soft-lock bug.
- Fixed dungeon entrance positioning on the new dynamic dungeon entrances.
- Reworked client movement implementation.
- Corrected issues with interrupted movement prediction logic.
- Fixed stuttering movement steps.
- Improved speed of queued movement removal.
- Added a transaction message to the vendor screen to inform players when interactions are disabled whilst the transaction is processed by the server.
- Fixed a series of functions that would cause any changes to the player’s inventory to appear to revert and repeat themselves multiple times.
- Added a timer to the vendors to notify players of when their stock refreshes.
- Started implementing real-time refresh on the vendors.
- Updated World Combat clearing to wait for ‘Shelved Steps’ to conclude before declaring victory or defeat. Shelved Steps are actions that get queued behind intentional time delays such as waiting for a projectile to hit before displaying the damage dealt by its impact.
- Added override for Shelved Steps that are not concluded and not currently resolving to prevent Combat from getting locked as a result of Ability Templates containing errors. Ability Templates are the objects we use to define what animations/VFX/SFX are applied to the execution of individual abilities in Combat.
- Added an override for the trajectory animation portion of Projectile Steppers to allow them to continue to run their impact consequences with incorrect target information if using a broken Ability Template.
- Added UI SFX triggers and applied Cues for;
– Entering Combat.
– Combat Victory.
– Combat Defeat.
– Player Turn Start.
– Player Turn End.
- Added a placeholder animation for Entering Combat/Victory/Defeat.
- Updated how Interactables update their interactivity (for lack of a better pun) when combats conclude.
- Fixed Entity position updates at the end of movements.
- Fixed an issue causing the player to move back to a previous location before moving along the path they requested.
- Debugged movement path generation.
- Created unit tests to validate movement bitwise operations.
- Tested movement and path generation.
- Implemented new UI elements for movement menu buttons, login screen, inventory, vendor and dialogue windows.
- Reworked some of the associated systems to better display these updates.
- Further fixes to mid-transaction downtime in vendors.
- Fixed an issue with vendor stock refreshes attempting to contact the server when the window isn’t open, leading to a server crash.
- Further work on getting the timed refreshes working correctly; some visual bugs are still present.
The server team would start the month, working on mid-combat spawning in the open world. While this works already in dungeons, the way combat works in open worlds has required a lot of combing through and smoothing out existing code. Many bugfixes were done to allow Spiderlings and the new Graveyard Zombie event to spawn in the open world, and for entities spawned to persist after the combat and become part of the regular adventure server. Also, event generation in some of the more cramped spaces in open worlds has been fixed to fit correctly without spawning inside each other (or even inside other events!) or crashing the server.
Additionally, the server team has been busy on two things: Open world Dungeon lobbies, which were causing all sorts of interesting crashes, from multiple people spamming the ‘start dungeon’ button causing issues, to entering a dungeon location activating every single subzone at once in the open world, triggering every single event and spawning hundreds of entities!
Once Dungeon lobbies were shored up and working as intended, work was then done finishing up the small refactor of Dungeon completion code. Whether you die or succeed in completing the dungeon, messages have to be sent to the different servers that are relevant to that session so they can be closed/updated or told about your future arrival.
Finally, casting abilities will now rotate the character casting more accurately, so people casting a three-target ability don’t end up in weird situations where their average facing is miles off a sensible one. Additional work from the server-side team can be seen below.
- Open world combats defaulting to 0,0, off in the middle of the ocean, when a tile can’t be found.
- Fixing crashes caused by combats and events attempting to spawn in very cramped areas with not enough room to allow them.
- Fixing Pathfinding failing in certain circumstances with tiles that were occupied at one point, but aren’t any more.
- Abilities and ability charges are correctly reset when ending an adventure, ready for the next one.
- Curious saplings and mana drain will no longer crash the server if the afflicted enemy dies while the abilities’ effects are triggering, and correctly reward the caster with health/mana as appropriate.
- Worked on implementing the new movement code.
- Improved feedback to the client on error responses to the client during character creation.
- Fixed a crash with 1 length movement path.
- Started a new movement handling code in the client.
- Adjusted the log parsing for movements to reflect the new changes.
- Fixed crashes relating to ending and starting adventures.
- Debugged mutex locking issues.
- Moved the existing dev server code to the ‘stable’ branch to allow the current build to still be used as we develop the next build.
- Improved logging on movement commands and ticking.
- Added some logs to the creation of adventures to improve debugging.
- Fixed an issue with paths including the first step.
- Fixed many issues in the new movement code.
- Improved client handling of the new movement.
- Fixed vector calculations in various places.
- Added a state change log when the berry bush event is activated.
- Implemented and fixed movement interrupting allowing you to change path mid-movement when in the open.
- Entity spawning locations in Zones has been optimised better to stop them from spawning in weird, unreachable spots.
- Charged Spiderling was causing a crash through its AI targeting. The initial issue was it was given the Standard AI type as opposed to aggressive, however, this just revealed Standard AI was the root cause of the crash, causing this to be fixed too.
- Vendors have been updated with what they communicate to the client to allow inventory refreshes mid-dialogue with them
- Generated Dungeon Locations were not correctly distancing themselves from each other and events, and were not being counted correctly, causing dozens of dungeon entrances per zone.
- Fixed a bug in joining a Dungeon Entrances lobby that caused the player to activate the entire adventure, spawning hundreds of NPCs and simultaneously putting the player in every single dungeon lobby at once.
- Increased the Tick rate of the game session command processing.
- Fixed various issues with the new movement implementation.
- Implemented mid-movement interruptions.
- Fixed entity location calculations.
- Fixed the teleport glitch with the new movement.
- Fixed several entity position issues whilst moving.
- Improved interrupted movement handling.
- Improved dungeon lobby handling.
- Reduced logging of movements after fixing issues.
- Refactored end of dungeon handling.
- Refactored the handling of death in a dungeon.
- Discovered and fixed an issue with bitwise operations within the movement code.
- Fixed ‘No valid steps’ issues with path calculation.
- Created unit tests for movement bit testing.
The sound team has worked on several improvements and new sounds for Erendorn throughout the month, starting with some alternative cave ambience. Due to some complications within the engine with the dynamic soundscape, the team has created some less complex audio that will be layered into the cave’s ambience. Using reverb and echoes the team has added some smaller sounds such as water dripping and trickling, all of which added to the emptiness of the expansive caves of Erendorn. Once these pieces of audio were completed, the team implemented them in to the engine, ready for gameplay. Examples of the new cave ambience in action can be viewed in the video below.
Moving on from the cave audio, the team would work on some sounds to indicate when the players have drawn their weapons. Due to the range of weapons that the players can use, the team has created a variety of sounds to show this. Metal scrapes have been used in a couple of variations to indicate the length of the blade, with shorter sounds being used when a dagger is pulled. And a deeper and longer piece of audio is applied when a longer blade is used. The sound for the short staff has also been created, in contrast to the blades, the audio is wooden to correlate with the short staff’s material. Additionally, the team would also work on some idle sounds for the enemies of Erendorn. Smaller sounds such as creatures breathing as it stands still can go a long way to bring that enemy to life. The team would create such audio for the Vampire Bat, Black Bear, Heavy Husk Beetle, Jaguar, and Boar. All these pieces of audio would be added to the game, ready for adventurers to stumble upon. Finally, the team would work on some mysterious audio that will be combined with the Twilight Elf Assassin’s aura visual effects. These pieces of audio follow similar themes to effects that have been made previously for the Elf character. Using wisps and a similar empty effect to the cave ambience, the team has built up a soundscape that will suit the Assassin as they traverse the shadows towards their enemies. Examples of all these pieces of audio can be viewed in the videos below.
The environment team have been focusing on an update for the castle ruins throughout the month. With the aim to add more intricate detail and a new style to the castle ruins, the team started to block out a modular build that takes influence from gothic architecture. In direct contrast to the castle ruins that have already been placed within the initial area of Erendorn, this structure consists of a lot more curved edges within its pillars and archways. Further through the month, the team would also add a second floor to the structure and improve the borders between each modular piece so they can join together seamlessly. The team would spend the entire month working on the intricacies that form within the modular kit of these ruins. Once the modular kit has been finished, the team will start to age the walls to give them the decrepit feel of a building lost to time. Examples of the progress made on the updated ruins can be seen below.
The animation team would work on several gameplay animations throughout the month, starting with a looting movement cycle for bipedal characters and the Zentragal. These cycles have a couple of variants that will be utilised depending on where the item the character is picking up. The team would also create an animations blueprint within Unreal that will blend these animations, giving a full range of movement to collect loot. The team would also work these animations to the Zentragal character, which would need some alterations to the movement due to its additional legs. The team would be able to re-use some of the animations from the hips up saving themselves some time throughout this process. Examples of the animations for looting can be seen below.
Finally, the animation team would work on some concepts for spellcasting characters. Two different animations have been created to show the ability or spells being cast. A forehand and a backhand movement have been applied to portray the character making a sweeping gesture as the ability is cast. Subtle differences have been made between the two movements that could be used to portray different spells. The backhand motion the character applies appears to use more force than its counterpart. This could be used to differentiate between different spells or abilities; either a difference in power or if the used cast is a support spell or an offensive one. These animations could also be applied for a basic melee attack that the character could apply if they are within close quarters of their enemy. Examples of these animations can be seen below.
The VFX team would start their second month of the year continuing the work on the world border effect. With the main bulk of the mythical barrier complete, the team would move on to add a quality-of-life feature. Some new visual feedback has been implemented to the border as a player approaches it. As the player gets closer a new white circle will grow from their nearest point of contact, moving with them showing that their path is blocked no matter their approach. The team would implement this new feature to this effect within the engine then move on to an aura for the Twilight Elf Assassin. Examples of the new quality of life feature can be seen below.
The aura of the Twilight Elf Assassin started life as a visual effect that would surround the character from the ground up. The team would use the colours we have come to associate with the stealthy Elf, mainly a spectrum of purples. Within these initial effects, the team also added the shadow effect that has been seen in previous Twilight Elf abilities. After some feedback, the team would work to refine the visuals of this aura. Instead of the effect coming from the ground, the team would work on adding the effect to the entire model. Making a cascading effect that is significantly more subtle and a much better fit for the Elf Assassin. Examples of the initial aura visual effects and their more refined versions can be seen below.
That’s it for this week’s devlog, but have you seen our monthly roundup of January yet?!