We just reached 30,000 articles on this wiki! 🥳
If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Roblox (Windows, Mac OS X)/Removed Features

From The Cutting Room Floor
Jump to navigation Jump to search
Other languages:
English • ‎polski

This is a sub-page of Roblox (Windows, Mac OS X).

Careful, you'll lose an eye.
This page or section needs more images.
There's a whole lotta words here, but not enough pictures. Please fix this.

Decommisioned/Altered Services

DHTML

DHTML, as the name suggests, was a service which allowed players to display HTML documents within ROBLOX. Unlike GUIs, DHTML windows were completely new windows that would open on a player's computer.

ROBLOX-DHTML.PNG

A sample code of the above would look like:

local w = game:service("HtmlService"):NewWindow()

<!--T:5-->
w.DocumentComplete:connect(function ()
	w:SetBody([==[
<table width="420" height="190" border="0">
	  <tr>
	    <td width="490" bgcolor="#FFFFFF"><font color="#000000"> 
	      </font><div align="center">
		<p><font color="#000000"><b>Hello, World!</b></font></p>
		<p><font color="#000000">I am a DHTML window!</font></p>
			
	      </div>
	    </td>
	  </tr>
	</table>
]==])	
	w:Show()
end)
w:Navigate()

The main reason for its removal was because it was easily exploitable, mainly for place stealing. Its very short life span (being removed in January of 2008) suggests that Roblox was very aware of the security issues it created. A year and a half later, in 2009, Roblox would release a replacement for DHTML, known as PlayerGUIs, a built-in GUI display system which could do nearly everything DHTML could.

"Controller" Variable

This variable was in almost all physical objects, and when it was set to a Player, the player set to it would be able to control whatever the instance was, provided that the model had the correct parts for doing so. This variable was to control many old models, one example being The Hammer.

There is KeyboardLeft, which controls the model with WASD, KeyboardRight, which controls it with HUJK, Joypad1 and Joypad2, which don't do anything, Chase, which has it chase the player, and Flee, where it runs away from you. However, the model needs wheels to move around on, so it will not work without them. The surface that connects has to be SteppingMotor or Motor, and the ring on it changes color depending on what controller type you chose.

A 3D flag ontop of a Chassis with Controller set to KeyboardRight in the March 2007 client.

There was a variable called "ControllerFlagShown" where if you checked it on models with a controller set, a 3D flag would appear ontop of them, with the same color as the rings. When set to KeyboardRight it appears solid blue, KeyboardLeft it appears solid red, when set to Chase it appears pitch black, and when set to Flee it appears solid yellow.

Around mid 2007 the 3D flag would not show and ControllerFlagShown was removed in April 2009 in favor of a easier to use class called VehicleSeat. Barely anyone knew about this until recently, where some people rediscovered it.

InsertService

Like DHTML, this service was also unfortunately very exploitable and was changed by Roblox in mid 2011. While the service still exists, it can no longer insert any instance not made by the game's creator or the Roblox account in any way. This service was famously used to power the insert tool, introduced by Roblox in 2009.

PointsService

PointsService was a service released in September 2014. The PointsService was removed on the 30th of June 2023. The PointsService was a service used for giving players points when they completed certain tasks in games. These points didn't do anything and were completely useless. Giving the LocalPlayer points on joining was done with the following code.

local PointsService = game:GetService("PointsService")
game:GetService("Players").PlayerAdded:Connect(function(player)
    PointsService:AwardPoints(player.userId, 10) --This part gives the Player points
end)
An example of a notification the player gets after receiving points.

Reading how many points a player had was done with the following code.

local PointsService = game:GetService("PointsService")
game:GetService("Players").PlayerAdded:Connect(function(player)
    local points = PointsService:GetGamePointBalance(player.userId) 
    print(points)
end)

Events and methods from PointsService.

Type Name Security Parameters
Tuple (function) AwardPoints() None userId (int64), amount (int)
int (function) GetAwardablePoints() None None
int (function) GetGamePointBalance() None userId (int64)
int (function) GetPointBalance() None userId (int64)
null (Event) PointsAwarded None userId (int64), pointsAwarded (int), userBalanceInGame (int), userTotalBalance (int)

AdService

An example of an ad being shown on an Ipad.

