Kick start a passion for game design in the most popular experience platform, Roblox. Students will gain a familiar understanding of Roblox Studio to make games of their very own to share with friends and family. This course covers both building and scripting. Learn the basics of modeling, create auto-cars, and paint beautiful landscapes. Students will become proficient in the programming language Lua. The course covers fundamental concepts like variables, properties, functions, and events. All lessons are project-based, with 8 fun guided projects that allow students to practice new programming concepts.
Students will learn game designing and development on Roblox Studio including basic introduction to Roblox studio, a lot of building, and some Lua code.
In this Roblox game design course, students learn to use Roblox Studio for creating and sharing games, covering both building and Lua scripting.
Through 8 guided projects, students practice programming concepts such as variables, functions, and events, leading to a final project presentation.
Lesson 1
Roblox Setup
Our lesson plan overview
• What is Roblox; What is Lua+Who/What uses Lua
• Roblox account creation/Roblox Studio setup
• Window overview; Scene window and Explorer window
• Properties window; Insert Object window; Toolbar window; Toolbox window
• Terrain editor window
• Go over explorer, go over topics discussed in today’s lesson, examine the different game templates on offer to see what Roblox is capable of
Lesson 2
Intro to studio
• Creating a new world
• Inserting objects (block, sphere, wedge, cylinder)
• Moving around the world and How to move, scale, and rotate objects
• Object properties (Appearance and transform)
• Spawning different objects (sphere, wedge, cylinder)
• Selecting multiple objects and grouping/ungrouping objects
• Go over top bar, file/new/undo/redo
• How to save/open the world
Class Project: Build house!
Lesson 3
Intro to studio part 2
• How to union/negate objects and why we should
• How to add effects to objects
• How to use terrain editor
• Ideas behind building (Make them very big, then union them, then scale them down)
• Flower exercise
Class Project: Improve previously built house with lessons learned today
Lesson 4
How to create attachments (HINGE)
• How constraints and welds
• Create an autocar via the motor and hinge tools
Class Project: Create a unique autocar from the hinge and motor tools
Lesson 5
How to create a script
• Creating variables (string, int, bool)
• Editing properties via scripting (BrickColor, Anchored/UnAnchored, etc.)
• While Loops
• Using Script.Parent Code
Class Project: Create a light show with bricks!
Week 2
Lesson 6
Obstacle Course part 1
• Coding checkpoints
• Coding teams
• Learn how to make example obstacles for your course
Class Project: Create an obstacle obby!
Lesson 7
Obstacle Course part 2
• Creating Functions
• Creating instances and particles from scripts
• Create events and parameters – traps
• Create player touchable buttons
Class Project: Improve your obstacle obby
Lesson 8
Obstacle Course part 3
• Powerups with if/else statements
• Traps with if/else statements
• Publishing your course
Class Project: Create power ups and improve your obby traps
Lesson 9
REVIEW DAY
Answer questions regarding students’ final projects, help with them
Lesson 10
FINAL PROJECT PRESENTATION DAY
Projects demonstrated by students.
Roblox Game Design With Lua
introduction to the basics of Roblox Studio. This included moving in the View, and learning the basic controls to enable us to build.
Here is the link to the quiz that covers all the topics we learned today, it is entirely optional:
https://quizizz.com/join/quiz/61b006edf7c86f001ed04995/start
we went over modeling. We created a campfire model that we saved to the toolbox. The model had fire, smoke, and light. We then went over a variety of special effects in ROBLOX, as well as some lighting adjustments. We then ended with learning about the terrain editor.
solid modeling and how we could combine parts together into new parts. We then worked on creating an archway-gate type model. We then started a bit of coding
scripting journey. We talked about variables, data types, loops, if-then conditionals, and functions. We then ended by creating a part and learning about events in ROBLOX.
created a script that could animate our player when we clicked down. We then began our introduction to creating a teleporting gate.
local Player = game:GetService("Players").LocalPlayer
local Character = Player.CharacterAdded:Wait()
local Humanoid = Character:WaitForChild("Humanoid")
local UserInputService = game:GetService("UserInputService")
local AnimationID = "rbxassetid://" .. 522638767
local AnimationObject = Instance.new("Animation", Humanoid)
AnimationObject.AnimationId = AnimationID
local LoadedAnimation = Humanoid:LoadAnimation(AnimationObject)
UserInputService.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
LoadedAnimation:Play()
end
end)
GateScript:
local Players = game:GetService("Players")
local function GetPlayer(part)
if part and part.Parent:IsA("Model") and Players:GetPlayerFromCharacter(part.Parent) then
return Players:GetPlayerFromCharacter(part.Parent)
end
end
local GateA = workspace:WaitForChild("GateA")
local GateB = workspace:WaitForChild("GateB")
GateA.Teleport.Touched:Connect(function(newPart)
local player = GetPlayer(newPart)
if player then
player.Character:MoveTo(GateB.Teleport.Position)
end
end)
Today we worked on finishing up the gates. We then created a little obby setup. We created some kill parts and a couple power boosts. Here is the code:
GateScript:
local Players = game:GetService("Players")
local function GetPlayer(part)
if part and part.Parent:IsA("Model") and Players:GetPlayerFromCharacter(part.Parent) then
return Players:GetPlayerFromCharacter(part.Parent)
end
end
local GateA = workspace:WaitForChild("GateA")
local GateB = workspace:WaitForChild("GateB")
GateA.Teleport.Touched:Connect(function(newPart)
local player = GetPlayer(newPart)
if player then
player.Character:MoveTo(GateB.Teleport.Position + (GateB.Teleport.CFrame.LookVector * 5))
end
end)
GateB.Teleport.Touched:Connect(function(newPart)
local player = GetPlayer(newPart)
if player then
player.Character:MoveTo(GateA.Teleport.Position + (GateA.Teleport.CFrame.LookVector * 5))
end
end)
We created some teleporters that teleported us to other creations. We also learned how to make swinging doors. I've attached the teleport script below:
PlaceTeleporter:
local TeleportService = game:GetService("TeleportService")
local Players = game:GetService("Players")
local placeId = 18396054380
local PlaceTeleporter = workspace:WaitForChild("PlaceTeleporter")
PlaceTeleporter.Teleporter.Touched:Connect(function(part)
local player = Players:GetPlayerFromCharacter(part.Parent)
if player then
TeleportService:Teleport(placeId, player)
end
end)
In this session, we will work on creating our obby. We will code everything for it as well. We got the checkpoints, kill parts, and boost abilities to work.
Code from today:
local Players = game:GetService("Players")
local SpawnLocation = workspace:WaitForChild("SpawnLocation")
local CheckpointData = {}
Players.PlayerAdded:Connect(function(player)
CheckpointData[player.UserId] = SpawnLocation
player.CharacterAdded:Connect(function(character)
character:MoveTo(CheckpointData[player.UserId].Position)
end)
end)
local function GetPlayer(part)
if part and part.Parent:IsA("Model") and Players:GetPlayerFromCharacter(part.Parent) then
return Players:GetPlayerFromCharacter(part.Parent)
end
end
for index, part in pairs(workspace:GetDescendants()) do
if part and part:IsA("BasePart") then
if part.Name == "CheckpointPart" then
part.Touched:Connect(function(touchPart)
local player = GetPlayer(touchPart)
if player then
CheckpointData[player.UserId] = part
end
end)
elseif part.Name == "KillPart" then
part.Touched:Connect(function(touchPart)
local player = GetPlayer(touchPart)
if player then
player.Character.Humanoid.Health = 0
end
end)
elseif part.Name == "JumpPart" then
part.Touched:Connect(function(touchPart)
local player = GetPlayer(touchPart)
if player then
player.Character.Humanoid.JumpHeight = 50
wait(4)
player.Character.Humanoid.JumpHeight = 7.2
end
end)
elseif part.Name == "SpeedPart" then
part.Touched:Connect(function(touchPart)
local player = GetPlayer(touchPart)
if player then
player.Character.Humanoid.WalkSpeed = 50
wait(4)
player.Character.Humanoid.WalkSpeed = 18
end
end)
end
end
end
Our Roblox and Lua (Level 2) class focuses on advancing scripting skills in Roblox using Lua. Students will learn advanced topics such as creating interactive elements, saving game data, event handling, GUI integration, user tools, team-based mechanics, and creating complex game systems. Projects include building interactive games, designing user interfaces, implementing in-game purchases, and creating team-based mechanics, culminating in a final project where students showcase their own game creations.