Devblog August 2025

General

The Devblogs of August, September, October, and November, were all done at the same time.
This is because I was very focused on the update v0.4.6 released the 27 September 2025.
Then I immediately fall back in work on the patches v0.4.6.1 and v0.4.6.2. released 15 and 23 November 2025.

New Simplified Chinese Translation

In August I added support for Simplified Chinese in the game. Thanks Viin Grohiik for working on the Simplified Chinese translations!

Screenshot of the Simplified Chinese translation in the game

Later Icefeather joined the team too on the Chinese translation work.

Btw just to remind you, the game translations are all done by volunteers from the community.
If you want to help to translate the game in your language, you can check the wiki page about it:
https://github.com/xavier150/MMVS/wiki/Translator

Updated Popup UI

Related to the localization system I updated language popup selection to have buttons that respect the flag and localization icon sizes.
So flags use a specific size and it avoids the image to be squished or stretched.

To do that I updated the popup message UI code to be able to use custom buttons with their own style for the selection parameters.
This way I can create a better language selection with the correct flag size.
New Language Popup Selection

Before that was like this.
Old Language Popup Selection

AI Config and Character Config separation

Following the new AI change I totally separated the Character Config data from the AI config data.
It’s complex to explain but this was because the Game Master Control and multiplayer.

If you remember my devblog of May, I spoke about the fact the character config is static.
That way I’m sure all users have the same base configuration and in multiplayer the code replicates only the character config id.

  • Talas for the Macro in Talas house.
  • Cobble for the Micro players and NPCs.

Then I added the character config mods system to override character config parameters. It allows the user to load custom modification on the character config. It’s directly handled in the character config system and works in multiplayer.
So it will be perfect for the game modding in the future.

Regarding the AI before it was using the Character Config.
But now when a macro character spawns it loads Talas character config with the user mods, and it also spawns a Macro AI script that loads Talas AI config. Additionally Talas AI will load custom modification override like I did with the mods.

One issue here is that the AI scripts and AI controllers are not replicated in multiplayer and exist only on the server side. For the AI config ID that’s not an issue but for the custom modification override I need to replicate on client side too. It is because the Game Master needs to access it to edit it, and doing a request to the server at every need is way too heavy now with the new changes.

Finally the best solution I found is to keep the custom modification override available for all in the Player State. Every player have a player state script that manage some general data, in a common game this can be the kill count, score, the team etc. That way the game master can control the AI settings from the player state and not from the AI controller that doesn’t exist on multiplayer client side.

Of course the replicated data are not directly on the player state it pass through a reference and replicated only when needed with the Game Master. It was a lot of tinkering to manage game master control like the decision table or AI free mode. I’ll be able to update all of this now.

Also this means Talas is a player in the code now. I can add him a kill / crush count if I want haha.

Talas Player State

Game Master AI Controls

Following this change I updated the Game Master AI controls and I was able to remove many deprecated code.

Now that it’s now way easier to manage that I also added a parameter to set the spotting scale.

  • Lower mean more time for Talas to detect you.
  • Higher if you want Talas to detect you quickly.
  • Zero if you want Talas to never detect you.

People who like unaware scenarios should enjoy it~

More extreme character scales

Fixing bugs with the character collision that broke when the character rescale, I found a way to have more extreme character scales without breaking the gameplay.
I was literally able to add two zeros to the minimal scale.

Now you can have the size of a bacterium (875 nm) in Talas house without changing the environment scale.
That’s totally useless for now but it makes the scaling more stable. Also with this change I’m back on a custom build of Unreal Engine because I need to modify the source code to support such extreme small.

In the video I forgot to update the UI, but the minimal scale is not 0.0001, it is 0.00001

Correct Rescaling Debug UI

Also this opens more door in future for multiplayer gameplay with extreme scale differences between players.
May be fun to be crushed by a giant player without them noticing you~

Here another example of extreme scale this time with Talas size.

Scale current limitations

These changes made me find other bugs in MMVS related about how the engine calculates the physics.
By default the engine was done with some checks to avoid zero division in the code.

Example the physical capsule used for tail collision do some check and under 0.01 cm, the code disables the collision or set a minimum size. This is an issue when the player have a microscopic size, so I had to override some functions or change in the source code.

Of course the code still have some limitations I was not able to fix yet but nothing dramatic.

  • Over 10000000 (10^7) the game is instable
  • From 10000000 (10^7) to 10000 (10^4) the game is less stable, but still playable.
  • From 10000 (10^4) to 0.005 (5e-3) scale the game is perfectly stable
  • Under 0.005 (5e-3) the game is less stable, but still playable.
  • Under 0.0004 (4e-4) The game start to produce visible rendering glitch
  • Under 0.0002 (2e-4) the code disable physical collisions like the tail or ears.
    (Before the code source change that was 0.02)
  • Under 0.0001 (1e-4) the code disable all physical simulation like the tail or ears.
  • Under 0.00005 (5e-5) the code set minimal values for walk and character acceleration, or the calculation round it at zero
  • Under 0.00001 (1e-5) the game is instable.

Visual glitches at extreme small scale

Modular Camera Control

During August and the following months you will see that the most of change was related about bug fixing.
Here a bug was related to the camera movement calculation and the use by AI with the simulated vector.

In the game the camera control is set from a 2D vector, Up/Down and Left/Right and not with a 3D rotation.
This is because of several reasons but this means I need to do many calculation to convert the 2D vector into a 3D rotation or the 3D rotation to 2D vector.
I also need to calculate a simulated vector (Direction in a 3D space) when the camera is not controlled but a 2D vector like when an AI control the camera or when you play in VR.

This camera movement is not new but it was broken with the player and AI.
Here I made the camera more modular to make it usable outside from the character script, it useful for debugging and testing. And that way I was able to fix the camera movement. In the video the simulated vector is the yellow arrow.

Also I reviewed the movement when the player is laying on their back. Now in FPV the body will keep his orientation, and it will follow camera orientation in TPV or when the player raise their arms.

Player AI Kink filters replaced by AI decisions.

During August, I discussed about the Player Kink Filters system with several members on the Wip channel of my discord server.

Those filters were originally simple on/off toggles used to block specific AI branches (Paw Play, Maw, Fatal, etc.),
With the new AI changes I had to update it, I started to do a more modular system with config files per kink filter.

Old Kink Filters AI branch example with check sole

But I quickly realized that this system makes the code more complex, restrictive and hard to maintain as the AI grew more complex. Additionally, filter options in the Kink menu are confusing for the player.

Following those discussions, I decided to fully remove the kink filters and replace them with the AI decision tables, and Game Master overrides. Instead of manually filtering actions, Talas’ behavior is now defined by.

  • AI personality
  • The current situation and relationship with the micro
  • The active Game Master rules

If a user wants Talas to avoid certain actions, they will have to switch Game Master and set the AI decision table to avoid those actions.
That way the user have way more control than simple on/off filters.

AI Decision Table example

Later in v0.4.6.1 I will add presets letting the user choose predefined AI personalities but I will speak about it in the devblog of October 2025. This approach is cleaner in the code, more coherent with the AI, and far more flexible.