diff --git a/content/en-us/cloud-services/memory-stores/hash-map.md b/content/en-us/cloud-services/memory-stores/hash-map.md
index 825f457a2..834c31988 100644
--- a/content/en-us/cloud-services/memory-stores/hash-map.md
+++ b/content/en-us/cloud-services/memory-stores/hash-map.md
@@ -54,6 +54,8 @@ After you get a hash map, call any of the following functions to read or write d
+For in-depth documentation about each function, see `Class.MemoryStoreHashMap`.
+
All functions accessing data structures in memory stores are asynchronous network calls that might occasionally fail. You should wrap these calls in `Global.LuaGlobals.pcall()` to catch and handle errors, as shown in the code samples.
diff --git a/content/en-us/creator-programs/rdc.md b/content/en-us/creator-programs/rdc.md
index 7e7864889..eb32b66c8 100644
--- a/content/en-us/creator-programs/rdc.md
+++ b/content/en-us/creator-programs/rdc.md
@@ -1,9 +1,9 @@
---
title: Roblox Developers Conference
-description: RDC is an invite-only, hybrid (in-person and online) event that brings together Roblox developers, brands, and creators from around the world.
+description: RDC is an invite-only, hybrid (in-person and online) event that brings together Roblox developers, brands, and creators worldwide.
---
-RDC is an invite-only, hybrid (in-person and online) event that brings together Roblox developers, brands, and creators from around the world. There will be networking opportunities, in-depth breakout sessions, product demonstrations, and office hours—all designed to empower your success and showcase the future of Roblox.
+RDC is an invite-only, hybrid (in-person and online) event that brings together Roblox developers, brands, and creators worldwide. There will be networking opportunities, in-depth breakout sessions, product demonstrations, and office hours—all designed to empower your success and showcase the future of Roblox.
-Creators will receive invites to the annual Roblox Developer Conference. These invites can be to come in person or to watch virtually. Keep an eye on the DevForum for updates regarding the conference each year. We announce "Save the Date" and when registration opens.
+Creators will receive invites to the annual Roblox Developer Conference. These invites can be for in-person attendance or for virtual viewing. Keep an eye on the DevForum for updates regarding the conference each year. We announce "Save the Date" and when registration opens.
-For some examples of Roblox Developer Conference keynotes, talks, and Q&A sessions, see the [RDC 2023 YouTube playlist](https://www.youtube.com/playlist?list=PLuEQ5BB-Z1PK3EcpypEHHMlc2lknQCJyP).
+For some examples of Roblox Developer Conference keynotes, talks, and Q&A sessions, see the [RDC 2024 YouTube playlist](https://www.youtube.com/playlist?list=PLuEQ5BB-Z1PJi8RJ7Kuc0JhcT0ubgaL43).
diff --git a/content/en-us/education/battle-royale-series/cleanup-and-reset.md b/content/en-us/education/battle-royale-series/cleanup-and-reset.md
index 4eb4437c8..793eaeeb2 100644
--- a/content/en-us/education/battle-royale-series/cleanup-and-reset.md
+++ b/content/en-us/education/battle-royale-series/cleanup-and-reset.md
@@ -483,7 +483,7 @@ local function startTimer()
while myTimer:isRunning() do
-- Adding +1 makes sure the timer display ends at 1 instead of 0.
- timeLeft.Value = (math.floor(myTimer:getTimeLeft() + 1))
+ timeLeft.Value = (myTimer:getTimeLeft() + 1) // 1
-- By not setting the time for wait, it offers more accurate looping
task.wait()
end
diff --git a/content/en-us/education/battle-royale-series/creating-a-gui.md b/content/en-us/education/battle-royale-series/creating-a-gui.md
index c52d60706..c5a5d41db 100644
--- a/content/en-us/education/battle-royale-series/creating-a-gui.md
+++ b/content/en-us/education/battle-royale-series/creating-a-gui.md
@@ -362,7 +362,7 @@ Remember that module scripts are used to centralize similar code. Since the time
```lua
while myTimer:isRunning() do
-- Adding +1 makes sure the timer display ends at 1 instead of 0.
- timeLeft.Value = (math.floor(myTimer:getTimeLeft() + 1))
+ timeLeft.Value = (myTimer:getTimeLeft() + 1) // 1
-- By not setting the time for wait, it offers more accurate looping
task.wait()
end
@@ -378,7 +378,7 @@ Remember that module scripts are used to centralize similar code. Since the time
while myTimer:isRunning() do
-- Adding +1 makes sure the timer display ends at 1 instead of 0.
- timeLeft.Value = (math.floor(myTimer:getTimeLeft() + 1))
+ timeLeft.Value = (myTimer:getTimeLeft() + 1) // 1
-- By not setting the time for wait, it offers more accurate looping
task.wait()
end
@@ -492,7 +492,7 @@ local function startTimer()
while myTimer:isRunning() do
-- Adding +1 makes sure the timer display ends at 1 instead of 0.
- timeLeft.Value = (math.floor(myTimer:getTimeLeft() + 1))
+ timeLeft.Value = (myTimer:getTimeLeft() + 1) // 1
-- By not setting the time for wait, it offers more accurate looping
task.wait()
end
diff --git a/content/en-us/education/battle-royale-series/ending-matches.md b/content/en-us/education/battle-royale-series/ending-matches.md
index 271667ee4..ac72315ea 100644
--- a/content/en-us/education/battle-royale-series/ending-matches.md
+++ b/content/en-us/education/battle-royale-series/ending-matches.md
@@ -562,7 +562,7 @@ local function startTimer()
while myTimer:isRunning() do
-- Adding +1 makes sure the timer display ends at 1 instead of 0.
- timeLeft.Value = (math.floor(myTimer:getTimeLeft() + 1))
+ timeLeft.Value = (myTimer:getTimeLeft() + 1) // 1
-- By not setting the time for wait, it offers more accurate looping
task.wait()
end
diff --git a/content/en-us/education/build-it-play-it-island-of-move/sharing-animations.md b/content/en-us/education/build-it-play-it-island-of-move/sharing-animations.md
index a39bdf802..8b080d172 100644
--- a/content/en-us/education/build-it-play-it-island-of-move/sharing-animations.md
+++ b/content/en-us/education/build-it-play-it-island-of-move/sharing-animations.md
@@ -10,7 +10,7 @@ Share animations with friends and fellow developers by exporting and importing t
Rules in Sharing Animations
-When sharing animations, keep in mind that an Asset ID can only used between the group or individual that owns the animation.
+When sharing animations, keep in mind that an asset ID can only be used between the group or individual that owns the animation.
**Exporting Animations**
diff --git a/content/en-us/luau/metatables.md b/content/en-us/luau/metatables.md
index 3f2325d70..7817cb3c8 100644
--- a/content/en-us/luau/metatables.md
+++ b/content/en-us/luau/metatables.md
@@ -294,7 +294,7 @@ For this one we will be using the `__index` metamethod just to make it simple:
```lua
local function mathProblem(num)
for i = 1, 20 do
- num = math.floor(num * 10 + 65)
+ num = (num * 10 + 65) // 1
end
for i = 1, 10 do
num += i - 1
diff --git a/content/en-us/production/monetization/developer-products.md b/content/en-us/production/monetization/developer-products.md
index 6a94a6f3c..bd77f4f87 100644
--- a/content/en-us/production/monetization/developer-products.md
+++ b/content/en-us/production/monetization/developer-products.md
@@ -113,7 +113,9 @@ You can also combine functions inside a `Class.LocalScript|LocalScript`. For exa
```lua
local MarketplaceService = game:GetService("MarketplaceService")
-local player = game.Players.LocalPlayer
+local Players = game:GetService("Players")
+
+local player = Players.LocalPlayer
local button = script.Parent
-- Replace the placeholder ID with your developer product ID
diff --git a/content/en-us/reference/engine/classes/Backpack.yaml b/content/en-us/reference/engine/classes/Backpack.yaml
index d3e25f6ba..6e06f0f1b 100644
--- a/content/en-us/reference/engine/classes/Backpack.yaml
+++ b/content/en-us/reference/engine/classes/Backpack.yaml
@@ -29,11 +29,13 @@ description: |
The Backpack can be accessed from both the client and the server.
```lua
+ local Players = game:GetService("Players")
+
-- Accessing Backpack from a Server Script:
- game.Players.PlayerName.Backpack
+ local backpack = Players.PlayerName.Backpack
-- Accessing Backpack from a LocalScript:
- game.Players.LocalPlayer.Backpack
+ local backpack = Players.LocalPlayer.Backpack
```
code_samples:
- Backpack-Give-Tool
diff --git a/content/en-us/reference/engine/classes/CollectionService.yaml b/content/en-us/reference/engine/classes/CollectionService.yaml
index 3aefa0382..63d72de06 100644
--- a/content/en-us/reference/engine/classes/CollectionService.yaml
+++ b/content/en-us/reference/engine/classes/CollectionService.yaml
@@ -51,10 +51,16 @@ methods:
signal created by `Class.CollectionService:GetInstanceAddedSignal()` with
the given tag.
- **Warning:** When tagging an instance, it is common that some resources
- are used to give the tag its functionality, e.g. event connections or
- tables. To prevent memory leaks, it is a good idea to clean these up
- (disconnect, set to nil, etc) when no longer needed for a tag. Do this
+ ##### Warnings
+
+ - An instance's tags that were added client-side will be dropped if the server
+ later adds or removes a tag on that instance because the server replicates all
+ tags together and overwrites previous tags.
+
+ - When tagging an instance, it is common that some resources
+ are used to give the tag its functionality, for example event connections or
+ tables. To prevent memory leaks, it's a good idea to clean these up
+ (disconnect, set to `nil`, etc.) when no longer needed for a tag. Do this
when calling `Class.CollectionService:RemoveTag()`, calling
`Class.Instance:Destroy()` or in a function connected to a signal returned
by `Class.CollectionService:GetInstanceRemovedSignal()`.
diff --git a/content/en-us/reference/engine/classes/GuiObject.yaml b/content/en-us/reference/engine/classes/GuiObject.yaml
index 9abc38a55..8fb06c5ef 100644
--- a/content/en-us/reference/engine/classes/GuiObject.yaml
+++ b/content/en-us/reference/engine/classes/GuiObject.yaml
@@ -1417,11 +1417,14 @@ events:
of the user's mouse relative to a GUI element:
```lua
+ local Players = game:GetService("Players")
+
local CustomScrollingFrame = script.Parent
local SubFrame = CustomScrollingFrame:FindFirstChild("SubFrame")
- local mouse = game.Players.LocalPlayer:GetMouse()
- function getPosition(X, Y)
+ local mouse = Players.LocalPlayer:GetMouse()
+
+ local function getPosition(X, Y)
local gui_X = CustomScrollingFrame.AbsolutePosition.X
local gui_Y = CustomScrollingFrame.AbsolutePosition.Y
diff --git a/content/en-us/reference/engine/classes/Instance.yaml b/content/en-us/reference/engine/classes/Instance.yaml
index 57fda7d7e..3965885a2 100644
--- a/content/en-us/reference/engine/classes/Instance.yaml
+++ b/content/en-us/reference/engine/classes/Instance.yaml
@@ -321,7 +321,13 @@ methods:
already applied. Successfully adding a tag will fire a signal created by
`Class.CollectionService:GetInstanceAddedSignal()` with the given tag.
- Note that when tagging an instance, it's common that some resources are
+ ##### Warnings
+
+ - An instance's tags that were added client-side will be dropped if the server
+ later adds or removes a tag on that instance because the server replicates
+ all tags together and overwrites previous tags.
+
+ - When tagging an instance, it is common that some resources are
used to give the tag its functionality, for example event connections or
tables. To prevent memory leaks, it's a good idea to clean these up
(disconnect, set to `nil`, etc.) when no longer needed for a tag. Do this
diff --git a/content/en-us/reference/engine/classes/Object.yaml b/content/en-us/reference/engine/classes/Object.yaml
index 2b6c4b37d..8e7e9dc65 100644
--- a/content/en-us/reference/engine/classes/Object.yaml
+++ b/content/en-us/reference/engine/classes/Object.yaml
@@ -155,6 +155,8 @@ methods:
`Datatype.BrickColor` property:
```lua
+ local Players = game:GetService("Players")
+
local function paintFigure(character, color)
-- Iterate over the child objects of the character
for _, child in character:GetChildren() do
@@ -165,7 +167,7 @@ methods:
end
end
end
- paintFigure(game.Players.Player.Character, BrickColor.new("Bright blue"))
+ paintFigure(Players.Player.Character, BrickColor.new("Bright blue"))
```
Since all classes inherit from `Class.Object`, calling
diff --git a/content/en-us/reference/engine/classes/Tool.yaml b/content/en-us/reference/engine/classes/Tool.yaml
index 9ab17daf0..08441b7a9 100644
--- a/content/en-us/reference/engine/classes/Tool.yaml
+++ b/content/en-us/reference/engine/classes/Tool.yaml
@@ -391,9 +391,11 @@ events:
player clicks while the created tool is equipped.
```lua
+ local Players = game:GetService("Players")
+
local tool = Instance.new("Tool")
tool.RequiresHandle = false
- tool.Parent = game.Players.LocalPlayer.Backpack
+ tool.Parent = Players.LocalPlayer.Backpack
function onActivation()
print("Tool activated")
@@ -423,9 +425,11 @@ events:
player releases their click while the tool is equipped and activated.
```lua
+ local Players = game:GetService("Players")
+
local tool = Instance.new("Tool")
tool.RequiresHandle = false
- tool.Parent = game.Players.LocalPlayer.Backpack
+ tool.Parent = Players.LocalPlayer.Backpack
function toolDeactivated()
print("Tool deactivated")
diff --git a/content/en-us/reference/engine/classes/Translator.yaml b/content/en-us/reference/engine/classes/Translator.yaml
index 8c38175ad..1630e3105 100644
--- a/content/en-us/reference/engine/classes/Translator.yaml
+++ b/content/en-us/reference/engine/classes/Translator.yaml
@@ -209,10 +209,11 @@ methods:
text as the second argument:
```lua
+ local Players = game:GetService("Players")
local LocalizationService = game:GetService("LocalizationService")
local success, translator = pcall(function()
- return LocalizationService:GetTranslatorForPlayerAsync(game.Players.LocalPlayer)
+ return LocalizationService:GetTranslatorForPlayerAsync(Players.LocalPlayer)
end)
if success then
diff --git a/content/en-us/reference/engine/datatypes/Instance.yaml b/content/en-us/reference/engine/datatypes/Instance.yaml
index e5f2ee09c..38a47d6bf 100644
--- a/content/en-us/reference/engine/datatypes/Instance.yaml
+++ b/content/en-us/reference/engine/datatypes/Instance.yaml
@@ -38,7 +38,7 @@ constructors:
summary: |
Class name of the new instance to create.
- name: parent
- type: Instance
+ type: Instance?
default:
summary: |
Optional object to parent the new instance to. Not recommended for performance reasons (see description above).
diff --git a/content/en-us/reference/engine/globals/LuaGlobals.yaml b/content/en-us/reference/engine/globals/LuaGlobals.yaml
index 740a513e7..5ab449449 100644
--- a/content/en-us/reference/engine/globals/LuaGlobals.yaml
+++ b/content/en-us/reference/engine/globals/LuaGlobals.yaml
@@ -95,7 +95,7 @@ functions:
position information to the message.
parameters:
- name: message
- type: string
+ type: Variant
default:
summary: |
The error message to display.
diff --git a/content/en-us/reference/engine/libraries/bit32.yaml b/content/en-us/reference/engine/libraries/bit32.yaml
index 5fc6c15ae..04e94aee1 100644
--- a/content/en-us/reference/engine/libraries/bit32.yaml
+++ b/content/en-us/reference/engine/libraries/bit32.yaml
@@ -451,7 +451,7 @@ functions:
For positive displacements, the following equality holds:
```lua
- assert(bit32.rshift(b, disp) == math.floor(b % 2^32 / 2^disp))
+ assert(bit32.rshift(b, disp) == (b % 2^32 / 2^disp) // 1)
```
This shift operation is what is called logical shift.
diff --git a/content/en-us/tutorials/use-case-tutorials/lighting/creating-flickering-lights.md b/content/en-us/tutorials/use-case-tutorials/lighting/creating-flickering-lights.md
index b2ecc9b71..55bf06fbd 100644
--- a/content/en-us/tutorials/use-case-tutorials/lighting/creating-flickering-lights.md
+++ b/content/en-us/tutorials/use-case-tutorials/lighting/creating-flickering-lights.md
@@ -147,7 +147,7 @@ end
RunService.Heartbeat:Connect(function()
-- Solves for the NumberSequence's time (between 0 and 1).
local t = time() / loopDuration
- local numberSequenceTime = t - math.floor(t)
+ local numberSequenceTime = t - (t // 1)
-- Gets the NumberSequence's value at this time.
local brightnessValue = evaluateNumberSequence(brightnessCurve, numberSequenceTime)
diff --git a/content/en-us/ui/3D-drag-detectors.md b/content/en-us/ui/3D-drag-detectors.md
index b3d3d6976..92ef75530 100644
--- a/content/en-us/ui/3D-drag-detectors.md
+++ b/content/en-us/ui/3D-drag-detectors.md
@@ -398,14 +398,14 @@ local function snapToWorldGrid(proposedMotion)
if startPartPosition == nil then
return proposedMotion
end
- local snapIncrement = math.floor(SNAP_INCREMENT)
+ local snapIncrement = SNAP_INCREMENT // 1
if snapIncrement < 1 then
return proposedMotion
end
local newWorldPosition = startPartPosition + proposedMotion.Position
- local roundedX = math.floor(newWorldPosition.X / snapIncrement + 0.5) * snapIncrement
- local roundedY = math.floor(newWorldPosition.Y / snapIncrement + 0.5) * snapIncrement
- local roundedZ = math.floor(newWorldPosition.Z / snapIncrement + 0.5) * snapIncrement
+ local roundedX = ((newWorldPosition.X / snapIncrement + 0.5) // 1) * snapIncrement
+ local roundedY = ((newWorldPosition.Y / snapIncrement + 0.5) // 1) * snapIncrement
+ local roundedZ = ((newWorldPosition.Z / snapIncrement + 0.5) // 1) * snapIncrement
local newRoundedWorldPosition = Vector3.new(roundedX, roundedY, roundedZ)
return proposedMotion.Rotation + (newRoundedWorldPosition - startPartPosition)
end
diff --git a/tools/checks/utils/allowedHttpLinks.txt b/tools/checks/utils/allowedHttpLinks.txt
index e32c719f0..c01bff40b 100644
--- a/tools/checks/utils/allowedHttpLinks.txt
+++ b/tools/checks/utils/allowedHttpLinks.txt
@@ -592,3 +592,4 @@ https://github.com/evaera/roblox-animation-transfer?tab=readme-ov-file
https://github.com/evaera/roblox-animation-transfer
https://support.tipalti.com/Content/Topics/UserGuide/PaymentInformation/PaymentMethodsCoverage/IntroUSD.htm?Highlight=payment%20coverage#USD
https://github.com/Roblox/creator-docs/tree/main/content/en-us/reference/cloud
+https://www.youtube.com/playlist?list=PLuEQ5BB-Z1PK3EcpypEHHMlc2lknQCJyP