April DevLog | Game Development Summary
Welcome back to another summary of everything we get up to in a month! The development of Depths of Erendorn is all-engines-go, and the team is working incredibly hard to get this turn-based fantasy RPG ready for testing in 2021. For daily updates, make sure you head over to our Twitter, Instagram or Reddit where we most a ton of new content every day – but for now, let’s get into the good stuff!
Modelling the Fen Elf Scout Series
The first models we created in April were the Fen Elf Scouts, a class of enemies from the game who are native to the putrid swamps of Erendorn. As a result, they bear a sickly complexion, sharp eyesight and unrivalled archery skills. They are also seen wearing layered scraps of khaki clothing, which help them blend into their surroundings – an important survival skill when you’re surrounded by voracious swamp monsters.
Since our 3D Modeller had already created the base mesh for these enemies a while ago, all they had to worry about was creating their clothing and accessories. They started by blocking everything out in ZBrush, including the various head wraps, face masks and bandages that Fen Elves tend to wear. These pieces were then textured to look rough and threadbare, suggestive of the desperate lifestyle that Fen Elves lead.
One of the most distinguishing parts of this character’s design are the various flowering vines that drape over their bodies, similar to ghillie suits. Fen Elves use these for camouflage, allowing them to slink away into the flora at a moment’s notice:
- The vines were made with textured planes, since this method was a lot faster than sculpting and retopologising them separately.
- When setting this up, two planes were added to the texturing files so that our 3D Artist could paint two variations of flowering vines.
- Once these two planes were painted, we then created a lot more planes that had their UVs mapped to the vine texture.
- This allowed us to quickly create more vines, which we were then able to place around the Fen Elf Scout’s body.
This brought an end to our work on the Fen Elf Scouts. All enemy races are made up of different classes, who in turn do different things. The Scouts, for example, are tasked with leaving the swamplands on expeditions to find new resources and potentially new lands that the Fen Elves can move to. This makes the Scouts an enemy class that travellers often happen upon, so keep those eyes open.
Modelling the Silver Iguana
The next enemy we created was the fantastical Silver Iguana, which appears as a low-level beast in the game. We started by sculpting the body first so that additional pieces, like the spikes, wouldn’t alter the overall shape of the model too much. Then, so that the mouth would close properly later on, we created a sculpt layer where the mouth was posed to be closed.
When it came to the scales, our 3D Character Artist had two methods of approach:
- Face Scales: These were sculpted individually because there is a lot of variation on the Iguana’s face, meaning that we needed more control over the scales’ placement, size distribution and shape.
- Body Scales: These were instead painted on during texturing because they were a lot more uniform. This meant that it would be a lot faster for us to paint them on since we didn’t need as much control over their size and shape.
Once everything had been retopologised and unwrapped, we could finally move on to texturing this awesome beast. The concept design shows the Silver Iguana as having a luminous quality, reinforced by various glowing parts around the jowls. While we wanted to stay true to this fantastical design element, we also had to be careful not to overuse the emissive map, which could have easily overpowered the model.
That said, our 3D Artist opted for a more subtle glow effect around the jowls – but there was another way we were able to really show off this creature’s iridescence and luminosity. A metallic sheen was added to the top, lightest layer of skin, as well as to a few random scales all over the body. This helped to emphasise the silver quality of the Silver Iguana, and resulted in a very ethereal-looking lizard.
Sculpting the Storm Elf Casters
Our third and final enemies of the month were the Storm Elf Casters, a series of enemies who possess an affinity with lightning. As with the Fen Elves, our 3D Modeller had already created the base mesh for the Storm Elves, so sculpting this series was just a matter of modelling the various clothing and armour pieces.
There are a total of 5 classes in the Caster series. According to the lore, in order to rise through the ranks, Storm Elves must enrol in the Lightning Syndicate, a place that teaches the mastery of lightning magic. Once they have reached the highest level of Veteran Wizard, they are then invited to join the Arcane Circle, an esteemed institution that focuses on other forms of sorcery. All Elves in the Caster series have been through one or both of these institutions:
- Initiate Wizards: These are the least powerful of the Casters, and as such wear plainer clothing. They are also the lowest rank in the Lightning Syndicate.
- Overloaders: Novice wizards can only advance to this rank if they are capable of casting multiple spells without overloading themselves – although they are still inexperienced.
- Veteran Wizards: These are the highest ranking class in the Lightning Syndicate, and receive a set of shoulder armour in recognition of this accomplishment.
- Seers: As mentioned above, these spellcasters have surpassed the teachings of the Lightning Syndicate, and instead move on to the hallowed Arcane Circle to learn new forms of magic.
- Seer Overloaders: The greatest spellcasters that the Storm Elves have to offer, these wizards possess incredibly powerful lightning magic, as well as other forms of potent sorcery. These enemies are distinguished by their spiked headpiece, as well as their more extravagant clothing.
Although there are 5 classes of Storm Elf Casters, our 3D Artist decided to only model the 3 ‘cornerstone’ classes, including the Initiate Wizard, the Veteran Wizard and the Seer Overloader. This is because, since these characters all share identical clothing pieces, we will eventually be able to use these 3 models to more efficiently create the remaining 2 classes by mix-and-matching the pieces together.
Shared pieces of clothing include:
- A long gown and undercoat, which is worn by all 5 Casters. We created this for the Initiate Wizard, and then reused it for the rest of the classes.
- A dark hooded shawl, which is worn by all except the Initiate Wizard. Again, we created this for the Veteran Wizard first and then simply replicated it for the others.
- Shoulder armour, which is only worn by the Veteran Wizards, Seers and Seer Overloaders – so this is another piece that will be used more than once.
This method was an effective way of streamlining the sculpting process of these enemies because it meant that only a few unique clothing meshes had to be created. The Initiate Wizard, for example, has its hood connected to its undercoat, rather than the shawl which all other 4 classes have. Therefore, we had to modify its undercoat to make a unique hooded garment for this character.
The Seer Overloader, on the other hand, boasts an impressive headpiece and a grander undercoat that features a decorative front cloth piece – so these were the final unique meshes our 3D Character Artist had to create. Now that we have everything blocked out, we will be able to create the final 2 classes from the Caster series before moving on to adding some sculpt details – so we’ll update you soon on how that’s going!
In April, a lot of work was carried out on unique rigs, as well as the enemies that use these unique rigs. Starting with the rig for smaller quadrupedal enemies, we wanted to see if larger beasts, like the Blackhorn Rhino and Boar, would also be able to use this set up.
Getting as many characters as possible to use the same rig will not only optimise our Animator’s workflow, it will also result in much faster character generation in the game – so we were relieved that after a few adjustments, the Rhino and Boar were successfully using the same unique rig for quadrupedal beasts. There were then a few edits we had to make to some of the beasts that used this rig:
- Boar: After the rig was updated and the skin weights were painted, our Animator created a standard set of animations for this enemy, including things like its idle, walk cycle, hit reaction, attack animation and death animation. They then worked on animating its ‘Charge’ ability.
- Jaguar & Lion: These enemies also received a new standard set of animations this month. Once a set had been created for the Jaguar, they were actually transferred over to the Lion in order to maintain consistency between the movements of these big cats.
- Rat: An example of some of the smaller beasts that share the quadrupedal rig, this enemy had a few tweaks made to it. Its skin weights were adjusted, its animations from the old rig were transferred to the new one, and a bone that was previously missing was added to the back limbs.
Another unique rig we have set up in the engine is for bipeds – playable characters and enemies alike. We already transferred most of our playable characters, as well as the Skeleton and Zombie, onto this rig a while ago, so this month was about getting more bipedal enemies using it, too.
Our Animator managed to get the Wolvajin and Unproven Lionman working with the rig before, once again, having to make some adjustments to the characters:
- The Wolvajin, for example, had the standard animation set we mentioned above created for it.
- Sound effects were even added to these animations to help bring this gnarly creature to life.
- Meanwhile, the Bandit and the Skeleton needed to have their ranged bow attacks updated so that they worked properly with the unique rig.
Finally, a third unique rig was set up by our Animator in April, this time to accommodate our reptilian enemies, such as the Lizards, One- and Two-Headed Crocodiles, Turtles and Basilisks. After updating all of these enemies’ rigs to fit the new one, our Animator then created a placeholder animation for each of the reptiles. Then, once we had troubleshooted some issues caused by the rig transfer, this set of enemies was imported into the engine for testing with the new unique rig.
In last month’s devlog summary, we ran you through how we went about creating some environmental assets for our dungeons. Well, all of these props have now been baked and textured with custom materials made by our Environment Artist in Substance Painter. This includes the stone coffin and runestone, which were given a rugged stone texture; three urns, the material of which is reminiscent of cracked marble; and the firepits, which were made to look like ornate sandstone pieces.
After these assets were textured, we could finally import them into an Unreal Engine test scene, along with the stone portal we also spoke about in last month’s devlog. This portal will appear throughout Erendorn and its dungeons, allowing players to travel long distances. It was imported with variable emissive colour parameters so that we could change the strength of its light emission, and we’ll soon be able to start dressing our environments with all of these assets to really achieve a grand and ancient look.
Speaking of portals, a second portal type was created this month. This portal will be used in the same way as the previous one, except it will only appear in settlements. Therefore, it has a slightly different design. Creating this asset involved a similar process to how we approached the earlier portal:
- Using the orthographic views of the concept design, our Environment Artist first blocked out the basic shape of the portal in MAYA, checking proportions to ensure everything was accurate.
- A UE4 mannequin was then imported as a scale reference so that our Environment Artist wouldn’t accidentally scale the portal in the wrong way.
- Once we were happy with the proportions, we could begin working on design elements like the swords that decorate the outside of the portal, and the gargoyles that decorate the inside.
- Our Environment Artist could then break the portal down into multiple pieces so that they could begin to UV everything.
- The UVs were then arranged to work with generic tiling materials in UE4 for modularity purposes.
- Unique bits of damage, like cracks, were then sculpted onto the rock of the portal, as well as the swords and gargoyles.
- Celtic knot patterns were also created for use on the blades of the swords, as well as the wings of the gargoyles.
- A trim sheet was then planned and created for the base of the portal. This is a highly flexible texture sheet that can be efficiently applied to assets, giving them a high level of detail.
- After applying the trim sheet to the portal’s base, all the various pieces were baked and textured with a grungy material to make them look old and weathered.
- Finally, the entire thing was imported into another Unreal test scene. We’re currently waiting on some VFX to finish it off – so head to the next section to see how those are coming along!
Our Environment Artist also created an overlay material for use with our props. This will add things like snow, soot and moss on top of prop meshes, giving them some environmental touches that will really help them to stand out against our environments.
With the new portal set up in UE4, our VFX Artist felt inspired this month to start creating the visuals that will go along with it. When coming up with the design for these effects, we knew we wanted the portal to feel ethereal, so a bright blue colour scheme was immediately agreed on for this. But we also wanted the portal to have somewhat of a chaotic feel to it, so that it comes across as powerful and intense. Our VFX Artist then went on to create three effect variations, and two were quickly singled out:
- The first was quite reminiscent of a supernova, with a warm, purplish hue swirling inside a blue light. This perfectly captured the chaotic, unruly element of the portal that we wanted.
- The second was rooted in the blue colour pallet, with the light moving in circular motions both clockwise and counterclockwise. A small black hole was also placed in the centre, and glowing particle effects were added around it.
We decided that we wanted the second effect’s circular movement and black hole element to be combined with the chaotic nature of the first effect – so, our Visual FX Artist brought the two together and voila! The visual effects for the portal were complete. To really finish it off, some refraction was added to the portal so that it distorts whatever is behind it, which will add a lot more interest to the game when players are standing around it.
The portal wasn’t the only thing in Depths of Erendorn to receive new visual effects. Our VFX Artist also worked on visualising some of the abilities for the Human Knight, Twilight Elf Assassin and Zentragal Illusionist, three playable characters from the game. Whilst designing the visual fx for these characters, our artist kept their identities in mind and really honed in on them in order to create consistency within their arsenal.
The Human Knight, for example, is a very strong and powerful character, so the VFX for this character feature a lot of puffs of smoke and residual sparks to suggest heavy impacts. You can see this in the following abilities made for the Knight:
- Revenge Thrust: This is a useful ability that deals a good amount of Physical Damage – and when the Knight’s Health is below 50%, it actually deals a higher amount of damage, too. The effect for this was attached to the Knight’s weapon, in this case a sword, so that the shards sent off by the initial flash run up the blade.
- Solemn Word: When you activate this ability, you gain a shield that absorbs small amounts of Physical Damage from every enemy in the room. To balance this awesome skill out, it only lasts for two turns. While it’s not super obvious in the VFX test below, when the player is turning around they will see the shield appear as a sphere from the effects.
- Whirlwind: Every time the Knight is damaged from a normal attack, the player is given a 50% chance to activate Whirlwind. This deals Physical Damage to all adjacent enemies, and the player also gains 3 Physical Resistance permanently when choosing this ability. We wanted the effect for this to be really quick and snappy because, due to the nature of the skill, you might see it quite a lot – so we didn’t want it to be too extreme in case it got annoying for the player.
- Stand and Fight: This is a skill that allows the Knight to heal themself. Like Whirlwind, we wanted the effect for this to be quite subtle, so we decided to use an orb effect that glows from the Knight’s centre, and gives off some luminous particle effects for extra interest.
- Test of Allegiance: An ability we showed you last week, this allows you to either deal Health to a team member, or Physical Damage to an enemy. We’re still tinkering with the enemy-side of this effect, trying to make it less fiery and more reflective of the ability’s damage component. We have an idea on how to do this so it will hopefully be finalised soon.
All of these abilities are unified by similar effects so that the player feels the uniqueness of their character. The same was done when creating the visual effects for the Twilight Elf Assassin, a character who is attuned to the Void and likes to dabble in the illicit side of life. The mysterious and somewhat intimidating nature of this character led our VFX Artist to unite their abilities with deep, purple colours, which are indicative of Void magic, and dark shadows to reflect the Assassin’s equally dark nature:
- Shadowleap: This allows the player to leap behind an enemy in a 6-tile radius and deal Physical Damage to them. For this ability, our VFX Artist decided to focus the effect on the actual landing, or ‘attack’ moment of the skill, rather than the initial jump/teleport phase.
- Blindside: Similar to Shadowleap, this can only be used when sneaking up on an enemy from the side or from behind, and it always hits for critical damage. Since this is a fast and sly ability, we wanted to use a quick and clean effect in order to reflect the Assassin’s stealthy tactics.
For the Zentragal Illusionist, however, our Visual Effects Artist decided to play around with some liquid-like effects to express the fact that this character is prone to use a lot of poisons. This comes from the fact that she is a humanoid spider and, like the Assassin, had a dark side to her personality. The following effects were made for this character’s abilities:
- Web Blast: This allows the Zentragal to fire a web at an opponent, so our Visual FX Artist had to create a nice webbed effect for this. Web Blast can either stun a 1-tile enemy for two turns, or a 2-tile enemy for one turn.
- Corrupt: This is an example of one of the Zentragal’s destructive, rather than illusionary abilities. With Corrupt, the Zentragal can deal Void Damage to an enemy whilst also reducing their Movement.
- Mass Agility: At the beginning of the next turn, after this ability has been activated, all fellow team members will receive a 50% chance to use a passive dodge against all normal enemy attacks. The visual effects for this will actually be changed later as we’re currently working on a new texture for it.
- Easy Prey: A pretty useful ability, this grants you an increase in Energy and Energy Regeneration when there are five or less enemies in a room.
- Quickening Poison: This deals a significant amount of Nature Damage to an enemy, and also increases your Movement for one turn.
- Siphon Movement: When you use this ability, you can target an enemy to lose Movement, and in turn increase your own Health. You can even heal an extra 10% per Movement siphoned.
- Arcane Arrow: This ability deals 1 Arcane Damage per tile, meaning that if an enemy is 3 tiles away from you, the ability will deal 3 Arcane Damage, with 6 tiles being the maximum range.
- Unholy Bolt: This deals a significant amount of Void Damage to a random enemy.
- Inject Poison: Another poisonous ability, this deals Nature Damage to an adjacent enemy as well as restoring a good amount of Health to you.
- Spider Swarm: An arachnophobe’s worst nightmare, this allows the player to summon a swarm of skittering spiders, each one able to deal a significant amount of damage.
- Debilitate: This causes a chosen enemy to lose Energy every time it moves one tile. Lasting for seven turns, this is a great way to strategically weaken your opponent.
Bonelair Gargoyle Flesh Rippers
A lot of characters benefited from new sound effects and vocalisations last month, from the spellcasting Parakaw Astromancers to the enormous Rockbark Treemen. But one of the visceral, most ferocious sets of sounds belongs to the Bonelair Gargoyles or, more specifically, the Bonelair Gargoyle Flesh Rippers. These enemies are the stuff of nightmares, with voracious appetites, monstrous appearances and cannibalistic tendencies.
To really make these Gargoyles come across as the savage creatures they are, our Sound Artist opted for wild, animalistic vocalisations that were mixed in with curdling screeches. At the same time, we had to keep in mind that Bonelair Gargoyles will eventually become playable characters, so we had to pull back on the gruesome sounds a little bit – but not too much! At the end of the day, if you choose to play as a monster such as this, you’d expect to really feel like one, so the savage animalism of their sound design was still upheld.
Stone Golem Slavers
Another character we created sound effects for in April was the Stone Golem Slaver. Stone Golems are anthropomorphic beings, brought to life by infusing stone, earth and a living soul with powerful magic. While these characters stand at eight foot tall, and are incredibly strong, the Slavers are actually the weakest of these NPCs.
As such, our Sound Artist didn’t want to make their vocalisations too intense because the more powerful Stone Golems will need to sound much bigger. When it came to their sound design, it was also important to keep the lore of these creatures in mind so that they sounded believable and accurate.
According to the lore, Golems can only be brought to life with the soul of a sacrificed person. While they do not speak, our Sound Artist thought it would be apt if their vocalisations sounded like they were being forced out, suggesting that this is the voice of the sacrificed soul that the Golem is straining to get out. But the intense strain of these sound effects also work because they really drive home the fact that these creatures are made of stone – and if drawing blood from a stone is difficult, then we imagine drawing a voice out of one would sound something like this!
All three Elven races in Erendorn received sound effects this month, including the Fen Elves, Storm Elves and Twilight Elves. Not only did these Elven folk have to sound distinctly different from other races, such as Dwarves or Humans, but they also had to sound distinctly different from each other. To do this, our Sound Artist read their lore closely so that their sound design was reflective of their behaviours, their lifestyle and their native lands.
Starting with the Fen Elves, we wanted these NPCs to sound slightly more hoarse than other Elves because these characters spend every moment of their lives in a struggle for survival. If you remember what we said earlier about these enemies, they hail from the fetid swamplands where, if disease doesn’t kill them, giant swamp monsters certainly will.
To make them sound disease-ridden, our Sound Artist gave a hollowness to their voices, which works nicely with their sickly green pallor. Alternatively, to make them sound like true survivalists, a strain was added to their vocalisations – similar to the Stone Golem Slavers’, except this time the purpose is to indicate that these Elves have to struggle through everything in life, even speaking.
Unlike their swampy cousins, Storm Elves have made their native, perilous terrain work in their favour. This race of Elves lives in an area of the Plains where huge thunderstorms rage all year long – but over the many centuries, Storm Elves have become immune to these disasters, and have actually been able to harness powerful lightning magic from it. Their bodies have, however, been heavily scarred by the lightning, a distinguishing feature of this character race.
The Storm Elves’ affinity with lightning made our Sound Artist decide to blend thunderous and electrical crackles into their vocalisations, making it sound as though lightning is literally coursing through their veins. But there is fine line between making the Storm Elves sound like they are one with lightning, and making them sound like they are made of lightning, so we were careful to use these sounds subtly.
As we mentioned earlier in this devlog, Twilight Elves are a secretive and guileful race, most well known for their proclivity for toxic warfare, their lethal Guild of Assassins, and their attunement to the dark magic of the Void. Their attunement to this shadow realm grants Twilight Elves with powerful, illicit magic, which is physically manifested in the dark colours and shadowy shapes of their visual effects.
We similarly wanted their sound effects to sound indicative of these taboo practices, so their vocalisations were layered with indistinct breaths and whispers, as though they are one with and are communicating through the shadows. Our Sound Artist went a step further by inventing an unintelligible language for the Twilight Elves, which they will whisper during combat as a way of disorienting the players and emphasising their elusive nature. We will need to test this first to see how it works, but so far we’re loving the idea.
Sound FX for Abilities
A few sound effects were worked on for abilities this month, and they correspond with their respective visual FX to bring alive the character who’s using them. We started by creating sounds for some of the Human Knight’s skills and abilities, which we wanted to sound powerful and hard-hitting. You’ve already heard some of these in the Visual FX section, so here’s a little more insight behind our choices:
- Revenge Thrust: The sound of the blade was really emphasised for this ability to make it sound especially lethal.
- Solemn Word: This was given a slightly more airy sound design to mimic the ability’s absorption of Damage.
- Whirlwind: Like the VFX, we wanted the sounds for this to be short and snappy since it’s an ability that players might hear and see a lot.
- Stand and Fight: Since this allows the Knight to heal themself, the sound effects were also kept quite short and ethereal.
The next playable character we created ability sound effects for was the Parakaw Astromancer, specifically for its powerful spell titled Arcane Rain. Using this will deal Physical Damage to enemies within a 6×6 tile radius. The visual effects for this ability show sharp shards falling down and slicing through the ground, so metallic sounds were used to emphasise this motion and impact. It also makes the visuals seem deadlier by making them sound razor-edged, like knives.
Forest Druids were another playable character whose arsenal of abilities were brought to life with sounds in April. These characters live in the High Forest, and are completely at one with the cycles of nature. As such, our artist included the sounds of shaking foliage, rustling leaves and gusts of wind in their sound design:
- Nature’s Rescue: The Forest Druid is able to use this spell on any team member who is below 50% Health, and heals them for small amounts of Health every turn for four turns.
- Heal Wound: Like Nature’s Rescue, this ability allows the Forest Druid to heal a selected target, returning a significant amount of Health back to them in their time of need.
- Binding Roots: A very useful ability when the going gets tough, this spell roots all one-tile enemies in the room for one whole turn, allowing everyone to get their shots in easily.
- Reserved Power: This spell 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.
The final bit of sound design carried out was on a character race called the Rockbark Treemen, appointed guardians of the High Forest who appear as both allies and enemies in Depths of Erendorn, depending on your luck. These humanoid trees appear in three main sizes: Rockbark Saplings, the youngest and weakest of the race; Large Rockbarks and, finally, Immense Rockbarks, who are among the oldest and strongest.
Our Sound Artist kept these different classes in mind when working on their sound design because it was important to figure out the right amount of scaling for each class. We want every stage that the Rockbark Treemen go through to feel bigger than the last. So, in order to achieve this, our Sound Artist added more bass and ‘impact’ sounds to the Large and Immense classes.
Another way we differentiated the sounds between the different sizes of Rockbark Treemen was by increasing the length of each sound so that the older the Treeman is, the longer it takes them to ‘speak.’ We’re hoping that this will give an auditory indication of their age and size, making each class feel unique to itself.
There were a TON of improvements made in the Programming department in April as we work towards getting Depths of Erendorn fully playable and ready for future testing; and high up on our Programmers to-do list for this was getting the wall splines up and running in our Cave Dungeons.
They started by creating a way to turn a grid representation of the walls into ordered points on a spline. They did this by:
- Looking at the grid data and grouping them into connected wall pieces.
- These points were then expanded into faces, which needed to be rendered.
- The faces were linked up and ordered to create a flowing spline that covered every face.
It may sound straightforward, but this was actually quite a difficult task. The hard work paid off in the end, though, and the spline generator now works really well. It works by:
- Detecting loops and linking up the start and the end points.
- These generated splines are then used by the room generator.
- The new blueprint generates the meshes and takes note of where the corners are.
- The meshes are then chosen, scaled and placed along the spline.
- These all then link up with each other in order to create our walls in the game.
Using spline points to create walls has a few key benefits, namely that it is a much more flexible system than using a tileset method – and we’re speaking from experience here, since we used a tileset method in the original Unity version of the game. Using a spline generator allows the walls to bend and fit the space between the points, as well as any other shape required.
After we got the walls to grid in this way, Sod’s Law dictated the rise of a bug that prevented some walls from rendering on specific map seeds. The cause was that not all unreachable wall tiles were being correctly removed from the map, thus creating walls that couldn’t be connected. Our Programmers were soon able to resolve this, however, before working on getting the walls to disappear when a player looks at them from behind. Instead, the player will see a little rim at the bottom of where the walls would be, lending a tidier and more aesthetically pleasing element to the game.
Speaking of aesthetics, the next important thing we’re going to be focussing on when it comes to the wall splines is getting them to look visually appealing. At the moment, several issues with sizes and overlaps prevented our Programmers from getting them to this point, but at least the base of the walls is functioning, which is the important thing! Here’s how we plan to improve the appearance of the walls:
- More meshes and textures will need to be made in order to get the walls looking realistic and appealing.
- We will also need to put some more work into the variety of models we use for the walls so that we avoid too much repetition with them.
- Random variations and props will eventually be placed at arbitrary points along the spline in order to add more visual interest.
UI for Entities & Character Creation
A lot of work was carried out on entities and character creation this month, from setting up a base class for entities to working on the character selection screen. With that in mind, our Programmers started by doing a bit of housekeeping on the overhead UI for entities:
- Selection Highlights: This was implemented so that the overhead UI will show when a specific entity has been selected – like, for example, when a player selects an enemy to attack.
- Enemy Intention Highlights: This will show when an enemy is targeting the currently-selected player, i.e. the player whose turn it is.
- Overhead Widget: This was improved to allow for scaling, as well as to allow damage numbers, states and status effects to be shown correctly.
- Zoom Scaling: Curves were added to this to allow us to define the UI behaviour dynamically, based on scale.
Next up was altering the game’s database for enemies and players alike so that entities can make use of a base class. This was crucial in getting our character creation system working properly:
- Before this, there was no way of creating new characters because we altered the asset paths for entities.
- This meant that we needed a way to track the class of a player-made character in order to retrieve the player model.
- Using this base class ID as a point of reference, we can now retrieve the player’s model without any issues.
Lastly, a lot of improvements were made to the character selection screen so that it now remembers the last character a player selected. This information is then stored in the same save file as the rest of that player’s preferences. Finally, the save system was upgraded so that all settings can now be stored together.
Another important topic on our Programmers’ to-do list was creating a blueprint template for bipedal animations in the game. To do this, a blueprint interface first had to be made for bipedal characters. Once it was all working fine, blends were then added for walking and attacking along the blueprint integration. In addition, our Programmers also created logic that allows ability animations to be triggered and listened to by other game systems.
Navigation options were then explored so that we can make the best out of character animations. Following this, NavMesh was then implemented into room generation in order to allow simple pathfinding, which we will be able to test walk animations with.
A massive breakthrough this month involved the setting up a new Action System, a development structure that will allow animations, visual FX and sounds to be triggered and dealt with around abilities, status effects, room event actions and any other situation where we want to use combinations of these assets:
- In a nutshell, the Action System is a way of combining game logs into sequences of actions.
- Anything that happens in-game is communicated via logs, and each log does a specific thing.
- When an ability is cast, for example, the server sends a series of logs that represent the steps of this action, including a ‘stat change’ log, a ‘damage’ log, an ‘entity died’ log, etc.
- By creating the Action System, we are able to detect when one of these greater actions is taking place. We can then collect its logs and modify how and when they are executed.
- Once the logs are collected, we can add in Animations, VFX and Sound to the steps we want to trigger them on, before executing them for players to see.
When implementing this system, we had to think about the functional underpinnings of how assets like visual effects, animations and sounds could be used together in modular ways, while also keeping focus on the workflow that we aim to provide for the respective devs, e.g. the Animator, Sound Artist and VFX Artist. This meant that we not only had to from a gameplay perspective when developing the system, but also from a development team perspective so that we can also open up the project to better in-engine collaboration among team members. To do this, we are going to:
- Make template assets that represent each individual action and make use of custom blueprint nodes.
- This will allow our Animator, VFX Artist and Sound Designer to work hands-on in the engine when it comes to building, modifying and polishing up their content.
Once we had all of the leg work out of the way, we could begin building and testing the framework of the Action System, which involved some foundational work:
- Converting how the game logs are collected and played out from consecutively to recursively: This means that instead of playing logs one-by-one as they’re received from the server, a log may become the parent of any number of logs and, when played, execute these through their child logs before continuing.
- Adding a feature to the way logs are generated so that we now store collections of logs before initialising them: This means that before execution, we have access to the data contained within. We can then play around with the order of logs before they are played out, giving us much more control over translating server actions to client consequences.
When testing the game, it now plays through this new system while running as before. The key difference is that we can now create client-only steps that make use of animations, VFX and sound. We can then selectively add ‘before’ or ‘after’ server logs in order to create a more immersive experience and give life to the game events as they unfold.
We could then start improving the structure of and adding capabilities to the Action System. Our Programmers work on this included:
- Ensuring that the execution of steps can work with any set of logs, and prevent infinite loops being triggered by circular recursive execution.
- Creating the framework for Custom Steps. These work like the Log Steps, which were implemented last week, but contain clientside assets and logic for displaying those assets.
- Creating Custom Step templates for animation, VFX and sound, as well as for their individual methods of execution and parameters.
- This means that if, for example, a specific frame of animation is due to follow a visual effect, it will wait for the specific event to happen before proceeding, i.e. it will wait until the VFX have finished playing.
- Creating methods for calculating where, within existing Step queues, Custom Steps should be inserted. We did this by searching through and appending based on occurrences of other Log Step types.
- Adding a Custom Step initialisation phase to Stepper logic to allow Custom Steps in the queue to be initialised after they have been added.
The Action System is really starting to come together after all these improvements had been made, and we’re eager to see how it will optimise other team member’s workflow when it comes to implementing and modifying their respective content.
Ballots & Improvements
In other news, the transition of the Gamestate was adjusted this month because there was a little issue where it would unpause the game after a reroll vote, rather than going back to a paused state until all the players had transitioned into the next room.
Speaking of votes, our Programmers also changed how Ballots, i.e. votes, are handled on the server, as well as how they appear in logs to the client. This was done in preparation for the new Action System we just mentioned, so that ballots will be more consistent with other events that happen on the server.
In order to accommodate the changes to the Ballots, a few quality-of-life improvements first had to be made on both the client and the server in order to stop entity stats from going out of sync with the server:
- The stat panel now listens for updates, and updates itself when they happen.
- The Turn Manager now expires stat changes on the turn start and end.
- ‘Parsing’ and ‘Perform’ functions were added for removing specific stat changes.
- These will be used, for example, to remove any stats that were changed by a status effect.
- Therefore, when a status effect is removed, any stat changes that are not permanent will now also be removed.
- With this in mind, we added the ability to remove specific stat changes in the stats class.
- We fixed the ‘expire stats’ function in the stats class and made it more usable.
- We added a function that would check whether 2 entities are enemies.
- We removed the ability for the player to attack themself or other friendly allies.
- The gamestate updater was updated so that it would have the ability to remove the specific stat changes mentioned above.
Another important aspect of the game worked on in April was setting up an outer gameplay loop. This involved creating the ability to allow players to exit either an in-progress or finished game, return to the main menu, and then join a new game. This process is what an outer gameplay loop refers to.
Following this, we then added the ability to correctly clear a game scene before the player returns to the menu. With that said, objects and connections in the game are now correctly cleared before being destroyed. This allows new games to be found and joined without restarting the client, which was the case before.
Last but certainly not least was the audio manager, which needed a lot of improvements made to it before being reintegrated. Part of this work was making it so that there are now different settings for audio. Currently, we can change the master volume, the music volume and the SFX volume independently of each other. In addition to this:
- The audio manager now exposes its volume setting to other classes in the project so that the settings can be honoured.
- The audio manager now also saves a player’s preferences between sessions, remembering things like volume.
- The audio manager will now try to keep all connected players at the same point in the music playlist.
- The audio manager now randomises the in-dungeon playlist based on the map seed. This, combined with the last point as well as some coding magic, means that players will be hearing the same music at the same time.
Finally, the settings screen was updated so that audio settings are easily changeable. Speaking of the settings screen, we’ve added tabs to it this week for different types of settings, giving us much more flexibility when editing the screen at a later date.
Okay, so we lied – the audio manager wasn’t the last thing our Programmers worked on this month. They also added the ability for players to ping the map. Doing this will display a visual effect that draws the players’ attention to a specific point on the map, allowing them to point things out to each other. The visual FX are still being refined for this, but so far we like the direction they’re going in!
Thanks for coming along for this month’s ride, everyone! As always, if you like what you see then come join our social media family – or, if you’re wanting more regular updates, check out our weekly devlogs.