You are browsing as a guest. Sign up (or log in) to start making projects!

7h 15m 16s logged

0.6.0

It wasn’t as simple as expected… But it works now!
You can load a normal world, and on the first save it will be converted into a .msa archive. From then on, whenever you try to load a world that has an archived version, that version will be loaded instead of the other one.

What’s changed:

  • Fixed VirtualFS incorrectly normalizing the root save path, which caused it to no longer match the paths built by the game itself, breaking file lookups everywhere.
  • Fixed QueryEntries not sanitizing multi-level directory paths, which caused Directory.GetFiles/GetDirectories to return nothing for nested folders (welds, anchors, etc.).
  • Fixed reconstructed paths mixing / and \ separators, which broke the game’s own string comparisons (e.g. RemoveOldFiles deleting everything instead of only orphaned files).
  • Added patches for DirectoryInfo/FileInfo instance methods (GetFiles, GetDirectories, CreateSubdirectory, Exists), which weren’t covered by the static File/Directory patches.
  • Simplified VirtualFS‘s internal mode from three states (Idle/Capturing/Playback) down to two (Idle/Intercepting), since capture and playback behaved identically from the interception logic’s point of view.
  • Wrote the Save()/LoadSave() coroutine wrappers that trigger the capture/playback cycle and commit/load the .msa archive.

Progress so far:

  • ✅ VFS (Virtual File System).
  • ✅ Write the fake System.IO functions.
  • ✅ Write/Read the .msa (Mechanica Save Archive) file.
  • ✅ Intercepting the system functions.
  • ✅ Write the triggers that will fire the capture/emission of virtual files.
  • ❌ Add display/support for the new save format in the world selection menu.
  • ❌ Add a config file, deinitialize the VFS on world exit, and other minor details/improvements (new)
  • ❌ [Optional] Fix non-blocking base-game load/save errors that clutter the console. (new)
0
11

Comments 0

No comments yet. Be the first!