A guide to "religiously" tracking changes to Roblox's engine

DISCLAIMER: All of the information presented here was obtained using publicly available resources, inferences based on observation, and some data mining tools. All of this stuff applies to Windows. I don’t know the specifics of how this would work on Macs, but I’d assume it’s somewhat similar.


Getting the API Dump manually

Roblox’s API is exported from the client exe itself (RobloxPlayerBeta.exe)
You can find the exe by right clicking on the roblox player from the start menu, and clicking “Open File Location”
(You may have to do this twice if it’s a shortcut)

If you run the exe itself, you should see a popup indicating what launch options are available. The launch option we’re interested in this case is called “–API”. So in order to extract the API Dump, you’ll need to create a .bat file inside of the game client folder, with the following line written in it:

RobloxPlayerBeta.exe --API api.txt

This generates a text file called api.txt in the game client folder. Within this file is the API Dump, which is a human readable version of Roblox’s API.


Updates Pipeline, and accessing development versions of Roblox

Before a feature is shipped onto Roblox, it goes through a pipeline of QA testing to make sure new features can be safely toggled if something goes wrong, and to make sure everything at a surface level is working as intended.

This testing is done through Roblox’s gametest servers.
Precisely, it goes through the following pipeline:
gametest2 -> gametest1 -> production

Each stage of this pipeline takes a week to go through.
In order to work with the testing pipeline, you have to install a separate version of Roblox from their robloxlabs servers:
https://www.gametest2.robloxlabs.com
https://www.gametest1.robloxlabs.com

A lot of the time, you can’t actually access the site unless Roblox actually wants users testing stuff that is currently on there. However, this doesn’t prevent you from installing the client, since the setup URLs are never blocked even if the website is “offline”.

You “CAN” grab the latest version of these client installers from these URLs, but I don’t advice doing this directly (more on this in a second):

https://setup.gametest2.robloxlabs.com/Roblox.exe
https://setup.gametest2.robloxlabs.com/RobloxStudioLauncherBeta.exe
https://setup.gametest1.robloxlabs.com/Roblox.exe
https://setup.gametest1.robloxlabs.com/RobloxStudioLauncherBeta.exe


Tools I’ve made to help make it easier to deal with

The main reason I don’t advise downloading the builds directly, is because Roblox’s installers like to delete existing versions when you move over to different development branches. Plus, Roblox Studio is by default linked to the gametest server when you are using a gametest build, and if you’re trying to make use of the website on the prototype build you’re going to have a bad time.

I’ve developed a couple of tools that make it easier to deal with this stuff.

API Dump Tool
(https://github.com/CloneTrooper1019/ROBLOX-API-Dump-Tool)

This tool automates the fetching of API Dumps from any branch of gametest (or just production itself), and you can also compare API Dump versions to the version currently on production.

Roblox Studio Mod Manager
(https://github.com/CloneTrooper1019/Roblox-Studio-Mod-Manager)

This is a custom Roblox Studio installer and file overrider that I wrote to both counter Roblox Studio’s installer from preventing file overrides, and to make it easier to opt into gametest builds of Roblox Studio, while still remaining connected to production as far as the web aspects go.

This also comes with a sample mod folder, which contains the mods I use in Roblox Studio that are tailored to my needs.

This mod folder includes some helpful batch scripts I wrote, such as:

  • BakeImages.bat - A batch script that pulls all PNG files out of the file you drag onto it. I use this to extract images from Studio.

  • ExtractStrings.bat - A batch script that pulls all some-what legible strings out of whatever file you drag onto it. I use this for data mining and some analysis stuff.

  • GetFVars.bat - A batch script that extracts all available FVariables (will cover what they are in a moment) I use this to figure out what Roblox is using to toggle the enabled state of a feature


FVariables

If you’re curious to know what FVariables are, they are essentially Roblox’s way of toggling new features on production. The purpose of this feature is to make it so Roblox can ship code that might not work as intended, and disable it without having to reship the client.

Roblox primarily controls this from the following url:
http://clientsettings.api.roblox.com/Setting/QuietGet/ClientAppSettings?apiKey=D6925E56-BFB9-4908-AAA2-A5B1EC4B2D79
(This URL was discovered using Fiddler awhile back. Roblox allows us to know about it because we use it for the wiki.)

It is possible to modify FVariables locally, but I’m not allowed to disclose the method publicly due to some security problems they still need to address. If you think you have a valid reason to test a feature early, contact me privately and explain what you’re trying to do, then I’ll decide if you should be allowed to know about it.

25 Likes

That’s cool. I’ve always liked that they allow users to get involved with testing newer versions before pushing to production.

@Anaminus also tracks the API changes on his API Differences web page.

5 Likes