Asset Types

Grids supports multiple asset types that can be uploaded to the marketplace, acquired by players, and used in the game world.

Supported Types

TypeExtensionsDescription
Texture.png, .jpg, .jpeg, .webp, .tga2D images used for block faces, decals, and materials
Audio.wav, .ogg, .mp3, .flacSound effects, music, ambient audio
Video.mp4, .webmVideo textures for display blocks and cinematics
Model.gltf, .glb, .fbx, .obj3D models imported as static meshes
Script.luaGameplay scripts for custom block behavior

Asset Lifecycle

1. Upload

Creators upload assets through the web marketplace or via the API. Each upload includes:

2. Marketplace

Published assets appear in the marketplace where other players can browse, search, and acquire them. Assets are stored in Cloudflare R2.

3. Library

When a player acquires an asset, it's added to their personal library. The library is synced to the game client via the API.

4. In-Game Usage

In the game, pressing Tab opens the Asset Browser overlay which displays the player's library. Clicking an asset spawns it in the world (e.g., applying a texture to a block, placing a model, attaching a sound).

Texturing Blocks

Texture assets can be applied to placed blocks per face. Blocks are built from one procedural mesh section per face, so each face can carry its own texture, color tint, and material effect independently.

Suggested effect

When uploading a texture, creators can pick a suggested effect — a default material look that the in-game build editor applies the first time a player uses the texture:

EffectLook
NoneFlat, default-lit
GlowSubtle emissive
NeonBright emissive
MetalMetallic, glossy
MatteFully rough

The suggested effect is stored in the asset's metadata as { "suggested_effect": "neon" }. It is only a starting point — players can change the effect, tint, and target face in-game from the Edit Object panel.

Editing placed blocks

Right-clicking a placed block (while Alt is held) opens a context menu with an Edit action that opens the per-face editor. See Editing Placed Objects for the full flow. Face overrides are persisted server-side in the zone_block_faces table and restored on zone-server startup.

Thumbnails

Each asset can have a thumbnail image for display in the marketplace and asset browser. If no thumbnail is provided, a placeholder icon is shown based on the asset type:

TypePlaceholder
Texture🖼️
Audio🔊
Video🎬
Model🧊
Script📜

Asset Protection

Assets are protected during delivery using:

  1. HMAC-Signed URLs — Download URLs expire after a configured TTL and are signed with HMAC-SHA256
  2. XOR Scrambling — Asset data is XOR-scrambled during transfer to prevent casual interception
  3. Sandboxed Rendering — Overlay scripts run in CEF's sandboxed environment without direct filesystem access