General
During May 2026, I worked on several things, mostly audio and digestive system source code to expand the base uses. I also added new gameplay features with Maintained Movements and a new accessibility option for muted audio in the background. I also cover a tooling issue I encountered with Microsoft libraries during development.
The May and June 2026 devblogs were written at the same time.
Audio: Talas House Ambiances
TL;DR: Added new ambient audio in Talas House, with several room-specific variations.
Talas House is very quiet because it is just a house. I cannot really place many sound sources everywhere like in other games with alarms, background shooting, running engines, fire, etc.
So I tried to add many ambiance variations with reverb and effects per room.
(Activate the sound on the video below)
For every ambiance type, I play several audio loops with effects, pitch and randomization.
That way I can use the same audio files several times, but it will sound different each time.
That saves resources and memory, and I can easily adapt the ambiance to the room.
Audio: Underfloor Trick
TL;DR: New method for the underfloor audio effect with listener offsets and bus effects.
I reworked my method for the underfloor sound effect.
Initially, I worked with sound attenuation to make sounds audible behind a surface when the source is not too far away.
That worked well for sounds like footsteps, but it was more complicated for ambient sounds.
Also the attenuation method logic needed to be duplicated for each type of attenuation for every sound that should be heard under the floor, which was not very practical.
After some tests, I preferred to manage all this in a bus with all diegetic sounds, as I did with the muffled effect.
The issue now is that the sound above the floor is not heard when the camera is under the floor, so I created a system to offset the sound listener source from the camera with the collision.
This allows the player to keep hearing the sounds above the floor even when the camera moves below it.
- The yellow line is the sound listener source position.
- The red line is the camera position.
You can see in the video here too:
(Activate the sound on the video below)
I plan to use this method in VR too, for example if you put your head under a surface or into a wall.
It is a good way to make the player understand they are in a wall without breaking immersion.
Audio: Muffled & Scripted Effects
TL;DR: Refined muffled audio with separate subjective sound treatment and a new modular player-effect system.
I overhauled the muffled effect when pinned under a foot to separate the effect on subjective sounds from the effect on other diegetic sounds.
(Activate the sound on the video below)
In the video when it’s First Person View you can notice that the subjective sounds that come from the character, like bone breaking, are less muffled than the other sounds.
This makes first-person audio feel more convincing, while preserving a clear contrast when the camera switches to third-person.
Also I created a new system to manage player effects modularly, and I moved the underfloor and muffled effects into it.
Every effect is now a simple modular script that I can plug into the player Effect Manager, where it dynamically activates or deactivates depending on the context.
Audio: Character Movement and Action Sounds
TL;DR: New sound pack for character. Moving fur, feathers, etc.
This month I recorded some sounds for the character movements and actions.
All these sounds are directly triggered by animations, when Talas sits, walks, lies on the bed, etc. I also recorded moving fur or feathers when Cobble and Talas are moving.
Audio: Talas Digestive & Organic Sounds
TL;DR: New sound pack for internal digestive sounds.
In May I also started to record the internal digestive sounds of Talas.
I used fruits and vegetables to produce the main organic sounds.
Using Reaper software, I cleaned the sounds, filtered them, and ordered them by type.
And in Wwise I set up use cases, variations, and effects.
During May, this pack was used only for footsteps.
I added a new surface type for organic and guts surfaces.
Now when moving inside Talas’s digestive system, you can hear your footsteps become squishy and sticky with variations when you walk or run.
(Activate the sound on the video below)
TagDigestiveSystem & TagDynamicMeshMorph
TL;DR: Internal work to separate the digestive system logic from the morphing logic to make it more modular and reusable.
While working on the digestive system and adding new features, I encountered a management problem but the fix mostly means a more stable game, better long-term scalability, and faster iteration in the future.
────────────
The system I developed for the digestive system had become too advanced to stay digestive-only, and I wanted to reuse that technology for other systems in the future.
So I needed to separate the digestive system logic from the base system logic used to animate geometry with the collision and render.
The issue is that the more I progressed in digestive system development, the more complicated it became to go back and properly separate the logic.
System Split
Internally, I carried out a major refactor to separate the digestive system logic from the underlying morphing system. Before the refactoring, I had two systems:
-
TagDigestiveSystem with around 80 C++ script files.
It’s the base of the system and contains all the logic usable for several characters. -
TalasDigestiveSystem that inherits from TagDigestiveSystem and other systems. It contains all the specific logic for Talas.
This includes the assets with the digestive system models, animations, textures, sounds, etc.
With the refactoring, I separated the base system and the digestive system logic into two different modules. I now have:
-
TagDynamicMeshMorph is the base system for dynamic morphing.
It contains all the logic to manage dynamic morphing in the geometry including the render, collision, physics interactions and the animation systems. -
TagDigestiveSystem will inherit from the base system including other systems.
It contains only the specific logic for the digestive system and the use of other systems. It is a module usable for several characters. -
Then TalasDigestiveSystem will inherit from the Tag Digestive System.
And it contains all the specific logic for Talas’ character and assets.
In the future, when I add other Macro characters, I will only need to create a new module that inherits from TagDigestiveSystem and add character-specific logic. SheWolfDigestiveSystem?
System Enhancements
I also did a lot of testing, cleanup and fixes to make the base system usable with options that are not used in the digestive system.
If you remember, in October 2025 I did major refactoring of the digestive system to optimize game performance. (I spoke about it in the Devblog of October 2025)
The optimizations were focused only on the digestive system with a single render method and collision method. Here I added similar optimizations for the other methods of the Tag Dynamic Mesh Morph.
I have several processing methods, and each method has its own constraints, advantages, and use cases for managing textures, meshes, collisions, optimization strategies, etc.
For the digestive system, I mainly use a hybrid method with movements that are pre-computed on the CPU, then applied on the GPU through shaders.
The data are shared from the CPU to the GPU with a texture that is updated every frame.
But I also have a method that fully works on GPU through the Shader, or fully works on CPU with dynamic mesh updates.
So I needed to make the base system able to support all these methods and switch between them at runtime.
With the refactoring, I also added some features like an in-editor native render, better collision preview, better support for normal deformation, new debug tools, etc.
I also noticed and fixed some invisible bugs, such as meshes randomly duplicating.
Keeping the system functional while maintaining consistency across all processing methods and use cases took me a lot of time. For example, a mesh can be split into several sections to optimize texture memory per section or CPU performance by updating only specific sections of the mesh.
- It can be used to avoid updating collisions when no object is in the zone.
- Or to update only the rendering of visible sections on screen.
But depending on the method chosen, the calculations and management are not the same and I need to be careful about that. For example:
- For collision or CPU render morph meshes, I create new dynamic meshes for each section.
- For Shader process methods, I use a single static mesh, but I create several shader and dynamic textures to manage the different sections.
- For render meshes, the sections are animated using face orientation, but not for the collision mesh because the geometry will not fit with the render face orientation.
- Etc.
I also need to define how vertices and section data are cached, and ensure that any changes to the core logic remain compatible with all systems. The nice part is that the method used for the Digestive System was greatly improved and optimized thanks to the changes required by the other methods.
In-game, all of this mostly means better optimization and a more stable experience. Internally, it also reduces iteration time when I add new features or new characters.
By the way, like my other technology and tools, I have debug levels to test everything and expose some features:
Dynamic Mesh Morph: Better Collision Replacement
TL;DR: Better collision replacement for the TagDynamicMeshMorph system when an object overlaps a surface or goes behind one.
I reworked the collision replacement to prevent the player from falling out of Talas’s digestive system under the level.
In the video I show how the player collision is replaced when it is behind a collision triangle.
It is pure math and works with any collision shapes.
In-game, it calculates only the needed triangles by detecting the collision region.
In this video I show it with a full surface:
Dynamic Mesh Morph: Collision Task Distribution
TL;DR: New collision task distribution to avoid micro-freezes when many sections are updated at the same time.
With the refactoring, I also reviewed how I manage collision updates.
Depending on the context: whether you are a host/client, if a section contains specific objects, etc, the update time will be different.
Before that, I had a simple random delay that was added to the update time to avoid updating all sections at the same time, but it was not perfect because of randomness, and it was possible that many sections were updated at the same time producing micro-freezes.
Now some sections have a higher priority, like the one where the player is standing.
And other sections have a medium or lower priority and are updated later, once the update task list is empty. (You can notice it in the previous video at the start when I play as game master.)
Talas Digestive System Reshape
TL;DR: Reshaping Talas digestive system to make it more fun to explore.
I slightly changed the level shape in the digestive system of Talas.
It now avoids too-long free falls with low gravity and you have more “corridors” to rest.
I find it more immersive and fun to explore when verticality is simulated through animation and camera movement rather than long, low-gravity free falls.
Background Audio Option
I added a Background Audio option to mute the game audio automatically when the game is not in focus.
The option can of course be disabled.
Maintained Movements
TL;DR: New support for maintained moves. When enabled, the player will continue to move in a direction without having to touch the keyboard or controller.
I added support for maintained moves with two modes:
-
Maintained Movement Move: Apply the last character movement.
So if you move in a direction and then turn the camera, Cobble will continue to run in the same direction. Useful if you want to look around while running in one direction for cinematic effects. -
Maintained Input Move: Apply the last movement action input.
So if you move forward in a direction then turn the camera, Cobble will turn to follow the forward movement from the camera. You just have to turn the camera to change direction.
I made two icons, notice the “I” and “M” over the Gait icon.
- M for Maintained Movement.
- I for Maintained Input,
For now, this works only on desktop with keyboard, but controller and VR support will be added later.
It was a suggestion, some people like to play for a long time just running with a nano size, waiting to be stepped on unawares. :>
Btw it automatically disables if you get damaged.
Editor Issue with Microsoft Libraries
TL;DR: An update broke some required libraries in Visual Studio and Unreal Editor. I explain the issue and how I fixed it.
During the refactoring to split TagDynamicMeshMorph and TagDigestiveSystem I got a blocking issue.
This issue did not change the game directly, but it blocked the entire toolchain during a critical refactor.
────────────
First, I suddenly could not compile the project anymore. The error report was essentially flagging everything as an error.
I saved and during several hours I reverted to previous backups, cleared and reset everything, removed caches and temporary files from Windows and Unreal, and forced a full rebuild from scratch with a previous version of the game that I knew was working.
But I had the same issue.
VS 17.8 required for UE5.4
After many hours of investigation, I discovered that during a restart, Windows Update replaced several outdated Visual Studio components that I still depended on, resulting in a mix of old and new libs that were not compatible with each other and made it impossible to compile the Unreal Editor.
For context, I work with Unreal Engine 5.4 for MMVS v0.4.7. (The update to UE5.8 is planned with the update v0.4.8).
At this stage, I still need some specific outdated libs to build C++ files.
They are installed with Visual Studio 17.8 recommended for UE5.4, and it was not possible to fix it without fully reinstalling Visual Studio and the installer.
- Now deprecated and out of support, it is impossible to install VS 17.8 without paying for the professional or enterprise version of Visual Studio. The last possible version is 17.14.
- Using only the installer, it is not possible to install 17.14, the last available version is 18.6. I need to use a hidden link directly from the site that pings the installer to install 17.14.
- Then in the installation settings of Visual Studio 17.14 I need to add back the outdated libs.
From here I was able to compile the editor and the game, but that was not the end of the issue.
Locked with incompatible libs
Because Windows forced the Visual Studio update, it also installed new libs that are not supported by VS 17.14… The most complicated to fix was the GitHubProtocolHandler.
- VS 17.14 uses GitHubProtocolHandler 17.14.36015.10.
(I need it to connect to GitHub and use Copilot.) - Windows update removed it and installed 18.3.11407.131.
- VS 17.14 doesn’t reinstall it and uses the wrong version.
So the connection fails and it randomly crashes.
I tried many things to reinstall the right version with commands, libs, or manual uninstall/install, but without success. Windows just refuses every install under 18.3.11407.131, when I need 17.14.36015.10.
Finally, I found a ridiculous workaround:
- Install Windows 10.
- Install Visual Studio 17.14 with the same trick as before to get the outdated libs.
- Copy the GitHubProtocolHandler files from Windows 10 and paste them in Windows 11…
- Fixed.
Resolving that issue was a pain.
Thanks when I have issue like that I take many notes, So I just have to follow my own instructions to fix if that happen again and save time. I also have public notes about Visual Studio in the game wiki.
Site Update & Devblog features
TL;DR: Updated internal workflow, cleaned the website, and improved devblog navigation features.
After the release of the devblog of April 2026, I updated the site to add new features for the devblogs pages:
- I added heading links with auto-scroll if you want to share specific sections.
- A devblog navigator to switch between devblogs pages easily.
- And now the page creates a preview when you share a link in Discord, Twitter, etc.
For local testing, I moved from Wamp Server to a local Docker.
I updated all the libraries, and I now use Composer and npm to manage dependencies.
Before, all libraries were downloaded and added manually, and they were never updated. I had old libraries from 2018 with critical security issues…
It was a mess because I was much less familiar with web development, but now everything is clean.
What’s nice now is that I can update everything with simple commands and I took many notes for next time.