AdService was a service added to Roblox on the 21st of May 2014. AdService was used for showing video ads on the mobile version of Roblox. Ads could not be played more than 5 times within an hour and it was recommended to clarify to the player that they were watching an ad. The service was decommisioned on the 23th of may 2017.

The adservice was used by developers to earn money. With a payout rate of 1 Robux per 20 Impressions it was a good way to earn money on the platform. The adservice worked well in games were Players had to wait between rounds.

Events and methods from AdService.

Type Name Security Parameters
Tuple (function) GetAdTeleportInfo() RobloxScriptSecurity None
Array (function) GetReportAdInfo() RobloxScriptSecurity None
null (function) ReturnToPublisherExperience() RobloxScriptSecurity AdTeleportMethod
null (function) ShowVideoAd() None None
null (Event) AdTeleportEnded RobloxScriptSecurity None
null (Event) AdTeleportInitiated RobloxScriptSecurity None
null (Event) PortalPrompt RobloxScriptSecurity destinationId (int64), portal (Instance), requiresNoButton (bool)
null (Event) VideoAdClosed RobloxScriptSecurity adShown (bool)

Events and methods from AdTeleportMethod.

Type Name Security
Enum (EnumItem) PortalForward RobloxScriptSecurity
Enum (EnumItem) InGameMenuBackButton RobloxScriptSecurity
Enum (EnumItem) UIBackButton RobloxScriptSecurity
Enum (EnumItem) PortalReturn RobloxScriptSecurity

SafeChat

Safechat on a Mid 2007 client.

This was a feature that allowed users with custom chat disabled in their game to still to talk with others. This was also used by guests and under-13s to talk in chat. This was a feature around since 2007 from 2013 when they added a new white list system. Safechat was able to be edited by going to contents/fonts/ and opening safechat.xml on a notepad.

This is not to be confused with under 13 limitations in chat, which is occasionally called SafeChat.

Bevels

This was a detail on parts that was implemented in October 2007[1] to early 2013. This was able to be turned off through Roblox studio or back on if turned off. The only thing that would hide bevels without turning them off was using decals. In early 2013, Roblox released a blog post stating they are removing bevels to reduce lag.

Image below shows what bevels look like.

Roblox-Bevel.png

Stencil shadows

The stencil shadows technique was used to render shadows cast by objects during 2006 to early 2014. It was slowly replaced by the less resource intensive shadow mapping technique during 2012 to mid 2018.

Roblox Stencil Shadows Demo.png

LDraw

LDraw is a standard for Lego CAD programs, essentially letting you create 3D scenes using virtual Legos. Roblox Studio originally had the ability to insert LDraw files, which was silently removed in 2010. It only really worked for builds featuring basic parts, otherwise builds would not contain the parts it couldn't import, or even crash Studio. Here is an LDraw file of a small pyramid imported into the Roblox 2007 client's studio.

0 Example Pyramid for Demonstration of LDRAW Library
0 Name: pyramid.ldr
0 Author: James Jessiman

<!--T:16-->
1 1 -40 -24 60 1 0 0 0 1 0 0 0 1 3001.dat
1 1 40 -24 60 1 0 0 0 1 0 0 0 1 3001.dat
1 1 60 -24 0 0 0 1 0 1 0 -1 0 0 3001.dat
1 1 40 -24 -60 1 0 0 0 1 0 0 0 1 3001.dat
1 1 -40 -24 -60 1 0 0 0 1 0 0 0 1 3001.dat
1 1 -60 -24 0 0 0 1 0 1 0 -1 0 0 3001.dat

<!--T:17-->
0 STEP

<!--T:18-->
1 4 -20 -48 40 1 0 0 0 1 0 0 0 1 3001.dat
1 4 40 -48 20 0 0 1 0 1 0 -1 0 0 3001.dat
1 4 20 -48 -40 1 0 0 0 1 0 0 0 1 3001.dat
1 4 -40 -48 -20 0 0 1 0 1 0 -1 0 0 3001.dat

<!--T:19-->
0 STEP

<!--T:20-->
1 14 0 -72 20 1 0 0 0 1 0 0 0 1 3001.dat
1 14 0 -72 -20 1 0 0 0 1 0 0 0 1 3001.dat

<!--T:21-->
0 STEP

<!--T:22-->
1 0 0 -96 0 1 0 0 0 1 0 0 0 1 3003.dat

<!--T:23-->
0 STEP

LDrawPyramid.png