Luau is Roblox's scripting language — a fork of Lua 5.1 with type checking, performance improvements, and Roblox-specific affordances. You can build most Roblox games with about eight concepts, and AI makes learning them faster by explaining your code rather than a textbook's.
This guide is for someone who has never written code before. It covers those eight concepts, how to use AI as a tutor instead of a ghostwriter, and a four-week plan that actually builds skill.
Step 0: Don't just ask AI to write everything
Tempting trap: "I'll have the AI write the whole game while I watch." You'll get a game, you won't learn anything, and the moment it breaks you're stuck.
The right approach: have the AI write parts, read those parts, write the next thing yourself, then have the AI check your work. AI as tutor, not ghostwriter.
Goal for your first month: be able to read every line of code in your game and explain what it does. The AI gets you there faster than learning alone — but only if you let it explain rather than just produce.
The 8 Luau concepts you need
You can build most Roblox games with these eight. Everything else is sugar.
1. Variables
A variable is a named container for a value.
local money = 100
local playerName = "Alice"
local isAlive = true
local means the variable is scoped to the current block. Almost always use local. Skipping it makes the variable global, which is slower and leaks across your script.
2. Functions
A function is a named block of code you can call later.
local function greet(name)
print("Hello, " .. name .. "!")
end
greet("Alice") -- prints "Hello, Alice!"
The .. operator joins strings. You'll use this constantly.
3. Conditionals
Decide between paths based on a condition.
if money >= 100 then
print("You can afford it!")
elseif money >= 50 then
print("Almost there.")
else
print("Save up first.")
end
4. Loops
Do something N times, or for every item in a list.
for i = 1, 10 do
print("Number: " .. i)
end
local fruits = {"apple", "banana", "cherry"}
for _, fruit in ipairs(fruits) do
print(fruit)
end
The _ is a convention for "I don't care about this variable" (the index, in this case).
5. Tables
Tables are Lua's everything. They're arrays, dictionaries, and objects all in one.
local player = {
name = "Alice",
money = 100,
inventory = {"sword", "shield"},
}
print(player.name) -- "Alice"
print(player.inventory[1]) -- "sword"
Note that Lua arrays start at 1, not 0. This catches out everyone arriving from another language.
6. Events and connections
Roblox is event-driven. Things happen, you react to them.
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
print(player.Name .. " joined the game!")
end)
Players.PlayerAdded is a signal. :Connect runs the given function every time it fires. This pattern repeats everywhere — Humanoid.Died, Part.Touched, RemoteEvent.OnServerEvent are all the same shape.
7. Services
Roblox has a fixed set of named services. You access them with game:GetService("ServiceName").
Important ones:
Players— the list of connected playersWorkspace— the 3D worldReplicatedStorage— shared between server and clientServerScriptService— server-only scriptsRunService— frame-by-frame events (Heartbeat, RenderStepped)DataStoreService— persistent storage
You'll memorize these over time. For now: "I need to access X" usually means "I need to GetService for X."
8. Server vs Client
Roblox runs your code in two places: the server (one) and each player's client (many). They see different things:
- Server scripts run in
ServerScriptServiceorServerStorage. They can useDataStoreServiceand control game state. - Local scripts run in
StarterPlayer.StarterPlayerScriptsorStarterGui. They can useMouse,UserInputService, andLocalPlayer.
Put server-only code in a LocalScript or vice versa and it errors. The mental model: server is the authority, clients are presentation. Player data lives on the server. UI lives on the client. This one concept causes more beginner bugs than the other seven combined.
How do you use AI to learn Luau faster?
Use AI tools like Revix in a tutor mode:
1. Ask "what does this do?" of any code you don't understand.
Paste the function. Ask the AI to walk through it line by line. You'll learn more in 5 minutes than from a 20-minute video, because it's explaining the exact code in front of you.
2. Write something yourself, then ask AI to review it.
Here's my script that gives players coins when they touch a coin block. Is it correct? Are there bugs?
This is the highest-value learning move. You wrote it, the AI critiques it, you see what you missed.
3. Ask "what's the idiomatic way to..."
What's the idiomatic Roblox way to handle a player dying and respawning at a saved checkpoint?
You get the standard pattern, not whatever the AI invented.
4. Ask for variants.
Show me three different ways to detect when a player picks up an item.
Seeing alternatives teaches you when each is appropriate.
A learning sequence that works
Week 1: write your first 10 scripts by typing them out, even if AI suggests them. Don't copy-paste. Typing builds muscle memory.
Week 2: build a simple game — an obby, see How to Make a Roblox Obby With AI — with AI helping but you reading every line.
Week 3: deliberately break something and debug it. Read How to Fix Roblox Studio Errors With AI.
Week 4: pick a Roblox API you've never touched (TweenService, ParticleEmitter, Pathfinding) and build something with it without AI. See how much you've internalized.
Common beginner mistakes
Not using local. Always type local before a variable name. The rare cases where you don't want it, you'll know.
Trusting WaitForChild blindly. WaitForChild("Humanoid", 5) returns nil after 5 seconds. Always check the return value.
Putting everything in one giant script. Splitting into ModuleScripts feels like overhead at first and pays off hugely as your project grows.
Not testing in-game. Studio's edit mode doesn't run most scripts. Hit Play and exercise the actual game.
Asking AI to fix things you don't understand. Stop, read the error, understand it, then ask.
Frequently asked questions
Is Luau hard to learn as a first language?
It's one of the gentler starting points. The syntax is small and readable, and you get instant visual feedback — your code moves something in a 3D world, which beats printing text to a console. The genuinely hard part isn't syntax, it's the server/client split, and every Roblox developer wrestles with that early.
How long does it take to learn Roblox scripting?
Reading and modifying scripts comfortably comes within weeks of consistent practice. Building systems from scratch without help takes longer. The honest variable is how much you write yourself versus how much you copy — people who type their own code and debug their own mistakes get there considerably faster.
Should beginners use AI to learn Luau, or does it hurt?
It depends entirely on how you use it. As an explainer and reviewer it's the best tutor available: infinitely patient, always about your exact code. As a ghostwriter it's a trap — you accumulate a codebase you can't read or fix. Ask "why", not just "write".
Do I need to learn Lua before Luau?
No. Luau is Lua with additions, so learning Luau directly teaches you both. Older Lua tutorials still mostly apply, but anything Roblox-specific — Instances, services, events — only exists in Luau, so start with Roblox material.
Next steps
Now that you have the language fundamentals:
- How to Generate Lua Scripts With AI for Roblox Studio — graduate from "AI as tutor" to "AI as co-developer"
- How to Make a Roblox Obby With AI in 30 Minutes — your first project
- How to Build a Roblox Game With AI — the bigger picture
Stuck on something? The Revix Discord is full of people who were where you are a few months ago.
Install Revix and write your first script in 10 minutes.