May 2023
Custom in Game Cursor
I have worked on creating new custom and animated cursors through this month.
Despite those still being rather basic, it will add more customization to the game.
Those different cursors were created in 3D using Blender, then rendered as sprites in-game.
I have only worked on the main cursor for the time being with a small animation when clicking, and on any text edition field.
In the future, I plan to add more sliders based on different game contexts.
The cursor was tested to work on screens with a 1080p 16/9 resolution. However, it does not adapt to other screen formats, which I intend to fix later.
As you can see in the video above, I also added a custom cursor to display the player’s hands when raising their arms.
This gives a sharper display than just using the default cursor, avoiding some display bug.
New bug and optimization fixes
The game’s developement is beginning to reach its end for version 0.4.4. I have gone through multiple reviews to fix plenty of small bugs produced by the addition of new features.
I also optimized lots of small game elements regarding CPU and GPU.
I want to release a proper, clean version, hence why I am spending more time on this one. The previous versions had too many bugs.
Volunteers helped me by testing the game’s pre-alpha versions and reported every bug they could have encountered while describing the steps to reproduce those.
They did an amazing work, and I thank them warmly, as without them, I wouldn’t have been able to find all those issues nor fix them.
I’ve been adding loggers that will notify when something does not go as expected in the game’s code, which will help me find and fix future issues easier.
I also integrated new interfaces to check, during editing, if new potential problems arise, since I am using and creating my own tools.
Regarding optimization, I am approaching my goals, but I still need to separate CPU and GPU separation.
Unreal Engine offers multiple tools that allow tracking resource cost for each element anytime they’re executed or the cumulated amount of resources used over time, which is very useful.
When I notice an element that uses too many resources, I look into it so that I can figure out how to optimize it depending of its use.
In many cases, it is done by placing some elements in cache so they aren’t recalculated at every single use.
Animation situations
I spoke last month about the situation system and specifically about the nodal editor management.
Since I am content with the current results, I’ve refined features and updated all situations for those to use nods.
Floor collisions
If the player is shrunk at the minimum size, a recurring bug made them fall through the floor when stepped on.
To fix this, I had to rework collision on the different floors.
Before that fix, collisions were on the floor’s surface. It was a bad thing, as it was taking more resources on top of giving a bad result.
Game World Zones
The game uses volumes to identify the different playable areas.
This helps me in many ways: to determine an area’s audio ambiance, to select specific gameplay conditions or even to let the AI react a different way depending on the current area.
This is something I had used in previous versions of the game, but was too resource intensive to use properly. So I completely redid the system to optimize it.
I have also reworked every area in the house now that limitations are less restrictive than before.
This even allows me to define zones depending on complex collisions.
Foliage and crumbs detail
I had to delete foliage and small details such as crumbs and dust in a previous version.
The 5.0 engine I was using did not support vegetation properly and made the game crash. That problem was fixed, so I added vegetation back and worked again on it.
Internal tools and scripts
Since version 0.4.4 is going to be released soon, I created and worked quite a bit on internal tools. ChatGPT has proven to be useful for a few things.
In most cases these tools are here to help me save time and avoid mistakes.
MMVS_UAT_Build
I need specific parameters tied to the project in order to compile game builds that allow me to do some modifications, such as the executable’s name, or adding extra files (the dedicated server’s launcher for example).
I’ve thus written a small script that will do that for me.
Supporter Credit
As I began to use SubscribeStar and Tipeee, I have had to update the script related to game credits.
This script will connect with the different websites’ APIs to pull the needed user data then will filter and update that data locally so that names are properly added to the game’s credits.
SwarmMaster
SwarmMaster is a small tool that will help me a lot in gaining time on development. If you didn’t know already, I am using a static render for Talas’ house level.
This means that shadows, reflections and global illumination are rendered and saved as textures applied to objects. This is what’s best in terms of performances.
I use a modified version of Swarm Agent to render and save those textures. Put simply, this processes distant shadows on different computers at once to lower processing time.
Since I use a custom version of Swarm Agent, I need to update it on every machine anytime I make a change.
Thus I created SwarmMaster, a small tool to optimize this task. When I make a change on Swam Agent’s build, the tool will fetch the new files and updates the different machines by itself. This also allows me to configure those computers remotely.
Translation Update Script
The game is translated in several languages thanks to volunteers.
I have created a small script that will, through POEditor’s API, download the different translation files and place them directly into the game.
I only need to update translations in Unreal Engine to see results.
Dropbox and data secure
I spent some time cleaning and organizing files tied to the game. For those who don’t know, I am using a SVN server to manage game development files.
This allows me to rollback to a previous version if need be, and prevent data loss. The SVN server is stored on a NAS that makes a back-up save every week.
Now I save previous game versions for archiving. There currently is around 400Gb of files for every game builds stored together.
Everything is saved on my NAS, on an external hard drive, and on the cloud with Dropbox.
I also move every copy from MegaUpload to Dropbox as too many people had issues with MegaUpload, who asks users for a subscription to download the game.
See more: Devblogs - Wips Telegram Chanel - Discord Chanel - Support the game - MMVS game