Welcome back to another devlog! This week, we’re talking about sculpting, character selection scenes, level generation and how we’ll be using blueprints in the game. We’ve also been creating some snowy weather effects, so read on to see how that came together!
3D Character Modelling
After getting a head start on the Rockbark Treeman in our last devlog, by way of blocking out its form in ZBrush, we spent this week sculpting all of the various parts of this extraordinary character. In Depths of Erendorn, Rockbark Treemen are the appointed guardians of the High Forest - unless they become corrupted into Rotwood Treemen, which roam the dungeons in malice...
Buuut before we get ahead of ourselves, let’s reel it back to the less-terrifying Rockbark Treemen. Because of the intricate design of this character, the sculpting process was a little trickier than usual. The arms, for example, were painstakingly resculpted and trashed twice because we couldn’t get them to look right - and we know that every modeller out there can relate to that feeling!
In the end, we found that our issue was that we were focussing too hard on giving the Treeman typical arm musculature. Biceps don’t really translate well when you’re working on what is essentially a tree, so we decided to instead focus on the different, individual components that we could build the arms up with - like big plates of bark. After this, we could start focussing on other aspects of the body:
- When sculpting the torso, our Modeller cut into different areas in order to break it up a bit. This created various plates that will eventually be animated to move as the Treeman’s body moves.
- With the help of our Animator, the proportions of the character were adjusted so that it was taller and more capable of performing actions, like punching the ground.
- We then blocked in the vines and branches that will both connect the limbs together and point to the fact that the bark exterior is protective plating, rather than the Treeman’s actual body.
Before we finished up the week, more parts of the Rockbark Treeman’s body were sculpted to look like bark. We also decided to add some roots to the feet. This is a cool element because they will run underground and appear as the Treeman walks (hopefully)!
This week, our Animator focussed on getting more characters ready to be imported into the engine. They also watched some tutorials to better understand the use of Blueprints and Visual Scripting systems in UE4. Blueprints are a way to prototype things, and are a very non-programmer friendly way to program.
As a node-based interface, it will allow us to prototype gameplay elements - like interactions between animations - by linking nodes together instead of writing code. Our Animator is looking into this form of visual programming so that they can use blueprints to trigger certain animations and see how they blend. To try this out, we created a test scene and added the Knight into it. We then created:
- A Blend Space, where idle and walk animations blend.
- A State Machine to enable the Knight’s basic locomotion, i.e. going from idle to walk cycle and back into idle.
- An Animation Montage to make the Knight perform an attack or spell.
While our Animator has familiarised themselves with blueprints, testing was carried out so that they can use it more confidently in the future. It’s also worth mentioning that although we will use many blueprints in the final game, these will eventually be moved into C++ for performance reasons. Therefore, movements and animations will be controlled via blueprints for a time, but will most likely be moved into C++.
More work continued on the character selection scene this week, starting with our Environment Artist adding dynamic tessellation to the terrain material. Doing this creates higher frequency geometry at close distances, which is then displaced using height maps in order to achieve extra detail.
Moving on, the FPS for the character selection scene was actually tanking, leading to us make some optimisations to the foliage instancing as well as the mountain meshes in the background. In fact, our artist is toying with the idea of changing the background from meshes to a skybox. We believe this might incur some performance benefits, although more research is needed before we do this.
We rounded off the week by making a few more refinements to the character selection scene:
- Local fog volumes were created and these will be used throughout the environment.
- The mountains in the background were textured with grass/rock and snow/rock materials.
- After changes were made to the composition and lighting, the scene should now feel like it has more depth.
After finishing up the enchantments from last week’s devlog, our VFX Artist began working on some visual effects for an upcoming soundtrack video that we will be releasing. To do this, they watched an ungodly amount of tutorials on masking visual effects in video editing software - but it was worth it in the end!
Also, now that Halloween and Bonfire Night have passed us by, our VFX Artist thought it was a good time to create some snowy weather effects! They applied this to a test scene in Unreal Engine, adding detailed little snowflakes to the foreground as well as some sporadic fog to the background in order to create the illusion of perspective. We’re so happy with how it turned out and can’t wait to use it in some of our snowy landscapes and dungeons!
After last week’s first attempts at using Cellular Automata, our work on level generation has continued into this week. We started by adding capabilities to the room builder algorithm, making it easier for us to work with. We made several improvements in regards to this:
- Noise generation properties and Cellular Automata properties were exposed as sliders.
- We added ‘step back’ and ‘forward’ buttons to Cellular Automata (CA) to allow us to freely review changes after that have been made.
- We created a method for applying different 'queueing' CA settings in steps to test the outcome of different configurations.
- We created a save file to hold CA preset configurations. Using this, we can not only keep data on presets that yield good results, but also modify/improve them.
In addition, we also implemented a system for including Set Pieces in generation. A Set Piece is a part of the dungeon that we want to be authored, as opposed to generated. This could be an area dedicated to a room event, a spider's nest or something smaller like a particular arrangement of props. A lot of work was carried out on Set Pieces this week:
- We added a system for creating grid representations so that we could define the way that Set Piece tiles interact with other tiles as the algorithm steps through CA.
- We then added placement rules for Set Pieces to allow them to define the boundaries of their potential positions on the map.
- The capability of rotating and mirroring Set Pieces was then created, as well as a widget for selecting from available stored Set Pieces so that we can run the CA and check results.
From all of this work, Set Pieces now integrate themselves into the seed data and affect the Cellular Automata. As well as this, the new tile interactions will improve the control we have over influencing the random seed data.
Make sure you’re here for next week’s devlog, where we’ll be showing you how all of this week’s work has developed! And, if you’re jonesing for some more content, head over to our Twitter, Instagram or Reddit!