UniversalSynSaveInstance
Shortly USSI. A universal saveinstance revival. This can also be edited and used as a Roblox-Format-File writer.
Install / Use
/learn @luau/UniversalSynSaveInstanceREADME
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
SafeModeoption to completely bypass any detections and save ANY game!<br /><br /> If this script is helpful to you, please click⭐ Starin 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>
<br />

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
- Open the File
- Click on top left "FILE" text and select "Save to File As"
- Make Sure rbxl/rbxm format is selected (not XML!)
- 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
- Users can already convert to Binary Format by
-
[ ] 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-elseexpressions~~ 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:
- Syngp Synapse X Source code 2019 for base saveinstance code (extended by @mblouka & @Acrillis)
- Moon/LorekeeperZinnia for being the original creator of saveinstance that was used in Synapse X, Elysian and many others. As well as being an inspiration for this project.
- Rojo Rbx Dom Xml for being a fallback documentation in case something wasn't clear in the Roblox Format Specifications
- Roblox File Format for a list of redirects of old/deprecated xml properties that still use the old tag values
- Roblox Client Tracker for an extended & close to full JSON Api Dump (with hidden properties & default values)
*** View source code of this file for more credits
Related Skills
node-connect
334.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
82.1kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
334.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
82.1kCommit, push, and open a PR
