June 2023
General
Hello!
I am releasing this Devblog a little bit later than usual. I did not have enough time to work on it, due to the amount of work and focus I had to put on v0.4.4, two hotfixes (v0.4.4.1 and v0.4.4.2), as well as on additional projects.
Situation System
I’ve talked about these on previous Devblogs. In order to make editing and setting up situations in a more intuitive and simple way, my situation system faced numerous edits. I spent this month working further into this goal, and went through three major refactorings.
Internal and external Action
The first factorization allowed me to play animations without having a character directly attached to a situation, and to execute simple actions when attached to a situation.
It was already possible beforehand, but the code wasn’t optimized in this regard.
External actions are actions that play when a character isn’t linked to an object. For example, those allow Talas to open a door without being linked to the door.
When it comes to internal actions, this allows Talas, as an example, to wiggle his toes without changing position.
This took me a lot of time to accomplish as the situation system’s action features were not yet separated into modules. I had to update every dependency one by one.
Situation Tracking Point
In some cases, situations such as Grab and Stomp will use a point in the 3D space to animate the character. This is not a new feature, but I refactored this part to make sure all of the related code goes into its own module.
This allows me to have better control over these situations, and will offer more variety regarding tracking points depending of context. For example, when Talas sees you running, he will attempt to anticipate the point on which he should stomp. He also will have a tougher time positioning his grabbing point if you jump last second.
Situation zones
When a character uses a situation, the game’s AI will take certain areas tied to that situation into account. This allows Talas to know when you are standing on the glass table for example. Before this change, two different blocks of code would treat this in two ways:
- Situations tied to a character, such as the Stomp, where the character is sitting on the floor.
- Situations tied to the environment’s objects, such as the sofa, the bed, or doors.
These two blocks of code had their own uses. Situations tied to the environment had more autonomous interactions for the AI and area types, while areas linked to characters were used only to indicate where the Micro was located.
This refactoring allowed to group up this code into a single method, no matter if a zone is tied to a character or not. Also, much like the situation system’s animations, zone positioning is managed by a configuration file that is updated straight from the editor.
Macro AI
Following the addition of this refactoring and of new animations, I have updated plenty of elements tied to Talas’ AI.
Talas will now have his own Behavior Tree based on every situation, and may change depending of his current state. The AI will proceed like before, facing obstacles and automatic searches of recursive solutions, but it will be more guided towards some solutions based on the current situation.
Talas will also be a lot more aware of areas where Micros are located and on what they’re doing. This is what a Behavior Tree may look like.
Here is how it looks like in-game using zones. Be wary of spoilers.
I have also review how the AI will analyze its environment and find movement points to interact with the different game’s elements.
Animations
I have spent some time this month to update a good amount of animations, and added new reactions for Talas.
Fullbody IK
I updated Cobble’s and Talas’ rigs in-game to make those compatible with Fullbody IK, a new feature that appeared alongside Unreal Engine 5.
This allows procedural, more natural looking animations to exist, and in VR allows a full body tracking that also feels natural.
lighting and bake lightmass.
Starting from June, I have tried to focus on the Cozy House’ lighting. Calculating a scene’s lighting with that many items takes a lot of time. I need to go through numerous tests to ensure an acceptable quality and a calculation time that does not take too long.
In order to get the lighting done on v0.4.4.1, I need around 11 hours of calculations with a cluster of three computers, having an AMD Threadripper 1950X, an AMD Ryzen 9 7950X, and an AMD Ryzen 7 2700X.
Rendering isn’t perfect, unfortunatley. I still find some issues here and there.
I also have tools that help avoiding mistakes and places lights for me, but I will talk more about those next month.
Dead Hard Disk
The hard drive on which I save my work stopped functionning. Several files vanished or were corrupted for no reason.
Thankfully, nothing was lost as I work with a SVN repository on my NAS, on which I regularly save my files;
This hard drive was often around a 100% activity rate since I transitioned to Unreal Engine 5, which may have accelerated its degradation. (Epic Games recommends an SSD to work with UE5)
I have since installed a new SSD and reinstalled every project and game engine files. This took around 11 hours and 600Gb of data after compiling and building.
More small scripts
I have kept creating and working on small tools through this month.
MMVS Blender Addon
In order to ease the configuration of Blender scenes and of export parameters, I have created a small add-on to automatize this process.
External File Export
I have had to update plenty of animations following the changed on the situation system. I had around 300 files to work on, and exporting every single file would have taken too long.
In order to make this easier, I have created a small python script that does it all for me. The script will open every file, do the updates needed using my MMVS add-on, then run the export through my Blender add-on for Unreal Engine.
Blender Rig Animation Addon
For those who still don’t know, my characters’ rigs are all home-made with my own generator in order to have as much control as possible. I’ve worked a lot on animations lately, so I’ve started to create an add-on specifically to help animating those rigs in Blender.
This currently only allows me to make IK/FK transitions, but I am planning to add a lot more useful features.
See more: Devblogs - Wips Telegram Chanel - Discord Chanel - Support the game - MMVS game