Happy Friday, guys, and welcome to our inaugural devlog for April! We’ve had a really busy week so far, and have made a lot of progress in all departments, from character creation and animation updates to newly textured assets and awesome visual FX that have accompanying sound effects. As well as all that, we’ve welcomed a new Programmer to our ever-growing team, and their arrival means the beginning of an exciting new project – so stick around to hear what’s going on!
We finished off texturing the Storm Elf Warrior this week, and once this was done we used this model as a base to create two more class types: the Storm Elf Fighter and the Storm Elf Captain. We made the varying levels of strength between these characters obvious by texturing their armour slightly differently:
- Storm Elf Fighter: The weakest of the three, this character wears no armour on top of its gambeson, save for some simple bracers and a leather waist belt. We also made the Fighter’s shoes a simple design to further suggest that this is the less powerful enemy.
- Storm Elf Warrior: As well as bracers and a waist belt with straps, the Warrior wears a full set of armour on its shoulders and hips. We textured this with a dark metal and added subtle silver edging to it. The Warrior’s shoes also feature a shin guard for added protection.
- Storm Elf Captain: As the strongest of all three, we decided to give the Storm Elf Captain gold trim all along its armour to really accentuate the physical prowess of this enemy. The Captain has the most protective shin guards, too, which also feature gold detailing.
With these characters out of the way, our 3D Character Artist continued the Elven spree they’ve been on recently and began working on the Fen Elves – more specifically, the Fen Elf Scouts. This is a race of enemies that live out their days in Erendorn’s fetid swamplands, though not out of choice. As such, they possess a sickly pallor, keen sight, and excellent archery skills.
The concept design of these enemies shows them wearing lots of layered scraps of clothing, so our 3D Character Artist started by sculpting bandages, head wraps, face masks, and other bits of cloth that drape over one another. Everything has now been blocked out and is currently being detailed, so we’ll update you next week with how this model is coming along.
This week, our Animator continued working with the new unique rig that they previously set up for smaller, quadrupedal beasts, like Lions, Wolves, Rats etc. This time, however, they wanted to see if some of the larger quadrupeds would be able to share this same rig. They ended up testing the Blackhorn Rhino and Boar in the engine to see if they would be compatible, and we’re happy to say that this was a success!
As well as this, more bipedal enemies were set to fit the unique, humanoid rig that is shared by all of our playable characters – and, as of last week, the Zombies and Skeletons as well. These bipedal enemies include the Wolvajin and the Unproven Lionman, so we’re really stoked that this unique rig is able to work with a variety of characters like this.
Although these two unique rigs are working really well, a third one had to be set up this week for use with some of our reptilian enemies, such as the Lizards, One- and Two-Headed Crocodiles, Turtles, Basilisks, and many others. After updating all these enemies’ rigs to fit the new, unique one:
- Our Animator created a placeholder animation for each enemy type.
- They then made sure the bone names and hierarchy matched for all enemies in this group.
- They also had to troubleshoot any errors that were popping up with the rig during the transfer process.
- Some of the enemies were then imported into the engine with their placeholder animation for testing.
We were happy to see that the new rig was working for the Lizard, One-Headed Crocodile and Turtle – the next enemies that we’ll test will be the Two-Headed Crocodile and Basilisk, so we’re hoping that this goes just as smoothly. Our Animator is currently researching how to better optimise rigging and animations for the engine. This led them to a document that confirmed they’re on the right path for now, so that gave them some peace of mind!
Continuing on with the creation of assets that we’ve been working on for a few weeks now, our Environment Artist was able to bake all the environmental props that they started in last week’s devlog. They went on to create a few custom materials in Substance Painter, which they were able to texture some of the assets with:
- The stone coffin and runestone were given a rugged stone texture to make them appear rough and organic.
- The three urns were given an off-white, smooth texture that has been marred by years worth of cracks, fissures and dirt.
- The fire pits were made to look more like ornate sandstone pieces that, once again, have the markings of time cracking along their surfaces.
Our VFX Artist has spent this week finishing up a lot of the remaining abilities for the Human Knight, since most of the visual fx have already been made for this playable character. With that in mind, the following ability effects were completed this week:
- 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.
Visual FX were also worked on for the Twilight Elf Assassin this week:
- 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.
Whilst making all of these visual effects, our VFX Artist really started to find and hone in on the characters’ identities, and they represented these by reusing a lot of similar shapes and themes throughout their respective VFX. The Twilight Elf Assassin’s identity, for example, is preserved in the deep purple colour schemes and the ominous shadows that underpin their abilities. The Human Knight, on the other hand, is physically very strong and powerful, so puffs of smoke and residual sparks are used to convey this identity trait.
Speaking of the Knight, this playable character didn’t only receive new VFX for its abilities – it also received new sound effects that correspond with the visual elements. In addition to all the Knight abilities mentioned above, excluding Test of Allegiance, our Sound Artist also created effects for Slay, which automatically kills beasts and humanoid enemies that have less than 50% Health, and Fist of the Titans, which stuns a random 1-tile enemy for one whole turn and grants extra Zeal per turn.
Moving on, last week we mentioned that we were starting to work on the sound design for Flesh Rippers, one of the class types among the Bonelair Gargoyles. This is a grotesque enemy race that is notorious for gorging themselves on any living creature they can find. These nightmarish enemies have a voracious appetite, monstrous appearance and have even been known to cannibalise each other. To really accentuate these features, our Sound Artist created sound effects that were quite animalistic:
- The vocalisations were originally made to sound extremely savage and wild.
- A curdling screech was also mixed in to really push the monstrous quality of these characters.
- However, since the Bonelair Gargoyles may become playable characters in the future, these noises had to be toned down a bit.
- The savage, animalistic quality was still upheld, though, because if you choose to play as a monster like this, you’d want to really feel like you were one.
Our Sound Artist also worked on the Stone Golem Slavers this week. Stone Golems are anthropomorphic beings that are made from stone, and brought to life with the use of magic. While many Golems are docile beings, and are often seen in tow of Merchants as they travel across Erendorn with their goods, there are some that have a more violent streak and appear as enemies in the game.
While Stone Golems are eight foot tall and incredibly strong, the Stone Golem Slavers are the least powerful of this enemy type. Our Sound Artist wanted these characters to sound like their voices are being forced out, as if the Golem is straining to talk or make a sound. This is a nod to their lore, which dictates that in order to come to life, a Golem must first be infused with the soul of a person. Because Stone Golems don’t speak, their sound design suggests that this is the voice that the Golem is trying to force out.
Last week, we welcomed a brand new Programmer to our team – and now that they’ve settled in, we’d love to share their work with you! In the future, this new Programmer will hopefully be working on implementing some AI systems into Depths of Erendorn, which we’re really excited about.
For now, though, they’re focussing on redesigning our entire website – yep, that means that what you’re reading this devlog on now is going to completely change over the next few weeks! Having a website that favours user experience, is well-designed, and really shows off our fantasy RPG is incredibly important when you’re putting out a game, so we can’t wait to see how ours will metamorphose.
Our Programmer is currently working on the technology stack for the website. A tech stack is basically a number of software products and code languages that make the foundations of a website. So far, we have made the following decisions for the tech stack:
- We have decided to use Strapi as the CMS because it can be easily used by our front-end developers when creating posts.
- MongoDB will be used for the database, given how scalable and flexible it is.
- DigitalOcean Spaces will be used for file storage because it will allow us to store and serve high quantities of data, which is crucial for a game website.
Once these decisions had been made, Strapi CMS was set up in the DigitalOcean Droplet, i.e. the Cloud Server. We then created a few content types in the CMS based on what features we’re currently using on WordPress, before beginning the colossal migration of all our current content to the newly set up CMS.
We need to complete this content migration before working on the website because it will help us to design the website in a much better and conscious way. The only barrier that may affect moving all this content over is Strapi’s plugin for DigitalOcean Spaces, which we’ll need to get working. Doing this is crucial for migrating media files, like images and videos, from WordPress. At the moment, our Programmer is working on getting this all set up – so for now, here are some screenshots of the new CMS!
This week, our other two Programmers spent most of their time trying to create a way to grid walls into ordered points on a spline. The benefits of using spline points to create walls in the cave dungeons is that it will be a much more flexible system than using a tileset method, which is what we used in the original Unity version of the game. Using spline points, the walls will bend to fit the space between the points, or into any shape required.
However, this task proved to be more difficult than we first imagined, with the first two attempts at making nice-looking walls ultimately failing. We do have high hopes for our current in-progress attempt, so fingers crossed we’ll have conquered this before the weekend.
There was also a bit of work carried out 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.
Our Programmers then worked on setting up the ability to allow players to exit a game, whether it’s in-progress or finished, and return to the main menu before being able to join a new game. This is known as the gameplay loop.
In other news, the transition of the Gamestate was adjusted 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. As well as this, the game’s database had to be altered for enemies and players alike. Now that this has been done, entities can now have a base class. This was needed in order to fix our character creation:
- 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.
Changing a fundamental field on entities like this means that we now have to make a lot of changes in a lot of different systems that interact with entities – but it was what we ultimately needed to do, so we’re powering through it!