YOU Should use Packages. Yes, YOU!

we’re working on an API that enables you to push content from repos (e.g. Github repos) into the Roblox asset system as packages! we’ll share more

18 Likes

Current Packages do the following… that I can’t even replace it.

Too much Cloud Involved. :pensive:

It calls:

  • https://develop.roblox.com/v1/assets/?assetIds=
  • https://assetdelivery.roblox.com/v1/asset/?id=
  • https://apis.roblox.com/asset-permissions-api/v1/assets/check-actions
  • /v1/assets/latest-versions

Didn’t expect.

 

<Content name="PackageIdSerialize"><url>rbxasset://test.rbxm</url></Content>

That would result in AssetID 0. But I wanted it Instance based anyways.

My attempt was this, but that’s not what I meant with Local Packages. Even though eventually some might will find it interesting.

My fake local packages… I give it an invalid ID and create my own result

Which was this.

It was difficult to simulate Local Packages, and I made it “file system based”, while I was seeking Instance based.

Thing is I can’t re-replace it Roblox caches what it calls, so yep… But that is a “unstable” yet working Local Package method, just that the steps needed to achieve it break the rest of the features. But it’s proof that it is possible.

 

I meant this:

  1. Have a new property that is not PackageId that is the same thing that ObjectValue can hold. A referent.
  2. Instead of calling the APIs mentioned above, it will DIRECTLY compare the Referenced Instance and mirror the changes.
  3. Changelogs and etc. aren’t needed it can be quick and fast.
  4. Every other features from Packages, e.g. different Attributes and etc. should inherit just like Cloud based Packages.

 

Thus would be completely new additonal features to customize Packages that would be cool. But local packages are more interesting.

11 Likes

Local Packages, but it should be instance based:

Here is the simulation:

See how it says:

Published package The_Local_Source_Of_Packages has an older metadata format. Please republish it for better version control related supports.

Since it’s cloud based, thus would be something that the current PackageLink needs to be able to differentiate to give it different behavior.

But that video effectively has demonstrated a Local Version of Packages. The Feature is right infront of us, it just needs to be implemented.

Local Packages would not have version differences. If one wants that, use Cloud Packages. Local Packages serve only for Local purposes and faster and dynamic use while retaining other Package abilities.

9 Likes

I’d use it if we can have a Cloud API for downloading, modifying, etc

I want to be able to use this in CI/CD for deployment

Stay tuned, this is in our plans! Thanks for sharing this.

4 Likes

can you share one or more specific examples of how you would use packages with the cloud? we are working on something along the lines of CI/CD deployment and interested in your use cases to make sure its covered.

11 Likes

Wait, so what is the moral of the story? JK, this guide is super useful and detailed

7 Likes

or you could say… “Crate” a package.

:fire: :fire: :fire: :fire: :fire:

i recently found out about what packages actually did, theyre incredibly useful for experiences with multiple places so ill definitely get into them sometime…
this post really shipped packages for me, i think it wrapped the uses up pretty well!

i do mean everything i said though this post is very cool

12 Likes

I found out what packages are this year it’s really useful since I was working on a game what should get much places and I also use it along with stylesheets modules for systems like admin system and custom leaderboard

If Roblox could add a feature where when you publish a package it automatically publish in live experience without first publiching that place

And maybe a possibility to get an not saved version (I forget always to publish changes when made) to fetch it from the package let’s we say I. PlaceX we have a cube of 6x6x6 as in the example and then in placeY we a decal on it then next time you work on placeX bit you forget to update so we could Click getdecelopmentvetsion and we get how it is in that place what it should update itt automatically on placeY or just love syncing packages I don’t know what my other teamembers think cuz what if you break the package but now if someone will add something it conflict the package another thing could be like how files work if it’s duplicated where you manually choose the version of a file like we say scriptx is edited then overwrite it but idk what does the community think

The b3st option could be a prompt what popup and let’s you publish packages if you edited it if it’s broken you could just click no what if not update maybe you can add a note then

7 Likes

this thread should be named “Packages - what are they? Why arent you using them? Who even are you? Do you think you’re better than them? Are you even real?” for clarity

I’ve known about packages for a while but it would be nice to have a “sub-package” system that worked somewhat like a Git branch where when the super (original) package is updated it would not update and instead show you the differences visually and in properties. I think this should be true for packages in general to easily tell what has changed without committing it, but would be especially useful for sub-packages

7 Likes

Hello,

For my use case, I’d like the ability to download a Package as a .rbxm (model file) and then use a tool like Lune to insert it into the .rbxl (place file) that we’re deploying to our live game.

It would also be extremely helpful to have the capability to publish updates to the Package. We use Rojo and VS Code, so whenever our asset files are added, removed, or modified, I’d like to automate this process. Ideally, we could use a Lune script to interact with the Package API and publish these changes, possibly as part of a GitHub Action workflow.

