Skip to content

Getting Started

Welcome to Rawframe — a game creation platform where you build complete games in Places, publish them on your own servers, or export them as standalone titles. Built from scratch in C++20.


Install Rawframe

  1. Head to the Download page and grab the latest release for your platform (Windows, Linux, or macOS). Rawframe is free to download and play.
  2. Extract the archive to a folder of your choice.
  3. Run rawframe_client to launch the client.

That's it — no installer needed. The engine ships as a portable binary with all dependencies bundled.

System Requirements

Component Minimum Recommended
OS Windows 10 / Ubuntu 20.04 / macOS 12 Windows 11 / Ubuntu 22.04 / macOS 14
CPU Dual-core 2.0 GHz Quad-core 3.0 GHz
RAM 4 GB 8 GB
GPU Vulkan 1.1 / Metal / DX11 Vulkan 1.3 / Metal 3
Storage 500 MB 1 GB

Rawframe also supports Android (GLES 3.0+) and iOS (Metal, A12+).


Join a Server

Every Rawframe game runs on a community-hosted server — pick one and jump in.

  1. Launch rawframe_client.
  2. The server browser shows LAN servers automatically. Internet servers appear via the master server list.
  3. Click a server to connect, or use the console: connect 1.2.3.4:27015.

You can also connect directly from the command line:

./rawframe_client -connect 192.168.1.100:27015

Create Your First Game

A Rawframe game lives in a Place — a self-contained project of Luau scripts, content, and configuration. Let's create a simple "Hello World" game.

Step 1: Create the project folder

hello_world/
  place.json
  scripts/
    shared/
      init.lua

Step 2: Write the manifest

Create hello_world/place.json:

{
    "name": "hello_world",
    "version": "1.0.0",
    "description": "My first Rawframe game",
    "author": "YourName",
    "assets": [],
    "scripts": {
        "server": [],
        "client": [],
        "shared": ["scripts/shared/init.lua"]
    }
}

Step 3: Write a script

Create hello_world/scripts/shared/init.lua:

rawframe.log("Hello from my first game!")

-- Spawn a cube and make it orbit
local cube = entity.create("HelloCube")
entity.set_position(cube, 0, 5, 0)
entity.set_mesh(cube, "cube")

local time = 0
hook.Add("Think", "hello_orbit", function(dt)
    time = time + dt
    local x = math.cos(time) * 5
    local z = math.sin(time) * 5
    entity.set_position(cube, x, 5, z)
end)

Step 4: Run it

Launch the server with your game, then connect with the client:

./rawframe_server -game hello_world
./rawframe_client

You should see "Hello from my first game!" in the console log, and a cube orbiting in 3D space.

Using the scaffold tool

For convenience, Rawframe ships with a project scaffold tool:

bash tools/create_game.sh my_awesome_game "Your Name"

This creates the full directory structure, a pre-filled place.json, and starter scripts. You can also create and manage Places visually in Rawframe Studio.


Next Steps