May 18, 2026

Sample Unity and Lua Project for Highrise Studio: Guide 2026

sample unity and lua project for highrise studio

TL;DR

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.


Why This Glossary Exists

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.


Platform and Environment Terms

Highrise Studio

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.

Studio Hub

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.

Studio Package

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.

Studio Tools (VSCode Extension)

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.

Creator Portal

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.


Unity Concepts in the Highrise Context

These terms come directly from Unity, but their behavior in Highrise Studio sometimes differs from standard Unity development.

Project and Project Template

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.

Scene

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.

GameObject

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.

Component

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.

Prefab

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.

Transform

Every GameObject has a Transform component by default. It stores position, rotation, and scale. In Lua, you access it through self.transform.

Inspector

The Unity panel on the right side of the editor where you view and edit a selected GameObject’s properties and components.

Hierarchy

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.

Project Panel

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.

Console

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.


Lua Scripting Terms

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.

Lua

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.

Lua Script Creation

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.

LuaBehaviour

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.

Script Types

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

Client Script

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.

Server Script

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.

Client and Server Script

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.

Module Script

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.

UI Script

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.

–!Type() Declaration

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).

–!Bind

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.

Lifecycle Functions

The core event functions that drive your script’s behavior over time:

  • Awake — Called once when the script instance loads
  • Start — Called once before the first frame update
  • Update — Called every frame
  • FixedUpdate — Called at a fixed time interval (used for physics)

In Client and Server scripts, prefix these with Client or Server to control which side runs them.

Events (Client-Server Communication)

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.

Network Values

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.


UI Terms

UXML

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.

USS

Unity Style Sheets, analogous to CSS. You use USS files to control the visual appearance (colors, sizes, fonts, spacing) of UXML elements.

UILuaView

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.

UI Output Modes

There are three modes for displaying UI in a Highrise World:

  • World — Renders UI in 3D space. Does not support buttons or input fields. Use it for signs, labels, or non-interactive displays.
  • Above Chat — Appears above the chat interface. Supports interactive elements.
  • HUD — Overlays the entire screen. Supports interactive elements. Best for menus, health bars, and game controls.

If you need buttons or input fields, use Above Chat or HUD. World mode is strictly for non-interactive content.


World-Building and Gameplay Terms

World

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.

Spawn Point

A designated location where players appear when they enter your World. Placing spawn points thoughtfully matters for first impressions and gameplay flow.

Anchor Point

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 and NavMesh Surface

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.

Camera Views

Highrise Studio supports three camera perspectives out of the box:

  • First-person — The player sees through their character’s eyes
  • Third-person — The camera follows the character from behind
  • RTS — A bird’s-eye view looking down at the scene

Different gameplay styles call for different cameras. An obby (obstacle course) typically uses third-person. A strategy game might use RTS.

Multiplayer Testing

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.


Asset and Resource Terms

Unity Asset Store

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.

Highrise Assets Catalog

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.

Packages

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.

Project Structure

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.


Monetization and Publishing Terms

In-World Purchases (IWP)

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.

Payments API

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.

World Wallet

A system for managing Gold programmatically within your World. You can award Gold to players for completing challenges, winning competitions, or achieving milestones.

Engagement Payouts

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.

Creator Exchange

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.

Publishing Workflow

The process has two stages:

  1. Upload — Click the Upload button in Unity to push your build to Highrise servers. Give your World a name.
  2. Release — Go to the Creator Portal, find your uploaded World, navigate to Builds, click Release, and assign a version number (e.g., 1.0.0).

Your World is then live and discoverable by players worldwide.


Sample Project Quick-Start: From Zero to Published World

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.

Step 1: Install Studio Hub

Download Highrise Studio for Windows or Mac. Run the installer. Studio Hub will launch and prompt you to sign in with your Highrise account.

Step 2: Create a New Project

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.

Step 3: Explore the Scene

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.

Step 4: Create Your First Lua Script

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

Step 5: Attach the Script to a GameObject

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.

Step 6: Test Your World

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.

Step 7: Add Interactivity

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

Step 8: Upload and Publish

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.


Common Beginner Mistakes

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.


Frequently Asked Questions

Can I use C# in Highrise Studio?

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.

Does Highrise Studio work on mobile devices?

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.

What is the difference between a Client script and a Server script?

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.

How do I test In-World Purchases without spending real Gold?

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.

What is a Module script used for?

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.

How do Network Values sync between client and server?

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.

What are Game Jams and are they good for beginners?

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.

Where can I suggest new features for Highrise Studio?

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.