YOU Should use Packages. Yes, YOU!

The post title startled me a little, I feel pointed out.

USE PACKAGES! I DON’T KNOW HOW ANY OF YOU MAKE ANYTHING AT ALL WITHOUT THEM!!!

Well actually, I usually just write a script that automatically replaces every part/object in a game with a model of my choice. :slight_smile:

I might consider trying packages because I do agree it seems like a SUPER useful feature.
Though one of the reasons I didn’t use them had to do with that it feels weird to me to have many duplicated assets in a game.

I care a lot about memory and over optimization.
Instead of having many trees and houses, I like to typically just have a bunch of boxes or invisible parts and when a player gets near then I can Clone() a model of a house or a tree where it needs to be.

This also results in a much smaller Roblox place file.
Though I’m not sure whether packages have this same effect.

I’ll definitely look into packages though.
I’ve been looking for an easier way to have scripts and frameworks in ReplicatedStorage and ServerScriptService auto-update.

Is this possible with packages too?

9 Likes

hey @HealthyKarl quick clarification here - when you say “local packages”, I think you want these abilities:

  1. Continuously receive updates from the “source” package while keeping the customizations you’ve made (right now, packages will require you to pick between receiving an update vs. keeping your modifications).
  2. Be able to apply a certain override (e.g. apple tree package with override of apple color from green to red) at the place level to all instances in a place (i.e. “local” to a place)

Is this right? Am i missing anything?
We’re actively working on how we can enable these for packages! Let me know if you have any additional asks here.

5 Likes

hey @Daw588 have you run into any of these issues recently? we’re trying to address these quality issues for packages.

9 Likes

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

14 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.

8 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.

6 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.

3 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.

8 Likes

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

4 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

8 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

5 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

5 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

7 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.

9 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?

3 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.

1 Like

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.

2 Likes

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

1 Like

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