The performance updates are a series of updates made to the game in response to Issue 706.
The Issue
The game worked differently before the closing and conclusion of the issue. The game used a single process, that was started by the initalization of the UnityPlayer.exe file. This player would have a unity scene with a script in it that would boot FrooxEngine. FrooxEngine would be updated by this script every frame, and update things in the scene directly via monobehavior scripts.
The issues with this system were many. These issues in the past would cause unity to crash outside of FrooxEngine's control (Often even when FrooxEngine wasn't even doing anything). This used to take FrooxEngine down with it, causing the entire game to close.
The game when running under Unity was using a C# runtime called "Mono", which was very slow. The idea of the update was to update the game to initally .net 8, but during the updates .net 9 came out and FrooxEngine's runtime was updated to that at the conclusion.
The Solution
Frooxius in response decided to create a series of updates that were separated into different parts. The main focus of the updates were to separate Unity and FrooxEngine by bringing things simulated partly by Unity fully into Resonite.
These major Steps were:
- PhotonDust (Particles update)
- Awwdio (Audio update)
- Unity Connectors -> Inter Process Communication (Last stage and final release)
These updates changed some core components of the game, and allowed FrooxEngine to work as entirely stand alone without relying on unity for audio and particles. The game engines were then separated into two separate EXE files or Processes. Resonite now boots directly, and boots it's render engine as a separate EXE. FrooxEngine then sends data into a shared memory section in the ram, which the render engine accesses.
This change allowed FrooxEngine (A now separate exe) to have it's code compiled into a new runtime (same code different executor). This marked a major turning point in the game, and also allowed for more freedom when making systems or new content.