株式会社オブライト
Software Dev2026-04-13

Luau Programming Beginner's Guide — Getting Started with Roblox's Official Language [2026]

Beginner's guide to Luau, Roblox's official scripting language derived from Lua 5.1. Covers basic syntax (variables, control flow, functions, tables), string interpolation, compound assignment, Luau vs Lua comparison, and getting started with Roblox Studio.


Luau is Roblox's official scripting language, derived from Lua 5.1, featuring speed, safety, and optional static typing. Open-sourced under the MIT License in 2021, its adoption is expanding beyond Roblox itself.

What Is Luau? Origins and Core Characteristics

Luau is a Lua 5.1-based scripting language developed by Roblox. It extends standard Lua with an optional static type system, string interpolation, compound assignment operators, a continue statement, and native code generation. Since its open-source release under the MIT License in 2021, adoption outside Roblox has grown steadily. Scripts run on a custom VM or via native codegen, with reported execution speeds up to 3x faster than standard Lua.

Luau vs Lua Comparison — Key Differences at a Glance

The table below summarizes the main differences between Luau and standard Lua 5.1/5.4.

FeatureLuauLua 5.1Lua 5.4
Optional static type systemYesNoNo
String interpolation (backtick)YesNoNo
Native codegen (JIT-equivalent)YesNoNo
continue statementYesNoNo
Compound assignment (+=, -= etc.)YesNoNo
Bitwise operatorsYesNoYes
Generalized iterationYesNoYes
Integer typeNoNoYes

Basic Syntax — Variables and Data Types

Luau's core data types are: - number: Integers and floats (e.g., `42`, `3.14`) - string: Text values (e.g., `"Hello"`, `'World'`) - boolean: `true` or `false` - nil: Represents absence of value - table: The primary data structure, serving as both arrays and dictionaries - function: First-class objects The `local` keyword is recommended for variable declarations to keep scope contained. Global variables (without `local`) are discouraged due to scope pollution risks.

Hello World and Variable Declaration — Your First Code

Here are fundamental Luau code examples:

luau
-- Print Hello World
print("Hello, World!")

-- Local variable declarations
local playerName: string = "Hiraba"
local score: number = 0
local isActive: boolean = true

-- String interpolation (Luau-specific)
local message = `Welcome, {playerName}! Score: {score}`
print(message) -- Welcome, Hiraba! Score: 0

-- Compound assignment (Luau-specific)
score += 10
print(score) -- 10

-- Nil check
local data = nil
if data == nil then
    print("data is nil")
end

Control Flow — if, for, while, and continue

Key control flow constructs in Luau:

luau
-- if/elseif/else
local hp = 75
if hp >= 100 then
    print("Full HP")
elseif hp >= 50 then
    print("Above half")
else
    print("Critical")
end

-- Numeric for loop
for i = 1, 5 do
    print(i) -- 1, 2, 3, 4, 5
end

-- continue statement (Luau-specific)
for i = 1, 10 do
    if i % 2 == 0 then
        continue -- skip even numbers
    end
    print(i)
end

-- while loop
local count = 0
while count < 3 do
    count += 1
end

-- repeat/until
repeat
    count -= 1
until count <= 0

Functions — Definitions, Type Annotations, and Multiple Returns

luau
-- Basic function definition
local function greet(name: string): string
    return `Hello, {name}!`
end
print(greet("Roblox")) -- Hello, Roblox!

-- Multiple return values
local function divide(a: number, b: number): (number, number)
    local quotient = math.floor(a / b)
    local remainder = a % b
    return quotient, remainder
end
local q, r = divide(17, 5)
print(q, r) -- 3  2

-- Variadic arguments
local function sum(...: number): number
    local total = 0
    for _, v in {...} do
        total += v
    end
    return total
end
print(sum(1, 2, 3, 4, 5)) -- 15

Tables — Arrays, Dictionaries, and Nested Structures

In Luau, tables serve as both arrays and dictionaries:

luau
-- Used as an array
local fruits = {"apple", "banana", "cherry"}
print(fruits[1]) -- apple (1-based indexing)

-- Used as a dictionary
local player = {
    name = "Hiraba",
    level = 10,
    hp = 100
}
print(player.name) -- Hiraba
print(player["level"]) -- 10

-- Nested table
local world = {
    zones = {
        { id = 1, name = "Forest" },
        { id = 2, name = "Desert" }
    }
}
print(world.zones[1].name) -- Forest

-- Iterating over a table
for key, value in player do
    print(key, value)
end

String Interpolation and Compound Assignment — Luau's Unique Conveniences

String interpolation: Wrap with backticks and embed expressions using `{}`.

luau
local name = "Roblox"
local version = 2026
local msg = `Welcome to {name} {version}!`
print(msg) -- Welcome to Roblox 2026!

Compound assignment operators: `+=`, `-=`, `*=`, `/=`, `..=` (string concat assignment)

luau
local x = 10
x += 5  -- x = 15
x -= 3  -- x = 12
x *= 2  -- x = 24
x /= 4  -- x = 6

local text = "Hello"
text ..= ", World!"
print(text) -- Hello, World!

Luau Language Architecture — Overall Structure

Loading diagram...

Getting Started in Roblox Studio — From Download to Execution

Follow these steps to start writing Luau in Roblox Studio: 1. Download: Get Roblox Studio for free at create.roblox.com (Windows and Mac). 2. Create a new project: After launch, select "Create New Experience" and choose a template. 3. Insert a script: In the Explorer pane, right-click `ServerScriptService` and select "Insert Script." 4. Write code: Type `print("Hello, Roblox!")` in the editor. 5. Run: Press the Play button (or F5) at the top. The output pane will display your message. To use the AI Assistant feature, click the "AI Assistant" button in the top-right corner of the editor. Simply describe what you need in natural language and Luau code will be generated automatically.

Frequently Asked Questions (FAQ)

Q1. What is the difference between Lua and Luau? Luau is a Lua 5.1 extension developed by Roblox, adding a type system, string interpolation, compound assignment, continue, and native codegen. Most standard Lua code runs unchanged in Luau. Q2. Can developers experienced in Python or JavaScript learn Luau quickly? Yes. Luau's syntax is simple enough for experienced developers to grasp the basics in days to a week. The biggest adjustments are 1-based indexing, end-block closures, and optional semicolons. Q3. Are there free official learning resources? The Roblox Creator Documentation at create.roblox.com/docs is the most comprehensive resource. While Japanese content is limited, English tutorials and video walkthroughs are plentiful. Q4. Is the Luau type system mandatory? No. Type annotations are optional. Code works without them, but adding types on larger projects enables earlier bug detection and improves editor autocomplete accuracy. Q5. Can Luau be used outside Roblox? Technically yes, as it is MIT-licensed and embeddable. However, the vast majority of Luau usage today is within Roblox. A few independent projects have adopted it. Q6. Is Luau only for game logic? Within Roblox, Luau is used for UI control, networking, physics triggers, and server-side logic—essentially every part of a game's construction. Q7. Can object-oriented programming be done in Luau? Yes. OOP patterns can be implemented using tables and metatables. Roblox's official documentation provides best-practice guides for class-based OOP in Luau.

Oflight Provides Professional Support for Luau and Roblox Development

From Luau learning support to full-scale Roblox experience development, Oflight's software development team is ready to assist. We cover game logic design, type-safe code architecture, performance optimization, and more. Visit our Software Development Services page to get started.

Feel free to contact us

Contact Us