DevLog Roundup: Game Development Updates from January
January was a really busy month for the team working on Depths of Erendorn – and with new animations, set pieces, sound effects, and UI developments, it’s safe to say that we had a productive start to 2021! We also reworked our Cave Dungeons, some old character models, and visual effects, while making a lot of headway with the new Golang server. As always, check us out on Twitter, Instagram or Reddit for daily updates on our online RPG – now let’s get into it!
Throughout January, our 3D Modeller has been revamping a few of our old, pre existing character models. So far, they’ve boxed off the lions, the female base, the Forest Druid, the two Dwarf races, and the Undead Skeleton.
Resculpting Lions & Bases
Both the Plains Lion and Mountain Lion were resculpted last month, with particular attention paid to their manes and paws:
New Proportions for the Female Base
The female base is used as the foundation for all our humanoid female characters, be they Sorceresses, Forest Druids or Storm Elves. In a nutshell, if the base isn’t looking right, it will affect a fair few characters. This led our 3D Modeller to refine its body and facial proportions a little, as well as retexture it, so that everything was more refined and realistic. Check out the before and after:
Refining the Forest Druid
With the female base updated, our 3D Modeller used this to remake the Forest Druid base, which also benefited from some updated wooden textures for the skin. The original clothes for this character were then refitted to the new base:
Beefing Up the Dwarves
We all know that Dwarves are quintessentially short and stocky, and while we had the former down to a T, we thought that the Dwarf base would benefit from being beefed up a little. That said, our 3D Modeller went about making this base look much stronger and bulkier than it did before. They then took the new base and refitted the Earthen Dwarf and Frost Dwarf’s clothes to it.
Last but, for fear of your life, certainly not least is the Undead Skeleton, which was resculpted in ZBrush. When doing this, we basically made everything way more extreme, like the depth of shadows. The anatomy was also fixed to be more accurate and, well, bony. Here’s the before and after:
Last month, a bunch of animations were created for character class abilities, generic spells, and a few basic character movements. Here’s a list of everything created:
- Magnetic Grip: Used by the Earthen Dwarf to pull and root an enemy to an empty space, where they will take Earthen Damage for two turns. You may remember seeing the visual fx and sound fx our devs created for this ability, so getting the animation sorted will finalise its progress journey!
- Venomous Bite: Used by the Zentragal Illusionist to bite a target for Physical Damage, whilst also applying a venomous debuff for three turns. At the end of each of these turns, Nature Damage will be dealt, with the damage amount increasing a little per turn. Finally, at the end of this ordeal, the enemy is stunned for one entire turn.
- Spiderling Implant: Another Zentragal specialty, this ability allows the player to summon a Spiderling from the impending death of an enemy. You won’t be successful at doing this every time, though – the Spiderling will only be summoned if the enemy dies on the same turn the ability is used on. While we were creating the animation for this, our Animator also created a quick left and right shuffle for the Zentragal.
- Challenge: When playing as the Knight, you can use this ability to provoke an enemy. Two animation ideas were created for this, and we have since settled on the one we think suits the ability best. We haven’t got round to polishing this up yet, but so far we’re really pleased with how it turned out.
- Animation set for generic spell casts: These animations will be used with any playable characters for generic movements and spells. At the moment, we’ve tested them on the Watertarg Excursionist, Forest Druid and Parakaw Astromancer, adjusting the animations each time to fit the different character shapes so that we could make sure they transferred properly.
Set Piece Design
A ton of new set pieces were created last month, from sacrificial altars and destroyed campsites to murky ponds and an ill-fortuned mining site. Everything on this list will be reused as different variants and placed procedurally throughout the game so that we have good variation in the environment:
- Altars: Two sacrificial altars were created for the game in January. These are made up of multiple meshes, allowing us to easily recreate them into different variants so that everything is unique.
- Candles: Of course, our creepy altars had to have some gothic candles to match, so these were worked on as well. The new candles make use of an emissive map that fakes subsurface scattering, giving them an awesome glow.
- Destroyed camp: Our Environment Artists had the great idea of including destroyed campsites as a nod towards past misfortunes. We thought this added a nice bit of depth to the history that underpins Erendorn’s dungeons.
- Abandoned mining site: As another hint to unfortunate goings-on, we created a mining cart that’s been abandoned mid-way through harvesting valuable crystal. Who knows what could have interrupted this resource hunt? In the shadowy depths, anything is possible, and that’s exactly what we’re trying to convey here.
- Murky pond: Our dungeons are already decked out with stalagmites, crystals, rock formations and various other assets, so what did we feel was missing? A dark, murky pond, of course! There are quite a few swamp-dwelling creatures in Erendorn that will lie in wait for weary travellers, so we thought this set piece would give us the opportunity to have a few hiding in the dungeons.
In addition to these set pieces, a new modular kit for the settlement palisades was also created in January. We did this in order to make the palisades look chunkier and spikier, which gives them more interesting silhouettes and a better overall aesthetic. They’re not as creepy as the dungeon set pieces, but still pretty important!
Scroll down to see all the screenshots of our new set pieces and palisades:
On to the world environment, a lot of improvements and additions were made last month, starting with a bunch of landscapes that were created using a new mountain creation method in Houdini. This method will allow us to author landscapes in a more tailored way, meaning that we can align them with our concepts much more closely.
Here’s a quick look at the rest of the improvements made to the environment last month:
- Foliage placement tools were leveraged to populate the settlement level with trees, bushes and boulders
- The terrain material was tweaked and altered to make the snow more visually pleasing
- Methods of how to better place instanced meshes in the world using Houdini were researched
- Three new variations of spruce trees were created, each one optimised with new LODs
- Grass and tree spawning were improved, and the outer world play area was refined to be less bumpy
- A day/night cycle was implemented for the first settlement map, giving us the first view of our little community at night!
As well as improving the outer world environment, we also gave some TLC to the subterranean Cave Dungeons. This came in the form of:
- New fog material and particle effects
- Texture brightening
- Asset blending on intersection
- Swapping out textures for better ones
- Lighting improvements
- Improving the skylight so that it’s driven by a cube map
- Fixing post processing eye adaptation and auto exposure
- Fixing randomly spawned lights that weren’t emitting light
- Reworking and simplifying the cave wall material and upgrading its appearance
- Adding directional light to the lighting scene for the chance to create light shafts within caves
In January, our VFX Artist’s work was split between creating concept sheets for future abilities, refining visual effects in-engine, and improving on pre-existing visuals for character abilities.
The in-game effects that were worked on last month include some variations of fire, which are now looking much better, as well as the fog system, which had been acting up quite a bit. We realised that the fog system in the engine had been overwritten by height fog, resulting in a range of issues. The changes that were made have not only resolved this, but have also enabled us to repurpose part of that fog system for dust particles – so it wasn’t a total disaster!
There were six abilities in total that had their VFX refined last month. We personally thought the pre-existing visuals for these spells looked awesome to begin with, but now? Well, the difference is pretty spectacular! See below for a description of the abilities worked on and their corresponding visual fx!
Mending Hands: This is used to restore small amounts of Health over five turn
Attack of Restoration: This deals damage and heals the player with the lowest amount of Health
Energising Mist: This increases the Energy in the area for all entities, including players and NPCs
Frostbolt: This deals Frost Damage and reduces an enemy’s Movement
Cursed Ground: This targets a 4×4 area and reduces Movement of all enemies within that area
Meditation: This allows you to change your Movement into Mana
When we say there are a lot of Sound Design updates to get through, we really mean it. Indeed, January saw our Sound Artist create:
- Sound effects for the Daggerclaw Harpies, including fighting vocals, wing movements, flying attacks, and melee attacks. Since these characters are fierce humanoid birds, their sound design included a lot of bird-like screeching, tremolo effects, whooshes and flutters.
- Vocalisations for the Blue Melmees, which appear as cute little creatures when unprovoked, and transform into giant, savage bears when threatened. Our Sound Artist decided to focus on the vocalisations for the latter, including a growl and vicious attack sample.
- A range of footsteps on a range of surfaces, including jogging and walking on soil, rock slabs, stones, hay and grass. The footsteps themselves were made with a pair of rubber-soled shoes, since these offered the most flexibility. If we were to use harder soles, the footsteps would be too distinguishable and harder to repurpose for different characters.
- Cut and slash sound effects for weapons, which will be used with the future weapons system our Sound Artist and Programmers are planning.
- New SFX for archery bows, complete with draw and release sounds. These were also implemented into the engine and used with our nefarious Bandit and Skeleton Archer, both of whom are enemies you’ll encounter in the game.
When they weren’t creating new sound effects, our Sound Artist was busy implementing current sound effects. They did this for the Scorpion stinger, wall torches and standing torches, as well as some of the footsteps.
Speaking of which, the footsteps were reorganised towards the end of the month so that similar characters share the same source file. This was done in an effort to cut down the number of individual files used in the engine. Also, by utilising Sound Cues, our artist can control values such as pitch, filters and volume, creating variations in the sound and giving the impression of many more source files than there are.
The final thing our Sound Artist did in January was utilise cues with the SFX for the ability Lightning Bolt and its more powerful counterpart, Giant Lightning Bolt. As a result, these abilities now share the same base clip while having different effects applied in-engine, which creates the difference in size and power.
Our Programmers boxed off loads of stuff last month, from implementing UI features to reworking the server. We also welcomed a new member to the Programming team, where they’re currently working on the new Golang server. We’ll whiz you through all the highlights, but for a more in-depth look remember to check out our weekly devlogs!
Adding Features to the Room Builder
First off, we tested the workflow of using a Set Piece Converter tool to create and integrate artist-made Set Piece sublevels. The workflow involves using these in combination with procedural generation to create the dungeons that players will explore in Depths of Erendorn.
However, when it came to testing it out, we noticed a limitation of the process: procedural floors are generated across Set Piece tiles. By generating the floor this way, the artist loses the ability to author the ground in a set piece. We’re currently combating this issue using two methods:
- The first method involves facilitating Set Pieces that do not require terrain but contain props that might be hidden by procedural terrain. To facilitate this, a phase of Prop Adjustment has been added to the room builder. Prop Adjustment allows props to be marked for adjustment in the engine during creation and allows props to recalculate their positions and rotations based on the terrain they appear on.
- The second method requires more attention as it involves creating an accurate model of the height and position of any included authored terrain in order to integrate the data into our existing terrain generation.
Last month also bore witness to a ton of new UI developments, starting with the turn display:
- New Portraits: Our UI Artist has rendered new portraits to be used with characters in the game. These portraits are an improvement on the previous ones as they make use of transparency, giving us the ability to use them in silhouette and other creative ways.
- Turn Character Health Display: Characters in-game now have their health displayed with their portraits in the turn display. Showing this information laid over character portraits provides players with a better chance at making strategic decisions during gameplay.
- Scrolling Timeline: The turn display has been updated to allow the turn order to be scrolled, which frees some up prime screen real-estate while remaining intuitive.
Our Programmers also explored and implemented a new plugin called Outline Maker, which basically lets us apply Custom Depth Stencils to meshes, i.e. draw outlines and fill over characters and objects.
The following areas were also worked on:
- Hover Outlines: We added the ability for characters to highlight when hovered over
- Target Filter Button: We added a context sensitive button for visualising enemy targets during gameplay. This feature has been something we’ve looked forward to adding for a while now and has been extremely helpful during playtests
- While an enemy is selected: The character the enemy is targeting will now glow
- While a friendly is selected: All enemies targeting that character will now glow
- Occluded Character Fills Setting: Characters hidden behind walls are now highlighted
Next on the UI development agenda was implementing assets for the new stat panel. So far, the stat panel has had a visual upgrade with assets and design. As a result, regeneration stats now show alongside their relevant stat.
Server Rewrite/ Rework
One major, ongoing project in the Programming department is replacing our PHP server with a Golang server in order to make everything more performant. Here are some highlights of what was worked on last month:
- Enemy select code: This decides what enemies the game is going to spawn from predefined enemy groups, and even ranks some of them up to being elites if there is spare xp leftover! This means that whenever a player or party enters a dungeon, we can spawn a group of random enemies perfectly suited to the level of xp the party is currently at (in addition to a little bit of randomness, of course).
- Server configuration file: We’ve put all the information that the servers need to talk to each other into a configuration file called a .yml. This means we no longer need to hard code in a server’s IP address, password, etc., as text inside the code itself. Having a file means not only are our servers a bit safer, since you can’t just look at the password in the code any more, but we can also change the information in the file easily should our backend servers ever need to be switched around.
- Connecting Settlement server to Dungeon server: We’ve created code using the new .yml files described above to allow two of our Golang servers to speak to each other for the first time! This is the first step in having working dungeons on our Golang server as it’ll allow us to have the Settlement server pass you off to a new Dungeon Server when you walk through the spooky cave entrance.
- Creating a test client: The test client is a very important new feature that we can use to automate testing our servers without needing a graphical client. With it, we’ll be able to test patches and changes much more easily, and it will also smooth the transition between the PHP and Golang server. After a lot of work on this, the test client will now successfully:
- Log in to the settlement server with login details
- Choose a character from the character on its account
- Create a new lobby and join the new lobby
- Make itself ready to start
- Begin the game
This will then cause the dungeon server to generate the enemies for the new dungeon, and create an ID for the settlement to give to the client so that it can connect to the new dungeon. Coming up next month will be implementing the level generation code to put the enemies and players in!
Using Instanced Static Mesh for Wall Rendering
As well as these server improvements and UI developments, we’ve now also improved the rendering of the walls in the dungeons in order to give us a nice fps boost. We did this by using instanced static mesh instead of a large amount of static mesh. The benefit of instanced static meshes is that they:
- Are drawn much more efficiently
- Take much less time to render
- Leave more room for other visual upgrades
- Have a better performance on lower end machines
Thanks for joining us for this monthly devlog roundup! For regular updates, make sure to check us out on socials!