Appearance
How to use this course
Written: 2026-10-14
Reading order
Read the levels in order the first time through. Later pages build on earlier ones. Every page lists its prerequisites with links. If you already write code in another language, skim Levels 0 and 1 for Luau differences such as 1-based tables, truthiness, and nil. Slow down at Level 2, where Roblox execution contexts begin.
Install Roblox Studio. You need nothing else until the tooling chapters say so.
Roadmap
| Level | Chapters | When you finish it, you can |
|---|---|---|
| Level 0: Getting started | Introduction, Studio and environment, First script | Open Studio, run code, read errors, tell client from server |
| Level 1: Programming fundamentals | Variables, Operators and logic, Conditionals and loops, Functions and scope, Tables 1, Strings, numbers, nil, Debugging basics | Write small programs, trace bugs, use tables for everything |
| Level 2: Core Luau | Syntax and control flow, Tables in depth, Strings and libraries, Advanced functions, Modules and require, Metatables and OOP, Errors and defensive code | Write idiomatic Luau: closures, modules, objects, libraries |
| Level 3: Roblox fundamentals | DataModel and Instances, Scripts and execution, Services and events, Task and async, Players and characters, Remotes and networking, Server authority, UI and input | Build working experiences: instances, events, remotes, validated gameplay, UI |
| Level 4: Intermediate engineering | Patterns and boundaries, State and data, Async and concurrency, Rojo project structure | Structure multi-module code, persist data, run Rojo projects |
| Level 5: Strict typing | Annotations and inference, Modes, Narrowing and guards, Casts and assertions, Generics, Subtyping and compatibility, Type packs, Solver and migration, Diagnosing errors | Type anything precisely, read any error, migrate codebases to strict |
| Level 6: Advanced production | Architecture, Packages, Security and production, Performance | Architect services, controllers, and data. Ship secure systems. Optimize by measurement |
| Level 7: Language evolution | RFC status guide, Syntax, Generics and packs, Type-system RFCs, Type functions, Stdlib and config | Understand where each feature came from and what is still unavailable |
| Tooling | Testing, Debugging workflows, Format, lint, version control, Shipping checklist | Test, debug, format, version, and ship your work like a team of one |
| Level 8: Integration projects | Utility library, Gameplay mechanic, Service/controller system, Client-server protocol, Data system, Capstones | Prove it: six builds combining the whole course |
| Reference | Glossary, References | Look up terms and find source documentation |
Conventions used throughout
Samples use --!strict on line 1 unless the page teaches another mode. Every Roblox sample names its container, such as a Script in ServerScriptService or a LocalScript in StarterPlayerScripts. Each file gets Engine services once with game:GetService. Constructed Instances set Parent last. Shared tables return frozen. Every Engine and package claim links its official source; confirm the linked source again before you rely on version-sensitive behavior.