Roblox

From Archiveteam
Jump to navigation Jump to search
Roblox
Roblox logo
Roblox - 12-4-17.png
URL https://www.roblox.com/
Status Online!
Archiving status Not saved yet
Archiving type Unknown
IRC channel #robloxd (on hackint)

Roblox is a multiplayer building and games platform featuring Lua scripting, originally launched in 2006.

Alive Areas of Interest

These are things that have a major impact if Roblox decides to drastically change/remove them.

DevForum

The Roblox Developer Forum uses Discourse. It formerly used Kunena before switching.[1]

As of August 2024, there are 8 publicly available categories without signing in; "Updates", "Help and Feedback", "Bug Reports", "Feature Requests", "Resources", "Collaboration", "Forum Help" and the "Bulletin Board". They all contain sub-categories.

Roblox uses the "Updates" category to announce changes to their platform/software and announce developer events; if they can be replied to, they will automatically lock after 4 months of inactivity. Users can create topics and bug reports. Inappropriate topics can become hidden for moderation.

Some topics are only available if you are signed in. The first post "Hello World" (created on October 18th, 2013) is an example of this.

A sitemap.xml is available. As of August 2024, it contains 40 sub-sitemaps and a _recent sitemap. Further inspection shows that it currently has 399,552 topics, ranging from 2013-11-05 to 2024-08-14. This is most likely not the full amount of topics, but it is a good approximation of how many topics can be archived without authentication.

Broad information on archiving a Discourse forum can be found on the Discourse page.

Uncopylocked Places

An uncopylocked place allows anyone to copy a place freely.[2] The website only shows an option to view the current version in Roblox Studio, but any version can be downloaded with the Asset Delivery API.

Roblox might remove access to downloading older versions or prevent unregistered users from downloading any version in the future. When this happens, many games will need to be checked if their copy protection is off. Older games most likely have their protection off, while newer games will have it on.

Some places have thousands of versions, all adding up to gigabytes in total. A great example of this was the Star Wars: Clone Wars RP, which for User:Dango360 uncompressed took over 100 GB of space. This can make it too tedious for one Tracker instance to download all versions of a place at once.

APIs

There are 8 major ID systems.[3] The largest system, "Asset", deals with 80 different types of assets.[4] This will focus on the APIs that are related to those 8 systems.

Most of Roblox's APIs use Swagger UI to show information on what the APIs can do. It can be accessed at "/docs/". The APIs below have more options to try in the docs. For hidden APIs, such as internal or backend APIs, you can use EasternBloxxer's Unofficial Roblox Web API Documentation.

Asset Delivery API

Documentation: https://assetdelivery.roblox.com/docs/

The Asset Delivery API allows you to locate assets in Roblox's CDN. It can also identify any asset that is allowed to be downloaded. You need the ID of the asset (known as an "asset ID") to be able to download the asset.

There are two versions of this API; v1 and v2. They both work the same way, the difference being how they respond. v1 uses HTTP headers and v2 uses JSON.

v1

For example on v1, to download this perfectly normal texture, the URL would look like https://assetdelivery.roblox.com/v1/asset/?id=1602403668&version=1. In the location section of the headers, the example's asset location is https://c2.rbxcdn.com/9d4bbb1d9b65cc5405f2a16596e55c23. Clicking on a /v1/asset/ link in a browser will redirect you to the asset location in the CDN.

HTTP/2 302
content-length: 0
date: Sat, 14 Sep 2024 23:47:29 GMT
server: Kestrel
cache-control: no-cache
location: https://c2.rbxcdn.com/9d4bbb1d9b65cc5405f2a16596e55c23
roblox-assetid: 1602403668
roblox-assetversionnumber: 1
roblox-assettypeid: 1
strict-transport-security: max-age=3600
x-frame-options: SAMEORIGIN
roblox-machine-id: 1cb76b00-d6b4-69bd-9c0a-61cec40120a9
x-roblox-region: us-central_rbx
x-roblox-edge: ams2
report-to: {"group":"network-errors","max_age":604800,"endpoints":[{"url":"https://ncs.roblox.com/upload"}]}
nel: {"report_to":"network-errors","max_age":604800,"success_fraction":0.001,"failure_fraction":1}

