Roblox Developer Quiz

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

:memo: 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?

:memo: Create - Roblox is the correct answer. Go to the link and find out! :slight_smile:


Roblox provides templates to jump start your game from scratch.

  • True
  • False

0 voters

:memo: Roblox offers several templates at one’s disposal. It is True.


Which website should you go to if you need help?

0 voters

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: The correct answer is: Roblox Developer Conference.


Select all the ways you can make Robux :robux_light: off of games.

  • VIP Servers
  • Developer Products
  • Gamepasses
  • Premium Payouts

0 voters

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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?

  1. You need to turn on “Enable HTTP requests” in studio for Data Stores to work.
  2. Data Store Error 101 means the key’s name cannot be empty.
  3. Data Store write requests must be 6 seconds apart.
  • 1 and 2
  • 1 and 3
  • 2 and 3
  • 1, 2, and 3

0 voters

:memo: 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

:memo: 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

:memo: The answer is Instance:GetPropertyChangedSignal().


What does CSG stand for?

  • Computed Solid Geometry
  • Computer Sever-GPU
  • Constructive Solid Geometry
  • Creator Script Gyro

0 voters

:memo: The answer is: Constructive Solid Geometry.


What does the “i” in the beginning of ipairs() stand for?

  • Complex number
  • Index
  • Interpolation
  • Instance

0 voters

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: 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

:memo: _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

:memo: `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

:memo: 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

:memo: 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

:memo: 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

:memo: The code above is causing an type error.


Conclusion

Thank you for taking the test! More questions will be added in the future. You can reply your streaks and high score to this thread. Hopefully, by taking this test, you can put something new in your Roblox knowledge Toolbox. If you notice an error, please feel free to private message me about it!
16 Likes