ResonitePackage is a package format allowing users to share and import pre-setup avatars and objects easily[1].
Goals
The goals of the ResonitePackage format are to:
- Allow creators to share creations outside of Resonite
- For example an avatar creator adding a ResonitePackage version of their avatar
- Backup your content locally
- The package includes all the necessary assets for exported item without relying on the Resonite Cloud, making this a good option if you want to create local backups of your items
Non-Goals
- Compatibility with Unity/Unitypackage
- Unitypackage is a proprietary format, that we cannot support/emulate
- Therefore Unity will not support ResonitePackage.
- Compatibility with other VR Platforms
- ResonitePackage files will not be suppoted by other VR Platforms
- Offline Editing
- This is theoretically possible, but not one of the goals of this feature.
How to export
Exporting any item as .ResonitePackage is very easy!
- On the dash, click the "Files" tab
- Navigate to the directory you want to export your package to
- Grab and hold the item you want to export in world (grabbing a slot reference from inspector also works)
- While holding the item, click the green plus button in the Files tab (you can click it with your other hand)
- Export dialog will show up
- Select one of the "Resonite Package" options in the export dialog
- (optional) name the file in the Export dialog
- Click "Export"
The export might take some time depending on the size of the item. Once it's done, the dialog will disappear.
Contents
ResonitePackages will include everything needed to re-create an object inside Resonite when re-imported. Including:
- All Assets
- Images
- Sounds
- Meshes
- Videos
- Fonts
- And others...
- Slot Hierarchies
- Including Bones
- Including all components
- ProtoFlux
All assets will be included explicitly, as a file within the package.
Variants
You can also optionally, export a ResonitePackage with all asset variants by selecting the (+variants) option during export.
This will result in a larger file size, but the object will load much more quickly when users import it. If the package is exported without variants, the user will compute the variants on their end after the package is imported, which can be CPU intensive.
Permissions
As exporting a ResonitePackage is treated the same as exporting any other file, any regular export restrictions still work. This includes:
- Restricting certain roles from exporting in a world
- SimpleAvatarProtection blocking export for objects you do not own.
Simple Avatar Protection handling
ResonitePackages have some custom handling for SimpleAvatarProtection.
On import:
- Resonite will notify each copy of SimpleAvatarProtection found within the package that it is part of a package import.
- If the
ReassignUserOnPackageImport
property on the SimpleAvatarProtection is set totrue
- The User assigned to the SimpleAvatarProtection will be set to the user who imported the package.
- If the
ReassignUserOnPackageImport
property on the SimpleAvatarProtection is set tofalse
- The User assignment will be left alone.
Naming
The name was chosen as it was the most explicit (following in the steps of the Unity engine having the UnityPackage format), and as a way to advertise the platform[2][3].
Tutorials
Development Content
There were several previews of this feature uploaded to Frooxius' YouTube Channel:
Sources
- ↑ Frooxius' comment on the package format on GitHub: https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/950#issuecomment-2153588542
- ↑ Shifty's comment on the name: https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/950#issuecomment-2148464652
- ↑ Frooxius' comment on the name: https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/950#issuecomment-2148476139