scene-runtime

Implements Decentraland SDK7 runtime APIs for async tasks, networking, timers, and restricted actions.

1|Updated Apr 4, 2026
One-click install
npx skills add https://github.com/stom66/dcl-bowling --skill scene-runtime-stom66
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: scene-runtime
Source: https://github.com/stom66/dcl-bowling/tree/main/agent/skills/scene-runtime
Command: npx skills add https://github.com/stom66/dcl-bowling --skill scene-runtime-stom66

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve? Decentraland SDK7 scenes run in a single-threaded QuickJS sandbox where bare promises are dropped, native timers are unsafe, and many APIs require signed identity or prior player interaction. This Skill provides verified guidance for using the scene runtime correctly. ## Core Features & Use Cases - Async & Networking: Wrap async work in executeTask, call public APIs with fetch, authenticate backend requests with signedFetch, and open WebSocket connections. - Runtime Metadata & Timing: Read scene, realm, and explorer information, detect preview mode, use engine-bound timers, and track frame state via the EngineInfo component including sceneHidden detection. - Restricted Actions & Portability: Move or teleport players, trigger emotes, open external URLs and explorer panels, and spawn portable experiences with correct scene.json feature toggles. - Use Case: When building a scene that fetches leaderboard data from your server, pauses gameplay while the map UI is open, and teleports players on win conditions, this Skill supplies the exact API calls, priority rules, and pitfalls. ## Quick Start Ask the assistant to show how to make a signed HTTP request to your backend and pause scene systems while the explorer map is open in a Decentraland SDK7 scene.

Frequently Asked Questions about scene-runtime

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make an authenticated HTTP request from a Decentraland scene?▼

Use signedFetch from ~system/SignedFetch to prove player identity to your backend. It returns body as a string, so call JSON.parse yourself, and your server verifies the signed headers per ADR-44.

How do I run async code in a Decentraland SDK7 scene?▼

Wrap async work in executeTask from @dcl/sdk/ecs, because bare promises are silently dropped in the single-threaded scene runtime. Inside the task you can await fetch, signedFetch, or runtime module calls normally.

Can I use setTimeout and setInterval in Decentraland scenes?▼

Use the engine-bound timers object from @dcl/sdk/ecs instead of native globals. Native setTimeout exists in the QuickJS runtime but is not bound to the scene engine and can cause subtle timing problems.

Why does my custom emote work in preview but fail in production?▼

triggerSceneEmote requires the file name to end with _emote.glb, case-insensitive. Files without this suffix often work in preview but silently fail once deployed, so rename the file on disk.

How do I detect when the Decentraland loading screen finishes?▼

Read the EngineInfo component on engine.RootEntity and watch sceneHidden flip from true to false. This is the only reliable signal that the player first sees the scene, unlike timer or frame-count guesses.

How does system priority ordering work in Decentraland SDK7?▼

Higher priority numbers run earlier in the frame, opposite of Unity conventions. The default priority is 100000, so pass a larger number to run before regular systems or a smaller one to run after.