SkillAgentSearch skills...

UniversalSynSaveInstance

Shortly USSI. A universal saveinstance revival. This can also be edited and used as a Roblox-Format-File writer.

Install / Use

/learn @luau/UniversalSynSaveInstance

README

<p align="center"> <img height="400px" style="margin: 0; padding: 0" src=".moonwave\static\logo.png" /> </p>

Loadstring

local Params = {
 RepoURL = "https://raw.githubusercontent.com/luau/UniversalSynSaveInstance/main/",
 SSI = "saveinstance",
}
local synsaveinstance = loadstring(game:HttpGet(Params.RepoURL .. Params.SSI .. ".luau", true), Params.SSI)()
local Options = {} -- Documentation here https://luau.github.io/UniversalSynSaveInstance/api/SynSaveInstance
synsaveinstance(Options)

Universal Syn Save Instance

Or shortly USSI, a project aimed at resurrecting saveinstance function from Synapse X.<br /> Reason: Many Executors fail miserably at providing good user experience when it comes to tinkering with saving instances.

[!WARNING] As stated under the Section 7 (b) in the LICENSE:

  • You MUST always include the following Credit string: UniversalSynSaveInstance https://discord.gg/wx4ThpAsmw
  • You are NOT allowed to claim authorship of the source code provided in this repository
  • You MUST always include the following License

[!TIP] Important part about this saveinstance is that it doesn't modify anything, therefore reduces the amount of detection vectors by a lot.<br /> You can also enable the SafeMode option to completely bypass any detections and save ANY game!<br /><br /> If this script is helpful to you, please click ⭐ Star in the upper right corner of the page to support it, thank you!

💖 Support Us & Our Work

<a href='https://ko-fi.com/M4M1JNH5G' target='_blank'><img height='36' style='border:0px;height:36px;' src='https://storage.ko-fi.com/cdn/kofi2.png?v=3' border='0' alt='Buy Me a Coffee at ko-fi.com' title='KO-FI' /></a> ko-fi <br /> ko-fi

DISCORD SERVER:<br />

https://discord.com/invite/wx4ThpAsmw / https://discord.gg/wx4ThpAsmw<br /> <img src="https://discordapp.com/api/guilds/1022465460517740654/widget.png?style=banner2" alt="Our Official Discord Server!"></img><br />

TO-DOs

  • [ ] Look into adding support for Binary Format Output (rbxl/rbxm)

    • Users can already convert to Binary Format by
      1. Open the File
      2. Click on top left "FILE" text and select "Save to File As"
      3. Make Sure rbxl/rbxm format is selected (not XML!)
      4. Click Save
    • .RBXL files are similar to .RBXLX files but are saved in Binary format, which helps reduce the file size.
    • ! Check out Rojo Rbx Dom Binary & Roblox Format Specifications Binary for more documentation about the Binary File Format!
    • ! Also see buffer, bit32 libraries as well as pack/unpack from the string library for more information on how you can implement something like this!
    • ! Rbx-Binary-Format
  • [ ] Add table.clone instead {} in some cases if possible

  • [ ] Support for Model files:

    • [x] rbxmx (xml)
    • [ ] rbxm (binary)
  • [x] Implement Luau Syntax (important for performance!):

    • [x] Compound Operators
    • [x] Avoid using next, ipairs & pairs
    • [x] ~~Interpolated strings instead of concat~~ Slower
    • [ ] Type-checking (😩🙀)
    • [ ] ~~if-then-else expressions~~ No reason to
    • [ ] Floor division
  • [ ] Speed things up as much as possible

    • Requires benchmarks
  • [ ] Support for as many KRNL-like saveinstance Options & UNC:

    • Change mode to invalid mode like "custom" if you only want to save ExtraInstances
    • [x] Decompile (! This takes priority over OPTIONS.noscripts if set !)
    • [x] DecompileIgnore
    • [x] DecompileTimeout (! This takes priority over OPTIONS.timeout if set !)
    • [x] ExtraInstances
    • [x] FilePath
    • [x] IgnoreDefaultProps
    • [x] IsolateStarterPlayer
    • [x] NilInstances
    • [x] Object (for .rbxmx files)
    • [x] RemovePlayerCharacters
    • [x] SavePlayers
    • [x] ShowStatus
      • [x] ~~Add Drawing Library support for ShowStatus~~ Can't reliably test if it's working on an executor
    • [x] IsolatePlayerGui (same as IsolateLocalPlayer)
    • [x] Callback
    • [x] ~~CopyToClipboard/Clipboard~~ Use Callback instead
    • [ ] Binary (rbxl/rbxm)
  • [x] ~~Remove buffersize, savebuffer & so on for sake of performance by concatenating <Item> strings to total string then writing it to file (no extra steps like table.concat)~~ table.concat proved faster in the case of huge amount of concatenations

    • Test table.concat vs string ..= with a full buffer (this benchmark differs per usecase)
  • [ ] Add Option to restart saveinstance from the point that it crashed on (perhaps by skipping)

  • [ ] Maybe modes should do more than just determining the list of instances to save, like changing IgnoreDefaultProperties to false if mode is "full" for example

  • [x] Add Lua & Luau versions instead of merged (WARNING: LUAU MIGHT BE MORE UPDATED THAN LUA VERSION, lua version exists just for the sake of old & bad executors, ask devs of your executors to support luau as its latest & greatest)

  • [x] ~~Add Support for multiple Instances to be saved as a model~~ IsModel = true & ExtraInstances

  • [ ] Force disable ParticleEmitters in case something like IgnorePropertiesOfNotScriptsOnScriptsMode is enabled (they stack in one place and create huge lag)

  • [ ] Be able to specify which special properties you want saved (to avoid saving all)

Acknowledgments

[!IMPORTANT] This document is based largely on the efforts of @Anaminus & @Dekkonot, authors of the Roblox Format Specifications. Additional resources include:

*** View source code of this file for more credits

Related Skills

View on GitHub
GitHub Stars340
CategoryDevelopment
Updated2d ago
Forks137

Languages

Luau

Security Score

85/100

Audited on Mar 22, 2026

No findings