Introduction
Quiz yourself on some of the development topics in Roblox. This is a great way to learn and test your knowledge about Roblox development. Even if you get some questions wrong, there will be explanations you can review. Keep in mind, more questions will be added to this post as time progresses on. Always remember to have fun and any feedback will be greatly valued! Feel free to reply which level you got stuck on!Test Structure
Taking the test is every easy, just vote your answer in the poll and unblur the spoiler. Check your answers throughout the test at your own pace. This quiz is not timed. There will be different levels of difficulty. The quiz tests you on all different aspects of Roblox development (modeling, scripting, UI design, etc.) and you can expect each difficulty to test you more obscure topics of Roblox development. All questions will be multiple choice and will NOT be opinion based (scripting practices, building aesthetic, etc.) *NOTE: Deprecated topics will not be tested because they add no value to future development.*The Quiz
Level I: Novice
Which of the following software should you use to develop on Roblox?
- Roblox Player
- Roblox Client
- Roblox Studio
- Roblox App
0 voters
Roblox Studio is the correct answer. It is the only software that features an IDE.
Which of the following URLs should developers click on to manage their games?
Create - Roblox is the correct answer. Go to the link and find out!
Roblox provides templates to jump start your game from scratch.
- True
- False
0 voters
Roblox offers several templates at one’s disposal. It is True.
Which website should you go to if you need help?
- devforum.roblox.com
- developer.roblox.com
- scriptinghelpers.org
- All of the above are correct.
0 voters
If you search to your desire, all of the above are places you can ask for help.
Which of the following is the default placeholder text for new LocalScripts?
print("Hello world!")
-
local module = {} return module
local var = 0
- None of the above.
0 voters
print("Hello world!")
is the correct answer, the second option is the default placeholder for ModuleScripts.
Which of the following features on Roblox Studio allows developers to access user-generated content?
- Toolbox
- Explorer
- Output
- Terrain Editor
0 voters
The Toolbox is the feature you are looking for if you want user-generated content.
Which feature allows developers to extend Studio functionality?
- Free Models
- Free Scripts
- Plugins
- Data modules
0 voters
The correct answer is: plugins. They can be integrated into Studio without having to run the game.
What is the name of the annual convention where top developers gather and discuss about development topics?
- Roblox Developer Convention
- Roblox Developer Conference
- Annual Developer Gathering
- Annual Developer Assembly
0 voters
The correct answer is: Roblox Developer Conference.
Select all the ways you can make Robux off of games.
- VIP Servers
- Developer Products
- Gamepasses
- Premium Payouts
0 voters
You can make Robux off of your games using all of these ways!
Level II: Amateur
What does the “union” tool do?
- It welds 2 parts together.
- It drills a hole in a part.
- It creates a new cylinder.
- It joins two parts together, fusing them into one.
0 voters
The union tool joins two parts together, fusing them into one.
What are the three types of scripts?
- LocalScript, GlobalScript, ServerScript
- GUIScript, PartScript, GlobalScript
- LocalScript, Script, ModuleScript
- ModuleScript, LibraryScript, ServerScript
0 voters
The three types of scripts are LocalScript, Script, and ModuleScript.
Which tool changes a part’s orientation?
- Rotate Tool
- Move Tool
- Scale Tool
- Anchor Tool
0 voters
The correct answer is: rotate tool.
This code produces an error. Find out which line the error occurs.
1 local var = 0
2
3 local function addVar(newVar)
4 result = newVar + 1
5 return result
6 end)
7 addVar(var)
- 3
- 4
- 5
- 6
0 voters
Line 6 produces the error. Why? Because the
end
clause has an extra parentheses. It will cause a syntax error.
Select all the Services a Script will run in.
- Workspace
- StarterGui
- ServerScriptService
- ReplicatedFirst
- StarterPlayer
0 voters
A script will only run in Workspace and ServerScriptService because all other services are related to the client.
ModuleScripts can run without another script.
- True
- False
0 voters
The correct answer is: False. ModuleScripts cannot run by itself, another script must be present for it to run.
What service allows you to view a player’s User ID?
- Players
- Workspace
- StarterPlayer
- TestService
0 voters
The Players service allows you to view the player’s User ID. You can acheive this by playtesting, then select the Players service > “YOUR USERNAME HERE”, open properties, and scroll down until you find a
UserId
field.
If you have a part within a model and that same model is in Workspace, how would you reference that part from a script in ServerScriptService?
Workspace.Model.Part
Model.Part
workspace.Model.Part
- It is impossible to reference that part.
0 voters
You should use
workspace.Model.Part
to reference it. The first option is lacking the global variable game
. If you have game.Workspace.Model.Part
, it will also work.
What does the wait(t)
function do?
- It waits for the script to finish.
- It destroys a script instance for
t
seconds. - It yields the current thread for
t
seconds. - It pauses the physics of the game.
0 voters
The
wait(t)
function yields the current thread for t
seconds. The default time for t
is 0.03 seconds.
Level III: Professional
Which data type is used in GUI resizing?
- Vector3
- UDim2
- Color3
- Region3
0 voters
UDim2 is the data type used for GUI resizing.
What will this piece of code print?
local a = "Hello %s"
local b = string.format(a, "Devforum")
local c = " rocks!"
print(b .. c)
- Hello Devforum
- Hello Devforum rocks!
- Devforumrocks!
- Hello rocks!
0 voters
It will print Hello Devforum rocks! because string
a
and b
use the string format feature. %s
is a specifier combining a
and b
giving us “Hello Devforum”. b .. c
concatenates the two strings together therefore yielding the final result: Hello Devforum rocks!
What is the difference between Remote Events and Bindable Events?
- Remote events send HTTP data to another website. Bindable events don’t.
- Remote events send network data to a proxy server. Bindable events send data to an Roblox API.
- Remote events are used for communication between client and server. Bindable events cannot do this.
- Remote events hide the player’s IP address. Bindable events show the user’s IP.
0 voters
Remote events are used for communication between client and server. Bindable events cannot do this. Remote events have nothing to do with networking / HTTP.
Which statements are true?
- You need to turn on “Enable HTTP requests” in studio for Data Stores to work.
- Data Store Error 101 means the key’s name cannot be empty.
- Data Store write requests must be 6 seconds apart.
- 1 and 2
- 1 and 3
- 2 and 3
- 1, 2, and 3
0 voters
2 and 3 are correct statements. Statement 1 is wrong because the actual feature you need to enable in order for Data Stores to work is “Enable Studio Access to API Services”.
The following code causes a humanoid character rig to walk to GreenFlag
in an empty baseplate.
local rig = game.Workspace.rig
local humanoid = rig.Humanoid
local pointA = game.Workspace.GreenFlag
humanoid:MoveTo(pointA.PrimaryPart.Position)
- True
- False
0 voters
The answer is True.
Humanoid:MoveTo()
will move a character rig from pointA to pointB if there is no obstruction.
Which function of Instance
allows developers to detect if any property of Instance
changes?
Instance:FindFirstChild()
Instance:WaitForChild()
Instance:GetPropertyChangedSignal()
Instance:FindFirstAncestorOfClass()
0 voters
The answer is
Instance:GetPropertyChangedSignal()
.
What does CSG stand for?
- Computed Solid Geometry
- Computer Sever-GPU
- Constructive Solid Geometry
- Creator Script Gyro
0 voters
The answer is: Constructive Solid Geometry.
What does the “i” in the beginning of ipairs()
stand for?
- Complex number
- Index
- Interpolation
- Instance
0 voters
The answer is: Index.
Level IV: Expert
What method should developers call to prevent their custom chat system from getting moderated?
DataStoreService:GetAsync()
Players:GetRankInGroup()
string.lower()
TextService:FilterStringAsync()
0 voters
TextService:FilterStringAsync()
is the function you will need to use to filter your chat. This method should be called once each time a user submits a message. It is used for moderation purposes.
The following code will work in studio.
game:GetService('TeleportService'):Teleport(1234567)
- True
- False
0 voters
False. It will not work because of the limitations of teleporting to other games in studio.
If GlobalDataStore:GetAsync()
errors, what will the following code print?
local DataStoreService = game:GetService("DataStoreService")
local myDataStore = DataStoreService:GetDataStore("myDataStore")
game.Players.PlayerRemoving:Connect(function(plr)
local success, fail = pcall(function()
myDataStore:SetAsync(plr.UserId, "val")
end)
if fail then
print("Failed to save data for player.")
end
end)
game.Players.PlayerAdded:Connect(function(plr)
local success, fail = pcall(function()
myDataStore:GetAsync(plr.UserId)
end)
if fail then
print("Failed to fetch data for player.")
end
end)
- “Failed to save data for player.”
- It will print nothing.
- It will print the original Data Store error.
- “Failed to fetch data for player.”
0 voters
It will print Failed to fetch data for player. Notice how the :GetAsync() method is wrapped in a protected call. This protected call will return a boolean value depending if the function inside errors or not. In this case, if it errors, it will print “Failed to fetch data for player”.
What are enumerations?
- A type of class container that stores player data.
- A data type that takes in one of a set of values.
- A metatable that parses HTTP data.
- A integer that acts as an index for a font table.
0 voters
Enums are a data type that takes in one of a set of values.
What is _G
?
- It is a global variable that stores all Enums.
- A data type that is used internally for network ownership.
- A class that stores player avatar adornments.
- A table that is shared across all scripts that share the same execution context level.
0 voters
_G
is a table that is shared across all scripts that share the same execution context level. It is sometimes called the global/default module script.
What does the service NonReplicatedCSGDictionaryService
do?
- Developers can use this service to create meshes (similar to Blender).
- It is an internal Roblox service and it serves no function towards developers.
- A class that stores archandles and adornments.
0 voters
`NonReplicatedCSGDictionaryService`` is an internal Roblox service and it serves no function towards developers.
Level V: Master
What will the following code print?
local vector2 = {__type = "vector2"}
local mt = {__index = vector2}
function mt.__div(a, b)
if (type(a) == "number") then
local scalar, vector = a, b
return vector2.new(scalar / vector.x, scalar / vector.y)
elseif (type(b) == "number") then
local vector, scalar = a, b
return vector2.new(vector.x / scalar, vector.y / scalar)
elseif (a.__type and a.__type == "vector2" and b.__type and b.__type == "vector2") then
return vector2.new(a.x / b.x, a.y / b.y)
end
end
function mt.__tostring(t)
return t.x .. ", " .. t.y;
end;
function vector2.new(x, y)
local self = setmetatable({}, mt)
self.x = x or 0
self.y = y or 0
return self
end
local a = vector2.new(10, 5)
local b = vector2.new(-3, 4)
print(a / 2)
- 10, 3
- 5, 2.5
- 2, 3
- 6, 2
0 voters
The following code will print 5, 2.5. The main function to look here is vector2.new(). Knowing that a = vector2.new(), we will now know that a = 10, 5. Dividing this vector by 2
print(a / 2)
will divide both scalars by 2, resulting in 5 and 2.5.
What will the following code print?
co = coroutine.create(function (a,b)
coroutine.yield(a + b, a - b)
end)
print(coroutine.resume(co, 20, 10))
- “co 1 2 3”
- “true 1 2”
- “true 30 10”
- It will cause an error to occur.
0 voters
It will print “true 30 10”. A call to resume returns, after the true that signals no errors, any arguments passed to the corresponding will yield.
What will the following code do?
local function onPlayerChatted(player, message)
if message == 'removehead' and player.Character and player.Character:FindFirstChild("Head") then
player.Character.Head:Destroy()
end
end
local function onPlayerAdded(player)
pl.Chatted:Connect(function (message) onPlayerChatted(player, message) end)
end
game.Players.PlayerAdded:Connect(onPlayerAdded)
- It will print “removehead”.
- It will kill a player named “removehead”.
- When “removehead” is chatted, it will kick players named “removehead.”
- When “removehead” is chatted, it will destroy the current player’s head instance.
0 voters
When “removehead” is chatted, it will destroy the current player’s head instance.
Why is the code erroring out? This question requires a basic understanding of Luau.
type Point = { x: number, y: number }
local p: Point = { x = 1, y = 2 }
print(p.z)
- Because p.z is the wrong type.
- Because p.z cannot convert to a string type.
- Because p.z is not a valid member of StarterPlayer.
- It actually doesn’t error, but it crashes the thread at runtime.
0 voters
The code above is causing an type error.