It has been an incredibly busy month for our developers. The 3D modelling team has been optimising hairstyles and blocking out some new armour. During this time, the set piece design team focused on in-game event assets. The wizards of coding have been optimising the gameplay loop and doing some major bug fixing, whilst the audio team have been in the engine working on sound zones. Additionally, the animation team has been refining movement cycles for the Zentragal and the Human Knight. Finally, the environment team have been set dressing the initial settlement and the VFX team has been starting work on the next set of character abilities. 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!
3D Modelling
To start the month, the team worked on finalising the first hairstyle for the characters of Erendorn. The team has created this hairstyle by using the layering process we saw last month. Using this process the team added the fringe to the hairstyle while still keeping the realistic theme. The team would move on to optimising this process and the hair style so it can be rendered with ease during gameplay. This hairstyle, once optimised, has been added to the engine, ready for gameplay. After this, the team would take the time to experiment with a shorter hairstyle before moving on to blocking out something new. Examples of the new hairstyles can be below.
The next asset the team would move on to would be some armour for the Human Knight. Taking inspiration from armour from history, the team have added multiple layers that will help support the weight of the armour. This padding could also be used as thermal padding to keep the Knight protected from the elements. A coif has also been applied to the head of the model so a helmet can be added later down the line, whilst also being supported in a similar way to the chest piece. The team will continue to add detail and structure to the armour through the coming weeks. An example of the initial block out can be seen below.
Set Piece Design
The set piece design team started the month continuing the city assets, focusing on a selection of furniture adorned with an avian deity. Similar to other pieces of furniture created for this pack, these assets have been created using intricate details that only the more wealthy would be able to afford. Pieces such as these could find themselves within the churches dedicated to the avian deity or within the luxury houses of those who are devoted. The team has used a new rendering technique to show off all the detail within these props. To show off the detail once in the engine, the team will either back the detail onto a lower-poly model or utilise Nanite within the Unreal Engine. Examples of the furniture can be seen below.
The team would move on to create assets for world events that will be used throughout Erendorn. Starting with some vendors, the team has created a dwarven weapon smith, a human armour smith, an ogre black market trader, a bandit camp, and an abandoned wagon. All these assets will be used within the random events that players can come across as they traverse the landscape of Erendorn and its dungeons. Players will be able to interact with each of these events as they pop up, which can add to their adventure in several ways. All these assets have been added to the engine ready to be implemented into world events. Examples of these can be seen below.
Along with the assets created for the vendors and bandits, the team has created visual effects that will be added to some alternate world event assets. Including the corrupted brazier that we have seen in past months, the team has completed work on a shrine that will be used to aid players in a variety of ways in combat as well as a dwarf's heirloom. All three of these will be added to the engine and applied to the random events that will spawn around Erendorn. Each of these assets has customisable VFX that can be changed depending on the event they have been spawned for. Giving a wide variety of applications that these assets could be used for. Examples of the completed assets with their visual effects can be seen below.
Programming
Client
To start the month, the team has been finishing integrating World Dungeon Lobbies, allowing players to enter Dungeons from Dungeon Entrances while exploring the World and ensuring the Activity Controller and Widget are both functional during Adventures. Additionally, the month would see big improvements to movement input, animation and function, as well as a big reduction in the number of logs generated when running Step classes. Finally, the client-side team would work on some much-needed bug fixes and optimisation. Additional work completed by the client-side team can be seen below.
- Implemented the new Session Change method for loading and unloading Sessions and their Submanagers between World and Dungeon Sessions.
- Updated the old Lobby Browser to use the same Session Change method. Players won't be joining lobbies via the Lobby Browser, instead encountering Dungeons out in the World, but maintaining its function means we'll still be able to jump right in and iterate on Dungeon gameplay and function.
- Updated Session Change functions to work contextually with the cause of the change, we can now handle; Adventure starting/ending, Dungeon entering/exiting and Player Death as different reasons for switching Session.
- Finished implementing Activity Book Widgets to show Activity Entries and their Objectives and update according to the state of the Activity.
- Updated Camera Blueprint to follow terrain height in World Sessions and added the option to toggle between that and the old method.
- Attempted to improve engine performance by limiting the looping of Construction Scripts for several assets.
- Fixed some buttons displaying the wrong graphics on the login screen
- Fixed the layout of Inventory, Inspector, Dialogue and Vendor windows to better scale and align
- Adjusted player inventory display to more dynamically adapt to inventory size and remove overflow and premature truncations in the vendor window
- Fixed NavEdit creation issues.
- Exported NavEdits for all current interactables.
- Implemented Time of day and Weather.
- Fixed a longstanding bug causing various issues where two directions were swapped.
- Worked through the Interactable and Activity logic to ensure Entries and Objectives are correctly updating based on interactions.
- Added fade and remove logic and animation for completed Activity Book Entries.
- Updated client limit on message length to allow larger movement commands in Adventures.
- Updated how Room Ceilings, Props and Light Sources are unloaded when moving between or rerolling Dungeon Rooms.
- Implemented asynchronous unloading for Set Piece sublevels, Room loading no longer requires the previous Room's SetPiece to be unloaded to continue, speeding up room loading times.
- Implemented the ability to transition from Dungeon Sessions back to World Zones, allowing players to complete a Dungeon and return to that Dungeon's entrance after.
- Adjusted Time/Weather code.
- Updated Interactable assets.
- Added 2 extra merchants ready for implementation.
- Implemented Burst Messages so that the client can send large messages to the server.
- Fixed client Time Of Day Calculation.
- Implemented BP nodes for int64 Modulo and int64 to float conversions.
- Fixed a bug where Room Tiles weren't being assigned their RoomID and made use of the property in room unloading.
- Updated how Combat Finished Events are handled by Core Widgets, properly clearing and hiding the Turn Display.
- Core Widgets now update their 'Focused Combat' if an already selected Entity enters a new Combat and removes if the selected Entity leaves a Combat, automatically updating the Turn Display.
- Fixed Ability Tooltips text at the start of Adventures.
- Enabled audio in the new map.
- Added settlement music.
- Added zone 1 music.
- Added combat music.
- Added the ability to switch to and from combat music.
- Added StartTime to session data to ensure all player's music is synced.
- Fixed Audio Manager volume multipliers.
- Fixed Burst Message implementation to send very long commands in batches.
- Fixed several bugs in the audio manager.
- Integrated ultra-dynamic weather sounds with our audio manager.
- Attempted to align the combat grid, it should be aligned correctly in most situations now, more testing is required.
- Optimised character movement to keep track of the next relevant step as movements progress, reducing the number of function calls per character per frame when updating character positions. This has greatly improved performance when a large number of characters are moving simultaneously.
- Updated movements to path locally for the first step, this ensures characters aren't teleporting to the first step of their movement. If a character's respective Server and Client locations don't match, either by connection delay or other unexpected faults, the Client is now capable of correcting the start of the path to smooth out the result.
- Added the ability for a movement to be cancelled before it has begun if it was queued ahead of the current movement. As a result of movement in the World of Erendorn being tile-based, not every movement command can be executed immediately (in the case that a new movement command is sent as a character step between tiles, the ongoing movement must finish before the next begins). Rather than adding a new movement for every request made before the next movement begins, new requests now only update for the next queued path.
- Implemented the Active Effect Template Library and Builder to spawn and be accessible to Sessions, this means Active Effect functions and information no longer require a Combat to be functional.
- Reduced and refined logging across all Step classes, and moved repeated logs for success or failure from individual Blueprints to the Step base class. Added debug settings for displaying finer detail.
- Fixed doubled-up checks in the vendor throwing errors.
- Updated the dungeon lobby widget and removed its blocking of movement controls.
- Fixed party update messages falsely calling out a player leaving a party when going from solo play to a group.
- Started fixing portrait display for parties.
- Interactables in sessions now correctly clear themselves on the session end.
- Fixed combat music audio.
- Fixed zone 1 day music not playing.
- Movement paths are now updated more smoothly, due to the time difference between a movement being declared serverside compared to where the client is showing that character, interrupted movements (a movement requested while one is already going on for that character) would previously begin the character back a step, meaning characters jumped around the grid attempting to align with the most recent path. Movement paths are now calculated based on where a character will be by the time the request has gone through allowing updated paths to be queued and transitioned smoothly.
- The specific log responsible for beginning character movement has been changed to facilitate character movements being triggered as a result of interactable or event sources.
- The Dungeon Grid has been restored, broken since the switch to World Combat, players can once again visualise the tiles that make up Dungeon rooms.
- Movement Overlay, the ability for players to visualise would-be attacker's movement ranges now functions correctly again.
- Activity Book Entries no longer fade instantly when added to the Activity Book and are archived when switching between Sessions.
- Correct Ability Descriptions and the properly populated Ability Hotbar are now visible outside of combat.
- Fixed audio track switching when the day/night cycle changes.
- Fixed combat shrine VFX activation.
Server
To start the month, the server team has been hard at work debugging all the new events and various other code related to the Open World Adventuring. Some fixes include:
-Fixing the Zone Monitor to allow zones to despawn when there aren't enough players nearby, preserving memory.
-Fixing Activity logs for Events, so the players will now automatically have quest logs added to their activity log by brushing close to the appropriate Event.
-Fixing an interesting interaction between Zombies being summoned by other Zombies that caused the player to never be able to get a turn, and infinite zombies spawning forever, taking infinite turns.
The server team has also created the capability of limiting the number of specific events by their sizes, so that a certain area can only have no more than 3 large events, 5 medium, etc, allowing for a smoother distribution of random Events over the Zone. Furthermore, the server team has been in full bug-fix mode now that all of the features being worked on have been implemented. As a result, bugs for Subzone despawning, Weather selection, entering dungeon combat, the Activity Log, and Events have all been worked on and fixed! Additionally, completing a dungeon will now correctly return you to the Adventure you came from, saving all the XP and loot you gained from the dungeon. Additionally, some work was done on fixing parties to make sure all members of the party are given a new one when a party is disbanded.
Finally, the Server team has continued to be busy bug squashing. Including Caged Parakaws being unable to run away when freed, not gaining XP correctly upon an adventure's end and a large multitude of bugs caused by entering combat on steep slopes or other awkwardly tiled locations. Additionally, Redirect Damage, a new Effect, has been made to enable some of the upcoming level 2 abilities. More work from the server-side team can be seen below.
- Refactored dungeon lobbies so that they work better with the open-world gameplay.
- Added Time and weather code.
- Fixed missing texts on current testing dialogues.
- Refactored some dialogue-created logs.
- Implemented and debugged zone NavEdit loading.
- Refactored player GameSession tracking.
- Fixed dungeon entrance lobbies to no longer shared between all sessions on a specific server.
- Improved and standardised SessionChange messages.
- Changed Weather update interval to 5 minutes.
- Completing a dungeon now correctly tells the client where to go next.
- Fixed an issue which stopped session change messages from dungeons reaching the client.
- Fixed dungeon room joining and auto-start code.
- Fixed various bugs with the world events.
- Refactored World Event subevents.
- The dungeon session game state gets paused and started again between rooms of a dungeon.
- Added GetLocation helper function to entities.
- Combat starting is now behind a mutex lock to stop a rare issue around combat starting and concurrency.
- Added code to handle going into a dungeon from the open world and returning to the adventure after it has been completed.
- Stopped entities in combat from being considered for dungeons if they are in combat.
- Added code to keep the session open while the party is in a dungeon.
- Fixed a crash related to disconnecting while in a dungeon lobby.
- Fixed a server crash triggered by completing one of the world events.
- Fixed a world event dialogue.
- Fixed a server crash relating to disconnects and expected players in sessions.
- Fixed incorrectly indexed AI types.
- Adjusted Dungeon Session Zone IDs.
- Fixed incorrectly placed Mutex lock around combat starting to fix a crash caused by concurrency.
- Adjusted the start of movement code to improve the way it looks in the client.
- Fixed Caged NPC world event activity logging and activation radius.
- Optimised and improved the GetNearestTile function used at the start of open-world combat.
- Added extra merchants in the settlement and changed the existing merchant.
- Moved merchant locations.
- Fixed vendor price modifiers.
- Corrected entity placement at the start of open-world combat.
- Removed test NPC dialogue from the settlement.
- Added system chat messages when world events reward loot.
- Refactored the function to send chat messages to work with world events.
- Debugged party disband code.
- Added a function to print a party's status to the console.
- Fixed Combat Shrine world event activation.
- Updated party updates to not crash if a party member is disconnected.
- Refactored log cleaner to cycle more often but did not execute the clean-up code every cycle to improve session shutdown speed.
- Fixed party invite acceptance code when the invite has expired.
- Fixed a bug which caused you to reselect your character when returning to the settlement.
- Refactored open world Movement code.
- Added queued movement code.
- Refactored how movements end.
- Fixed selling items to vendors, they should now give the correct amount of gold and can no longer be sold multiple times.
Sound Design
The team working on the sound design for Erendorn would start the month out and about in the real world. Collecting primary resources for the landscape of Erendorn's initial area and beyond. These sound effects have been collected from waterwheels and fountains that the team found while wandering around the wilderness. These effects can be modified to make a range of different effects within Erendorn. Primarily they will be used within ability audio, once the team have altered them to isolate the precise audio they want to use. Examples of the primary resources collected by the team can be listened to below.
Using primary resources such as the ones collected throughout the earlier part of the week, the team started to work on the sound effects for abilities created throughout the month. Working on two very different types of effects would give the team the chance to show off their musical range. The two character classes that got the audio treatment throughout the month were the Human Knight and Twilight Elf Assassin. To start with, the team would work on the more physical abilities that the Human Knight will be able to wield throughout combat. The team has used a variety of audio to portray the Knight as a character that will be able to take the brunt of the force they may be facing. On the other hand, the audio for the Twilight Elf portrays a character class more used to the shadows than the front lines. The team has given the abilities of the Elf a mysterious and smoke-like aura, giving the impression that they can manipulate the very shadows they inhabit. With such contrast in abilities themes, the team have done a good job at portraying each class and their nature. Examples of the new ability audio can be seen below.
Once the battle is won and the smoke has cleared from all the effects the adventurers have used it is time for their reward. In the past, we have seen a variety of audio that will be used for the chests as they display their rewards for adventures. Now the team has worked on some more precise rewarding noises for events that may be completed by adventurers. Many of these sounds will be utilised to give feedback to the players when specific events are completed. Other sounds that have been created by the team include more opening and reward sound effects that will also be utilised with the chest rewards and the 'Saving captured prisoners' world events. The team would then move into the engine to implement this audio and start optimising some in-game zones. Examples of all the new audio for rewards can be heard below.
The in-game zone correlates to an area within the game where certain background audio is played. For example, the hustle and bustle of a marketplace or the wind whistling through the branches of a tree. The team has encountered problems with these ambient sounds where they cross over each other, meaning the player would be hearing many different sounds at once. With this most recent update, these sounds now have a clearer area that they can play in, which can be seen in the video below.
Environment Art
The environment team have also been working within the engine. Focusing on the initial settlement within Erendorn, the team have been re-lighting the buildings and surrounding areas. Due to conflicts that arose using the Lumen and DX12 plug-ins, the team have implemented additional light sources into dwellings. These new lights will be used during the evening and nighttime, allowing players to navigate through the buildings when needed. In doing this, the team has added a rustic and cosy feel to the buildings making them feel lived in and thriving. The team continued to work on the initial settlement throughout the month.
Getting to the middle of the month, the team would tackle the set dressing of the initial settlement. Using a new technique, a decal has been generated that will be projected onto the floor giving a decent image of the rocky landscape that the settlement has been built. The team would continue to work on the process of projection mapping throughout the rest of the month as they improved the process by smoothing out the transition between the floor and the decal. Throughout this learning process, the team also added the ability for the foliage of the grasslands to work around the rocks that were placed by the projection. Examples of the process of projection and its improved form applied to the wider area can be seen below.
Animation
The animation team has been working on improving and updating many of the movement cycles throughout the month. Starting with updating the Zentragal, the team aimed to improve many of the animations created earlier in development. When animating a complex creature such as our arachnid friend, the team will have acquired many new skills throughout the development process that can now be applied to the updated animations. These newly updated movement cycles have a much more polished and professional feel. This can be seen mostly in the feet on the Zentragal, which now have much more fluid movement and don't slide across the ground as the character moves. The team would go on to create new spell animations that will be used for a variety of characters using these new techniques and polish. The team will use the spell animation on multiple models by applying the movement of the hips and shoulders and then creating the movement for the feet. This can be seen in the similarities of the spell casting from the Zentragal and the Forest Druid below.
The animation team would also work on updating the movement cycles for the Human Knight. Working on the Double Hit and Heaving Blow, the team have aimed to make the animations smoother and more refined. Taking new references for the Knight has given our animator a focal point to create the newly updated movement cycles. In a similar way to the Zentragal, a lot of the new refinement has been applied to how the feet of the model are set as the characters swing. The second example shows the difference between the previous version of the cycles and the new one. The newer version portrays a much stronger movement as the character winds up for the swing and more determination and commitment as the sword is brought down on their enemy. The team will continue to work and improve on movement cycles throughout the coming weeks. Examples of the updated Human Knight animations can be seen down below.
Visual Effects
The visual effect team started the month experimenting with new nodes that would become the building blocks for brand-new ability effects. The nodes created have a range of applications such as; shields, area of effects abilities, and obstacles for enemies to have to path around. The team would continue to experiment with these nodes throughout the months as they got ready to create a new range of character abilities. Examples of the experimental nodes used to create spherical auras are below.
The team would continue their experimentation on visual effect nodes throughout the middle of the month. This would lead them to create visual effects that can be applied to weapons and character models. Using these new effects, the team can give a range of visual feedback to the player, such as; weapon enchantments, player auras, player buffs/debuffs, and personal shields. These effects will be vital feedback for players during combat, giving adventurers visual information to make crucial decisions about where to strike. These new nodes also rendered some impressive visuals that are in the examples below.
The team would move on to creating new concepts for the next range of abilities that will be created for the characters of Erendorn. Using some bold colours and shapes, the team has given a good representation of how the anticipated abilities will look once completed. A gesture sheet was also created, which will be a good reference for the animation team when creating the movement cycles for these abilities. Examples of the concept sheet and gesture sheet are below.
In an incredibly busy month for the VFX team, they spent the final week utilising all of the work they completed throughout the last 5 weeks to create the next stage of character abilities. Using the concept sheets that were created earlier in the month, the team started with; Attack of Pursuit, Celerity, and Lightning Pulse. Each of these abilities has a unique shape, informing knowledgeable players what has been cast. Additionally, the team would also work on a couple of in-game effects that will have frequent use throughout Erendorn. Creating a new type of effect for berry bushes, the team has given them a new eye-catching visual. This will help players spot them in the vast landscape. Finally, the team created a new effect for chests that will be used for more common loot. This will be used in conjunction with the shiny/magical effect when the reward is particularly rare. Examples of all the effects created throughout the latter part of the month are below.
That’s it for this week’s devlog, but have you seen our monthly roundup of October yet?!