Monthly Devlog | April 2023 | No. 51
The month of April was productive for the Depths of Erendorn development team, with progress made in various areas of the game. The 3D modelling team focused on sculpting and refining a new set of armour, while the Set Piece Design team improved assets in the game for a more immersive gameplay experience. The wizards of coding worked on improving gameplay mechanics and fixing bugs reported throughout company playtests, while the sound team focused on implementing sound effects. The environment team have been working on the ruination of the updated castles walls, and the animation team worked on improving character movements. The visual effects team refined abilities and textures for optimal visual impact. Overall, the team made significant progress in various areas, contributing to a more polished and engaging gameplay experience. 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!
The 3D modelling team of Depths of Erendorn has had a productive month, with significant progress made on the sculpting and retopology of a new set of armour. Throughout April, the team focused on sculpting and refining the various pieces of the armour, taking extra care to add intricate details to make it stand out in-game. After finalising the sculpting phase, the team moved on to the retopology process, creating a lower-poly model suitable for game engine integration while maintaining the visual fidelity of the original. They are taking extra care throughout the process due to the intricate nature of this piece, and once the lower poly model is complete, the team will move on to texturing. With the progress made throughout the month, the 3D modelling team is one step closer to completing this crucial asset for the game. Examples of the work completed on the new set of armour can be seen in the images provided.
Set Piece Design
Throughout April, the Set Piece Design team for Depths of Erendorn focused on improving assets in the game to enhance the overall visual appeal and gameplay experience. One of the main focuses was on the playtest, which provided valuable insights into how assets looked in actual gameplay. This helped the team identify the need for more material fixes, particularly in the specular values of some bridge assets, as well as improving asset collisions. In addition, the team desaturated several clutter assets to create resting areas for the player’s eyes, replaced rug meshes with planes for unique rug textures, and addressed specularity issues to make assets look more realistic and visually pleasing. The team’s updates contributed to creating a more immersive and visually appealing game environment for players to enjoy. Examples of the work completed by the team can be seen in the images below.
Throughout the month of April, the client side team has been hard at work on a variety of tasks to improve the game’s functionality and overall player experience. The team has focused on designing and implementing Ability Error Codes, updating the core functions of Dialogue, and fixing issues highlighted in team playtests. They have also made improvements to the Turn Timer, Interactables, and Ability and Active Effect Template Systems. Specifically, the team has worked on bugfixing to prevent build crashes, updating targeting upgrades for ability templates, and ensuring that abilities and effects trigger their Animations/VFX/SFX correctly. Overall, the client side team has made significant progress in addressing issues and improving gameplay mechanics. Examples of the team’s work completed over the month can be seen in the bullet points below.
- Ability Error Code parsing – In order to provide better development and player feedback the new error codes for abilities on the Server are now handled in the Client, allowing us to show error code messages or their player facing equivalents during combat.
- Ability Cost Error parsing – If a player attempts to cast an ability and it fails due to a lack of a certain player resource; Mana/Energy/other secondary resources, the Client now understands which ability failed, which stat was lacking by how much and can now use that to communicate visually to the players.
- Outlines for Interactables – Interactables now make use of the same outlines used when hovering players, giving them a white outline to let players know they can interact. Outlines are only shown when interactables are interactable (outside of combat).
- Outline parameters in Interactables – Interactable Blueprint classes now have the ability to define per-object which meshes and components are to be used when highlighted.
- Fixed selection highlighting in the vendor window.
- Finished prototyping loading screen with new assets, needs some proper testing and connecting to the right events but bug fixing has taken priority.
- Started on addressing bugs in the adventure progress window that assign item drops to the wrong players and hide players from progress if they weren’t present for the latest event.
- Updated turn time display to be accurate to server time across multiple combats when updating the Turn Display.
- Added settings for and updated the function of turn timer warnings 30 seconds before a player turn ends automatically.
- Updated how players joining combat’s turn status is handled when joining late on either a player or enemy turn.
- Updated how turn status is checked across the game to reflect the new changes.
- Fixed a bug where the End Turn button wouldn’t appear if you ended turn before your last Combat concluded.
- Fixed a bug where killing an entity that has a death animation but no death animation timeline event prevented them from dying being removed from the Session.
- Created a bug spreadsheet ready for the team wide playtest.
- Updated how entities are removed by updating the various causes of removal to use the same functions which will make it more maintainable and robust, some aspects of this were leading to fatal crashes.
- Updated Session Submanager ‘clear’ functions to prevent calls to any entity that may be in the process of being removed.
- Updated the Dialogue Widget’s layout.
- Updated the Dialogue Manager and its links to the Dialogue Widget.
- Prevented players from leaving dialogue that you are intended to be locked into until a Dialogue End log is received.
- Updated how Dialogue Leave logs are dealt with.
- Prevented Stunned entities being unable to trigger death animations.
- Fixed movement manager code after making breaking changes to the way movements are handled on the server.
- Fixed duplicate data shown when receiving items outside of combat.
- Fixed transition to settlement after opening a chest not showing any rewards.
- Fixed online party members’ icons/names not displaying when returning to the settlement.
- Fixed refreshing data when moving from settlement to adventure after previously adventuring in the same session.
- Added a conditional check when exiting a dungeon mid adventure to prevent loss of progress when returning to adventure/settlement.
- Fixed a bug where stunned characters would fail to die correctly.
- Removed duplicated ability information from descriptions when it appears elsewhere in tooltips.
- Added an option ability templates to ‘Trigger Stepper on Bookend’, meaning Custom Steppers (Animations/VFX/SFX objects that get inserted into the execution order) no longer require the presence of other specific logs to trigger. As an example, previously a damage dealing ability would check for damage being dealt before inserting the cast animation, leading to missing animations if the damage was blocked or otherwise didn’t appear. Now with ‘Bookending’ we have the option to force Custom Steps at the front or back of the order.
- Updated Ability Templates across all NPC/Generic/Druid/Dwarf/Parakaw abilities to make use of Bookend wherever relevant.
- Added three new options for how Ability Templates apply their Custom Stepper targets:
– Tile Under Caster – Use the tile beneath the caster.
– Tile Under Affected Entity – Use the tile beneath one of the ability’s initial Entity targets.
– Entity on Affected Tile – Use the Entity standing on of one of the ability’s initial Tile targets.
- Identified and fixed a number of issues across NPC/Generic/Druid/Dwarf/Parakaw Ability Templates and updated targets for abilities with VFX that are tile aligned to the caster and ability targets.
- Altered the movement pip display to remove the compression caused when a character gains extra movement. Now a numerical display is used with a single pip to indicate if the player has any remaining movement.
- Potential fix to progression data loss for the client when leaving a dungeon, but there’s still issues with clients correctly receiving updates from dungeons. This is currently being tested.
- Fix for data loss when ending an adventure after visiting a dungeon, currently only works with gains from outside dungeons due to the above issue.
- Minor tweaks to the movement counter to fix some display issues with converting to Rich Text formatting.
- Finalised fixes for the loss of progression data caused by session transitions. Dungeon progression is now correctly appended to adventure data when exiting an overworld dungeon.
- Updated Zone nav data to reflect recent map updates.
- Implemented load out display to the character creation screen.
- Applied ‘Trigger Stepper on Bookend’ to Knight/Twilight Elf/Watertarg/Zentragal Class Ability Templates.
- Added the capability of using Niagara in addition to Cascade Particle Systems in both Ability and Active Effect Templates. Prior to this week we have been using exclusively Cascade VFX. The following Template applications now have optional Niagara capabilities:
– Simple VFX Steppers (those most often used in ability templates).
– Projectile Steppers can take either kind or a combination of both for Launch, Projectile and Impact VFX slots.
– Animation Steppers that can socket VFX emitters such as weapon trails.
Throughout the month of April, the server side team has been busy with various tasks aimed at improving the game experience and fixing bugs. The team worked on implementing a new Effect Block Error system that now returns a reason for every possible ability failure, including the ability to send values back such as how much mana was needed vs how much the player has. They also spent time fixing various bugs, newly found server crashes, and upgrading the server restart/hosting configuration to improve it. The team also prepared the server codebase to work with a good cache service and implemented various refactors that had been waiting for some time. Another major focus was on polishing up dungeons and bringing them up to the same level as open-world adventures.
The team also worked on more advanced ways of handling disconnected players in dungeons, allowing them to automatically vote on a default option on a dungeon’s reroll vote and placing them into the dungeon on a valid spawn tile, while still excluding them from any potential loot or xp rewards the still active players may be earning. Additionally, the team worked on new code for an upcoming big refactor, with changes made to progression data and adventure structs to provide a comprehensive breakdown of what was gained from where.
In terms of technical improvements, the team used a dedicated logging server to aggregate server logs and provide features which react to these logs, resulting in a new powerful tool. The servers now auto-restart on a server crash, meaning lower downtimes and server recovery if it does crash. Code preparation for using a cache server has also been written ready for when it will be implemented.
Overall, the server side team’s work throughout April focused on improving the game experience, fixing bugs, and preparing for upcoming changes and improvements. Examples of which can be seen below.
- Enabled tile highlights under occupied tiles so the tiles stay visible when occupied.
- Updated texture generator.
- Fixed entity targeting logs.
- Fixed enemy targeting when players join a combat mid-combat.
- Fixed a config error on one of our sets of servers causing it to connect to the wrong set of servers.
- Party’s will now disband once everyone in them disconnects.
- Refactored party leaving code.
- Fixed deadlock stopping quick session closing.
- Refactored AdventureEnd handling.
- Fixed a bug in detecting if everyone in a party is disconnected.
- Added Chat messages for any time loot is distributed mostly for debugging.
- Fixed server crash when notifying a server about an incoming player if they didn’t have a party.
- Fixed server-to-server reconnect code.
- Updated equip/unequip to fix a server crash.
- Fixed server crash on removing players from a party.
- Added some fault tolerance and error correction on entities joining combat.
- Fixed a server crash on a 0 length movement generated by the servers pathfinder.
- Fixed a server crash caused by pinging when not in a party.
- Added Server start time to server info.
- Created first implementation of server cleanup code on successful reconnection between servers.
- Added slack notification on server crash.
- Fixed broken effect blocks on some of the old abilities in the game.
- Altered log data sent to the client when the turn changes, including what unit of time turn length is measured in.
- Clients not being able to go on a second adventure in some circumstances, depending on how their previous adventure ended.
- Simultaneous combat ambushes not causing enemies to phase into a single tile at the end of their movement.
- Better shut down + disconnect code for a dungeon if people fail to connect to it.
- Dialogues will now no longer refuse to close when interacted with in a certain way, blocking anyone ever being able to start a new dialogue with the same person again.
- Active Effects are now properly removed when entering a dungeon from the open world, to prevent the dungeon server being confused about the existence of an Active Effect it doesn’t know about. In the future, it is likely we will create a system to allow those to be passed over fully.
- Enemies now have a small delay after attacking and using abilities, this is to allow them to finish off their animations on the client before they complete their next action, and will be dynamically generated in a future iteration.
- The Dwarf Heirloom and Ranger’s ring event have had their activity log triggers fixed to actually allow for the quest to be completed.
- Empowered Obscurity (a Zentragal character class ability) was the host of a very tricky bug to track down that had further reaching effects than we realised, it and its cause (permanent stat changes that temporarily affect the correlating max stat causing the max stat to never decrease) has been fixed.
- Adjusted some logging data sent to the client in related to the turn timer.
- Fixed a server clean up function to fix recovery from a server crash.
- Fixed Item distribution from Loot/Rewards.
- Fixed movement bugs and server crashes relating to interrupting a movement mid-step on the clients first step.
- Refactored NavEdit generation from world events to improve adventure generation times.
- Fixed time based party auto-disband code.
- Added coordinate distance helper function.
- General code maintenance and clean-up of some soon to be deprecated functions.
- Fixed Dungeons not shutting down correctly in niche scenarios such as partially disconnected party members.
- Fixed Dungeons removing themselves once all players -have- completed/failed/disconnected from a dungeon to save memory.
- Effect block error returns were not working as intended on any effect block with an error count higher than 1, this was fixed to work properly.
- Fixing Line of sight measuring from entity to tile not returning the correct number of errors on pass/fail.
- Fixed Dwarven Heirloom quest not correctly completing upon hand in of the heirloom.
- Fixed Zeal not working as intended since the new effect block error system was implemented.
- Fixed interactables in the open world sending two messages instead of one when they’re interacted with.
- Fixed a crash caused by progression data being nil.
- Fixed a crash caused by trying to equip/unequip gear while adventuring.
- Fixed an instance where a party would be stopped from starting adventures indefinitely.
- Fixed Item distribution code to correctly round-robin.
- Started work on the base Cache package.
- Added Cache services.
- Setup and configured docker environment for the Cache server.
- Added cluster wide unique ID generation code to use with various game objects.
- Added a ‘replication layer’ for updating objects as they change in the cache.
- Added the ability for a server to reserve a block of integers for it to issue unique IDs.
- Added fallback method for unique ID generation.
- Implemented new ID generation code for; Entities, Adventures, Parties, Active Effects, Ability Instances, Game Sessions, World Events, Combats, and Dungeons.
- Progression data merging and helper functions created.
- New Progression data structs implemented.
- Added comprehensive function to split out specific entities from progression data.
- Adjusted Adventure storage.
- Added Cache functions to subscribe and unsubscribe from specific object updates without having to request the object or store the object.
- Refactored some Cache functions to be more maintainable.
- Updated Party Disbanding code.
- Caravan chests in the wrecked caravan open world event no longer lock themselves out of being interactable after the end of any combat nearby them.
- Loot awarding at end of dungeon was updated to send a more detailed message to the client to help the game display who has earned what.
Throughout April, the sound team of Depths of Erendorn made significant progress in implementing sound effects for the game. They began with the Generic Pings, ensuring that they are distinct from one another, and fixed the volume issue with Lionman vocal audio. After a recent playthrough, the team went back to address any audio bugs and made general mixing notes to improve the overall sound quality of the game. The team focused on polishing and refining the audio effects of the Generic and Level 1 Skills, ensuring consistent levels and quality, and preparing them for the final mixing stage. While there may not be many specific updates to report, the team’s attention to detail and commitment to delivering high-quality audio experiences contribute to creating an immersive and engaging gameplay environment. Examples of the sound design team’s progress can be seen in videos and audio clips shared throughout the month.
Throughout the month of April, the environment team has been testing and refining different techniques for real geometry displacement, destruction effects, and texture mapping on the castle ruins. The team has also been experimenting with modular ruins kits, testing the seamless fit between components, and working on visually appealing materials. The team would implement the pre-ruined walls into the engine, giving us an indication of the scale they are working at. Then moving on to dissecting the walls to their aged and decrepit form. Examples of their progress, including the updated castle ruins and modular ruins kit, can be seen in the pictures below.
Throughout the month of April, the animation team has been actively working on improving character animations and adding necessary movement cycles for various creatures. They focused on group one creatures such as dogs and bears, adding wing animations and creating animation blueprints and blends for hyenas and bears. Stun animations were also created and implemented for group one and group three creatures, which include spiders and scorpions. The team has been reviewing and updating character entity blueprints for texture variation and using poly boxes for characters to improve locomotion animations. Additionally, the team has started planning and implementing animation changes to enhance the overall gameplay experience, incorporating feedback from gameplay tests. Examples of the newly created animations and updates can be seen below.
The visual effects team has been hard at work during the month of April, focusing on improving abilities and refining textures based on feedback from playtests. They began the month by completing behind-the-scenes work and shifted their focus to abilities that were not functioning as expected or were not visually appealing. They have already begun updating fireball and nature bolt, with plans to convert them to Niagara systems for more advanced visual effects. In addition to these updates, the team has been working on refining textures for optimal visual impact, and has created new VFX for thunderstorm and ice storm. Overall, the team’s efforts are aimed at creating a polished and exciting playtest build for players. Examples of the newly created VFX nodes can be seen below.
That’s it for this week’s devlog, but have you seen our monthly roundup of March yet?!