Nova for Roblox developers¶
If you write Luau on Roblox, Nova should feel familiar within the first few minutes. This page is the high-level map. The API reference has the exact details.
The five things to know¶
- The DataModel is the same. Instances, services,
game:GetService(),Instance.new(),Script/LocalScript/ModuleScript,require, and client-server replication work the way you expect. - The language is Luau.
task,typeof,continue, compound assignment, type annotations, signals, attributes, and tags are available. - The target is roughly the 2022 Roblox API. Many later features are also present, but the compatibility pages are the source of truth.
- The server is authoritative. Use
RemoteEvent/RemoteFunction, validate on the server, and expect filtered replication. - A few modern systems are missing. They are listed below, with the workaround you will actually use.
What maps directly¶
| Roblox | Nova |
|---|---|
game:GetService("Workspace") |
Same |
Instance.new("Part") |
Same |
Script / LocalScript / ModuleScript |
Same |
task.spawn, task.wait, task.delay |
Same |
RemoteEvent / RemoteFunction |
Same |
TweenService / TweenInfo |
Same |
CollectionService tags |
Same |
DataStoreService |
Same core API, platform-backed |
Sound, SoundGroup, sound effects |
Same |
Terrain, MeshPart, CSG unions |
Same |
UserInputService, ContextActionService |
Same core |
ScreenGui, Frame, TextLabel, ImageLabel |
Same core |
What is different¶
Modern UI layout¶
These are not implemented yet:
UIListLayout, UIGridLayout, UITableLayout, UIPadding, UIScale,
UICorner, UIGradient, UIStroke, CanvasGroup, UIAspectRatioConstraint,
UISizeConstraint, UITextSizeConstraint.
A modern interface that relies on automatic layout will not lay itself out. Use a manual layout pass, 9-slice images, and explicit sizing. See Build a UI without UIListLayout.
Modern spatial queries¶
WorldRoot:Raycast, RaycastParams, RaycastResult, and OverlapParams are
missing. Use:
Workspace:FindPartOnRayWithIgnoreListWorkspace:FindPartsInRegion3WithIgnoreList
See Physics and spatial queries.
Avatars¶
Classic R6 and R15 rigs work. These do not:
Bone/ skeletal skinningHumanoidDescriptionSurfaceAppearanceWrapLayer/WrapTarget/ layered clothing
Use classic body parts, clothing assets, and baked textures. See Animation and avatars.
Chat and localization¶
TextChatService and its configuration classes are missing. Use the legacy
chat/bubble chat or a custom UI. LocalizationService/LocalizationTable are
missing; use a string module or per-locale places.
Platform services¶
VR, video, voice, Open Cloud, packages, EditableImage, and EditableMesh are
not implemented yet. These need a design change, not an API shim.
The development loop¶
- Open the editor from https://www.novalabs.top.
- Write a server script in
ServerScriptService. - Test with Play Solo, then a local server with two clients.
- Check the Output window for unknown classes, missing members, and permission errors.
- Publish through the official platform.
There is no public engine build or self-hosted server. Nova is closed source; the runtime is provided by the platform.
A small example¶
This is ordinary Roblox-style Luau:
-- ServerScriptService/Hello.server.lua
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
local humanoid = character:WaitForChild("Humanoid")
humanoid.Died:Connect(function()
print(player.Name, "died")
end)
end)
end)
The same script runs on Roblox. That is the point: port the API gaps, not the whole mental model.
How to use the reference¶
- Start at the class index, search for the class, then read its status.
- A class marked Supported can still have missing members. Open the Modern Roblox API not in Nova section on that page.
- Datatype pages tell you whether
Vector3,CFrame,TweenInfo, and friends are registered. - The compatibility page ranks the biggest gaps.