Monthly Devlog | July 2022 | No. 42
July was an incredibly busy month for developers. The Zentragal gets a few levels of protective armour while the city gets a brand-new portcullis. Meanwhile, the wizards of coding have been focusing on combat in the open world of Erendorn. Additionally, both the Audio and the Animation team have been working with a range of enemy models. Finally, the Environment team have been working on updating the landscape of the initial area and the VFX team have been concepting the next wave of abilities for Character Classes. 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
This month has seen the return of the Zentragal, as the team focuses on blocking out and detailing the protective gear for the arachnid. The team started by blocking out the main areas that needed protection, such as the abdomen and chest. The team has added extra details by following the natural exoskeleton of the Zentragal. While also integrating the natural spikes along the spine into the armour. Additional plates have been placed on the lower areas of the bodice, protecting the area that attaches the Zentragal to their legs. The picture below shows the initial block out for the arachnid’s armour.
The 3D modelling team would continue working on the protective gear for the Zentragal throughout the month. Along with extra plates, the team added chains that solidify the form and structure at the base of the armour. These will also stop the new plates from moving around too much during combat. As a magic-based creature, the Zentragal will need their hands to perform the many abilities that they impose. With this knowledge, extra plates have been added to the wrist guards to give them that extra protection. Webbing was implemented to the front and back of the armour, this also adds structure while incorporating the illusionist’s arachnid origins.
Encountering a Zentragal when traversing Erendorn may be a terrifying prospect, but with some knowledge of the creature it doesn’t have to be a deadly one. The rank of the Zentragal will be visible by the distinct nature of their armour. As the Zentragal becomes more powerful, the extravagance of their armour increases. Along with the new fierce look, these details will indicate adventurers to the level of danger they might be facing.
To finish the set of the Zentragal armours, the team finalised the tier 3 protective gear. The team created distinctions between the two tiers by altering the design of the bodice. The differences between the armours will become more distinct once texturing has been finalised, bringing a splash of colour. Additionally, a face cowl was implemented, giving instant visual feedback for the level of danger that the Zentragal poses. Although the face cowl looks to be covering the eyes within the sculpt, this will not be the case as the textures can add some transparency to the model.
With all the sculpts completed, the team moved on to retopologising and unwrapping the sets of armour. In doing this, the team are getting the assets ready to get a splash of colour when they begin texturing. A lower-poly model has been created, and the detail of the sculpt will be baked onto it, giving the impression of detail but on a much more efficient asset. Starting next month, the team will start adding colour to the armour making them even more distinct from each other. While texturing, transparency will be used to add extra details to the chest and back, mainly where the webbing has been implemented onto the armour. This transparency will come into effect within the tier 3 face shield. After the block out, the face shield looks to be impeding the vision of the arachnid, but once the texturing is complete a webbing effect will be in its place. Examples of all the retopologised armour can be seen below.
Set Piece Design
The set piece design team have been continuing their work on the new set of city props. Following the theme of assets completed the previous month, they continued constructing a sharp and harsh aesthetic. The team worked on an archway, portcullis, brazier, and weapons rack throughout the month. The portcullis and archway are excellent examples of the aesthetic at work. Using jagged edges and swords, the team have portrayed the intimidating nature that certain buildings within the city will possess. The brazier will also be utilised within an event the team have been working on in the engine.
Once in the engine, the brazier starts to take shape for an in-game event! The corrupted brazier is just one of the many events that will occur randomly across Erendorn. Events are a key aspect in the making of the game. By adding lighting and visual effects, the team have portrayed that this is not everything it seems. Using purple colours for the visual effects and flames gives the impression that an evil presence has taken over the natural-looking flames.
Programming
Client
To start the month, the focus has been on resolving conflicts brought through the pushing and updating engine instances that have already been downloaded. Work also started on getting some of the new World Combat Session Logs implemented and ready to begin allowing players to enter combat in the open world. A large part of the month was dedicated to working with the new Client Programmer, to further introduce him to the setup of the project’s Widgets and UI systems. Finally, the team spent time getting Combat into the World of Erendorn and implementing systems to handle the setup of Combat Instances when approaching enemies. As multiple Combats can occur and higher traffic of Server messages are regularly received in a single World Session; debugging methods for some major systems have been refactored to include better control and greater precision. A breakdown of all the work completed by the client team can be seen below.
- Dealt with various team members build issues regarding UE5.0.2 and the new project download.
- Successfully packaged in the new engine, updating deprecated functions.
- Added Session Logs for combat-related messages for World Sessions.
- Fixed engine project file creation for team members experiencing issues.
- Introduced the new hire to the basics of the project and explained C++ to blueprint workflows.
- Worked with the new hire to create an Ambient Sound Manager for World and Dungeon ambient soundtracks.
- Added logic for positioning one-shot ambient sound cues (drips of water in this example) around Dungeons periodically.
- Added the Ambient Profile data asset for defining how ambient sounds individually behave and added them as a property to Room Profiles so they can be selected to fit the set dressing for any given dungeon.
- Refactored and added clearer logging to Inventory and Inventory Managers.
- Helped with converting the Context Menu class to a more generic method to suit a variety of UI needs.
- Added the ability to selectively log the various processes associated with Session and Combat Steps by Log or Event type.
- Abbreviated Movement Step logging to prevent spam with multiple entities active in a zone.
- Continued to stress test the Server’s handling of World Combat and Dungeon loot generation.
- Updated ambient cues to remove overly frequent loops.
- Started converting inventory to use Context Menus.
- Context menus are spawning correctly and displaying correct options, buttons themselves still need fixing.
- The action menu system was made redundant by these changes.
- Tested and implemented the handling of World Combat Data messages.
- Updated the Combat Manager to be capable of preparing and initialising multiple Combat Instances.
- Implemented the groundwork for different levels of character ‘relevancy’ intending to give us greater control over the number of characters and the level of functional detail we want to provide them at different distances in the world.
- Implemented ‘relevancy’ into update Logs and Events to allow the system to analyse affected Entities and determine whether actions need to be performed fully or in brief.
- Created a Log/Event-specific method for filtering Action System logs, using this method we can specify specific logs to focus on or filter out. This greatly reduces any unnecessary spam while still allowing us to debug specific systems.
- Fixed the context menu issues from last week and some ID recognition for inventory items.
- Added in the Delete Item function to inventory, still needs some proper testing following the overhaul below.
- Started overhauling the Inventory UI.
- Created the foundations of the Player inspection menu.
- Adjusted equipment slots to work with a new system and cut out some unused parts.
- Added equipment slot definitions to the PGC static library for some ease of reference in all the relevant systems.
Server
To start the month, the underlying code for the World Event Manager was created, which will be in charge of the random events occurring out in the world as you explore Erendorn. In addition to this, XP painting in zones has received some major improvements and bug fixes to enable developers to map out zones and assign XP to certain areas, using this tool we can affect the difficulty of enemy groups which spawn in these areas. The XP painting tool now auto-displays and updates as these values change and can visually display in colour what the ‘difficulty’ of an area is. The preview has been created and optimised to work over large areas allowing us to get an overview of zones. The ‘softness’ and size of the brush can be adjusted and XP can also now be removed as well as painted. After this, the focus shifted to working on a plan to bring together some new features and push towards a build which represents our ‘base’ gameplay loop. Now, when you set off on an adventure, enemies will spawn in groups according to XP costs of the zones they’re found in, and when approached will cause combat to start. Some of them even roam around a little! Additionally, some time was also put into a few more bugs causing AI combat pathfinding to fail. As well, as having a new step in dungeon generation to ensure there aren’t too many bottlenecks that can be abused by funnelling the enemies into them. Finally, the foundational code for Shops and Vendors was created, with Vendors being assigned to a location, as well as having pseudo-randomly generated prices for items based on their power, chosen from a list tied to the location itself. A basic buy and sell command has been created as well. A breakdown of all the work completed by the sever-side team can be seen below.
- Merged the recent world combat changes into our live test server so we can test and bugfix the new code.
- Added a blueprint for generating combat grids anywhere in the world.
- Created the base framework for world events which will be a major part of the open-world gameplay.
- Worked on NPC Vendors/Shop code.
- Re-implemented XP painting in zones.
- Planned the concept of cross-zone movement.
- Planned non-rectangle-shaped zones.
- Adventure end implemented ready for testing.
- Planned world partition changes.
- Added the ability to highlight areas of the world to debug XP painting/values in a zone.
- Fixed nearly all instances of 1-tile wide corridors in dungeons.
- Fixed many LootDistribution issues.
- Party Issues after relog fixed.
- WorldEvent Base framework started.
- Adjusted zone data to include Event spawn locations.
- Fixed a server crash if an invalid burst message is received.
- Fixed a lot of issues with open-world combat.
- Fixed issues with subzone generation.
- Fixed issues with group generation.
- Fixed issues with Combat tile generation.
- Fixed issues with Enemy placement.
- Fixed issues with Enemy Generation.
- The dialogue framework is finished and ready for implementation and testing.
- Added Dialogue manager to the world session.
- Added interactables and a command to proc them.
- Adjusted vendors are ready for implementation.
- Fixed a crash caused by the server trying to save a blank item to an inventory.
- Managed to get combat to generate in a world session without crashing the server.
- Adjusted the inventory handling/loading.
- Inventory messages should be reliable when gaining items now.
- WorldEvent spawning code done.
- WorldEvent framework for activating WorldEvents.
- Fixed an issue where rejoining a session would break parties.
- Combat area size adjustment.
- Zone border tile generation fixed.
- Fixed some methods when working with Coordinates.
- Fixed an issue with map reading and concurrency.
- Fixed a server crash on a badly formed message.
- Fixed an issue when comparing the distance between objects if an object was nil.
- Interactables added to the server and a command to trigger them.
- Vendor messages were added opening the doors to adding vendors to the client.
- Adjusted vendor configuration and set up a vendor for the first settlement.
- Added a Vendor interactable which gives the client a route to trigger the vendor message.
- Fixed crashes at the start of Combat in the open world.
- Fixed start of combat movements that move the enemies and players into the start positions.
- Allowed movement/attacks and ability commands in the world session so they can be used in combat.
- Adjusted Inventory message sending.
- Adjusted when the server loads a player’s Inventory.
- Fixes crashes that happen when saving gained items on dungeon completion.
Sound Design
It has been a quieter month for the sound team as they focus on tackling the audio for the Mantisar. With animations for the gigantic bug finalised, the team had the foundations they could edit and apply sounds. Using a variety of clicks and growls, the team have built up an aura of sinister and creepy energy that follows the creature. As part of a swarm, the Mantisar is known for the overwhelming noise. Blending all the audio, the team have achieved this effect perfectly. The audio team have also iterated on this audio to make it clearer and more distinct, using more clicks than growls to imitate sounds made by insects in our world. The sounds created for the Mantisar can be heard, with accompanying animations, in the video below.
Environment Art
While working on some optimisation within the new engine, the team discovered some problems with the landscape. Due to this, the team made a start on a new landscape that would fit into the updated engine. Using the Gaea 1.3.1 program the team can code together the initial area of Erendorn. The Gaea program has many different applications, as it is a brilliant tool used for creating realistic landscapes. Using this software, the team have created the mountain range and sprawling landscapes for the initial area of Erendorn. Once the team was happy with the landscape they had created, they imported it into the engine. Examples of the landscape finalised in the Gaea and imported to Unreal Engine can be seen below.
The majority of the month was spent fixing issues that arose with the updated landscape. Many of the assets within the engine will not be positioned where the team had placed them. Due to this, the team will need to go through and refresh many of the assets throughout the area. This gives the team a chance to refresh any areas of the landscape that might have needed it. While doing this the team also implemented the initial settlement back into the landscape. Examples of the landscape and initial settlement can be seen below.
To optimise the engine further the team have been experimenting with HLODs, a hierarchical level of detail. This process will render objects further away from the player with less detail, this will be done through a variety of textures and models. Using this process will put less strain on the computer running it. With HLODs the team will implement optimisation across the settlements and landscapes. Examples of the newly optimised settlement can be seen below.
With optimisations on the engine complete, the team turned their attention to the foliage. Our artists started work on a small point of interest that will guide adventurers through the vast landscape of Erendorn. The tree will be rather large, standing a couple of hundred metres from the ground. This specific tree will be unique, allowing for more detail to be added than the other fauna around it. Along with this extra detail, the root system of the tree has been given an upgrade to make sure the tree can stand with its newly added height. Examples of unique tree can be seen below.
Animation
The animation team have been working on a multitude of creatures throughout the month. Starting with the Mantisar, animations have been created for the insect’s idle, walk, run, attack, damage reaction and death cycles. The team have taken heavy references from the Praying Mantis in our world. Quick little movements of the head, the flickering of the antenna and the lower abdomen cement the creature with its smaller insect cousins. Examples of all animations for the Mantisar can be seen below.
The animation team then turned their attention to creating a modular kit. This will be used for many of the quadrupeds that will roam the world of Erendorn. To create a modular kit, the team worked on a skeleton that could be applied to a variety of models. Once applied to the models the team could work on animations for the creatures. Many of the enemies that run on four legs will have similar animations as they have a similar gait. Subtle nuances were applied for certain animals but the team will be able to save time overall. With this modular skeleton completed, the team started creating animations for the Hyena and Sabertooth Tiger. The team created animations for idle, walk and run cycles for both these quadrupeds, along with an attack for the Sabertooth. Examples of these animations can be seen below.
Visual Effects
Due to the engine update, the VFX team have had a few technical issues with working in the engine. Not to be deterred from creating, the team have concepted the next wave of VFX. Using a combination of eye-catching shapes and colours, the team has worked on making bold and distinct abilities for many character classes. Taking these VFX concepts the team can bring some consistency to the next stage of visual effects. The team would also spend some time in the month focusing on abilities created earlier in the project. As the project has progressed the team has learned many new techniques that have changed how they create visual effects. Using these newer techniques, the team started on a mini re-work for the VFX created earlier in the project. Using the concepts below the team will rework older visual effects over the coming weeks.
That’s it for this week’s devlog, but have you seen our monthly roundup of June yet?!