February DevLog | Game Development Summary
February may be the shortest month of the year, but it definitely felt long to us! We’ve got loads of things to update you on, from new models and set pieces to sound effects that work alongside VFX. This month has also been all about getting Depths of Erendorn playable in Unreal Engine, so stick around until the end if you want to hear about how our Programmers have tackled this goal. As always, make sure to follow us on Twitter, Instagram or Reddit for daily updates on our fantasy RPG!
Throughout January, our Concept Artist had been busy designing many of the lizards that will appear in Depths of Erendorn as low level enemies. With these concepts finalised, our 3D Modeller was able to kick February off by translating the lizard concepts into fully-fledged models.
Since there will be several variations of lizards that have a similar anatomy, our Modeller started by sculpting a generic base model that they could then reuse when creating other lizard variations. To create this base model:
- The face and body proportions were blocked out in ZBrush.
- The front feet were sculpted separately so that they could be easily reused for the back set.
- The pose was then adjusted to ensure that the legs would deform well during animation.
- The underbelly was created by using an alpha to add loose skin to the specific area.
- Creating the underbelly in this way allowed us to test the tiling rate and ensure good readability.
- We then retopologised the model in order to create the base mesh that was used on all future lizard variations.
By creating this generic base mesh, our 3D Modeller not only made the sculpting process of other lizards much faster, but also drastically sped up the time it would take to retopologise the final models. Before the base mesh was altered, however, our modeller stored a morph target that would allow them to erase certain changes when it came to creating a new lizard. This way, modifications that were made to the base mesh could be easily reverted when it was time to create a new variation.
With that in mind, the generic base mesh was used to create four different variations of lizards that will appear in Depths of Erendorn:
- Swamp Lizard: A long frill was added along the length of the spine, and a set of horns unique to the Swamp Lizard were added to the head. The skin was also made to look like it was melting from the face, a design element that mirrors the putrid swamplands from whence these creatures hail.
- Spiny Lizard: These lizards also have a unique set of complex spikes that adorn their body, and it is these that distinguish them from other species. These spikes were modelled from a goat’s horn, which was manipulated into several variations.
- Thorny Lizard: Using the morph target we mentioned earlier, our Modeller erased certain changes that had been implemented to create the Spiny Lizard in order to get it looking closer to the Thorny Lizard concept design. This made the sculpting process of this creature much faster.
- Big Lizard: As the name suggests, this is the largest and most powerful of the four lizard types. To get it looking the part, our Modeller made certain parts of the anatomy look much bulkier, like the neck and torso. A frill was also added to the back of its skull in order to make it appear more intimidating.
After retopologising and unwrapping all of the above models, we could begin bringing these creatures to life with texture. To get started, two tiling scale textures were made for the skin. This will be used on all of the different models, though the patterns and colours on the scales will vary. After this was done, our 3D Modeller moved on to creating the specific texture for the Swamp Lizard:
- A variety of scales were experimented with for the head, all ranging in size, shape and distribution.
- We ended up using both snake and lizard scales to inform our decision on the appearance of the head scales. The reference to snake scales also tied in nicely with this creature’s snakelike underbelly.
- The pattern on the Swamp Lizard’s body was created using a greyscale tiling texture that resembled reflections on water.
The decision to make the Swamp Lizard’s body resemble water reflections has two reasons. The first is purely aesthetic, because it matched up well with the original concept design as well as again echoing some snakelike features. The second reason was purely practical. In Depths of Erendorn, Swamp Lizards will sometimes hide in swamplands or water. By giving their bodies a warped, fluid pattern, it will help to camouflage them when they are submerged, making them harder for the players to detect.
The final bit of texturing done on the Swamp Lizard was its colouring, which was comprised of a sickly green and bilious brown. As with the body pattern, these colours not only reflect this creature’s habitat, they will also help to disguise it among the dark, earthy terrain. The texturing of the other lizards will continue into next month – so make sure you keep an eye on our social media so that you don’t miss them!
This month, our Animator has continued their ongoing effort at updating old rigs on character animations so that they match the new rigging system in UE4, in which all bipedal characters share the same rig. With that said, our Animator made several adjustments to character animations this month as the transfer onto the new rig occasionally causes errors:
- Parakaw Astromancer: After this month, all of this character’s animations have been transferred and edited on the main rig. Its first set of animations were then imported into the engine for testing.
- Zentragal Illusionist: This character also had most of its animations adjusted and fitted to the latest rig version. After fixing a few small skinning issues that had cropped up as a result of the transfer, the Zentragal and its animations were also imported into Unreal Engine.
- Watertarg Excursionist: The animations for generic skills were adjusted for this character, including things like Disarm, Kick, Palm Strike, Swift Strike and Dodge, which had to be entirely recreated because something had broken on the old rig that prevented transfer.
Speaking of Dodge, this skill animation actually underwent several adjustments as it had to be altered for use with four different playable characters. For the Watertarg and Twilight Elf Assassin, for example, Dodge was made to look more agile and fluid because these characters are known for their light and swift movements. For the Human Knight and Earthen Dwarf, however, who also make use of this skill, Dodge had to look a bit clunkier as these characters should move in a heavier sort of way.
Many skills were worked on for the above characters, from the Twilight Elf Assassin’s powerful Crane Kick and Swift Strike to the Earthen Dwarf’s aptly named Rage and Bash skills, as well as a few others that are shared by the Earthen Dwarf and Human Knight:
- Cleave: This is a heavy hit that deals a significant amount of Physical Damage, and works with either the Knight’s sword or the Dwarf’s hammer, depending on who you play as.
- Dodge: This animation was remade for the Knight and Dwarf so that it looks different to how it does when used with the Twilight Elf or Watertarg, which are far more agile creatures.
- Charge: When working on this skill, the old animation was adjusted and split into two parts: travel (i.e. a running loop) and then hit (which happens at the end of the running loop).
- Rush: Used only by the Knight, this skill is similar to Charge in concept and nature. For that reason, our Animator created an end animation that made it distinctive from Charge.
As always, all of these skill animations will soon be tested in the engine alongside their respective character to ensure that everything performs well with the new rig. With that out of the way, our Animator could shift their focus toward some enemy rigs, which brought around a nice change of pace after a couple months spent working on the playable characters we’ve mentioned so far.
The enemies they started to work on include some of our Undead creatures, namely the Skeletons and Zombies. As with the playable characters, the old rigs for these enemies will be updated to match the unique rig that all bipedal enemies will share, and we’ll have more updates to show you on this in the coming weeks.
Last month, you saw us begin moodboarding ideas for the various set pieces that will appear in Depths of Erendorn. You also saw the early sculpting stages of our flowstones, which were the first set pieces we decided to make. Set pieces are unique, custom-built environment pieces which will be scattered throughout our procedurally generated dungeons.
On that thread, we’re happy to tell you that, throughout February, the flowstone set pieces have been worked on, perfected and, as of last week, completed! Our Environment Artist could then move on to creating the next lot of set pieces – stalagmites:
- The general form of the stalagmites was first blocked out.
- A Substance Smart material was then worked on for the texturing of these stalagmites.
- Once the models were finished, low poly versions were created.
- The stalagmites were then UV unwrapped, baked and, finally, textured.
When it came to texturing, we decided to use the Substance Smart material because this is an advanced material that uses baked data, such as curvature, normal, AO and world aligned normals, to texture assets. We will also be able to use this material on our flowstones, allowing us to create a range of realistic set pieces for our dungeons in an efficient way.
Once the flowstone and stalagmite set pieces were created, our Environment Artist began setting up a separate scene in UE4 for set piece testing and lighting. This is important to do in order to ensure that everything integrates well into our caves. Once the scene had been fully built and lit, the flowstones and stalagmites were implemented. We have tested these set pieces alongside glowing crystal groups and Undead Zombies in order to see how well they integrate – and we’re really stoked about the results.
A TON of visual effects were created for characters’ spells, abilities and skills this month, starting with the Parakaw which, after the following effects were finalised, now has a first draft VFX for every one of its abilities – and trust us, that’s a lot:
- Master of Magic: Visual FX were created for the trigger of this, an ability that gives the Parakaw Astromancer a 30% chance to restore 30% of the Mana cost for each spell cast.
- Starblast: A favourite of ours, this is a particularly powerful ability because it deals Arcane Damage to all enemies in a room when there are four or less remaining. To give this awesome spell more impact, extra stars were added to the room, and these also linger for a moment to create atmosphere. We also added sound effects to this ability this month – so check out the video below to see how it all came together!
- Tempest: This was a funny one because while the original effect for this spell included a cloud that the lightning shot out from, the cloud had actually been lost for a while! We managed to restore it this month so that this Lightning Damage-dealing ability has moved back into the completed folder.
After working on the Parakaw’s spells for what felt like months, and finally getting them all to a first draft stage, our VFX Artist moved on to creating the visual effects for the Forest Druid. In order to create visual coherence among all of this playable character’s abilities, our artist had to think carefully about the Druid’s spell identity.
The Parakaw Astromancer, for example, had all of its spell effects unified by an astrological theme, which was inspired by this race’s affinity with the stars. That said, we decided to use a theme of nature to create visual coherence among the Forest Druid’s spell effects, since these characters live in complete synchronicity with nature. With this in mind, the following effects were created for the Forest Druid this month, with most of them boasting a green colour pallet and elements that are reminiscent of foliage:
- Reserved Power: This is a spell that does one of four things, depending on what the player chooses. It can either restore Mana each turn for three turns, Health each turn for two turns, Energy each turn for three turns, or it can inflict Nature Damage to a given enemy.
- Hunting Spear: If an enemy is next to a wall or object, using Hunting Spear will skewer them against it whilst causing Physical Damage and Stun. A model spear will actually be made for this ability, so we’ll soon be able to add the VFX on top of that.
- Draining Seed: This ability will gradually eat away at an enemy’s Strength over three turns. While it can’t be stacked on one enemy, it can be used on multiple different ones.
- Nature Bolt: Not only does this spell deal Nature Damage that ignores Resilience and Armour, this Damage is increased by 10% for every point of the enemy’s Maximum Movement. We’ll soon be sculpting a mesh for this effect so that it becomes less jagged.
- Replenishment: This gives the player the chance to double their Health and Mana Regeneration each turn.
- Vine Lash: Used at melee range, Vine Lash deals Nature Damage that ignores Resilience and Armour whilst simultaneously disarming the enemy. The original draft for this ability’s VFX included a simple ‘whoosh’ effect that circled round the player. This will soon be replaced with more realistic vines – we’re just waiting on the vines to be made and then we will add them in!
- Binding Roots: This ability roots all one-tile enemies in the room for one whole turn. Like we’ll eventually do with Vine Lash, some roots were created for this effect, and they appear by momentarily wrapping around the player.
- Nature’s Rescue: This ability heals the player for small amounts of Health every turn for four turns, and can only be used when the player has lower than 50% Health.
Like the Parakaw Astromancer, the Forest Druid is now at the point where nearly all of its abilities have first draft VFX created for them, with only a few more to go. We then moved on to creating some new visual FX for a range of generic spells that are used by the Parakaw, Forest Druid and Zentragal:
- Displacement: A generic spell used by all three of the above playable characters, this allows the player to teleport a low level enemy up to three spaces away from them.
- Haste: Another generic spell used by the same characters, this allows the player to choose a team member to grant increased Movement to for a number of turns (or you can choose yourself instead!).
- Stand Alone: This is a spell that the player can cast on themselves in order to increase their Strength for three turns. It can only be used when playing as either the Forest Druid or Zentragal.
- Bolster: This allows the player to choose a team member to restore Health and a small amount of Resilience to. It can be used by the Forest Druid and Parakaw.
Carrying on, our VFX Artist found a really nice tip on creating trails in Unreal this month, so to test out this newfound knowledge they decided to redo the trail for Frostbolt – and we love the results! They then decided to redo some of the other projectiles we have. It was also particularly useful when it came to creating the effects for Mass Fireball and Frost Missiles.
Tweaks were made to the Fireball spell fx in order to create Mass Fireball, which is an upgrade from its less powerful counterpart as it hits four targets instead of one. We carried out a similar process on the existing Frostbolt VFX, which was edited and made into Frost Missiles. Like Fireball, while Frostbolt only hits one enemy, Frost Missiles fire out three bolts on random enemies, hitting one on every turn for three turns.
The visual FX we created this month are actually a good segue into the updates from our sound design department, because our Sound Artist has created a lot of new sound effects that will accompany skills, spells, abilities, and their respective VFX. They started with Relentless, a generic skill used for Energy Regeneration. Since the visual effect for this will encircle a player’s feet, our Sound Artist wanted to create the feeling of being encompassed by sounds:
- The subtle cracking and popping sounds have been added in multiple left/right locations, so it has a slightly more present stereo field.
- The Relentless VFX also looks like it is unstable and hard to control, and this feeling of intense power was mirrored in the sound effects starting and stopping very quickly. This almost hints to the idea that if the spell was cast for any longer, the player themselves would lose control.
Following this, some of the spell effects that were created for the Forest Druid were also brought to life with some sound this month. This includes Draining Seed, Replenishment, Hunting Spear and Nature Bolt. Just as our VFX Artist had to think about this character’s spell identity in order to create visual coherence among the visual effects, so did our Sound Artist have to keep this character’s backstory in mind in order to create a unique sound identity for its abilities.
Since Forest Druids are magical beings from the High Forest who are, as we mentioned earlier, in tune with the rhythms of nature, various sounds of foliage were incorporated into each of this character’s ability sound effects. To do this, our Sound Artist would layer a few different sounds from leaves, twigs, branches and bushes over a recording in order to tie it in with Forest Druid’s identity. Paying attention to these kinds of details is what makes the sound effects feel like they are really rooted in and evocative of the natural world. They also help the player to feel more connected to the uniqueness of their character.
The sound effect for Hunting Spear is interesting, too, because of something our 3D Modeller actually pointed out:
- The original impact sound for this ability was an over-the-top ‘splat’ sound, which made the ability feel extremely comical.
- While it was a fun sound effect, it breaks the realism and immersion of the game, which would be distracting for players.
- In the second version, then, the impact sounds far more like the spear is piercing someone, and even pinning them to a wall (which this ability can do, by the way).
This entire process not only shows how important it is to think of how sound effects impact player immersion, it also shows how important it is to constantly seek peer review, since there are clearly huge benefits to having a second set of ears!
More sound effects were also created for the enemies that will be implemented into the game first. Since there are hundreds of enemies in Depths of Erendorn, our Sound Artist decided to start with some of the Undead creatures, like the Ghosts, Zombies and Skeletons. Many of these harrowing enemies have now been made even grislier with sound effects, especially the Skeleton Archer, which received a lot of gruesome sounds for its:
- Idle, which features some low, grisly panting;
- Movement, which has been made to sound like the Skeleton is almost squelching through mud;
- Hit Reactions, similar to the idle, the sound effects for this convey guttural panting;
- Death, which involves a few distorted and monstrous-sounding effects.
Spells and enemies weren’t the only things that received new sound effects this month. Generic sound sets were also created for a few other characters and creatures, from Elven and Dwarven characters to Humans and Lizards. These sound sets include a load of ‘base’ sounds for each character type, like grunts, growls and snarls. These sounds are more reaction-based, and allow our Sound Artist to get an idea on what each character class sounds like.
They will eventually go on to refine each set of sounds in order to differentiate between variations of characters within the same race. Elven characters, for example, now have a distinct set of generic base sounds – but these will be worked on and diversified in the future so that the Twilight Elves, Storm Elves and Fen Elves all have their own unique sound identity. Work will continue on this in the following weeks, so make sure you stick around to hear all the new updates!
Our Programmers’ biggest aim this month has been to bring us closer to our goal of having Depths of Erendorn playable in Unreal Engine 4. The first step towards this involved making some additions and improvements to the UI:
- A custom material was created to display stat percentages as bars. These will be useful for displaying Health and Mana, as well as Energy levels.
- Overhead Health bars were given to both players and enemies. These Health bars were then attached to update events so that they respond to stat changes.
- A number of UI widgets were added, including a loading panel for displaying the state of the game as the player joins a server; a notification panel which can be sent messages that display while in the game; and the world space health bars that float above game entities.
Other important additions made in order to get the game playable included:
- The object pool was increased to display larger maps.
- Movement path highlighting was added using splines.
- An ‘attack’ command was added so that players can now use normal attacks against enemies.
- Blueprint nodes were added for comparing grid distances between two points.
- We also added a blueprint node to compare FlntPoint structures, which hold an X and Y value.
- Pathfinder helper functions were then added in blueprints.
- Entity Characters now have an initialise function to setup data from the Game Entity class into the Entity Character.
- The Entity Manager now keeps a map of Entity ID for each spawned Entity, and there is an Update function to maintain this map.
- Game Entities can now store information on their current state. For example, information about if they are stunned or disarmed is now managed and made available.
- A Grid Pathfinder was created for the Client. This pathfinder will resolve movement paths for the playable character in the client, allowing the player to move around.
- The Game Server now uses a new spawn system for adding players to the game.
- A dungeon entrance was added, replacing the need to have several spawn-points along one wall in the first room.
Furthermore, the GameServer Connector is now properly accessible, meaning that we can begin to send and receive commands to and from the server. Making the Connector accessible in this way is crucial because it impacts many other areas. For example, Entity State updates, and every other change that happens during a game for that matter, are received via the GameServer Connector. As well as this, with the GameState Updater now fully integrated, it can now also listen to updates that are fired from the GameServer Connector. The Updater then validates them and requests new updates if an invalid one is received.
Furthermore, improvements have been made to the Turn System so that players now know when it is their turn and are able to end it. With regard to this, our Programmers have:
- Implemented input type switching based on turn and action. For example, the mode will now switch if you select an entity that is yours or not, and also if you’re casting an ability.
- Improved how turns are informed and displayed in the client.
- Created a number of events regarding turn changes that can be listened to by different managers or subsystems.
Entity Selection in the game has also been worked on this month, meaning that players can now see accurate information about the entities around them. Stats belonging to the currently selected entity, for example, are shown in the bottom right stat panel. Similarly, the abilities of selected entities are also now shown in the ability bar at the bottom of the screen.
The next area we had to work on was the Ability System where, after a lot of work, single entity target abilities are now usable. To do this, our Programmers:
- Implemented a system for performing abilities.
- This system uses ability controllers to handle different targeting types.
- Ability controllers were thus made for entity targeting abilities.
- They then connected the ability bar input system to allow players to select, switch and cancel abilities for casting.
- Finally, they added ability server request creation and handling to ability controllers.
Another important point to get to in terms of playability was reaching the stage where players are able to do things like view the layout, read a summary of enemies, vote to reroll and, ultimately, spawn into different rooms. A few additions were made in an effort to achieve these goals:
- The method for dealing with set pieces and their sublevels has been updated, and spawn tiles are allocated via this data when rooms are generated.
- The main top-down camera pawn has been created and linked with the player controllers to allow for movement, zooming and tile selection
- A Placement Manager has been added to deal with the pregame phase and validate spawn locations and selections.
Even after all this work, spawning is currently only possible in the first room because the mechanism for moving between rooms isn’t quite ready – but the placement manager will be improved to include this soon.
Our Programmers then focussed on improving the turns, ability controllers and entity deaths. With Turn Orders, for example, dead characters are now removed from the turn display. The ‘End Turn’ button also shows and validates correctly, while the ‘Start Game’ button can now only be used when the local player has spawned.
Then came the Ability Controller, which needed a few updates and improvements:
- We updated the way that abilities are stored and referenced in order to prevent lost data in delegates.
- We validated the method for swapping/removing active ability controllers.
- We added branching for different ability target types.
- We added the ability to cast multi target (entity only) abilities.
- We updated how abilities are selected via the ability bar.
In addition to all this, quite a bit of work was carried out on the pathfinder by our Programmers this month. Again, this was in order to get Depths of Erendorn fully playable inside the game engine:
- First off, they fixed the pathfinder’s path building function. This is because the player could not move more than one step per command, so the path needed reversing to allow the player to move more.
- A secondary map functionality was then added to the pathfinder so that paths will now go around enemies.
- Finally, the pathfinder was updated to use a new structure that stores more information per step. We did this because the server needs this information if we want the player to be able to choose a direction they wish to face at the end of their movement, which will be added at a later date.
From fixing the GameState Updater Desync and stopping the ability bar from crashing in the Client, to working on input controls that will interact with the game, the last thing our Programmers did this month was carry out some necessary fixes:
- In the Entity Manager, the team ID was fixed, since it was previously mismatching on turn updates.
- Doors were not being added to the Set Piece Information on the server, so this was an issue we had to resolve.
- We also resolved an issue that was causing spawn-points on doors to be incorrectly collated when loading a set piece.
- The height of the rooms in the Dungeon Generator was being miscalculated, causing half of the doors in the game to be placed incorrectly – luckily, this is now also fixed.
- Player movement via server logs was fixed, since the player wasn’t being moved correctly.
- Fixes were also made to resolve a lobby bug, which caused XP/Seed to switch each time the settings were attempted to be updated.
- The delegates on the Status Effects Manager were crashing the game a lot so these were resolved promptly.
- Our Programmers also experienced some issues with server messages, some of which were very long if you joined a game in-progress. While this will be reduced in later versions once it’s been worked on more, for now our Programmers added the ability for the server to detect a very long message so that it can send it in chunks to the client. The client then takes these chunks and stitches them back together before processing the update as one.
All of this work continues our Programmers’ objective to get Depths of Erendorn up, running and playable in Unreal Engine. Since we switched over from Unity, this has been one of the main priorities as we’re planning on having the alpha version of the game ready by the beginning of next year.
Thanks for joining us for another monthly game development update! If you’re curious about what we get up to on a day-to-day basis, feel free to join our social media family – or head over to our game site, where we post weekly game devlogs!