We’re happy to announce another upgrade to our Packages system. Behind the scenes, a package instance update will now use a brand new algorithm.
External references to objects in the package will remain valid after the update as long as the instance that has been referenced continues to exist. This works even if you move the referenced instance within the package tree hierarchy! Below is an example of a rope constraint that keeps working after a package in-place update.
Please note that the in-place update feature requires some new metadata to take effect. It will not make use of the new algorithm if your package was not published/republished after November 3rd, 2022, but will begin to work when newer versions of your packages are published.
Would be nice to be able to configure the behaviour for how a package interacts with attributes,
e.g. Our analytics system we want as a package, but we want a different data version ID for each game.
Rn we are having to have a module in the package which stores a dictionary off all the place ids using the package and their respective version but it would be much nicer if we could just have it as an attribute on the package.
I disagree. Attributes intentionally are not kept to introduce a level of customizability for each one; because people already do this, making that change would be game-breaking.
My issue with the package system thats its difficult to script around, and distribution of packages is difficult. This issue is mainly around open source libraries, while I would generally publish to GitHub, there’s a few reasons why a user may want to stay on the Roblox platform.
Rojo can be finnicky to set up, and it isn’t a perfect solution
There isn’t a correct way of storing non-script instances, model.json, .rbxmx?
Updating is difficult, since updates wont be tracked in game.
InternalSyncService requires patching the executable, and it can only handle scripts/folders
If Roblox allowed a package distribution system, this could be changed to just fetching a library as a package from the creator marketplace, that can automatically be updated, or kept on a versioned version.
If I had any quick fixes for packages it would be the following:
Allow plugins to import packages (this should be easy, just unlock InsertService:LoadPackageAsset/LoadPackageAssetAsync
Create a new sort on the creator marketplace that allows us to search packages, AND, make it possible to make packages public
oh and please make attributes save in packages :plead:
This is pretty cool, but what if the reference was part of another package? Let’s say you have two packages with references to each other. If you update one package, will the reference persist?
Two packages can’t reference eachother without at least one of the two being modified. Leaving a modified state by discarding the changes will naturally discard the reference.
Yes, that’s the reason I said this. Each package instance should have its own attribute values. The attribute names and their types should always match with the root package instance, but the values should vary per package instance. Updating the root package should only update the attribute names and types, not their value. This means each package can have a level of customizability with a standard schema
I would like to know this as well, it seems you cant get too close to the screen, because if you even breathe on studio, it thinks a change has been made.
I’ve had an issue where the attributes did not apply with a package until I fiddled with it. The issue may have been that I made a Folder a package, containing several instances with attributes