We’re very excited to announce the Beta release of Packages!
What are Packages?
Packages are a new Studio feature that is entirely focused on improving reusability in Roblox game development.
They allows you to “package” up parts of your game that you want to reuse multiple times, such as a Model that you want to have many copies of around your level, or a collection of Scripts you want to use across different games.
The key advantage of Packages over existing ways to reuse content (like copy-pasting a Model) is that every Package copy retains a link to its asset in the cloud, which means you can make changes to one copy and then propagate those changes to any other copy.
To make your first Package, right-click on an object in the Explorer and select “Convert to Package”:
You can now reuse that Package in different locations around your place, or even in many different places/different games.
Feature Highlights
Here’s what’s available in this initial Beta release:
Make game assets reusable by saving them to your account as Packages
Reuse a Package by making copies across different places & across different games
Packaged Models & 2D objects can also be used in multiple different positions/orientations
Nesting: Packages can contain other Packages to allow for advanced reusability
See all Packages you’ve created in the Toolbox under “My Packages”
See all Packages you’ve added to the current game in the Game Explorer
Make changes to any copy and publish those changes as a new version of the asset
Update any Package copy to the latest version via “Get Latest”
Multi-Select Update: Get Latest for all Package copies in selection at once
View Script Changes: See changes to scripts within a Package before updating
What’s Next?
As this is the Beta release of Packages, some flows may change based on your feedback. Here’s the current plan to expand the capabilities of Packages and further improve their usefulness:
Mass-Update: Update ALL copies of a Package across all of my places (without opening each place)
Auto-Update: Mark my Package copies to receive updates automatically
Access Permissions: Share edit-access (or just use-access) to your Packages with others (& Groups)
More API: Packages-specific insert API to use a particular version via scripts
Version History Comments: Leave messages to your collaborators about your changes
More Info
Please see the DevHub page for more info and examples:
Feedback Please!
How will you use Packages? Will the upcoming features provide value to you?
Let us know below and help shape the future of this feature!
This is so useful! I recently updated my game to use a new weapon system and it was so tedious. This will make my life easier so I don’t have to copy/paste a folder every time I make a single change to each and every one of the 16+ places in my game.
I feel like for me, packages are just an easier way to move things around a level, I don’t know if it’s the same for other developers out there, but for me myself, I like manually doing something, even if it is as tedious as copying and pasting the same model everywhere.
I do see how it could be used instead of developers having to have a separate test server for their update, and in that case it is highly useful, but for the rest of us, it just looks like something that is just going to pile up in my " My Packages" folder over time.
Note: In this first release, you still have to open each place to update the Package copies within.
It sounds like you’ll be looking forward to the Mass-Update capability above - this will allow you to quickly update all Package copies across each place you select, without having to open each place individually.
Are there any plans to allow packages to be exported into a folder structure so we can control collaboration through things like GitHub, or do we still have to rely upon rojo for that?
Thank you guys for implementing this so early! It’s a feature I’ve felt has been needed for quite some time now on Roblox, since the addition of Universes.
I intend on using this for my game, Redshift Arena. Since it is a multi-level game, this is a great addition to keep all of my assets in sync with each other to prevent game-breaking bugs from occurring, or changing something in one level, only for it to not be shown in the main game,
I do sincerely hope that Automatic Updates or Mass Updates are highest on your priority list, making this feature as useful, if not more useful than LinkedSources. Also, I think being able to package the StarterPlayerScripts, StarterPlayer, and StarterCharacterScripts services would be a great addition to this.
I am excited to see how far the packages system goes!
Also, here’s a suggestion for Packages: Allowing Developers to create folders within the Packages portion in the GameExplorer so we can easily organize our resources within the explorer.
So, if you can view the packages you made in Toolbox does this mean that we can make our own packages available to other users just like models, decals, and etc? (Meaning not allowing users to have edit access but just being able to use them, say for example, modules)
This is great so far, but I’m probably gonna wait until auto-updates are enabled to fully utilize it since I still have to go into every single place in a universe to update the packages
This feature looks promising. At first glance, I have concerns about the context menu entries. Adding four new entries that will remain disabled in most cases seems like a poor use of space. It is a contextual menu, after all. Is there something blocking you from only showing these entries in the context menu upon right-clicking an actual Package? I’d prefer the “convert to package” button to be in the Ribbon Bar under Model, and then have the other options only appear in the context menu when I right-click on a Package.
And unfortunately as the Package system appears to be piggy-backing off of the Roblox model system, we don’t have a way to delete unused items from our inventory or group inventory (or even just a hide feature would be nice). With the advent of packages, I’d like to see Roblox push for more workflow improvements with regards to assets overall. Cluttered toolboxes and endless scrolling are efficiency killers. If only we had some mechanism with which we could group our assets
I would also like to see proper versioning with the package system. As it is right now, the only option we have is to either keep our current version of a package or update to the latest – no way to target a specific version. I’d like to see tagged releases similar to tags on an NPM module in addition to version numbers. Tags would just be a list of strings that are shortcuts to specific version numbers. For example, tag v1.0.0 could refer to version 5, and tag v1.0.1 could refer to version 7. Some tags could also be auto-generated if not explicitly set – a latest tag, for example, to always target the latest version. Tags would just map directly to version numbers, so they can be looked up from the asset metadata – if the ability to select a specific version is implemented, tags would be a relatively simple augmentation that would add a lot of flexibility into the system.
Finally, I think that it’s important to not fall down the slippery slope of trying to exist in the same niche as something like Git. Packages are a great tool for models and are definitely welcome in that regard. But for script projects, using a tool like Git for source control management is much more suitable and I’d like to see Roblox take steps towards embracing external tools rather than implementing custom solutions which, to no fault of Roblox, will never be a fully qualified replacement for professional tools.
Ok, this is going to be great for reuse and maintenance and file compare before deciding to make an update. Let’s not confuse this file compare as source control.
I give some credit as a tiny step forward for source control but only seeing the diff between published and current will be limiting. Especially when multiple dev’s are working on scripts, we need proper source control, rev history, branching, tags, merging, conflict resolution … No need to reinvent the wheel here, just give us separate files in a folder instead of one rblx file. Then we can use a tool of our choice like Git, SVN …
I am really interested is the access permissions. Will this allow others to use but not modify? Can we actual get some real user content protection so that our scripts don’t get copied or disrupted. It would be nice if we could have them private so no one given permission to use them can even read the code. I’m happy to write an API doc for others to use when needed. My confidence in Roblox protecting user generated content is not high at the moment. Devs pour thousands of hours into code development and it would be a shame if the protection of their IP was not at the top of the list of must haves before we start rolling out access control to our source files.
I’m still a little mixed on some developers insisting on being private with their libraries.
I can understand the desire for it to be private if its specifically tied to a game that you are monetizing, but I’d also really like to see developers build robust general-purpose systems and components that people can build upon and contribute to in an open-source and open-standard environment.
I think that we can all really do great things together and develop a wide infrastructure of useful libraries for developers to use and build their own systems upon.
This point right here is especially worth emphasizing. It’s great that Roblox wants to be an all-in-one tool for development, but these things take a lot of time to polish and develop, and it slows innovation and progress when we have to wait for these standards to be realized.
I wish that Roblox would provide better external endpoints to Roblox Studio for people to develop 3rd party software on top of what they have already. Steps are being taken in the right direction, but I want to encourage Roblox’s product managers to continue loosening the boundaries on this kind of open collaborative work between the developer community and the development of Roblox Studio.
I hope to see a day where Roblox Studio becomes abstract enough to a point where developers in the community aren’t just contributing to developing games, but also to the development of the standard components and widgets in Roblox Studio.
This conversation is probably worth branching into a different topic, but I just wanted to leave my two cents on the matter.
I feel like a system like UE4’s would generally be better than a model-based system. I really do wish Roblox went with a system like this instead of it being a model-based system.
Perhaps we’ll have the option to have something like this?
Of course, the current implementation isn’t bad or anything, but I do wish we could just create our own folders under the Game Explorer, and link resources to said folders - I feel like it’d be more intuitive.
Open source has its place with pros and cons. Without trying to start a debate on this thread, there should be nothing preventing someone from making their work public so they can contribute, but all should not be forced in to it from a lack of planning for a feature like this. Inevitably when it comes to producing a product that makes any kind of profit licensing and credits becomes an issue for open source.
Also when it does come to making money (a nice to have), sometimes your IP may be a competitive advantage. As we start to see more business forming on this platform the platform should offer some form of protection for business.