Monthly Devlog | August 2022 | No. 43
It has been a month packed full of stunning visuals! The 3D modelling team have started and finalised the design and textures for the Druid’s tier one armour. While the Set Design team have worked on new city props and updated the corrupted brazier. Additionally, the wizards of coding have been working on the dialogue system and optimising the transitions to the open world. Also, our Sound team have been working on some audio for visual effects, whilst the environment team bring us visuals for the new points of interest in the initial area of Erendorn. Finally, the animations team worked on the Rhino enemies’ movement cycles and the VFX team completed visual effects for events in the open world. 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
The focus for the month has been on the Druid’s tier-one armour. As the team starts the month with sketches over a block out, readying the model for further detailing. Continuing through the month, the team would add these details to the skirt of the Druid. Using the background of the Druid heavily when designing the armour, the team added leaf-like motifs along the spine and back. Examples of the initial block-out are below.
The team would finalise the design for the armour throughout the month, taking the time to implement additional details within the skirt and shoulder piece. Most noteworthy being vines being used as stitches within the skirt and as bindings along the wrist guards. Once completed, the team would start retopologising the model making it more efficient within the engine. Examples of these are below.
With the model now retopologised, the team focused on adding a splash of colour to the protective gear. Using a combination of colours, the team built a pallet that could be obtained using natural dyes occurring in the open world. Texture has also been used within the protective gear, such as the scales on the neck and wrist guards. Scales such as these could have been obtained from creatures that roam the worlds of Erendorn. Using a gradient of green through to brown on the main body of the protective gear, the team has also shown the natural aging of leaves. Examples of textured armour are below.
Set Piece Design
To start the month, the set piece design team have been working behind the scenes. Taking the time to optimise some of the props imported to the engine. After the work in the engine, the team turned their attention to the continued creation of city props. Throughout the month, the team created a chest, wall hanging, cabinet and shelves. All these assets continue to follow the theme of the city props created before it. These assets were then imported into the engine to be added to the cities of Erendorn.
Coming to the end of the month, the team worked on the corrupted brazier. Starting with an update to the model to give a more eye-catching aesthetic. Once the model was finalised, the team would implement it into the engine and apply a cast iron texture to it. This gives a visual representation of how the brazier will appear within gameplay. The team would also start work on some visual effects that would accompany the model in the engine. Flames and embers have been created in a variety of colours for the brazier, giving the client-side team the ability to use the asset for multiple different events. Examples of the newly updated asset and visual effects to accompany it are below.
Programming
Client
To start the month, the team continued the implementation of World Combat by unifying some of the primary Client classes to allow them to work with and share functionality when switching between Sessions and Combats. Base Manager, Core UI and Step classes are now capable of behaving differently depending on the context they were created for, allowing us to keep what we need from Dungeon Combat while being able to apply unique methods used in World Combat. As we are now dealing with potentially multiple Combats which have different requirements based on their Session type, a project-wide improvement on how classes reference relevant Sessions and Combats has been underway. In addition to this, the function of several Combat Action Steps – the building blocks that comprise any action that can happen during combat, have been updated to function correctly across both World and Dungeon Combats.
In continuation of the efforts to bring World Combat to the DoE Client, the Dungeon’s Room Manager and Room Builder classes and their World Session counterparts (The World Environment Manager and Region Builder mentioned in the last devlog) have all seen improvements to their Combat functions. In addition to this, a new batch of Client-to-Server Commands and Server-to-Client Logs have been added to get us ready for implementing gameplay actions for dialogue, vendors and ‘Interactables’. Additional work completed by the client-side team throughout the month can be seen below.
- Created and reparented Core UI Widget classes adding Session and Combat switch functions.
- Updated Session and Combat switching for Gameplay UI and its initialisation methods to use the Core UI classes.
- Created the CenterPanel Core UI Widget to handle individual panel windows.
- Created the UtilityBar Core UI Widget to handle settings, inventory and other menu options.
- Updated all classes that use outdated Session and Combat referencing methods (there were a lot).
- Continued updates to the new Inventory UI, fixing stat display, item population and equipped item display.
- Fixed the equip display for two-handed weapons.
- Tweaked how context menus are handled in the Inventory to fix offset issues.
- Continued building the Inspector window, but on hold until Gameplay UI is updated.
- Started integrating UI menus into the new Core UI widgets.
- Finished the blanket updating of relevant Session or Combat referencing across all instances in all Blueprint classes.
- Refactored multiple C++ and Blueprint classes to make improve Combat Manager referencing cutting down on less reliable methods intended for Dungeon Combat.
- Fixed any issues that arose in Dungeons as a result of the Manager, Core Widget and Action Step changes.
- Continued updating existing menus to function with core widget changes.
- Settings, inventory and lobby browser all now work with less obstructive buttons.
- Set up delegate usage for UI windows to handle closing multiple windows correctly.
- Updated the visuals of the login screen.
- Started mocking up dialogue windows.
- Added a Stepper Template Library class to be loaded once at runtime to allow different combats to get hold of specific Ability and Active Effect templates without having to load them all into memory every time Combat is entered.
- Created a new parent class for the Room Manager, the Environment Manager, responsible for sharing functionality between the Room Manager and the new World equivalent the World Environment Manager.
- Created a new parent class for the Room Builder, the Region Builder and its World equivalent the Combat Region Builder. Responsible for the building and displaying of combat grids and the tiles contained, the Region Builder is called upon when Combats are entered to create a Combat Region, an object that contains the generated tiles to be used by various Combat Managers.
- Updated all Combat references to the Room Manager to use the new parent class the Environment Manager to allow most combat functionality to work in either situation.
- Updated the UI elements of the login screen with new buttons and the new logo.
- Added new and updated existing shared functions for getting grid tile, root and height information on Room Manager and World Environment managers.
- Project-wide update and refactoring for spawning, movement, basic attacking and ability targeting methods to make use of the new Environment Manager functions.
- Added Events, Logs and equivalent Action Steps for Dialogue and Activity Server messages. These messages have been added to give players ways to interact with the world of Erendorn that don’t involve a sword or a fireball.
- Added Client Commands for dialogue, interacting with ‘Interactables’, buying/selling to vendors and leaving combats and adventures.
- Created Vendor UI mock-up.
- Continued work on setting up NPC dialogue.
- Further updated the log-in screen and core widgets to be more in line with new designs.
Development has also continued on the dialogue system within the client, work that has been completed is as follows:
- The layout design is finished.
- Text formats based on which party is speaking in each line.
- Content refreshing and processing options chosen by players are functional.
- Some chaotic bug fixing on the side.
- Added Client Dialogue Manager Class.
- Added Client Dialogue Class.
- Added Client Dialogue Response Class.
- Added Client Dialogue History.
- Added Client Parsing functions for dialogue.
- Added Client Dialogue log parsing functions.
Updates to the inventory UI are as follows:
- Added new grid graphics.
- Replaced “equipped” text with visual highlights.
- Item stats now correctly show on tooltips.
- Context Menus no longer conflict on layering with tooltips.
- Inventory populates with empty slots if below a certain size.
- Core widgets no longer share screen space.
Server
Throughout the month, the team have been focused on tying up the end of a dungeon combat into returning the players to the open world. A lot of refactoring and updating old code that concluded dungeon combat has now been done, including some overhauling of the dungeon complete and dungeon notify code. Along with this, a bunch of other backend fixes have been implemented to make things run smoother behind the scenes, such as A GetTilesAtRadius function (to effectively draw circles to find people at specific ranges or circular-shaped abilities), allowing summoned allies to be able to follow you to the next room of a dungeon. We also created a function that’ll send your new stats to the database when you buy an item or complete a dungeon and completed a slight reworking of what logs are sent at the beginning and end of combat to the client. Additionally, a new Effect Block has been created, the awfully named ‘AddToCounterOnOtherActiveEffect’. This allows abilities or active effects to change the values stored on other Active Effects. Useful if you want to have two abilities interact with each other! For example, the Zeal Master ability can now correctly tell the Zeal Active Effect to pause your loss of Zeal at the beginning of the turn.
Finally, the server team has been fixing a few key bugs that have been found as the client becomes capable of open-world adventures. When a dungeon or adventure is complete, a new kind of message was needed to be created to either pass the adventure’s progression data (how much XP you’ve earned, what loot, etc) to the settlement server, or the dungeon’s progression data to the adventure server (to then be passed onto settlement when the adventure itself is then completed). A result of this was us noticing items weren’t being correctly rewarded as loot, and thus were not being saved to your inventory, only temporarily awarded until it became fixed. Finally, a Dialogue Respond command has been created to allow clients to talk to NPCs and interactable objects in the world. Additional work completed by the server-side team throughout the month can be seen below.
- ActivityLog structure created.
- Re-implemented BallotComplete trigger.
- Adjusted the order that the logs are sent to the client at the start of world combat.
- ZoneNav data is now wrapped and instanced between sessions allowing us to make multiple sessions with different NavData from the same base zones.
- Added a method to blend between instanced zone data and the base zone data, this means we can have World Events affect the walkable area of zones.
- Joining a Dungeon or an Adventure will cause you to correctly leave the Settlement server, as you’re no longer in the settlement, freeing up memory for other players.
- Fixed how stat multiplications are logged and calculated.
- Fixed Entities correctly being removed from the combat/game, rather than portions of their information lingering behind.
- Fixed temporary stat changes not being logged and sent to the client accurately, even if the logic was working correctly server side.
- Fixed a bug with the ActvityLog that was stopping adventures from starting.
- Fixed a crash if combat started in the open world when an enemy was not able to be put onto a combat tile.
- Added navigation edits to the client which will allow us to have the client’s navigation data change and update based on their individual sessions.
- Updated the client Pathfinder.
- Refactored the WorldGridNode system to include the ability to react to navigation edits.
- Added the ability to store Dungeon locations in the Zone Data.
- Added the ability to store Event spawn locations in the Zone Data.
- Fixed an issue caused by refactoring the World Gridnode System.
- Fixed the developer editor interface that enables us to give enemies abilities and define the logic that triggers when they use them.
- Fixed WorldSession Progression Data not being instantiated.
- Added minimum damage of 1 damage when an entity takes damage (Pre-shield reductions).
- Gaining loot from dungeons.
- Servers now keeps track of all known server infos and can retrieve a connection to them.
- Register Adventure function refactored.
- Refactored Dialogue classes to track the history of dialogue, allowing clients that join after the dialogue has started to see the dialogue history.
- Added Interactables to SessionData.
Sound Design
The sound design team have been working behind the scenes a lot throughout the month, optimising and fixing audio that broke through the engine update. While doing this they have also implemented work that has been completed over the last few months. Implementing these audio effects into the engine will also give the team a chance to apply the audio to animations to give them a full representation of how the enemy will look in the game. While this was a rather large task, it hasn’t stopped them from also creating some brand-new audio for some of the visual effects that were also created throughout the month. Taking the visual effects for the Skeleton Awaken, Wasp Sting and the Jaguar Stealth. The team have brought them to life through brand-new audio, using layers of primary resources to bring an eerie presence to the enemies. Examples of the new audio effects are below.
Environment Art
It has been an incredibly busy month for the environment team as they look to update foliage and rock formation for the world of Erendorn. Starting with implementing a smaller point of interest that we saw last month to the landscape. The Hero Tree is a large tree that stands many metres above overs that adorn the terrain, guiding the player through the initial areas of Erendorn towards more adventures across the land. The team have taken the time to introduce extra details to this asset including more detailed textures and an increased poly count model. Examples of the Hero Tree in the engine are below.
The Hero Tree wasn’t the only point of interest to be implemented into Erendorn as the team also took the time to build up the castle ruins in the initial area of Erendorn. Using the modular kit that the team completed over the last month, the team have built up an impressive structure. The modular kit can be used to create multiple different structures through the multiple different areas that will make up the world of Erendorn. For now, the team have created a set of ruins that players will be able to explore through the initial area of Erendorn. Examples of the scale of the modular kit and the initial design of the castle ruins in the landscape can be seen below.
Towards the end of the month, the team worked on the rock formations that will be used for the coastlines of Erendorn. Using the Houdini engine, the team created rock formations that would become cliffs and overhangs. The team have added extra details to these larger rocks to ensure the cliff faces don’t become too boring and repetitive. These rocks were imported into the engine where the texture was added. Then the team placed them into the landscape to create valleys and coastlines that can be seen in the images below.
Animation
The Rhino has been the main focus for the animation team throughout the last month, as they complete all of the movement cycles for the gameplay loop. The team have worked on an Idle, walk, run, attack, the damage is taken and death cycle. All these movement cycles convey the impressive size and weight that the enemy holds. Using slower and more cautious movements the team show that when the Rhino enemy starts charging it will not be easy to stop. Once completed, these animations were implemented into the engine ready for gameplay.
Towards the end of the month, the team took the time to go back to an enemy we haven’t seen in some time. The Skeleton enemy needed a new animation for its Awaken ability. Giving the animation team a chance to tidy up the rig and other animations. The movement cycle needed for the new ability needed to convey the strength the Skeleton receives when the power is triggered. Showing the enemy hunch down into a smaller silhouette and then stretching back up to its full height gives a visual representation of the power coursing through its bones! The new Awaken animation is shown in the video below.
Visual Effects
The VFX team have been working on something a bit different to start the month. Many of the events that will occur within the gameplay of Depths of Erendorn will need indicators to convey to the players that it is there. The effects created will show players where the event is and that it can be interacted with. To accompany the visual effects that will be in the game world, the team has created effects that will show on the player’s screen. These visual effects will be a lot harder for the player to miss as they play. Although they will be harder to miss, the team has also experimented with how much the VFX stand out on the screen. Having too many visuals on the screen can get overwhelming to a player very quickly, so these on-screen visual effects will be used sparingly. Examples of in-game visual effects along with on-screen ones can be seen in the videos below.
For the latter part of the month, the VFX team spent time working on the visual effects for the enemies of Erendorn. The team have worked with the Skeleton, Spider, Jaguar, Scorpion, Boar and Lionman. After working on the Player’s Character Class abilities, the team has brought techniques learned from this and applied them when working on the enemy visual effects. Similarities can be seen throughout many of these abilities, for example, the Spider’s Web ability will use similar VFX to the Zentragal’s Encapsulate. These similarities will be useful when trying to identify the many enemies within Erendorn, giving knowledgeable players the upper hand when entering dungeons.
That’s it for this week’s devlog, but have you seen our monthly roundup of July yet?!