Closed MayGo closed 2 months ago
Yup I agree with your assessment. The latest release of mantle includes support for open cloud APIs for publishing places. Check out the updated authentication docs here: https://mantledeploy.vercel.app/docs/authentication#roblox-open-cloud-api-key
Closing this issue but if this doesn't resolve it feel free to reopen.
Thanks for responding so fast!
I have configured MANTLE_OPEN_CLOUD_API_KEY and everything works fine for project with 1 place.
When using more than one place, it gives error:
My mantle version is blake-mealey__mantle-0.11.15-deploy.
Perhaps I am missing some part of the configuration for a project with more than 1 place. Any help is much appreciated!
@blake-mealey btw, I don't have possibility to reopen this issue!
@blake-mealey This doesn't seem to be due to http://data.roblox.com/Data/Upload.ashx
deprecation.
Roblox has entirely removed the https://www.roblox.com/ide/places/createV2
endpoint used in place creation API (https://github.com/blake-mealey/mantle/blob/861c56f2db3fc563e7187a68f255b3327582bf0c/mantle/rbx_api/src/places/mod.rs#L156C20-L156C62) .
In the creator hub they seem to use https://apis.roblox.com/universes/v1/universes/(UNIVERSE ID)/places/(PLACE ID)/add-place (no post data; bool in response) to link already-existing (from another universe) place to some universe.
There does not seem to be a better web alternative which would create a new blank place. (still looking for other undocumented apis)
UPDATE: Creating a blank place still appears to be visible using the Asset Manager inside studio - it seems they might have just changed the url. Unfortunately, I don't have swagger correctly set up to confirm that.
Thanks for those details @Etheroit. I inspected the Roblox Studio traffic with wireshark and weirdly I am unable to capture the request that they are using to create the blank place in the Game Settings modal. I wonder if they switched to a non-http protocol? Seems pretty weird.
I think a workaround for this would be to:
This would be pretty hacky and would leave an archived experience in the creator's account.
I started a thread in the dev forum since this removal was not documented in the official web endpoint deprecation thread and I believe it should have been: https://devforum.roblox.com/t/api-for-creating-a-place-for-an-experience-directly-has-been-removed-without-a-replacement/3062085
@blake-mealey Are you sure it's possible to remove the start place from the experience? I believe it should not be?
You've also mentioned POST https://www.roblox.com/universes/removeplace
API endpoint in your post which will for sure also be deprecated eventually as it's under www.roblox.com domain.
I've also tried looking for the API using fiddler but it doesnt seem to initiate any http request.
@blake-mealey Welp. That was fast. You've got a response already.
https://devforum.roblox.com/t/unable-to-create-places-within-an-experience-through-apis/3011837/3 seems to be the answer.
I would try to implement a fix but honestly I'm not sure how API responses are parsed in your code - sorry. :(
Welp. I've given it a shot. Please let me know if anything is wrong but looking at other endpoints the PR should be good.
You're right, my workaround would not have worked since you can't remove the root place from an experience. Good thing there is a replacement API for it! Thanks for the PR, I'll take a look at it.
This is fixed in the latest release: https://github.com/blake-mealey/mantle/releases/tag/v0.11.16
Thanks guys! You are fast!
It created the places now. But it is still failing at one step for one file. It might be too large. Game.rbxlm is 126MB.
Error itself is:
Failed: http 500: {"type":"https://tools.ietf.org/html/rfc7231#section-6.6.1","title":"An error occurred while processing your request.","status":500,"traceId":"00-1bf8a17cfeef6af3d10acb4e989e2a69-742916ef57c1deef-00"}
Will give full output:
Deploying resources:
╷
│ + Creating: place_waiting
│ ╷
│ │ Dependencies:
│ │ - experience:
│ │ assetId: 6234782983
│ │ startPlaceId: 18392076537
│ │ Inputs:
│ │ + place:
│ │ + isStart: false
│ │
│ ╰─ Succeeded with outputs:
│ + place:
│ + assetId: 18429658746
│
│ + Creating: placeFile_waiting
│ ╷
│ │ Dependencies:
│ │ - place:
│ │ assetId: 18429658746
│ │ - experience:
│ │ assetId: 6234782983
│ │ startPlaceId: 18392076537
│ │ Inputs:
│ │ + placeFile:
│ │ + filePath: GameWaitingLobby.rbxlx
│ │ + fileHash: 5442c6c6cc0ee72607d9b420643cddef14057c0bf329fa43b3f90ece544a085f
│ │
│ ╰─ Succeeded with outputs:
│ + placeFile:
│ + version: 2
│
│ + Creating: placeConfiguration_waiting
│ ╷
│ │ Dependencies:
│ │ - place:
│ │ assetId: 18429658746
│ │ Inputs:
│ │ + placeConfiguration:
│ │ + name: "[DEVELOPMENT] Monsters Nearby Waiting Lobby"
│ │ + description: Created with Mantle
│ │ + maxPlayerCount: 50
│ │ + allowCopying: false
│ │ + socialSlotType: Automatic
│ │ + customSocialSlotsCount: ~
│ │
│ ╰─ Succeeded with outputs:
│ + placeConfiguration
│
│ + Creating: place_game
│ ╷
│ │ Dependencies:
│ │ - experience:
│ │ assetId: 6234782983
│ │ startPlaceId: 18392076537
│ │ Inputs:
│ │ + place:
│ │ + isStart: false
│ │
│ ╰─ Succeeded with outputs:
│ + place:
│ + assetId: 18429659424
│
│ + Creating: placeFile_game
│ ╷
│ │ Dependencies:
│ │ - place:
│ │ assetId: 18429659424
│ │ - experience:
│ │ assetId: 6234782983
│ │ startPlaceId: 18392076537
│ │ Inputs:
│ │ + placeFile:
│ │ + filePath: Game.rbxlx
│ │ + fileHash: 615ff55037c81f61bc925adb31850d8445bb63c7bd5085f8c326ea9c8e3082e8
│ │
│ ╰─ Failed: http 500: {"type":"[[https://tools.ietf.org/html/rfc7231#section-6.6.1","title":"An](https://tools.ietf.org/html/rfc7231#section-6.6.1%22,%22title%22:%22An)](https://tools.ietf.org/html/rfc7231#section-6.6.1%22,%22title%22:%22An) error occurred while processing your request.","status":500,"traceId":"00-1bf8a17cfeef6af3d10acb4e989e2a69-742916ef57c1deef-00"}
│
│ + Creating: placeConfiguration_game
│ ╷
│ │ Dependencies:
│ │ - place:
│ │ assetId: 18429659424
│ │ Inputs:
│ │ + placeConfiguration:
│ │ + name: "[DEVELOPMENT] Monsters Nearby Waiting Game"
│ │ + description: Created with Mantle
│ │ + maxPlayerCount: 50
│ │ + allowCopying: false
│ │ + socialSlotType: Automatic
│ │ + customSocialSlotsCount: ~
│ │
│ ╰─ Succeeded with outputs:
│ + placeConfiguration
│
│
╰─ Failed 1 changes(s) while evaluating the resource graph. See above for more details.
Perhaps I should make another ticket as this problem is fixed. And this problem does not seem like a problem with mantle, but Roblox API itself. What are your recommendations? Should I create a bug report to Roblox devforum. Or should I use a different file format that is not so large. rbxlx file was created with rojo, not sure how to make it to rbxl (that should be 50% smaller)
@MayGo You're right - file size appears to be the issue. 100mb seems to be the most recent file limit. https://devforum.roblox.com/t/open-cloud-publishing-your-places-with-api-keys-is-now-live/1485135/122?u=etheroit
As for generating .rbxl file instead of .rbxlx, just modify the extension in rojo's build cmd.
rojo build -o build.rbxl
instead of build.rbxlx
.
Mantle seems to support .rbxl according to docs. Please let me know if this fix works for you!
Underestimated the file size shrinkage, actual was 126MB=>3.5MB, so now everything succeeds. Thanks for pointing to that devforum post.
Super thankful for fixing this @Etheroit @blake-mealey My whole motivation for working on Roblox projects again was riding on automating everything in Github Actions. 😊
In mantle.yml I have 2 places:
When running
mantle deploy --environment development
I get error Failed: Roblox error (404 Not Found): 404 | Page Not found
I think it is because Roblox deprecated http://data.roblox.com/Data/Upload.ashx Used in
Blog post: https://devforum.roblox.com/t/official-list-of-deprecated-web-endpoints/62889/62
NB! This is an awesome project!