In this week’s game devlog, we’re talking about shapeshifting sandmen, building settlements in UE4, and using staplers to create sound fx for Snapping Turtles. Remember to check us out on Twitter, Instagram or Reddit for daily updates on our online RPG in development - now let’s get into it.
3D Modelling
Both the Thrasher Plant and the Predator Plant had their textures finished this week. We particularly enjoyed watching the Predator’s slick, sickly green skin come to life.
With all of the Deadly Plant enemies modelled (including the Hydra Plant, don’t forget), we could begin creating all the different classes within these species. To differentiate between these classes, we gave the stronger versions a more saturated colour, as though they are well-fed and thriving.
The next character our 3D Character Artist started creating was the Zullra. This is a race of shapeshifting sand monsters that hail from the Great Desert. We needed to make these powerful enemies look as dynamic as possible, so our artist decided to create a constant motion effect of falling sand moving down their bodies.
But to do this, we needed to make some shaders that could achieve the moving sand effect:
- Triplanar shaders were our first attempt because they would reduce potential UV work
- Unfortunately, the shaders would only work in world space, rather than local space
- This meant that if the character moved, the textures would ‘swim,’ i.e. move separately
We then moved on to experiment with using tessellation to add and deform the geometry of Zullra. While this solution does actually work, our artist is a little worried about how high a cost this feature would be for a character, as well as potential future issues of porting to other platforms.
Luckily for us, our VFX Artist chimed in with a potential, low cost solution for the geometry of the falling sand effect. While we continue fleshing out this approach, our Character Artist is busy sculpting the Zullra in ZBrush. The aim is to sculpt the overall form first in order to achieve a strong silhouette for this epic enemy.
Animation
The Crocodile was the focus of this week’s animation efforts. As a result, this low-level enemy now has an idle, walk cycle, attack animation, hit reaction, and death animation. We then imported everything into UE4, where we created some animation blends and controllers for them.
Our Animator also created a new unique rig for smaller creatures to share, including scorpions, spiders, wasps, beetles, and scarabs. The rig was first adjusted to match the scorpion, spider and wasp models, so these three critters should now all share this rig in the engine. Our next steps will be to get their skeletal meshes into UE4 as well.
Environment Art
Asset Creation
Continuing with our work on building the game’s first settlement, Quixel Megascans were used to find a bunch of generic assets. This includes props like benches, wheelbarrows, various tools, and even some picnic food (the ham asset is particularly satisfying - check it out at the end of this section).
More generic props were then also made for the settlement. This involved using the same method we mentioned a few devlogs ago, i.e. utilising Unreal Engine’s midpolys rather than sculpting everything individually. Some things, like market stands, will be made using blueprints in the engine because that way, we can simply just bash some planks and boxes together.
Work then began on creating a fur material that will be used for things like animal skin rugs and clothing layers for some of our arctic characters. The process has been a bit fiddly so far because our Environment Artists are making a mesh that’s comprised of four planes. The bottom plane is completely opaque whilst the top plane is almost entirely transparent, which gives the mesh some depth. It needs more tweaking but it's a good base to work from, and we'll be able to use it for all the fur-related items in Erendorn.
World Environment
A new terrain material was created for the epic vistas of Erendorn’s world environment. This material automatically textures the terrain based on slope angle and terrain height. We used it to test out some snowy mountain passes, a terrain type that will appear in Erendorn’s perilous Arctic Region.
Last week, we mentioned that we had started creating the first settlement to appear in Depths of Erendorn. Aside from tasty ham megascans and generic asset creation, we also completed an initial pass of the settlement blockout. We’ve now begun the construction planning phase for houses that will appear in the settlement. We’ll keep you posted on our socials about how this goes!
Sound Design
This week, our Sound Artist started creating some sound effects for the low-level enemies that our Animator has been working recently, including the Red River Crocodile and Snapping Turtles, as well as Baby Snapping Turtles.
We know, we know - how can Baby Snapping Turtles be enemies? Well, babies or not, these creatures have incredibly powerful bites that will deal a decent amount of Damage, so try to keep your distance. A few… interesting techniques were used to create the SFX for Snapping Turtles:
- Our Sound Artist gargled with a lot of water and, in their own words, made a few “graarrr” noises
- They then either slowed down or reversed these vocalisations to create a croaky throat effect
- This gives the turtles an almost prehistoric sound, which fits in nicely with their slow movements and ancient heritage
- Meanwhile, the water gargling adds an aquatic element to their sound design, which is important seeing as they’re amphibians
The attack sounds are currently in progress. As they are Snapping Turtles, we want to create a real feel of how powerful their bite is, so our Sound Artist is using a lot of crunching veg (like bell peppers) to mimic the crunching of bones. Staplers are also being used because they give a very nice, firm clicking sound when pressed, almost like a puncture wound.
But something crossed our minds when working on the sound design for the Snapping Turtles. It’s actually quite difficult to feel hatred towards these slow, waddling amphibians, so we decided to take the vocals in a different direction.
Rather than making them overly intimidating, our Sound Artist actually decided to add some expression to their voice, which becomes particularly prevalent when they’re attacked or killed. Not only does this create a more realistic sound, it also tugs on the heartstrings a little.
This form of sound design is common in games like The Witcher, where a wounded wolf’s yelp painfully reminds us of our beloved canine pals; or Horizon Zero Dawn, where the desperate squeal of a shot-down boar, or the tiny shriek of a scuttering squirrel tinges your glory with some good old fashioned guilt. People are always going on about how games are dehumanising and overly violent, so at least by giving our Snapping Turtles some emotion we’re keeping your moral compass in check!
https://doe.horus.ninja/wp-content/uploads/2020/08/SFX_HitReact_BSTurtle_A.wav
These are the draft sounds for the Snapping Turtles' hit reaction.
https://doe.horus.ninja/wp-content/uploads/2020/08/SFX_HitReact_BSTurtle_C.wav
This is another possibility for the Snapping Turtles' hit reaction.
https://doe.horus.ninja/wp-content/uploads/2020/08/SFX_Death_BSTurtle_C.wav
These are the draft sounds for the Snapping Turtles' death.
Programming
A lot of stuff was boxed off in the engine this week, starting with the pursuit mechanic, which we managed to get working. As a result, if an enemy has failed to attack its target after two turns, they will gain +1 Movement per turn until they manage to reach them.
We decided to implement this because it will stop a player from being able to endlessly kite the enemy. But if kiting’s your thing, don’t worry; the pursuit mechanic will still mean that kiting is a viable playstyle because the increase in Movement is reset once the enemy reaches its target.
In addition to the pursuit mechanic working:
- Players can now see when other players have ended their turn on the turn order display in simultaneous turn-based games.
- Summons work again. Summons stop the player from being able to use any abilities on their characters. With it fixed, a player can control more than one entity (if they have more than one).
- Elite enemies now have a placeholder marker on their health bar so that they are more noticeable. They also have their elite rank stated in their name.
- Enemies now have a letter after their name so that players can more easily communicate who they plan to attack, avoid, or gang up on.
- If aggressive enemies have targets that are equal distances away from them, they now randomise who they attack.
- Enemies now also spread themselves across the players based on the XP values of the enemies, rather than by simply the number of targets or players.
- NPC abilities now scale with an enemy’s Ability Power. Combining this with the elite stat scaling means that higher ranked enemies do more damage with their abilities as well as their attacks.
- We stopped the game state updater class from spamming the output log, which means it’s now easier to debug the game.
- Doors had a chance to spawn on the very edge of the map. This has been brought in by 1 tile to ensure a wall can be placed behind them.
- A bug was fixed where Steppers were only being destroyed at the lowest level, so a build up of Steppers would occur when more games were played and actions were performed.
- Debug settings were added to allow the Action System to run with or without logging updates, initialisation or running. This means the game should run smoother in the engine and allow us to test more efficiently.
Programming this week was also focussed on improving the efficiency and load times required to get into games. This led us to delve into researching Multithreading:
- Unreal's processing work is handled by a number of different processes called Threads
- Threads evenly spread processing power to ensure games run smoothly
- This allows the graphics and UI to be rendered without losing frames to the core game
Most gameplay computation in UE4 will be handled by the Game Thread, but the aim of our Programmers’ research is to allow us to selectively run background processes for larger calculations without affecting the gameplay experience. A few different methods and implementations have already been explored, and we believe it will be a powerful feature that could benefit performance massively.
Thanks for joining us for this week’s devlog! Have you read our monthly update yet?