May 18, 2026

Highrise Studio is a development environment that uses Unity as its editor and Lua as its only scripting language, meaning C# is not supported. This glossary covers every key term you will encounter when building your first sample Unity and Lua project for Highrise Studio, from GameObjects and Prefabs to Network Values and the Payments API. If you want to go from zero to a published World, start by downloading Studio Hub, creating a project from the Basic Template, and following the quick-start walkthrough at the end of this guide.
Highrise Studio documentation is thorough but scattered across dozens of pages, YouTube lectures, forum posts, and a GitHub repository. Community members on the Highrise Create forum regularly note that tutorials live across the learn tab, YouTube, TikTok, and Instagram, making it hard for beginners to piece together the full picture. Practitioners on Reddit and community forums also report confusion about basics like whether Studio runs on mobile (it does not).
This page fixes that problem. It is the single reference for every term you will hit when starting a sample Unity and Lua project for Highrise Studio, defined in plain English with practical context. Bookmark it.
Before anything else, one critical fact that trips up experienced Unity developers:
You cannot use C# scripts in Highrise Studio. Lua is the only supported scripting language for creating games and experiences on the Highrise platform.
If you are coming from traditional Unity development, set aside your MonoBehaviour habits. Everything here runs on Lua.
The development environment for creating 3D Worlds and games on the Highrise platform. It wraps Unity as the editor and uses Lua for all scripting. VentureBeat described it as “a suite of development tools enabling creators to build in Unity, the most popular and accessible game engine.” Highrise Studio is available on Windows and Mac only. There is no mobile version of the editor, despite questions about this appearing regularly on the Highrise Create forum.
If you want to see what other creators have already published, browse published Worlds to get a feel for what is possible.
Your control center and launcher. Studio Hub gives you access to different versions of the Unity Editor bundled with Highrise Studio, along with project templates and samples. When you create a new sample Unity and Lua project for Highrise Studio, this is where you start. You pick a template, name your project, choose a file location, and click Create Project.
To get Studio Hub, download Highrise Studio for your operating system.
The core bundle that makes Highrise Studio work inside Unity. It includes essential assets, tools, and plugins for creating and sharing Worlds. The Studio Package is actively evolving. Recent updates have added Lua UI collection providers, Lua bindings for AnimatorStateInfo, and validation rules that warn you if MonoBehaviours appear in a scene. Check the latest announcements to stay current on Studio Package releases.
An extension for Visual Studio Code that simplifies coding for Highrise Studio. It provides Lua code highlighting, word suggestions, and autocomplete. If you are writing Lua scripts outside of Unity’s built-in editor, this is worth installing immediately.
The web dashboard where you manage and publish your Worlds after uploading them from Unity. You set version numbers, configure world metadata, view analytics, and release builds here. Think of it as the “back office” for your published projects.
These terms come directly from Unity, but their behavior in Highrise Studio sometimes differs from standard Unity development.
A project is your working directory containing all scenes, scripts, assets, and configuration files. In Studio Hub, you create new projects by selecting a template. The Basic Template is the most common starting point for a sample Unity and Lua project for Highrise Studio. It gives you a minimal scene with the Highrise runtime already configured.
A separate environment where game elements exist and interact. You create new scenes via File > New Scene. A World can contain multiple scenes, though most starter projects use a single one.
The fundamental building block of any Unity scene. Every object you see in the scene view (a cube, a light, a player character, an invisible trigger zone) is a GameObject. On its own, a GameObject does nothing. You add Components to give it behavior.
A piece of functionality attached to a GameObject. Common examples include Rigidbody (for physics interactions), Collider (for collision detection), and in Highrise Studio, your Lua scripts. Components stack, so a single GameObject might have a Collider, a Rigidbody, and two Lua scripts all working together.
A reusable, saved GameObject. If you build a treasure chest with a collider, a material, and a Lua interaction script, you can save it as a Prefab. Then you drag it into any scene as many times as you want. Prefabs save development time and ensure consistency.
Every GameObject has a Transform component by default. It stores position, rotation, and scale. In Lua, you access it through self.transform.
The Unity panel on the right side of the editor where you view and edit a selected GameObject’s properties and components.
The tree view on the left side showing every GameObject in the current scene. Parent-child relationships are visible here. Dragging one object onto another makes it a child.
The file browser at the bottom of the Unity editor. This is where your scripts, prefabs, textures, materials, models, and animations live. To create a new Lua script, you right-click in this panel.
The output window that displays errors, warnings, and debug messages. When your Lua script has an issue, the Console is the first place to look.
This section covers the scripting vocabulary specific to building a sample Unity and Lua project for Highrise Studio. If you are building your first World, this is the section to study most carefully.
A lightweight, high-level scripting language designed for embedded systems and game development. It is known for simplicity, flexibility, and ease of integration. Highrise chose Lua because it is fast, easy to sandbox, and allows creators to build interactive gameplay without the complexity of C#. In Highrise Studio, Lua is the primary (and only) scripting language.
In the Project panel, right-click and select Create > Highrise > Lua Script. This generates a new .lua file with a basic template. You then attach it to a GameObject by dragging it onto the object in the Hierarchy or Inspector.
Highrise’s Lua equivalent of Unity’s MonoBehaviour. When you write a Lua script and attach it to a GameObject, the runtime treats it as a LuaBehaviour. You access the GameObject and its components through self. For example, self.transform.position gives you the object’s world position.
Important distinction: Standard Unity MonoBehaviour (C#) does not work in Highrise Studio. Recent Studio Package updates added validation rules that explicitly warn against MonoBehaviours appearing in scenes. If you see that warning, you have a C# script that needs to be replaced with Lua.
Highrise Studio supports five distinct script types. Choosing the right one is critical. Here is a decision matrix that no existing documentation provides in one place:
| Script Type | Runs On | Use When… |
|---|---|---|
| Client Script | Player’s device only | Handling local UI, visual effects, input that does not need server validation |
| Server Script | Highrise servers only | Processing payments, authoritative game logic, anti-cheat enforcement |
| Client and Server Script | Both sides | Sharing code between client and server, syncing gameplay state |
| Module Script | Wherever imported | Storing shared constants, utility functions, global state |
| UI Script | Client (with UI bindings) | Building interactive HUD elements, menus, buttons |
Runs exclusively on the player’s device. Good for visual effects, animations, sound, and other things that do not need to be validated or seen by the server.
Runs exclusively on Highrise servers. All payment-related code must live in server scripts. The server is also where you put authoritative game logic that players should not be able to tamper with.
A special script type that runs on both the client and server sides. It allows shared code and seamless communication between the two environments. You get prefixed lifecycle functions: ClientAwake, ServerAwake, ClientStart, ServerStart, ClientUpdate, ServerUpdate, ClientFixedUpdate, ServerFixedUpdate. The prefix determines which side executes that function.
Written in Lua and following a structured format. Module scripts consist of functions, variables, and shared state accessible globally by other scripts via require(). They act as singletons, meaning variables like npcName or gameState retain their state across every script that imports the module.
Marked with the --!Type(UI) annotation. UI scripts connect Lua logic to UXML-defined interfaces. They power buttons, input fields, and dynamic text in your World’s user interface.
The first-line annotation in any Lua script that tells the Highrise runtime what kind of script it is. Examples include --!Type(Client), --!Type(Server), --!Type(ClientAndServer), --!Type(Module), and --!Type(UI).
A keyword used to link a UXML element to a Lua variable. For instance, if your UXML defines a button with a name, you use --!Bind in your Lua script to reference it. Bindings must match the corresponding UXML element type.
The core event functions that drive your script’s behavior over time:
In Client and Server scripts, prefix these with Client or Server to control which side runs them.
Events enable firing and connecting to events across client and server. You create them with Event.new(), trigger them with FireServer() or FireClient(), and listen with :Connect(). This is how you send a “player pressed the buy button” message from the client to the server for processing.
Synchronized variables used to share data between client and server. They trigger an event whenever their value changes. Here is a quick reference for the five types:
| Type | Use Case |
|---|---|
| IntValue | Scores, counters, health points |
| StringValue | Player names, status messages |
| BoolValue | Toggles (door open/closed, game started/not) |
| Vector3Value | Positions, directions, velocities |
| TableValue | Complex data structures, inventories |
Values sync automatically when both client and server create one with the same name. If the optional player parameter is set, only that specific player sees updates.
An XML-based markup language for defining UI structure in Highrise Studio. It is analogous to HTML. You define buttons, labels, containers, and input fields here.
Unity Style Sheets, analogous to CSS. You use USS files to control the visual appearance (colors, sizes, fonts, spacing) of UXML elements.
A custom UXML element specific to Highrise Studio that connects a UXML document to a Lua UI script. It is the bridge between your markup and your code.
There are three modes for displaying UI in a Highrise World:
If you need buttons or input fields, use Above Chat or HUD. World mode is strictly for non-interactive content.
A published environment playable by Highrise users. Worlds can be games, social spaces, obstacle courses, or anything else you can imagine. Once you upload and release a World, anyone on the platform can visit it. To see the variety of Worlds already live, explore published Worlds on the sitemap.
A designated location where players appear when they enter your World. Placing spawn points thoughtfully matters for first impressions and gameplay flow.
A specific location on an object where characters can attach to perform actions like sitting, standing, or leaning. Anchor points make environments feel interactive and realistic. A bench without anchor points is just decoration. A bench with them is furniture players actually use.
NavMesh outlines walkable areas for intelligent character navigation. You generate it by adding the NavMesh Surface component to a GameObject and baking. NPCs and AI characters use NavMesh to pathfind around obstacles.
Highrise Studio supports three camera perspectives out of the box:
Different gameplay styles call for different cameras. An obby (obstacle course) typically uses third-person. A strategy game might use RTS.
Highrise Studio includes built-in real-time multiplayer testing so you can simulate multiple players without deploying your World. This is essential for testing Network Values, Events, and any multiplayer logic.
An external marketplace accessible from within Unity. You can purchase or download free 3D models, textures, animations, audio, and tools. Many creators start with Asset Store content and customize it.
An in-Studio catalog of community-made and platform-provided assets. You can browse and download 3D models, images, and audio directly without leaving the editor. For the broader Highrise item ecosystem, browse the catalog.
Bundles of assets and scripts imported into your project. The Studio Package itself is a package. You can also import third-party packages from the Unity Asset Store or create your own for reuse across projects.
A typical Highrise Studio project follows this folder layout:
Assets/
├── Scripts/
├── Prefabs/
├── Textures/
├── Materials/
├── Models/
└── Animations/
Packages/
Keeping this structure clean from the start saves significant headaches as your project grows.
Products sold inside your World that players buy with Gold. Highrise takes 10% of the revenue from IWP sales, meaning creators keep 90%. All payment logic must run on the server side.
The Lua server-side API for handling purchases. You define products, process transactions, and grant items or abilities through this API. A practical tip buried in the official documentation: you can use “goldfish” or “eel” as test product IDs to simulate purchases directly in Unity during development. This saves you from needing real transactions during testing.
A system for managing Gold programmatically within your World. You can award Gold to players for completing challenges, winning competitions, or achieving milestones.
Daily payouts to creators based on how much time HR+ subscribers spend in their Worlds. This means a well-built, engaging World generates passive income even without direct purchases.
The mechanism for cashing out Earned Gold into real currency. Creators who earn through engagement payouts and IWP can convert their Earned Gold through this program. For inspiration on earning potential, visit the Highrise shop to see the broader marketplace ecosystem.
The process has two stages:
Your World is then live and discoverable by players worldwide.
This walkthrough turns all the glossary terms above into a concrete sequence. Follow these steps to create your first sample Unity and Lua project for Highrise Studio.
Download Highrise Studio for Windows or Mac. Run the installer. Studio Hub will launch and prompt you to sign in with your Highrise account.
In Studio Hub, click New Project. Select the Basic Template. Name your project something descriptive (e.g., “MyFirstWorld”). Choose a file location and click Create Project. Unity will open with the Highrise Studio Package already configured.
Look at the Hierarchy panel. You will see default GameObjects including a camera, lighting, and a ground plane. Click on objects to see their Components in the Inspector.
In the Project panel, right-click inside the Scripts folder. Select Create > Highrise > Lua Script. Name it “HelloWorld”. Open it in VSCode (with the Studio Tools extension installed).
Add a simple script:
--!Type(Client)
function self:Start()
print("Hello from my first Highrise World!")
end
Drag the HelloWorld script from the Project panel onto a GameObject in the Hierarchy (the ground plane works fine). The script is now a Component on that object.
Press Play in Unity. Check the Console for your print message. If you see “Hello from my first Highrise World!” then everything is wired correctly.
Create a Client and Server script for something more meaningful. For example, a simple counter using Network Values:
--!Type(ClientAndServer)
local counter = IntValue.new("PlayerScore", 0)
function self:ServerStart()
counter.value = 0
end
function self:ClientStart()
counter.Changed:Connect(function(newValue)
print("Score is now: " .. tostring(newValue))
end)
end
When you are ready, click the Upload button in Unity. Then open the Creator Portal, find your World under Builds, and click Release with version 1.0.0.
Congratulations. You have a live World. To keep improving, study other creators’ work by playing existing Worlds on Highrise and join the Highrise community for feedback and collaboration.
Trying to use C#. This is the single most common mistake from Unity veterans. Highrise Studio does not support C# scripts. If you get validation warnings about MonoBehaviours in your scene, you have C# components that need to be replaced with Lua equivalents.
Running payment code on the client. All payment-related functions must run on the server side. Client-side payment calls will fail. Use server scripts exclusively for IWP logic.
Using World mode for interactive UI. World mode does not support buttons or input fields. If your buttons are not responding, check whether your UI output mode is set to Above Chat or HUD.
Assuming Studio Hub works on mobile. It does not. You need a Windows or Mac computer to build Worlds. The finished Worlds are playable on mobile, but development happens on desktop.
Forgetting the --!Type() annotation. Every Lua script needs its type declared on the first line. Without it, the runtime does not know how to execute your code.
No. Lua is the only supported scripting language. If you attach a C# MonoBehaviour to a GameObject, the Studio Package will flag it with a validation warning. All game logic, UI interaction, and server code must be written in Lua.
No. Studio Hub requires Windows or Mac. This is a common source of confusion on the Highrise Create forum. While the Worlds you create are playable on iOS, Android, macOS, Windows, and Steam, the development tools only run on desktop operating systems.
A Client script runs only on the player’s device and handles things like UI, visual effects, and local input. A Server script runs only on Highrise’s servers and handles authoritative logic like payments, game state validation, and anti-cheat. A Client and Server script runs on both sides and uses prefixed functions (ClientUpdate, ServerUpdate) to separate the logic.
Use the test product IDs “goldfish” or “eel” in your Payments API calls during development. These allow you to simulate purchase flows directly in Unity without processing real transactions.
Module scripts store shared state, constants, and utility functions that other scripts can import using require(). They act as singletons, so any variable you define in a Module script retains its value across all scripts that reference it. Use them for configuration settings, helper functions, or global game state.
If both the client and server create a Network Value with the same name, they sync automatically. When one side changes the value, the other side receives the update and fires a Changed event. You can also scope a Network Value to a specific player by passing a player parameter, so only that player sees the updates.
Game Jams are time-limited events where creators build Worlds around a theme. The Build-An-Obby Game Jam, for example, was specifically positioned as a starting point for beginner creators to learn the basics of Unity and Highrise Studio. They are one of the best ways to learn by doing, with community support and deadlines that keep you focused.
You can submit feature ideas directly through the Highrise Ideas portal. The development team reviews submissions and community votes to prioritize new scripting APIs, tools, and platform improvements.
© 2026 Pocket Worlds. All rights reserved.
Company