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
| Type | Extensions | Description |
|---|---|---|
| Texture | .png, .jpg, .jpeg, .webp, .tga | 2D images used for block faces, decals, and materials |
| Audio | .wav, .ogg, .mp3, .flac | Sound effects, music, ambient audio |
| Video | .mp4, .webm | Video textures for display blocks and cinematics |
| Model | .gltf, .glb, .fbx, .obj | 3D models imported as static meshes |
| Script | .lua | Gameplay scripts for custom block behavior |
Asset Lifecycle
1. Upload
Creators upload assets through the web marketplace or via the API. Each upload includes:
- The asset file
- Display name and description
- Optional thumbnail image
- Asset type classification
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).
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:
| Type | Placeholder |
|---|---|
| Texture | 🖼️ |
| Audio | 🔊 |
| Video | 🎬 |
| Model | 🧊 |
| Script | 📜 |
Asset Protection
Assets are protected during delivery using:
- HMAC-Signed URLs — Download URLs expire after a configured TTL and are signed with HMAC-SHA256
- XOR Scrambling — Asset data is XOR-scrambled during transfer to prevent casual interception
- Sandboxed Rendering — Overlay scripts run in CEF's sandboxed environment without direct filesystem access