Event-Driven Asynchronous Asset Loading
Rather than have every block of data as its own asset (with an unnecessary inheritance hierarchy), everything was merged into data tables. What was once almost 1000 bloated asset files is now reduced to 10. This also allowed me to remove my own registry implementation, and all of the excess looping attached to it.
While that drastically improved game data, the real work was dealing with the hard asset references such as meshes, textures, and animations. Every one was converted to a soft asset reference, and is now loaded on the fly asynchronously. More importantly, the assets are unloaded when no longer needed.
These aspects corrected massive flaws that have crept into the game over the last 10 years. The result is a far shorter game boot time, roughly a 75% reduction in RAM usage, and lower VRAM usage.
If you ever struggled to even launch the game, try it now.
Rewritten Blessed Ones
The code for blessed ones became a mess, consisting of an ugly blend of C++ and blueprint (the engineās slow nasty scripting language). Additionally, they were placed in the map itself which caused issues and forced all of them to be loaded when the map loaded.
Now all blessed ones are purely written in C++ and spawned dynamically. They teleport around using a new node system based on game state.
Blessed ones are now asynchronously loaded/unloaded as needed, which opens the door for having potentially thousands of them scattered across the world.
Comprehensive Codebase Cleanup
10 years of cruft has been sorted. I removed header files from other header files where possible, reworked redundant logic, removed ugly or dead code. Additionally, I now use Rider for debugging/code browsing rather than the M$BS bloatware Visual Studio. The MSVC compiler is still used behind the scenes.
Also the game and engine are now grouped together in a monorepo setup.
Systems are No Longer Actors
Previously I had every game system, such as the character and breeding systems, as actors that were spawned in the world and then maintained with loops. This was terribly inefficient, as actors contain so much code that was not being used. It turns out the engine supplies USubsystem classes designed for exactly this purpose.
Every system was converted to a USubsystem, and delegates now replace my own event loops. The result is less random hitching, RAM usage, and faster code performance.
Save File Overhaul and the .sexy File Format
This one will certainly be a welcomed change. Since the beginning, save wipes have been necessary because I did not control the data. Well now I do.
Rather than blindly relying on the engineās save system, I now define and serialize every bit of data myself. Not only does this reduce the save file size drastically, it means save wipes are going to be very rare going forward.
This also means a new custom file format for everything the game can output. Saves, character presets, and Lovense toy presets are all now saved in highly efficient .sexy files.
Saves are no longer limited to slots, the entire concept of slots is removed in favor of as many .sexy save files as you want. You can now delete saves in the game itself.
The game will automatically convert old character presets from .sav to the new .sexy format, but eventually I will remove this legacy code, so make sure they get converted.
Game Logic Node Redesign and Doubling Down on Pure C++
The game has many nodes around the map to control where characters appear, where sex scenes happen, etc. A good portion of those nodes had messy logic defined in blueprint, but not anymore.
Every node was moved to pure C++, and the logic was cleaned up. Many redundant nodes were removed in favor of the new unified character teleport system mentioned above.
Even though the vast majority of game has always been written in C++, I let some sloppy blueprint stay around far longer than I should have. Well that will not be happening anymore. The only blueprint left to remove is the animation blueprints, but that will take some intense study to get right for a future build.
Additionally, the game and engine are now compiled with C++17, and the latest version of MSVC that the engine supports (14.29).
Dialogue Now Powered by Ink
My clunky dialogue system served the game well for years, but it was completely removed in favor of a system based on Ink
Ink is a full scripting language for dialogue that allows supreme narrative control that my old system could never achieve.
I wrote an efficient system around the inkcpp library that focuses on high performance. Porting the old dialogue over to Ink took a long time, but I did make some improvements to dialogue while I was at it.
Optimized Unified Water System
In build 0.761 I added a dynamic water system, but it was only used for lakes and rivers. Additionally, it was very slow and resource intensive. Hopefully now that is no longer the case.
The number of render targets used by the water was reduced, and how they get rendered to was overhauled to be much faster. Vertex displacement was removed in favor of a normal driven effect, which enabled me to remove the ultra high triangle meshes required for water with only a minimal visual difference.
The old water system was completely removed, and the dynamic system now powers the ocean and lava.
Data Optimization
I removed as much UPROPERTY macro bloat from the data as possible, and optimized the data itself. Groups of bools were converted to flags, and any unused bloat was removed. This is an ongoing process that will continue.
Modifying the Engine
Since I will never āupgradeā to UE5, I have taken full control of the engine itself. It is based on the final version of UE4, and over time I will be customizing and improving it as needed.
End of OBF
The game exe and local data folders are BOTN once again, perhaps one day I will tell you what OBF was.
6 Comments. Leave new
Hi when i start the game it puts me a black page and it stays inactive how to play
i keep getting Microsoft C++2015 runtime error what do i do?
Hola el al descargar el fichero del juego me da error de lectura y datos, los archivos no se descarga y el juego no sale en mi pc
Hola, prueba a desactivar el antivirus cuando descargues el juego
COMO LO COLOCO EN ESPAĆOL
Hello,
Unfortunately the game developers have not made any patch for the Spanish translation yet, but don’t worry as we will have new information about this game we will post it immediately on our website.
Thanks for your interest and understanding!
AdultGamesOn Team