v2

For example on v2, if you want to locate version 12 of an uncopylocked place (e.g. Crossroads), the URL would look like https://assetdelivery.roblox.com/v2/assetId/1818/version/12. In the response, the example's asset location is https://c5.rbxcdn.com/e73faf4014dd9c067da26670596aca98.

{
  "locations": [
    {
      "assetFormat": "source",
      "location": "https://c5.rbxcdn.com/e73faf4014dd9c067da26670596aca98"
    }
  ],
  "requestId": "638592723114295063",
  "IsHashDynamic": false,
  "IsCopyrightProtected": false,
  "isArchived": false,
  "assetTypeId": 9
}

Asset Versions

Version 0 of an asset is reserved for the latest version available; version 1 is the first version of the asset, version 2 is the second, and so forth. Some versions may be unavailable due to moderation or other various things. In those cases, a 403 code will be presented in the JSON, with the message "Asset is not approved for the requester". Both v1 and v2 will send a JSON along with the error.

For example, while the most recent version of asset 25891754 is unavailable, the previous versions are still accessible.

{
  "errors": [
    {
      "code": 403,
      "message": "Asset is not approved for the requester"
    }
  ],
  "requestId": "638592743651399261",
  "IsHashDynamic": false,
  "IsCopyrightProtected": false,
  "isArchived": false,
  "assetTypeId": 0
}

Badges API

Documentation: https://badges.roblox.com/docs/

Badges have a fun situation with their system. They were first introduced as just another type of asset. On July 16th, 2018, a new badge system was enabled; future badges would use a separate ID for badges, while the older badges would keep their asset IDs.[5]

This means using APIs (like the Economy API) that are meant for assets can give confusing results. "https://economy.roblox.com/v2/assets/14417332/details" will give the expected badge info, but "https://economy.roblox.com/v2/assets/2124539912/details" will give an unexpected, unrelated result.

To accurately get the info of a badge, you can use "https://badges.roblox.com/v1/badges/*". To get the info for badge ID 2124539912: "https://badges.roblox.com/v1/badges/2124539912".

{
  "id": 2124539912,
  "name": "You played!",
  "description": "You played my game enjoy your stay!\n-update May 2020 made it more appropriate for Roblox.",
  "displayName": "You played!",
  "displayDescription": "You played my game enjoy your stay!\n-update May 2020 made it more appropriate for Roblox.",
  "enabled": true,
  "iconImageId": 5072040295,
  "displayIconImageId": 5072040295,
  "created": "2020-05-22T18:12:08.727+00:00",
  "updated": "2020-05-28T14:47:20.947+00:00",
  "statistics": {
    "pastDayAwardedCount": 4,
    "awardedCount": 1239,
    "winRatePercentage": 1
  },
  "awardingUniverse": {
    "id": 15042,
    "name": "My lovely place",
    "rootPlaceId": 6677
  }
}