The reason for this is to maintain separation of concerns for different asset types. For example, in one game, we have separate workspaces for DEV, Environment, UI, etc., and we use Packages to sync and share assets between these workspaces.

Having access to the Package API for downloading, creating, and updating (publishing) would make this process much easier and more efficient. We would continue using Packages to share assets between workspaces as static backups, to sync in Studio, and to insert the latest updates during runtime.

Adding a Cloud API for these functions would provide an additional layer of automation and improve our workflow significantly.


I also acknowledge that nested Packages are buggy so I always avoid it

I’d use Package API to do automated changes within my game, for example a Reusable Base Package, upon change I can use Lune to find all with a given tag then replace them with the newest version

9 Likes

Packages are very useful and I do recommend using them, but please implement an AutoUpdate where the game will always download the latest version.

Being forced to publish multiple games for a package change to also be published is a logistical nightmare.

12 Likes

Why package sometimes duplicate instance, we use package for ScreenGui and scripts, we use auto-update, publish to package and update to all place, maybe because team creation and different members in different place when we update?

4 Likes

My biggest thing with packages is that at the end of the day, they’re just models. I can’t prevent my devs from simply ungrouping them and losing all the package functionality.

This is also something that gets me too, as someone who has a game that has MANY sub places that use the same assets & game systems, having to go through all of these and re-publish just to get package changes is annoying.

3 Likes

I wasn’t able to reproduce the issue I experienced, but if I do, I will file a bug report.

Though I will say, I find it time consuming and annoying to have to Publish, select another package, click Update All, and then wait about 5s for the Studio to finish updating the packages. I wish there was an option that allowed me to Publish & Update All with one or two clicks (depending whether the confirmation modal is enabled), and it should take less than a second.

4 Likes

when I update a package will places that use it get updated without publishing them?

2 Likes

I really wish nested packages functioned as you would expect.

You can’t change the AutoUpdate property of nested packages, and if it’s set to true, it still doesn’t auto update. You’ll have to manually get the latest package (without an issue) instead. As an added bonus, it’s hard to find these packages that need to be auto updated because the icon doesn’t show if the package was collapsed in the explorer. Not even a plugin can fix this because PackageLink properties are not scriptable!

Wally + VSC may be the solution to this problem, but this is not builtin… and I’m not a fan of VSC + Roblox because of how it overcomplicates game development.

Please consider fixing this (one of many) problems with packages!

Syncing aside, one of the things about Packages that I seem to not understand is how engine replicates them. Say, we have a tree which consists of 10 Parts, and the game is about exploring forest. As you would expect, there would a lot of trees in the forest, thus there will be a lot of Parts that has to be loaded on to clients. Since I believe engine handles Packages same as normal Models, clients will load all 10 Parts for each tree in the forest, which doesn’t make any sense bc these trees are all the same; instead it should load Model's rotation and position values, lock Parts’ properties and their relative position and rotation values. In my mind, my take makes sense, but as far as I can think of it, Meshes are actually better for this task - engine will download texture, model, etc. only once, and Mesh is a single instance, which theoretically requires way less resources when used in larger quantaties.

But I found a use for Packages, I have some basic functions (usually related to math) stored in a ModuleScript that may be used in different games (or in empty templates to quickly add some functionality to it). But for models? Nah, I would rather use meshes

1 Like

I like packages, i’ve been using them for a few years now. Really handy and they allow you to update your games more quickly and efficiently. Sort of…

I just cannot stand how long mass-updating takes. In a game with a dozen places, mass-updating one single package becomes frustrating. It takes literal minutes for me, and I have to do it for multiple packages. Rather than doing that i’ve just decided to enter every place manually and use the get latest version button. Takes only ~10-20 seconds per place, but still not a very efficient method. I assumed it was because Roblox also saves the place after updating the package, but that’s not the case cause it still takes just a few seconds for me to save a place, making a manual update overall faster than a mass update.

Besides that, mass updating allows you to update only one package at a time, and in a game with multiple packages it turns into a problem very quickly. It’d be amazing if there was a specific menu that allows you to pick not just the places, but also which packages to mass update. Imagine you have 5 types of trees and all of those tree models are packages: now imagine having to mass-update every type singularly and between different places.

The icing on the cake would be the possibility to mass publish places: mass-updating packages and then mass-updating places would be a massive improvement when it comes to pushing out experience updates. It’d make everything so much more efficient (than it already is). Could be added as an option to the menu idea mentioned above.

If any of these features are planned please let me know (and maybe link a page where I can see the roadmap for packages if it exists)
Other than these complaints, I love packages so far and I hope to see them evolve more in the future :smile:

2 Likes

I’m running into this almost constantly, and it makes using them painful.

Ran into the same problem.
Except when i used the mass update feature, it literally just crashed my studio as the game has over 100 places (keep in mind this was some time ago; i’m not sure if it will do the same now)
then there’s updating every place…
I ended up just using InsertService
now i only need to publish an update to the asset, and boom. No need to manually update every place

1 Like