Improved Workflows for Packages

This is exquisite, I love the changes done to packages recently

1 Like

THIS. Exactly. Itā€™s just about the only problem with packages. We need a button to push a package change to all owned places.

3 Likes

Definitely a welcome update, my team uses packages extensively and this should really help.

However, this pop-up is going to get really annoying, really quick. Can we disable it, or get a ā€œdonā€™t show againā€ option?
image

5 Likes

Nice to see. Hoping to someday see these as a valid parallel to Unityā€™s prefabs.

Tragically I still cannot use packages because they are not compatible with my workflow. I lock the parts in my gameā€™s static map which means I need to unlock the entire map to make any changes to it (since it is in a folder). I need to lock these parts to prevent unintentional edits during gameplay with the build tool, especially by moderators who have a less restricted build tool. This results in every single package registering a change, which is a horrible mess to fix and not worth the trouble.

Without improvements to studio to let me hold a key to select locked parts anyway, and to have better control over what the lock tool unlocks (e.g. ignore folders and only target models, target specific parts, etc), I will continue to be unable to use this entire feature.

2 Likes

i personally dont know how to use Packages in studio, or why we should use them over models or .rbxm files
someone pls explain

2 Likes

Does it works across games from different groups?

1 Like

Love the updateā€¦ A suggestion would be to a merging system for packages. Where when updating all packages, if you have a modified package, it will not delete the modified stuff but merge the new stuff with the modified stuff.

2 Likes

Does this mean the ā€œPublish Whole Gameā€ feature will return? It used to allow you to publish every place in your game at once.

From what I recall, it was removed due to this now-nonexistent Package permutation limitation.

The publish API has an extremely low throttle limit for this use case and cannot be properly automated.

1 Like

Is it possible in the future to have it so for example, I have an items list and I make a change like add a new item or change an itemā€™s stats and Iā€™ve got multiple games sharing this package, will the package be updated on all the games without having to go to each game and publish the changes?

1 Like

Improved Packages is just the first of many Packages related features that are in the pipeline.

A suggestion would be to a merging system for packages. Where when updating all packages, if you have a modified package, it will not delete the modified stuff but merge the new stuff with the modified stuff

Weā€™re researching ways to enable this workflow as talked about at this yearā€™s RDC for Package Interfaces which showed off procedural generation of a tree but the same system could be used for property changes like recolouring a car.

Interfaces enable the package author to ensure forward and backwards compatibility, where the interface can remain stable while the underlying implementation changes.

The challenge with merging is that you can get into a situation where you apply a property onto a package instance sub-part which when upgraded to vN+1 no longer exists OR a scenario where your intent doesnā€™t come across after a package upgrade.

An interface would work around this limitation because the package author publishing vN+1, would ā€œknowā€ that a subpart no longer exists, and can ensure that things are seamless for any package consumers.

Example

Imagine a White Car Package with no spoiler in vN

You recolour the car by changing every exterior panel to Red.

The Car Package gets upgraded to vN+1, but this new version has a spoiler.

You would end up with a Red car with a White spoiler.

If you have an interface where you can set CarColour=Red in vN, then when the Car gets upgraded to vN+1, the package author can ensure intent is maintained/forwards compatibility by setting the interface values to:

Interface
-CarColour=Red (your value in vN)
-SpoilerVisible=False (new interface value in vN+1)

Car.Spoiler.Colour=$Interface.CarColour
Car.Spoiler.Visible=$Interface.SpoilerVisible

2 Likes

Does it update the package automatically across multiple places without me having to go through every single one and publish them one at a time? That is a feature Iā€™d like to have as some games have multiple places and pushing out updates can be a real pain.

3 Likes

Enabling PackageLink.AutoUpdate should fix this issue.

1 Like

Thereā€™s still no way to mass update and publish in a single operation as weā€™re worried about the implications of enabling such a workflow: Mass update and publish without verifying that the package actually works correctly in all of the places first is a very potentially disruptive operation without any easy way to undo it if something goes wrong.

Weā€™re still on the fence but aware that itā€™s a popular request and considering something like a ā€œpublish whole universeā€ option.

As Subtotal notes above, there is a relatively low friction option right now in enabling autoupdate, such that you simply have to open each place, do a quick check that everything still works, and hit publish.

3 Likes

Just want to add that I would love an option for my places to self-publish when packages are updated. As @MonkSaru pointed out, if I have a game with many places, publishing can be a real pain. I understand the caution around enabling such a workflow. However, if I have a careful loading sequence that all my places follow, I believe the benefit of such a feature would easily outweigh any self-imposed risksā€¦ Especially if this auto-publish feature is opt-in for individuals who would prefer that workflow.

3 Likes

Thank you for this! Our game POOH! uses these heavily for our UI, Assets, and etc. across our universe!

2 Likes

Fixed the link in this replyā€¦
I desperately want to be able to use packages but they are too messy with the way they interact with locking/unlocking. Using packages would allow me to bulk update entire forests and avoid breaking instancing. I have written command bar scripts to mass update cloned assets in my game map literally hundreds of times by now.

3 Likes

Do you actually need to lock / unlock the packages as part of your workflow or do you just have to unlock them while doing edits to their contents? (could you give some detail on the workflow)

1 Like

I unlock the whole map when doing map work. The map is in a folder and the lock tool affects the whole hierarchy at once. I need to be able to grab and drag package models around + duplicate them to build the world, so they need to be unlocked for me to do that, but I need them locked in gameplay. Packages in my case would be used for reusable map props like trees and plants.

You say ā€œdownload the contents of the packages to update themā€ and from that I canā€™t really gather what you mean. My question is, is there ANY way for unauthorized users to use it in studio? I have a group package and donā€™t want other people to be able to access or use it.

1 Like

This recent change to packages recently brought this bug back for ones with humanoids. No matter what I do (publish, undo changes, update to most recent) it thinks I changed the package when I havenā€™t.

I can publish my experience with ā€œeditedā€ packages now, so it doesnā€™t block anything, but I now get the package update warning EVERY time I open a place with these packages. It is very frustrating.

Speaking of which, itā€™d be really nice to be able to mute this pop-up indefinitely:
image

Having it appear after every package change is infuriating.

1 Like