July DevLog | Game Development Summary
It’s been a COLOSSAL month here at Project Gamechanger. Two enemy types have been modelled, a new character selection scene is well underway, we’ve started creating some awesome weapons and more character animations and abilities have been tested inside the game engine. So sit back, relax (check us out on Twitter, Instagram and Reddit!) and let’s get into it.
3D Character Modelling
We kicked off July by starting work on a new enemy that appears in the game. Ghouls are terrifying opponents in Depths of Erendorn, able to lure weary travellers away from their group so that they can devour them. From the get-go we wanted these characters to look sinister, malevolent and gruesome, and we managed to achieve this in a number of ways:
- We tucked in the waistline for a more emaciated and gaunt look.
- We adjusted the body proportions, like lengthening the arms, in order to make this humanoid creature look more sinister and uncanny.
- We made the skin look rotten by using cylinders to make skin strips, which were then flattened, fused together and detailed so that they appeared to be decomposing.
- We used a Clay Brush in ZBrush to make a variety of gross shapes on the Ghoul’s abdomen, achieving a gaunt and decaying look (rather than accidentally giving this enemy a six pack).
Once we had the sculpt where we wanted it, we retopologised everything before moving on to texturing. We started by painting a Subsurface Scattering map as this would help inform the rest of the textures on the model. This happens because the SSS effect actually reduces normal map detailing. Therefore, if you make an SSS map at the start of the texturing process, you get a better idea of how to make normal mapped details in the future.
Our favourite part about texturing the Ghoul was doing the eyes. These are prominent features on this Undead enemy, representing its innate malice as well as its low life force. We decided to show this by making the eyes appear as small, glowing pinpoints in a dark socket:
- The eyes were made from small, floating planes.
- A transparency map was used to mask off parts of the planes that won’t be seen.
- An emissive map was then used to create a sinister glowing effect.
For the body texture, we wanted to really push the gruesome anatomy and musculature that we had already sculpted. We ended up deciding to overlay meat textures in order to achieve the fleshy, rotten look of the Ghoul’s skin. We’re so happy with the end result and how gnarly this creature turned out – we know you’re all gonna love bumping into this enemy in the game!
The next series of characters we modelled in July were the Lionmen, a race of enemies who appear in three main series: Untribed Lionmen, Tribed Lionmen and Tribal Leaders. To create these, we had to make three different sized body types for each series of Lionmen – a small, underdeveloped type, a bigger, more accomplished type and then finally a large, muscular type for the Tribal Leader.
We started by sculpting the medium sized body type, using the male human base mesh as a basis before drastically resculpting the anatomy. When this sculpt was retopologised, we then used it to create all the variations of Lionmen in Depths of Erendorn.
One of the biggest challenges we came across when modelling the Lionmen was creating a voluminous mane. In the end, we decided to:
- Use flat colour material to visualise the mane’s silhouette and determine the overall shape.
- We then sculpted large clumps of strands to communicate the flow of the mane.
- Smaller strands were detailed at the start and end points of the mane to make the hair appear more obvious.
- Finally, we made it look like it was gathering on the shoulders to better convey its voluminous shape.
With everything sculpted, retopologised and unwrapped, we combined the UVs of all the low meshes so that texturing would be a bit easier down the road. Our Character Artist actually decided to make the clothes for the Lionmen before texturing – this way, everything can be textured together, which will make for a much more efficient process.
With that being said, it was time to move onto modelling some clothes for our Lionmen – except for the shorts, which will be painted on during texturing as a little workflow test for character customisation systems in the game.
Each series of Lionmen, and each class of Lionman within each series, has a unique set of clothing that we had to create. Starting with the Tribed series, we decided to make the clothes for the Proven Lionman first, which uses the medium model size. Proven Lionmen are some of the most elite of the tribe, and this status is reflected in their detailed armour and various adornments.
We then went on to create the clothing for the Unproven Lionman of the Tribed series, who uses the smaller body size. The clothes and armour for the Unproven model shared some similarities with the Proven model. Therefore, when creating clothes for the Unproven Lionman, we simply had to resize and fit the parts of the clothing that the models had in common. These included things like:
- Ripped shorts
- An armoured belt, reminiscent of a Roman pteruges
- Adornments made from bone, such as armour plates and necklaces
- Bandages that wrap around the wrists and ankles
After all the clothes had been modelled for the Proven and Unproven Lionmen, we baked them before ensuring that this series of clothes shared the same UV set – again, this will make texturing a lot easier. Next month, we will be focussing on creating the clothes for the Untribed Lionman series as well as for the Tribal Leader, who is going to require a lot more detail. We’ll also hopefully be moving onto texturing, so make sure you check back to see how it’s all coming along!
Animation
This month has all been about updating character rigs and animations before importing everything into Unity to be tested. We started by finishing off some of the Human Knight’s animations, which were then sent to Unity where they were used to create some animation clips. But the majority of July was actually spent on getting the animations for the Twilight Elf Assassin finished so that they, too, could be imported and tested in the game engine.
Before we could import this character’s animations, however, we had to make a few adjustments first:
- The rig was updated
- A more detailed cloak rig was created
- The number of weapon bones was increased
- The number of body bones was reduced
As well as all this, a new mesh had to be added to the rig since the original mesh developed some issues with the mouth and had to be replaced. With this new mesh on, a few more updates had to be made to the Twilight Elf Assassin’s rig:
- Skin weights were adjusted
- A rig was added to the coat-tails that trail behind the legs
- Three facial expressions were added to the control rig
With all of these adjustments out of the way, we could finally start focussing on the animations for this secretive character. We started by updating the Assassin’s walk cycle and idle before trying and testing the rest of its animations. We then fit the final animations to the new rig before importing over 10 of them into Unity.
Over the next couple of weeks, more and more animations were added to the Twilight Elf Assassin’s rig so that they could also be imported into Unity. These included animations like Dodge, Hit Reaction and Basic Armed Attack. We even decided to rework one of this character’s special attacks, Blindside, which allows the player to attack enemies from the side or from behind, dealing a significant amount of Damage.
We’ve now planned out the next set of animations that will be made for some generic skills that both the Twilight Elf Assassin and the Watertarg Excursionist will use in the game. While these are still a work-in-progress, they include things like spinning kicks, palm strikes and leaping strikes.
Character Selection Scene
After spending the last few weeks creating assets for Fire Dungeon as well as an entire scene for our Ice Dungeon, our Environment Artist was tasked with designing a character selection scene for the game. We started by:
- Concepting the visuals and functionality of a more refined character selection scene
- Considering how and where the UI would be placed within this scene
- Setting up new post-processing effects, lighting and finally a skybox
We then went on to create a moss material function for props and rocks that would appear in the environment. This helped to give the scene an overgrown and abandoned look, as though this part of Erendorn has been untouched by creatures for many years. But we achieved this wild and unkempt environment in a number of ways:
- Three variations of fir trees and wild ferns were created and implemented in order to bring different textures and points of interest into the scene.
- Three variations of Oak trees and many more variations of wild grass clusters were also introduced to the scene to make it feel overgrown.
- Stone architecture, like the plinthe the model stands on, has been cracked and worn by time. While these are placeholders for now, they will later be transformed into epic stone ruins.
- Terrain material was made specifically for this environment and while it is also a placeholder that will be improved on, we love the atmosphere it creates.
With all of this in place, the character selection scene feels like an overgrown, ancient ruin that’s tucked away in a corner of Erendorn. Many other details were added to this scene during the course of the month, especially in terms of lighting. For example, we improved the Moss Shader to mimic Subsurface Scattering, allowing us to show light catching on the edges of objects for a more realistic look; and, in order to bring an even greater level of realism into the scene, the Subsurface Scattering map for the foliage was improved to be more physically accurate.
While we’re on the subject, foliage type textures are also now being atlased per species in order to reduce draw calls. By creating this Texture Atlas, we only have to incur one draw call for the whole batch, instead of one per object, which will in turn optimise our graphics performance.
Finally, lighting, scene settings (such as fog) and post-processing effects were all tweaked specifically for this scene to make sure that our characters were looking as awesome as possible. This new and improved character selection scene really shows off and embellishes a player’s chosen character and while it will be getting improved on in the future, we’re extremely happy with the direction it’s going in.
Weapon Design
This month, we got started on designing and creating some of the starting weapons in Depths of Erendorn. This was an exciting project because of how many possibilities our Artist was open to. The following set of weapons were all made in Substance Painter and Maya before being rendered in Unity:
- Two-handed Sword: This mighty weapon is used by many playable characters in the game, from valiant Knights and Bonelair Gargoyles to the fire-breathing Red Draconians.
- One-handed Sword: Although a generic weapon, our one-handed sword can deliver significant damage to opponents.
- Dagger: Daggers are the weapons of choice for characters like Twilight Elves and Blue Melmees – but there will also be several enemies who use these lethal blades.
- Keris: This is an asymmetrical dagger that isn’t used by any characters yet. However, the awesome design of this weapon means we’re more than happy to add it to our arsenal!
- Magic Staff: This weapon is primarily used by our Parakaw Astromancer, a playable character who also possesses phenomenal spellcasting abilities, some of which the Magic Staff is used for.
- Spear: While spears are typically used by Veloxian Centaurs, they are just as lethal when wielded by a Watertarg Excursionist or Zentragal Illusionist, both of which you will be able to play as.
After creating these awesome weapons, our Artist went on to form the idea for a modular weapons system. Using this system, weapons will be broken down into their components and procedurally generated in the engine. This will be a developer tool to allow us to efficiently create hundreds of variations of swords and weapons.
On top of this, an icon screen-capture scene has been set up to capture pictures for equipment and weaponry for use as icons. Meanwhile, the creation of a modular weapon kit is well under way, starting with swords – so we hope you like our little family of blades so far!
Server & Game Client
With the Human Knight now in Unity, our programmers could use its animations with a few of its abilities to see how they function in the game. One of the abilities we did this with was Heaving Blow, although we tested it without the sword.
Speaking of abilities, we spent some time this month working on an ability template that allows for movement-based abilities, like teleportation, jumping and linear movement. We tried this out in the game with our Parakaw Astromancer, who has the ability to teleport to different areas of dungeons rooms.
This month has also been spent setting Depths of Erendorn up to support asset serialisation with the use of a system called Addressables. Addressables allows models, animations, audio and other large assets to be compressed into separate ‘Asset Bundles’ and loaded when needed. The main advantage of us using the Addressables system is that by grouping assets into bundles, we only have to load specific sets of assets that are actually needed, which massively reduces the game’s memory footprint.
With abilities, statuses and entities now using the Addressables system, our Programmer created an Icon Dev script that will allow us to read the list of addressables and upload it to the database. Here, each entry is given an ID which is then used in the Editor to assign to abilities, statuses and so on. This optimises the game’s memory even further by allowing us to easily upload and store image references in our database without having to manually input them. These upgrades will mean better performance, better efficiency and greatly reduced patch sizes, especially as the project swells with content.
The script also allows us to:
- Update the database
- Track any changes in the addressables
- Output a file which gives the client a map linking the addressable name to its database ID
Much of July has also been spent working towards the goal of creating a better system for displaying character turns. With work having started on the new Turn Order Display UI, we now have a working version up and running after doing some testing. This new display shows what order the players and enemies will have their turns in, and this is some of the work that went into creating it:
- Camera Rework: As we need greater control over the game camera for displaying turns (and for an upcoming, more camera-focused sprint), the prefab has been reworked to allow for clearer and more direct control over its orientation and behaviour.
- Camera Focus: Camera focus points can now be set by entity ID. When an entity is focused, the camera will follow that character as they move until the camera has moved by the WASD keys.
- Turn Player Button: When the display for the current turn player is clicked, the camera moves to focus them.
- Turn Camera Lock Button: If clicked, every time an entity’s turn starts the camera will focus on them. The lock is broken with WASD movement unless it is your turn.
- Bug Fixes: We also improved client-side storing of states so that it would compare them to current states in order to stop them from disappearing or displaying incorrect values above health bars.
When we weren’t working on this, our attention was turned towards the items in the game. All items should now have a minimum level that can drop, reducing the chances of there being no matching items to drop. This was actually crashing the Server sometimes while testing, so our final bit of work this week was implementing a fix for some of these random crashes.
There were also a lot of changes made to the server this month. Some of the highlights include:
- All items should now have a minimum level that can drop, reducing the chances of there being no matching items to drop.
- It is now also possible to rejoin a game after closing the client. While it was previously made possible to do this, if you closed your connection it would stop the player from rejoining.
- The server now exposes equipped items for players connected to lobbies. This will be extended to allow us to display the character information of other players while you’re in the same lobby. Equipped item information is now also exposed inside the game scene.
- We have now made a start on a portrait/item sprite generator tool that can be used with the modular weapons our Environment Artist is making.
- The ability for characters to socket weapons to animation bones was added. We also made it so that characters can switch idles depending on their state.
Finally, a lot of time has been spent on improving targeting systems for the client. Work has begun on improving the client’s targeting for single, multi-target and multi-tile abilities. Potential targets of an active ability, for example, will be highlighted as the mouse hovers over them, showing additionally affected tiles or entities.
These improvements, as well as adding a highlight and confirmation step for self or room targeting abilities, aim to improve gameplay by allowing players to better understand the skills they’ve chosen as well as giving them a better chance of using them in strategic ways.
Thanks for joining us for another development update on Depths of Erendorn! We’re really stoked to see how our characters’ abilities function in the dungeon rooms, and can’t wait to start adding visual effects them – there’s a little hint about what to expect next month… so see you then!