Configuration Reference
The owner of the resources that will be created.
Value | Description |
---|---|
'personal' | All resources will be created in the authorizer user's account. |
group: <id> | All resources will be created in the specified group's account. |
Determines which account should make payments when creating resources
that cost Robux. Note that Mantle will never make purchases unless the
--allow-purchases
flag is enabled.
Value | Description |
---|---|
'owner' | All payments will come from the balance of the user or group specified by the owner property. |
'personal' | All payments will come from the balance of the authorized user. |
'group' | All payments will come from the balance of the group specified by the owner property. Payments can only be set to 'group' when the owner is also set to a group because Roblox does not currently allow groups to pay for resources outside of themselves. |
The list of environments which Mantle can deploy to.
The label of the environment that is used to identify the environment
via the --environment
flag. Must be unique across all environments.
An array of file globs to match against Git branches. If the
--environment
flag is not specified, Mantle will pick the first
environment which contains a matching file glob for the current Git
branch. If no environments match, Mantle will exit with a success code.
Whether or not to tag the commit with place file versions after
successful deployments. It is recommended to only enable this on your
production environment. Tags will be of the format <label>-v<version>
where <label>
is the label of the place and <version>
is the place's
Roblox version.
For example, a start place with Roblox version 23 would have the tag
start-v23
.
Adds a prefix to the target's name configuration. The implementation is dependent on the target's type. For Experience targets, all place names will be updated with the prefix.
Value | Description |
---|---|
'environmentLabel' | The target name prefix will use the format [<ENVIRONMENT>] where <ENVIRONMENT> is the value of the environment's label property in all caps. For example, if the environment's label was 'dev' and the target's name was "Made with Mantle", the resulting target name will be "[DEV] Made with Mantle". |
custom: <prefix> | The target name prefix will be the supplied value. |
Overrides the target's access. The implementation is dependent on the
target's type. For Experience targets, the
playability
property
will be overridden.
Value | Description |
---|---|
'public' | The target will be accessible to all Roblox users. |
'private' | The target will only be accessible to the authorized user. |
'friends' | The target will only be accessible to the authorized user and that user's Roblox friends. |
Environment-specific overrides for the target resource definition. This
will override all configuration, including changes made by the
targetNamePrefix
and
targetAccess
properties.
Override the target configuration. Should match the type of the target configuration.
Defines the target resource which Mantle will deploy to. Currently Mantle only supports targeting Experiences, but in the future it will support other types like Plugins and Models.
The Experience's Roblox configuration.
name
and
description
properties of the experience's start placeThe experience's genre.
The devices that the experience can be played on.
Determines who has access to play the experience.
Value | Description |
---|---|
'public' | The experience will be playable by all Roblox users. |
'private' | The experience will only be playable by the authorized user. |
'friends' | The experience will only be playable to the authorized user and that user's Roblox friends. |
Determines whether or not paid access is be enabled, and if it is, how
much it costs. This should not be enabled when
privateServers
are
also enabled as they are incompatible.
Value | Description |
---|---|
'disabled' | Paid access will be disabled. |
price: <price> | Paid access will be enabled and will cost the provided number of Robux. Must be a minimum of 25. |
Determines whether or not private servers are enabled, and if they are,
how much they cost. This should not be enabled when
paidAccess
is also
enabled as they are incompatible.
Value | Description |
---|---|
'disabled' | Private servers will be disabled. |
'free' | Private servers will be enabled and will be free to purchase. |
price: <price> | Private servers will be enabled and will cost the provided number of Robux. |
Whether or not studio should be able to use Roblox APIs for this place.
Whether or not this experience should allow third-party sales.
Whether or not this experience should allow third-party teleports.
The types of avatars that players can use in this experience.
The type of avatar animation that players can use in this experience.
The type of avatar collision that players can use in this experience.
The scale constraints to apply to player avatars in the experience.
Defaults to Roblox's defaults. Each entry may include a min
, max
, or
both. If one is excluded, the default will be used.
Supported properties: bodyType
, head
, height
, proportions
,
width
.
The asset overrides to apply to player avatars in the experience. Defaults to Roblox's defaults.
Supported properties: face
, head
, leftArm
, leftLeg
, rightArm
,
rightLeg
, torso
, tshirt
, shirt
, pants
The experience's places. There must be at least one place supplied with
the label 'start'
, which will be used as the start place for the
experience.
A file path to a Roblox place (either .rbxl
or .rbxlx
).
A place's Roblox configuration.
The display name of the place on the Roblox website and in-game. If the place is an experience's start place, it will be the experience's display name as well.
The descirption of the place on the Roblox website and in-game. If the place is an experience's start place, it will be the experience's description as well.
The maximum number of players that can be in a server for the place.
Whether or not other Roblox users can clone your place.
Determines how Roblox will fill your servers.
Value | Description |
---|---|
'robloxOptimized' | Roblox will attempt to automatically leave some space for friends to join. |
'maximum' | Roblox will never leave room for friends to join. |
reservedSlots: <count> | Roblox will always leave the provided number of slots available for friends to join. |
A file path to an image that will be used as the experience's icon.
An array of file paths to images that will be used as the experience's thumbnails. The order used here will be the order they appear on the Roblox webpage.
A list of social links that will appear on the experience's webpage.
The display name of the social link on the Roblox website.
The URL of the social link. Must be one of the Roblox supported social link types.
Products that can be purchased within your experience for Robux.
Because Roblox does not offer any way to delete developer products, when a product is "deleted" by Mantle, it is updated in the following ways:
- Its description is updated to:
Name: <name>\nDescription:\n<description>
- Its name is updated to
zzz_Deprecated(<date-time>)
where<date-time>
is the current date-time inYYYY-MM-DD hh::mm::ss.ns
format.
The display name of the developer product on the Roblox website and in the experience.
The description of the developer product on the Roblox website and in the experience.
A file path to an image to use as the product's icon on the Roblox website and in the experience.
The price of the developer product in Robux.
Passes that can be purchased within your experience for Robux.
Because Roblox does not offer any way to delete game passes, when a pass is "deleted" by Mantle, it is updated in the following ways:
- Its description is updated to:
Name: <name>\nPrice: <price>\nDescription:\n<description>
- Its name is updated to
zzz_Deprecated(<date-time>)
where<date-time>
is the current date-time inYYYY-MM-DD hh::mm::ss.ns
format.
The display name of the game pass on the Roblox website and in the experience.
The description of the game pass on the Roblox website and in the experience.
A file path to an image to use as the pass's icon on the Roblox website and in the experience.
The price of the game pass in Robux. If not specified, the game pass will be off-sale.
Badges that can be awarded within your experience.
--allow-purchases
flag to create them.Because Roblox does not offer any way to delete badges, when a badge is "deleted" by Mantle, it is updated in the following ways:
- It is disabled
- Its description is updated to:
Name: <name>\nEnabled: <enabled>\nDescription:\n<description>
- Its name is updated to
zzz_Deprecated(<date-time>)
where<date-time>
is the current date-time inYYYY-MM-DD hh::mm::ss.ns
format.
The display name of the badge on the Roblox website and in the experience.
The description of the badge on the Roblox website and in the experience.
A file path to an image to use as the badge's icon on the Roblox website and in the experience.
Whether or not the badge is enabled.
A list of assets to include in your experience.
If set to a string, the value should be a file path or glob to an asset
or list of assets. The rbxgameasset
name of each matched file will be
its file name without the extension. For example,
assets/pirate-flag.png
will be given the rbxgameasset
name
pirate-flag
and will be accessible in the experience with
rbxgameasset://Images/pirate-flag
.
If set to an object, file
should be set to a file path (it will not be
interpreted as a glob), and name
will be the name of the
rbxgameasset
.
Each file will be uploaded as the asset type matching its file extension. Supported asset types and their file extensions:
Asset type | File extensions |
---|---|
Image | .bmp , .gif , .jpeg , .jpg , .png , .tga |
Audio | .ogg , .mp3 |
Spatial voice configuration.
Whether or not spatial voice is enabled for the experience.
Notification strings for your experience.
By default, the name of each notification (which is only visible to you in the creator portal) is set
to the label of the notification config. You can override this by setting the name
property.
The display name of the notification string on the Roblox website.
The content of the notification string.
Must include {experienceName}
placeholder and may include {displayName}
placeholder once.
Defines how Mantle should manage state files (locally or remotely).
Value | Description |
---|---|
'local' | Mantle will save and load its state to and from a local .mantle-state.yml file. |
localKey: <key> | Mantle will save and load its state to and from a local file using the provided key with the format <key>.mantle-state.yml . |
remote: <config> | Mantle will save and load its state to and from a remote file stored in a cloud provider. Currently the only supported provider is Amazon S3. For more information, see the Remote State guide. |
The AWS region your S3 bucket is located in. If for some reason you need to use a region that is not defined, you can supply a custom one:
The name of your AWS S3 bucket.
The key to use to store your state file. The file will be named with the format
<key>.mantle-state.yml
.