Monthly Devlog | January 2023 | No. 48
The team have kicked off the new year with a productive month with many new features and improvements coming to Depths of Erendorn. The 3D modelling team work on hairstyles and the new Human Knight armour while the set piece design team added new assets to the Graveyard event. Additionally, the wizards of coding have been working on a new movement system and a vendor restocks timer. Meanwhile, the sound team have worked on some soundscapes for the stone caves and the VFX team have been making some visuals for portals. Finally, the initial area of Erendorn sees some new features and improvements from the environment team and new animations have been created for berry picking and vendors. 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 would start the month by experimenting with a new hairstyle creation method. Using longer meshes that go from the front of the head to the back gives the impression that the hair has grown on the scalp naturally. The team would also go on to layer the meshes on top of each other to imitate the complexity of hair that would grow. Each of the colour meshes in the example below will be used to add a different strand of hair to the model. The light grey mesh has been used to add smaller hairs that are seen along the top of the forehead and the sideburns. Longer hairs are indicated using the blue mesh as they fall below the base of the skull and finally, green indicates a medium strand that fills out the top of the head. All combined give the hair a fleshed-out and realistic look. Examples of the mesh and hairstyle can be seen below.
The rest of the month was dedicated to working on the brand-new Human Knight armour that we saw throughout December. Adding more plates and extra details, we begin to see an overall perspective of the style the team are adding to the protective gear. Adding some accents in the form of swirls on the shoulder pads and eventually hip plates, the team are showing this armour is to be worn by those who wish to show off. Through the latter parts of the month, the team would start adding extra details to the helmet and belt of the model. The extra plates that have been added to the helmet follow the style of the rest of the armour, while also adding to the already imposing silhouette. The team will continue to work on this protective gear through the coming weeks. Examples of which can be seen below.
Set Piece Design
A lot of work would be completed for a variety of events that will be randomly generated throughout Erendorn. Starting with the Graveyard event, the set piece design team has worked on the assets that will accompany the hordes of the undead. In creating a range of headstones, the team used multiple materials and shapes to show off the unkempt nature of this graveyard. The team would also add these assets to the engine and work on the lighting that will also spawn when the event does. For the rest of the month tackling an issue with materials within the engine would be the focus of the team, as they work towards the next build. Examples of the assets implemented for the graveyard event can be seen below.
On the client side, a lot of work would be completed to fix some of the issues regarding the camera. A breakdown of the work done on the camera as well as others can be seen below. Additional time has been spent updating how the newly added collision presets and trace channels interact in Depths of Erendorn to ensure gameplay can continue to function while facilitating procedural foliage and Navigation Data generation. UI hiding and Entity Stat bars have also seen updates as well as the shared functionality between Interactable Objects. Finally, the team would be focused on bugs relating to Entity data consistency during Sessions, primarily the displaying and updating of stats across the entire project to ensure the stat values used take active stat changes and equipment modifications into account. Additional work completed by the team can be seen below.
- Updated the Camera movement to better handle the height offset and it now tracks the floor correctly.
- Fixed an issue which allowed the camera to go underground.
- Fixed and improved camera lerp function.
- Implemented a camera Height lerp function.
- Fixed an issue which stopped server connections from being disconnected.
- Added an experimental backdrop behind the dungeons to cover the last few remaining holes that can occasionally happen.
- Camera movement updates are now frame-rate independent.
- Fixed Dungeon locations mapping display.
- Fixed Event locations mapping display.
- Updated the Toggle UI function to be limited to Session gameplay.
- Added a message for exiting UI Hidden mode that shows and fades when UI is toggled off.
- Fixed automatic application of hidden UI for all relevant widgets to keep the visibility setting uniform.
- Refactored the setting up and updating of stat bars to narrow down the causes of stat bars disappearing and showing as static.
- Updated the Preset_Landscape_Basic collision preset to be applied to all-terrain pieces and work with player interaction, foliage generation and nav data generation.
- Updated Preset_Interactable_Active to function as intended when the player is clicking on interactables and added Preset_Interactable_Inactive for disabling interaction.
- Updated the Interactable_Base class to have unified properties and functions for dealing with collision changes from interactable state changes and combat focus changes.
- Refactored the movement mapping tool to utilise UE5’s Data layers.
- Implemented Movement blocking volumes to reduce the need for manual touch-ups.
- Re-mapped the new zone 1 terrain.
- Updated missing class renders in the inspect window.
- Updated the layout of the character select screen to use class renders, and altered the character list to use new UI elements and better scrolling.
- Started fixing updates to the character select/creation transitions to updated character lists and adding a refresh timer to vendors.
- Implemented Combat focusing when transitioning in and out of Combats relevant to the player.
- Updated how individual Combat’s Turn Managers handle the active turn order to properly facilitate players joining Combat at different times.
- Updated Turn Start UI animation to only play when a Combat is focused.
- Fixed a bug where players that join a Combat after it started aren’t able to cast abilities.
- Fixed a bug where players that join a Combat after it started don’t appear in the turn display as having an active turn.
- Updated the Center Panel Widget to clear the lobby UI when switching Sessions.
- Updated Combat Grids to only appear for the actively focused Combat.
- Updated the execution order of entity placement when entering Combat to prevent Combat Coordinates being interpreted as World Coordinates.
- Fixed a bug causing party portrait members to remain visible after a party is left by the local player.
- Added simplified static functions for dealing with multiple potential Turn Managers.
- Fixed camera Lerp Speed calculation.
- Updated guardhouse interior.
- Refactored Nav data to include the data for the nearest tile with non-perfect movement.
- Added Debugging display for new nav data info.
- Updated how Entity Managers reference Entities to prevent duplicate data being stored when switching Session or entering Combat.
- Refactored and added debug settings for Entity Stat object classes to simplify event calling and have a better image of stat changes as they occur.
- Refactored all stat displaying to make use of GetStat, a function that encompasses base, equipment and active changes to individual stats. Changes have been made to:
– Character Portrait and Overhead Stat Bars.
– Movement Pips.
– Stat Panels for Sessions and Equipment Panels.
- Updated usage of Single Stat object events to allow different blueprints to listen to specific stat changes. As an example; Stat Bar Widgets are now able to listen exclusively to events regarding the stats they are tracking, a Mana Stat Bar can listen for changes to Current, Maximum and Regen Mana stats before updating its display and reduce the amount of unnecessary functions being triggered whenever any stat changes.
- Fixed a bug that prevented Player icons in the Turn Display from displaying health state.
- Replaced some old and redundant code in the Character Creation/Selection screens to fix issues when attempting to start the game after creating a new character.
- Added preview renders to the Character Creation screen.
- Fixed some faulty button functions in the Character Select screen.
- Updated the layout of the Character Select screen based on testing feedback.
Looking towards the server side, many other additions were added to the game throughout the month. Starting with a few new features, as well as fixing some systemic bugs. The first thing to be completed was a restock timer for Vendors. Rather than just having one inventory that lasts as long as the server does, Vendors will now get new randomly generated stock every fixed period (currently an hour). The second was creating conditional dialogue responses. These are responses given to something an NPC says to you, but only if you meet the condition. For example, you won’t have the option to ask a herbalist to heal you if you’re in full health, or won’t be able to see the option to sell anything to a trader if you have nothing to sell.
Finally, Generated Event Locations were created. Previously, events in the open world were manually placed on the map. However, this led to a lack of interaction between the hand-made open world being made and required constant updates as the map changed. Another downside of this was that all event locations could be ‘learned’. Now the server will generate locations each time the zone is loaded as long as they meet a few parameters (Enough room to fit them, not too many of one type of event, etc). To maintain flexibility we can still manually define locations should we want specific locations in certain zones. The server will now mix both sources of event spawn locations, and choose locations for events from both lists. Fixes and additional work from the server-side team can be seen below.
Additionally, the team’s been very busy on a new system for movement in the open world. While combat, and thus the open game world in general, is based on a grid system, walking around like a chess piece isn’t exactly particularly fun. A new system that allows the play to move from any one tile to another, no matter the angle or distance means now your character will just walk straight to where they want to go, instead of having to stick to a tile for every individual step.
Next up meant that the AI’s pathfinding tool had to be updated to be able to understand and use this new system. Once this was done, we had the freedom to allow for procedurally altered terrain. This means a dungeon entrance can spawn within a large enough open area, whilst altering the terrain texture and movement data around the new dungeon entrance.
Additional work by the server-side team can be seen below.
- Active Effects are removed from entitles when they change session.
- Fixed a server crash when reconnecting to ongoing adventures when the entity is inside a dungeon.
- Refactored subzone monitoring.
- Increased subzone activation radius.
- Adjusted enemy group spawn distances.
- Added party disbanding on disconnects.
- Added party data to dungeon sessions.
- Made casting abilities before the combat starts impossible.
- Fixed a server crash when failing to place enemies in the world.
- Fixed handling of entity updates when getting a new adventuring session.
- Removed a combat start delay on entities joining a combat part-way through.
- Joining a combat that is ongoing now generates a turn order log.
- Fixed server crash when failing to spawn enemies.
- Adjusted combat engagement range.
- Increased distance between enemies and events/dungeon entrances.
- Fixed entities not checking distance to events when being placed.
- Fixed entities spawned by events not spawning on their intended event.
- Extinguishing a cursed brazier now correctly updates the client about its new state.
- Rock Barrage now correctly applies its area of effect.
- Some broken dialogue trees now correctly branch into the rest of the conversation.
- Fixed a server crash when failing to spawn enemies.
- Fixed a bug which caused your old character data to be sent on adventures after you change character instead of the new character.
- Refactored Removing Members from parties.
- Implemented a party update on character change to update party member’s UI.
- Refactored zone loading to implement dynamic event location generation.
- Implemented the new distance information from the zone data into the server code.
- Reworked the movement validation.
- Reworked the movement processing.
- improved responses to character creation.
- The server now caches the Vector of each moving entity.
- Added Coord.Divide Functionality to make using them easier.
- Worked on NavEdit code to update Distance data as it changes due to NavEdits being placed.
- Fixed an oversight where you could crash the dungeon server by making a dungeon lobby while currently in a dungeon (Dev Testing feature).
- Fixed a server crash when starting combat in an invalid location.
The sound team started their month in the engine, locating any issues that may occur in the vast landscape of Erendorn. The biggest issue they found was that the Rhinogars stepping audio was louder than other enemies, this was a quick fix for the team who could then work on some quality-of-life improvements for the latest build. Firstly, the team would implement a new ‘Next Turn’ sound, indicating to players when either the enemies or their turn has started. This audio was implemented into the engine and the team would go on to do some experimenting into which of the sounds should be louder and more distinct. Shortly after this, due to some technical issues, the team would work on a simplified version of the stone cave soundscape. Creating a range of tracks that will be used within the caves, all of which are simplified versions of the dynamic system that the team would have fixed by the end of the month. Finally, the team would work on some smaller effects for the Berry Bush event. Creating some realistic audio that will accompany the movement of the bush when a berry is picked. All these tracks and sounds have been implemented into the engine, ready for gameplay. Examples of these can all be heard below.
Some impressive improvements have come to the initial area of Erendorn throughout the month. The team have been taking the time to add some quality-of-life improvements whilst also adding some new features. The team would start within one of the coastal areas of Erendorn, flattening out some of the grasslands to improve spawning capabilities. In doing this, the team have simplified the spawning of enemies as they will not have to worry about them being placed within the terrain. Additionally, new coastal rocks have been implemented in this area to improve the transition from grassland to sand. This has also smoothed out the slope of the terrain in a natural manner. Examples of the new flat lands and coastal rock formations can be seen below.
The team would move on to start adding a couple of new features to the initial area. Starting with a road network, textured trails would be placed in between the initial area and some of the first points of interest the team would encourage players to explore. These roads would be implemented using a similar practice that we have seen the team use to set dress the settlement and grasslands. These roads will act as a guide to players to places of interest they can explore within the early levels of their play through. Secondly, a new set of fog cards have been implemented into the base of the mountain. This fog adds a mysterious aura to the area it covers and will also act as a point of interest for those daring enough to venture within. These new fog cards will have a range of applications throughout the many areas of Erendorn. All of these features would also see improvements throughout the month with more detailed textures being used for the roads and additional depth being added to the fog layers. Finally, the team improve visibility to the world during the night and in all weather conditions. Bringing us some stunning visuals of the world in the twilight. Examples of all the improvements made to the initial area can be seen below.
The animation team would start the month by finalising the animations for the Twilight Elf Assassin’s combat cycles. Creating a hunched-over walk gives the Assassin the stealthy gait that would be expected. The team have taken extra care to move the cloak of the Elf with their legs and keep the model from clipping itself. These movement cycles would join the attack animations we saw last month. The team would move on to creating some conversation emotes for the vendors of Erendorn. Although only a small amount of movement, these cycles will go a long way to add life and realism to the none playable characters within Erendorn. These animations have been made with vendors in mind but could have many different applications throughout the world. Finally, the team would work on animations for the Berry Bush event. Now when a player approaches the fauna, their character will reach out and pick the berries when commanded. The player can also eat the berries picked with another animation. The team will add these to the engine along with implementing some physics-based animations to give feedback to the player when a berry has been picked. Examples of all the animations created throughout the month can be seen below.
Finally, the visual effect team worked on a couple of different visuals for gameplay features throughout the month. Starting with some concept effects that could be used for the many portals players will use to get around Erendorn. The team has concepted the effects with a range of colours and shapes to try to get a feel for the portals within the world. The constant theme of magic can be seen throughout, as the team use colours such as blues and gold to portray the portal’s effect. Additionally, using a similar effect the team created visuals that will be used for the world border around certain areas. Throughout Erendorn there will be places that players will not be able to venture through, these areas will often be limited by geographical means, such as cliffs and oceans, when this is not an option the world border will be used to keep players within the play area. The team has continued to use blue within the world border to create the effect that it is powerful magic that is keeping them within the play area. Examples of all the effects created by the team throughout the month can be seen below.
That’s it for this week’s devlog, but have you seen our monthly roundup of December yet?!