a modern, lightweight onboarding and tutorial framework for Roblox that makes it easy to create polished, interactive experiences for new players.
Guide players through your game using UI highlights, world indicators, focus spotlights, overlays, directional arrows, and flexible completion trackers—all through a clean and developer-friendly API.
Features
Interactive Tutorials
Build tutorials one step at a time with a simple API.
- Sequential step system
- Dynamic descriptions
- Skip, cancel, and completion support
- Event-driven architecture
Focus Spotlight
Guide the player's attention using a responsive spotlight effect.
- Automatically follows UI elements
- Supports Parts and Models
- Smooth transparent cutout
- Configurable borders, padding, animations, and effects
UI Highlights
Highlight any GUI object.
- Rounded corners
- Animated borders
- Pulse effects
- Automatic resizing
- Theme support
World Highlights
Highlight objects directly in the 3D world.
Supports:
- BasePart
- Model
Perfect for:
- NPCs
- Chests
- Buttons
- Interactable objects
Guide Arrows
Guide players toward important objects.
Supports both:
- Screen-space UI arrows
- World-space beam arrows
Screen Overlay
Dim the background while keeping the current objective visible.
Perfect for:
- Tutorials
- Cutscenes
- Menus
- Guided experiences
Flexible Trackers
Automatically complete tutorial steps using built-in trackers.
Supported trackers include:
- Number
- Boolean
- Signal
- Zone
- Click
- Timer
Or create your own custom logic.
Theme System
Customize the appearance of every visual element.
Configure:
- Typography
- Colors
- Overlay
- Highlight
- Focus
- Arrow
- Animations
Apply themes globally or override them per tutorial or per step.
Standalone Components
Every visual component can be used independently.
local highlight = OnBoard.Highlight(button)
local overlay = OnBoard.Overlay()
local arrow = OnBoard.Arrow(button)
local focus = OnBoard.Focus(button)
No tutorial required.
Installation
Place the package inside ReplicatedStorage.
ReplicatedStorage
└── Shared
└── Packages
└── OnBoard
Require the module from a LocalScript.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local OnBoard = require(
ReplicatedStorage.Shared.Packages.OnBoard
)
Quick Start
Create a tutorial.
local tutorial = OnBoard.new()
Add your steps.
tutorial:AddStep({
Id = "OpenInventory",
Title = "Inventory",
Description = "Click the inventory button.",
Target = inventoryButton,
Highlight = true,
Overlay = true,
Arrow = true,
Focus = true,
Tracker = OnBoard.Track.Click(inventoryButton),
})
Start the tutorial.
tutorial:Start()
That's it!
Basic Example
local tutorial = OnBoard.new()
tutorial:AddStep({
Id = "Walk",
Title = "Welcome!",
Description = "Walk over to the highlighted object.",
Target = workspace.StartPart,
Highlight = true,
Overlay = true,
Arrow = true,
Focus = true,
Tracker = OnBoard.Track.Zone(
workspace.StartPart,
8
),
})
tutorial:AddStep({
Id = "Shop",
Title = "Open Shop",
Description = "Click the shop button.",
Target = ShopButton,
Highlight = true,
Overlay = true,
Focus = true,
Tracker = OnBoard.Track.Click(ShopButton),
})
tutorial:Start()
Package Structure
OnBoard
├── init.lua
├── Types.lua
├── Attributes.lua
│
├── Modules
│ ├── Config.lua
│ ├── Theme.lua
│ └── Tutorial.lua
│
└── Elements
├── Arrow.lua
├── Focus.lua
├── Highlight.lua
├── Overlay.lua
└── Tracker.lua
Documentation
Continue with the following guides:
- API — Complete reference for every class, method, tracker, event, and visual component.
- Configuration — Learn how to customize themes, colors, animations, focus, highlights, overlays, arrows, and framework defaults.
Why OnBoard?
Unlike simple tutorial systems, OnBoard combines multiple onboarding tools into a single framework.
- Interactive tutorial sequences
- UI and world guidance
- Automatic focus spotlights
- Standalone visual components
- Flexible completion tracking
- Fully themeable
- Lightweight and modular
- Designed for modern Roblox experiences
Whether you're building a simulator, RPG, tycoon, FPS, or story game, OnBoard helps players learn your experience naturally while keeping your code clean and maintainable.