Core Concepts

Terrains & Plots

Everything in SLAAAD is built on a simple spatial primitive: The Headless Grid. Understanding Terrains and Plots is fundamental to building on our platform.

What is a Terrain?

A Terrain is a project-bound container that defines a specific grid environment. It acts as the canvas where your users will acquire and occupy space.

Configurable Dimensions

Define your grid with precision (e.g., 10x20, 50x50, or a single row strip).

Access Control

Control who can buy plots and what the pricing strategy is for each terrain.

What is a Plot?

A Plot is an individual cell within a Terrain. It represents a single unit of ownership and occupancy.

Anatomy of a Plot

row

The vertical index (0-indexed).

col

The horizontal index (0-indexed).

status

The current availability (e.g., OCCUPIED).

Coordinate System

SLAAAD uses a 0-indexed coordinate system. The origin (0, 0) is located at the top-left corner of the terrain.

0, 0
0, 1
0, 2
0, 3
1, 0
(1, 1)
1, 2
1, 3
2, 0
2, 1
2, 2
2, 3

Occupancy Modes

Each Terrain operates in one of two Occupancy Modes, defined by the occupancyType field. This determines how plots are acquired and how pricing is calculated.

SPACE

Space-Based Occupancy (Default)

The classic model. Each plot is a persistent spatial cell. A participant acquires a plot outright, and ownership is maintained until the protection period expires or the plot is taken over. Pricing is fixed per plot based on minOfferPrice.

// Space mode — fixed price per plot
price = terrain.minOfferPrice
TIME

Time-Dependent Occupancy

Designed for rotating inventory — digital billboards, in-game ad slots, or any surface where occupancy is measured in time blocks (Pulses) rather than persistent space. A participant bids on a specific time range (slotStartTimeslotEndTime). The platform divides this range into discrete Pulses and calculates the price accordingly.

// Time mode — pulse-based pricing
numPulses = ceil( duration_ms / (unitCellDuration × 60000) )
price = minOfferPrice × numPulses + minBidIncrement

unitCellDuration

Duration of one Pulse in minutes (default: 7 min)

rotationCycleDays

How many days before the full rotation cycle resets

minBidIncrement

Minimum increment added on top of the pulse sum

slotStartTime / slotEndTime

The requested occupancy window sent in the API call

FeatureSPACETIME
Pricing unitPer plot (flat)Per pulse × duration
slotStartTime requiredNoYes
Supports overlapping bidsNoYes (per time range)
Protection periodDays (configurable)Pulse-based rotation
Typical use caseVirtual land, ad gridsDigital billboards, ad slots

Headless Advantage

"By decoupling the grid logic from the UI, SLAAAD allows you to render these plots however you like—as 2D sprites, 3D voxels, or even simple list items."

Last updated: April 2026