Crates.io | asphalt |
lib.rs | asphalt |
version | 0.8.2 |
source | src |
created_at | 2024-03-07 11:34:41.65658 |
updated_at | 2024-11-19 20:46:51.848421 |
description | Upload and reference Roblox assets in code |
homepage | https://github.com/jacktabscode/asphalt |
repository | https://github.com/jacktabscode/asphalt |
max_upload_size | |
id | 1165865 |
size | 170,469 |
Asphalt is a simple CLI tool used to upload assets to Roblox and easily reference them in code.
aftman add jacktabscode/asphalt
rokit add jacktabscode/asphalt
cargo install asphalt
Asphalt cannot be installed with Foreman.
asphalt init
Guides you through setting up a new Asphalt project in the current directory.
asphalt sync
Syncs all assets in asset_dir
.
There are three targets you can use to sync assets:
cloud
: Uploads your assets to Roblox. This will generate a asphalt.lock.toml
file which you should commit to source control. This is the default target.
studio
: Syncs assets locally to Roblox Studio. This is useful for testing assets in Studio before uploading them to Roblox.
debug
: Syncs assets to an .asphalt-debug
folder in the current directory.
asphalt sync # Equivalent to --target cloud
asphalt sync --target studio
asphalt sync --target debug
You can also perform a dry run to verify which assets will be synced. This displays the assets that would be synced without syncing them.
asphalt sync --dry-run
asphalt list
Lists asset paths from the lockfile and their corresponding Roblox asset IDs.
Asphalt is configured with a project file called asphalt.toml
. It is required for the program to run.
asset_dir = "assets/"
exclude_assets = ["**/*.txt", "**/*.DS_Store"]
write_dir = "src/shared/"
[codegen]
typescript = true
style = "flat"
output_name = "assets"
[creator]
type = "user"
id = 9670971
[existing]
"some_sound_on_roblox.ogg" = { id = 123456789 }
"some_image_on_roblox.png" = { id = 987654321 }
asset_dir
: path
exclude_assets
: arraywrite_dir
: path
creator
: Creator
codegen
: Codegen
existing
: map<string, ExistingAsset> (optional)type
: "user" or "group"id
: numbertypescript
: boolean (optional)
style
: "flat" | "nested" (optional)
flat
. If you would like to have an experience similar to Tarmac, use nested
.output_name
: string (optional)
assets
.strip_extension
: boolean (optional)
false
. If you would like to have an experience similar to Tarmac, use true
.id
: numberThe formatting of code generation (such as spaces, tabs, width, and semicolons) is not guaranteed by Asphalt and may change between releases without being noted as a breaking change.
Therefore, it is recommended to add Asphalt's generated files to your linter/formatter's "ignore" list. Here are instructions for the most commonly used tools:
You will need an API key to sync with Asphalt. You can specify this using the --api-key
argument, or the ASPHALT_API_KEY
environment variable.
You can get one from the Creator Dashboard. Make sure you select the correct group and Asset-related permissions.
You will need a cookie to upload animations to Roblox. This is because the Open Cloud API does not support them. It will automatically detected from the current Roblox Studio installation. Otherwise, you can specify this using the --cookie
argument, or the ASPHALT_COOKIE
environment variable.
You will probably want to disable Session Protection if you are using Asphalt in an environment where your IP address changes frequently.
[!WARNING] This feature is experimental, and Roblox may break the API we use or change its behavior without warning.
To upload animations, make sure you specify a cookie as noted above.
Asphalt expects a single KeyframeSequence to be saved as either a .rbxm
or .rbxmx
file.
Thank you to Tarmac for the alpha bleeding and nested codegen implementations, which were used in this project.