April 2025
General
Like in March, this Devblog is a bit shorter because I spent almost two weeks in Germany.
Recently, I've been focusing on many small improvements, especially optimizations and bug fixes across different game systems.
Mini game
I improved the visual rendering of the mini-game zones.
Paw Push Collisions
If you remember for the digestive system I did many search and development about how to push the player from the moving digestive walls. I reused that same system to allow Talas' body to physically push the player when he moves.
But for the Talas paw, you simply go through the character, or cause it to glitch.
This system is quite CPU-intensive, so it's only activated when the player is close to Talas to avoid performance issues.
Game Sessions
To fix bug I reviewed the code that manage login / logout and the user name replication for the multiplayer use.
Before the name was updated once the player is spawned with a server request from the client.
Now, the player sends their name directly in the initial login request. This improves network efficiency and prevents bugs in laggy games, where name updates could previously get lost among other startup requests.
Game Properties
Still on the bug fixes, I've done a big refactoring of the game property management. In MMVS, I use a fairly advanced property system shared across multiple parts of the game, including the UI, Game Master, Game Settings, and Game Session.
For example, I'll have the "Damage Mode" property, which will have basic options like a title, a description, a list of options, and a default value.
It will also contain display and formatting parameters and relationships with objects allowing to send requests or display them in a modular way.
This property system is used it in my Game Property Manager, allowing the Game Master to edit values in-game, or the player to set them in the startup options.
And of course I need to be sure everything works in multiplayer with the net-code.
Stuck Zone Character Offset
Still related to the bug fixes, the stuck zone offset now uses the mesh position instead of the actor’s root position.
It a change similar to what I did on the Situation System in February.
Due to this modification, I had to rework the calculation used to position the character according to different attachment points.
I also added a surface offset point used that recalculates the character’s position after a scale change with some math.
For Talas soles when the player is stuck to it, I also added a flat pose animation.
So when the player is smaller than normal the position will be a way better.
Following the change I also updated The VR profile script to make it work in VR.
In the video, Talas scale is 20.0 and The player scale is 0.05.
You can notice that all my tools work on Windows / Linux, Non-VR / VR. Solo / multiplayer.
About the new surface point I also use it in Talas shoes.
New Keyboard Keys Preview
I updated as the input settings, and prepared some list for the user key mapping planned in future.
For the moment, the target is just a clean. Also, I fixed and updated the keyboard keys preview in the control settings page.
Outline
Still related with the bug fix I noticed that the game master selection produced many FPS drops.
I updated the outline code used for Game Master selection and VR grab preview.
I moved all the code in C++ and now the outline will update only when changes are needed, not in runtime at every frames like before, So it's now much more optimized.
You have to know that my outline system work with a dependency tree, which can be quite complicated to calculate.
When the Game Master selects an actor, the system checks for all its dependent objects. Then, it will query each dependent object again. And so on.
So, when Talas is selected, it will select the components for the body, fur, eyes, by recursively checking every linked component.. If he’s wearing clothes, it will also select the clothe actor, then the linked components in the same way.
Rig Twist
While fixing an animation bug, I noticed an issue with the rig: the math used for Talas' leg twist was incorrect. I’ve now updated the rig system to fix this.
It’s a general fix that apply on all characters that’s use twist.
Now, it’s worked perfectly and I added controls if I need to disable or animate the auto twist.
Camera Config
I reviewed the camera configuration script, to fix an old bug with the TPV camera broken, when the player is stuck to Talas sole.
Previously, the data structure used for camera configuration contained all the data, including the FPV (first-person view) and TPV (third-person view) mode.
Now, the data structure will contain multiple nodes and will load a generic sub structure for each mode. This makes it easier to manage camera codes and values switch between FPV, TPV, or custom camera modes. Like for custom vehicle cameras for example.
Camera Shake Subject Switch
Following the Camera changes I reviewed the camera shake.
Now, the camera shake, use the player character location when the camera is close, and the camera location when it’s far from the character.
I think is a good method to correctly appreciating the TPV camera shakes. With a close camera as with a distance camera.
Also, it works better when Talas walk. In bonus, I updated the TPV camera center location when the player is stuck to sole.
See more: Devblogs - Wips Telegram Chanel - Discord Chanel - Support the game - MMVS game