To list every enabled badge in a game, you will first need to get the universe ID of the place from the Universe-related API. Then, you can do "/v1/universes/{universeId}/badges". Adding "&cursor=" will allow you to access the next page (with the nextPageCursor in the current response; if it is null, then there are no more badges.

This is the response for Universe ID 156639 (Sword Fights on the Heights IV):

{
  "previousPageCursor": null,
  "nextPageCursor": "eyJrZXkiOiJpZF8yendBQUFUZmVJdVFBemdUM2t5QSIsInNvcnRPcmRlciI6IkFzYyIsInBhZ2luZ0RpcmVjdGlvbiI6IkZvcndhcmQiLCJwYWdlTnVtYmVyIjoyLCJkaXNjcmltaW5hdG9yIjoidW5pdmVyc2VJZDoxNTY2Mzlzb3J0Qnk6IiwiY291bnQiOjEwMH0KZjU3NDNiNjgwNTVmMDNmYjhjYTdhMzZiZWEyMTU1ZWUyY2I2NDIyY2NkZjQxOTRhMDFlZmRhZWI4ZDJiNTU0Mw==",
  "data": [
    {
      "id": 14417332,
      "name": "John, Loved of Muses",
      "description": "Awarded to people who find my \"signature\" that I left on this level.",
      "displayName": "John, Loved of Muses",
      "displayDescription": "Awarded to people who find my \"signature\" that I left on this level.",
      "enabled": true,
      "iconImageId": 14417331,
      "displayIconImageId": 14417331,
      "created": "2009-08-13T05:22:32.393+00:00",
      "updated": "2010-07-01T17:47:35.577+00:00",
      "statistics": {
        "pastDayAwardedCount": 251,
        "awardedCount": 140128,
        "winRatePercentage": 0.158
      },
      "awardingUniverse": {
        "id": 156639,
        "name": "⚔️ Sword Fights on the Heights IV",
        "rootPlaceId": 47324
      }
    },
    {
      "id": 14468729,
      "name": "5 Kills at Sword Fight on the Heights",
      "description": "Score 5 kills at Sword Fight on the Heights to win this badge. If you can't do this, maybe you would rather play \"Tea Party on the Heights\" or \"Sword Dancing at Fat Camp With Starwars Kid\".",
      "displayName": "5 Kills at Sword Fight on the Heights",
      "displayDescription": "Score 5 kills at Sword Fight on the Heights to win this badge. If you can't do this, maybe you would rather play \"Tea Party on the Heights\" or \"Sword Dancing at Fat Camp With Starwars Kid\".",
      "enabled": true,
      "iconImageId": 14468617,
      "displayIconImageId": 14468617,
      "created": "2009-08-14T01:27:38.913+00:00",
      "updated": "2010-07-01T17:47:35.577+00:00",
      "statistics": {
        "pastDayAwardedCount": 207,
        "awardedCount": 1905591,
        "winRatePercentage": 0.13
      },
      "awardingUniverse": {
        "id": 156639,
        "name": "⚔️ Sword Fights on the Heights IV",
        "rootPlaceId": 47324
      }
    },
        ...
    {
      "id": 83333920,
      "name": "Meta Pwn",
      "description": "You pwned someone who pwned John. It's nice to know that someone has my back.",
      "displayName": "Meta Pwn",
      "displayDescription": "You pwned someone who pwned John. It's nice to know that someone has my back.",
      "enabled": true,
      "iconImageId": 83333419,
      "displayIconImageId": 83333419,
      "created": "2012-06-12T00:40:57.6+00:00",
      "updated": "2012-06-12T00:40:57.6+00:00",
      "statistics": {
        "pastDayAwardedCount": 8,
        "awardedCount": 125283,
        "winRatePercentage": 0.005
      },
      "awardingUniverse": {
        "id": 156639,
        "name": "⚔️ Sword Fights on the Heights IV",
        "rootPlaceId": 47324
      }
    }
  ]
}

Note as of August 1st 2024, the above API will not show disabled badges.[6]

An ArchiveBot capture was done for 3 million badges[7], which saved both the website and the badge API responses. It took around 25 days for the job to complete. The text file used was not the complete list of badges available; more scraping would be required to find any additional badges.

Universe-related API

Universes (or experiences) are containers for places on Roblox[8]. Places in other universes that want to teleport to other universes can only teleport to the start place unless the setting for that is disabled. Note that "https://www.roblox.com/games/" doesn't use universe IDs; any place can be visited on the website, but it will show the universe's information rather than the specific place information.

To get the universe ID from a place ID, you will need to use "https://apis.roblox.com/universes/v1/places/{placeId}/universe".

Roblox uses universe IDs in some APIs. For example, it is used in Badges API to list every badge in a place.

Vital Signs

Server Issues

On Halloween weekend 2021, Roblox's servers were down for three days.

Since then, Roblox users have noticed peculiar things happening that indicate a botched recovery, but they seem to be happening less and less ever since Halloween weekend 2021.

Roblox servers are also known to be low performing, other server issues occurs frequently every now and then, usually caused by popular game updates but resolved quickly. It is rumored that the servers so old that they are from 2012.

Audio Privating

Roblox Audio
Status Offline
Archiving status Lost
Archiving type Unknown
IRC channel #archiveteam-bs (on hackint)

Roblox announced on 2022-03-09 that they would private all audio longer than 6 seconds on March 22nd. Additionally, all newly-uploaded audio will be automatically set to private on the same date, and upload limits were introduced that cap how many audio assets can be uploaded in 30 days (10 for unverified accounts, 100 for ID-verified accounts).[9]

Forums

July 2017: consolidation

Roblox forums consolidation
Roblox logo
Roblox forums screenshot.png
URL https://forum.roblox.com/Forum/[IAWcite.todayMemWeb]
Status Special case
Archiving status Partially saved
Archiving type Unknown
Project source roblox-grab
Project tracker roblox
IRC channel #archiveteam-bs (on hackint)
(formerly #robloxd (on EFnet))
Data[how to use] archiveteam_roblox

On July 14th, the Roblox administrators announced that its forums would be consolidated into 5 sections, and to save any content that wasn't in those boards:

Forum Upgrade

Dear Robloxians,

As the community continues to grow and evolve, our vision is to create a positive and constructive environment where everyone is welcome to share their passion for Roblox. Moving forward, we will be introducing new improvements to the Roblox Forum to provide you with a more streamlined experience.

On July 27th, 2017, the existing forums will be rolled into the following categories. If you have posted content in any forum NOT listed below, please make a copy of it now.

  • Roblox News & Discussion

  • Clans & Guilds

  • Let’s Make a Deal

  • Game Design

  • Scripts

We’re committed to providing players with a place where they can continue safely engaging in interesting discussions about playing and creating amazing experiences on Roblox. We believe these newly organized forum categories will help facilitate these kinds of friendly and collaborative conversations within the community.

As always, we appreciate your continued involvement on the forums. Thanks for being part of the Roblox community!

December 2017: shutdown

Roblox forums shutdown
Roblox logo
Roblox forums screenshot 201712.png
URL https://forum.roblox.com/Forum/[IAWcite.todayMemWeb]
Status Offline
Archiving status Saved!
Archiving type Unknown
Project source roblox-grab
Project tracker roblox
IRC channel #archiveteam-bs (on hackint)
(formerly #robloxd (on EFnet))
Data[how to use] archiveteam_roblox

On 4th of December, 2017, Roblox staff announced that the forums would be shut down a week later on the 11th of December:

Important Announcement Regarding Closure of Forum

Dear Robloxians,

As the community continues to grow and evolve, our vision is to create an environment where everyone is welcome to share their passion for Roblox. The current structure for our Forums does not allow us to maintain the high standards that we feel are so important for nurturing a constructive and positive environment.

After much consideration, we've made the decision to close these public forums. Please consider using these alternative communication methods:

There are groups that are available to serve as places for discussion and collaboration on any topic or interest. You can even create a new group for any topic that doesn't exist yet. You can search for a group here: https://www.roblox.com/groups/join or create new groups here: https://www.roblox.com/groups/create. You can also advertise your group to engage with others with your interests.

Our developer forums have read-only sections available where all users can read about important game development and platform announcements: https://devforum.roblox.com/

You can always catch-up on the latest news and features here at our blog: https://blog.roblox.com/

We’re committed to providing players with a place where they can continue safely engaging in interesting discussions about playing and creating amazing experiences on Roblox. This coming year, we'll be investigating options to re-build forums that better serve you, our community, and our goals in providing a safe and constructive environment. As of today, the Forums will be read-only. Please save any content that you might want to keep as these public forums will be closed on Monday, December 11, 2017.

Group sales

Roblox groups are frequently bought and sold, even though this is against Roblox's Terms of Service. When these sales occur, many resources related to the group (such as videos, Google Docs, Trello boards, and external messaging boards like Discord servers) are sometimes lost or destroyed. These make up a significant part of the group's culture and attempts to preserve them should be made.

Marketplace Comments removal (April 2024)

Roblox Marketplace Comments
Roblox logo
Status Offline
Archiving status Partially saved
Archiving type DPoS
Project source roblox-marketplace-comments-grab
Project tracker roblox-marketplace-comments
IRC channel #robloxd (on hackint)
Data[how to use] archiveteam_robloxmarketplacecomments

At 2024-03-26 16:59 UTC, Roblox announced on their Developer Forum that they're going to remove comments for marketplace items on 2024-04-09.[10]

Deprecating Comments for Marketplace Items

Hello Creators,

After careful consideration and evaluation, we have decided to remove comments for Marketplace items, a feature that has only been available on the web.

In case you need to review already existing comments, they will remain in a read-only state until April 9, when we will remove comments entirely.

Why?

Marketplace comments were originally introduced for you to gather valuable feedback from users and engage with your community.

It has become evident that the comments feature for Marketplace items is no longer serving its original purpose as it’s become a hub for spam, leading to low usage among both users and creators.

In the future, we are planning to introduce more effective ways for you to receive feedback and engage with your community.

Stay tuned for additional news and details.

In the meantime, we welcome your input on how we can enhance this feature in the comments section below!

Thank you.

Although their announcement calls them "marketplace comments", the feature itself was implemented around October 30th, 2007.[11] This feature was used for many assets, including development assets (models, decals, sounds, etc.) and user badges (hidden since 2018).[12]

The API that is used to display these comments is https://www.roblox.com/comments/get-json?. The following parameters are used on the website to display the comments; `assetId`, `startindex`, `thumbnailWidth`, `thumbnailHeight`, `thumbnailFormat` & `cachebuster`.

The first two are required to make a valid request. The `cachebuster` parameter is a random number. A rate limit is applied to the API; 10 requests per minute. Using different IP addresses to access different servers can increase the requests made before the rate limit gets applied.

As an example, to get the 7510th to 7520th comments for Asset ID 14417332: https://www.roblox.com/comments/get-json?assetId=14417332&startindex=7510

{
  "IsUserModerator": false,
  "Comments": [
    {
      "Id": 13246767,
      "PostedDate": "Aug 13, 2009 | 12:52 AM",
      "AuthorName": "Dharma3",
      "AuthorId": 1607558,
      "Text": "woot woot i gots it :P and i was like the forth person to get it!!",
      "ShowAuthorOwnsAsset": true,
      "AuthorThumbnail": {
        "AssetId": 0,
        "AssetHash": null,
        "AssetTypeId": 0,
        "Url": "https://tr.rbxcdn.com/30DAY-Avatar-A02A02F585D82F7CE4473DEF70E272CB-Png/100/100/Avatar/Png/noFilter",
        "IsFinal": true
      },
      "HasVerifiedBadge": false
    },
    {
      "Id": 13246751,
      "PostedDate": "Aug 13, 2009 | 12:51 AM",
      "AuthorName": "cop1288",
      "AuthorId": 2625437,
      "Text": "HEHEHE I KNOW WHERE IT IS!",
      "ShowAuthorOwnsAsset": true,
      "AuthorThumbnail": {
        "AssetId": 0,
        "AssetHash": null,
        "AssetTypeId": 0,
        "Url": "https://tr.rbxcdn.com/30DAY-Avatar-5F54746E1AC9815ABEAEEE55556C6EF5-Png/100/100/Avatar/Png/noFilter",
        "IsFinal": true
      },
      "HasVerifiedBadge": false
    }
        ...
    {
      "Id": 13246646,
      "PostedDate": "Aug 13, 2009 | 12:45 AM",
      "AuthorName": "ninjaofthesound",
      "AuthorId": 2007869,
      "Text": "5th coment ^_^",
      "ShowAuthorOwnsAsset": false,
      "AuthorThumbnail": {
        "AssetId": 0,
        "AssetHash": null,
        "AssetTypeId": 0,
        "Url": "https://tr.rbxcdn.com/30DAY-Avatar-A8A4B8EEA3ED68BD2F1DF12293D08FF6-Png/100/100/Avatar/Png/noFilter",
        "IsFinal": true
      },
      "HasVerifiedBadge": false
    }
  ],
  "MaxRows": 10
}

If there are no comments or the `startindex` is higher than the number of comments, the response would be {"IsUserModerator":false,"Comments":[],"MaxRows":10}.


To check if the comments are enabled for multiple assets without being rate limited, the https://develop.roblox.com/v1/assets?assetIds= API can be used ("enableComments": true/false). It can handle up to 50 Asset IDs. You need to be logged in with a Roblox account for the API to work; otherwise, a 401 HTTP error is sent: {"errors":[{"code":0,"message":"Unauthorized"}]}

{
  "data": [
    {
      "id": 1818,
      "type": "Place",
      "typeId": 9,
      "name": "Classic: Crossroads",
      "description": "The classic ROBLOX level is back!",
      "creator": {
        "type": "User",
        "typeId": 1,
        "targetId": 1
      },
      "genres": [
        "Ninja"
      ],
      "created": "2007-05-01T01:07:04.78Z",
      "updated": "2024-01-29T22:05:10.417Z",
      "enableComments": false,
      "isCopyingAllowed": false,
      "isPublicDomainEnabled": false,
      "isModerated": false,
      "reviewStatus": "DoesNotRequire",
      "isVersioningEnabled": true,
      "isArchivable": false,
      "canHaveThumbnail": true
    },
    {
      "id": 1000000,
      "type": "Image",
      "typeId": 1,
      "name": "ArrowCursor.png",
      "description": "Shirt Image",
      "creator": {
        "type": "User",
        "typeId": 1,
        "targetId": 16
      },
      "genres": [
        "All"
      ],
      "created": "2007-03-08T07:05:50.423Z",
      "updated": "2007-03-08T07:05:50.423Z",
      "enableComments": true,
      "isCopyingAllowed": false,
      "isPublicDomainEnabled": false,
      "isModerated": false,
      "reviewStatus": "Finished",
      "isVersioningEnabled": false,
      "isArchivable": false,
      "canHaveThumbnail": false
    },
    {
      "id": 48474313,
      "type": "Hat",
      "typeId": 8,
      "name": "Red Roblox Cap",
      "description": "It's an instant classic!",
      "creator": {
        "type": "User",
        "typeId": 1,
        "targetId": 1
      },
      "genres": [
        "All"
      ],
      "created": "2011-03-23T18:42:08.42Z",
      "updated": "2016-11-16T20:10:50.233Z",
      "enableComments": false,
      "isCopyingAllowed": true,
      "isPublicDomainEnabled": false,
      "isModerated": false,
      "reviewStatus": "Finished",
      "isVersioningEnabled": false,
      "isArchivable": false,
      "canHaveThumbnail": false
    }
  ]
}

On April 23, 2024, Roblox disabled the ability to see comments using the API.

User Ads Removal (July 2024)

On June 4, 2024, Roblox announced that they will be removing user ads from their platform, with their removal from the website being on June 17, and all remaining analytical data (image/ad data included) on July 31.

Any image that was used for an user ad can be requested via the API call (https://www.roblox.com/user-sponsorship/getadimage?adId=1123), with the adId value being valid between 6 and 12127735. As the number is incremental, all that would be needed to download these images would be to build a script that downloads the image tag's "src" attribute. However, a rate limit blocks the download speed of downloading these images to roughly half an ad a second, which would be impossible to download in time before the July 31st deadline, after which every image will in all certainty be deleted. Additionally, many images (especially lower digit ads) have been deleted over time, being replaced with a generic "file missing" icon (taking the form of multiple resolutions, file formats and variants) that will flood the downloaded data, which would take a very long time to sort through if not automated correctly. 500 errors also plague the API, which indicates an ad that has been deleted by Roblox completely. There has currently been no discovery on a way to find the associated data to an advertisement like a group or place link and the ad creator.

References