Welcome to the Decentraland Awesome repository!
This is a large collection of example scenes, libraries, and full tutorials meant to help you build scenes for Decentraland!
Content Index
If you can think of an example that is easy to understand and covers valuable topics that aren't covered here, you're encouraged to create a Pull Request and contribute!
If something doesn’t work, please file an issue.
Article | Thumbnail | Description |
---|---|---|
Introduction to Entities, Components & Systems | A walkthrough that starts from scratch and covers most of the main ideas to understand: Entities, Components, Systems, and more. | |
Motion & Animations - Part 1 | A walkthrough that covers animating an entity and making it move to follow a path. | |
Motion & Animations - Part 2 | Building up on the previous part, this part covers alternating animations, and responding to the player's proximity. |
For a fully comprehensive introduction, we also recommend you read the following topics from the Documentation:
See the Decentraland documentation to find more specific information about various other.
Example | Thumbnail | Description |
---|---|---|
Sliding Door | Use the Utils library to shift the position of a door gradually. Clicks on the door toggle it from open to closed. | |
Door | Use the Utils library to rotate a door gradually. Clicks on the door toggle it from open to closed. | |
Puffer | Use the Utils library to scale items and delay actions. Also include 3D models and sounds. | |
Button events | A simple example of each way in which players can use button events to interact with the scene. Each shape's color is activated by interacting with it in a special way. | |
Jukebox | Play different songs by pressing buttons on a jukebox. | |
Hypno Wheels | A first encounter with Systems, Custom Components and Component Groups. Check out the related tutorial.) | |
Shark Animation | Control animations on a 3D model. Toggle them on or off when clicking on the model. | |
Gnark Patrolling | A character walks along a fixed path, using lerp over each segment of the path. If you approach it, it will switch states to yelling at you. Check out the related tutorial. | |
Hummingbirds | A new bird spawns every time you click a tree. Each bird moves on its own to random positions. | |
Smoke | Use planes to create a particle system that simulates smoke rising. | |
Dance Floor | Combines animations, sound, and tiles on the floor that randomly change color to the beat. | |
Laser-Ray Casting | Use ray casting to trace a line in space and check for intersections. Cubes change material when hit by the laser. They also change when being pointed at by the player. | |
UV Map | A simple scene that shows a spritesheet animation of a robot talking. The different expressions of the robot are all stored in the same image. | |
Swimming in Circles | Move a shark along the segments of a curve to swim in circles. | |
Block Dog | A simple AI character that randomly chooses what action to take: follow you, sit or remain idle. Tell it to sit or stand up by clicking it, or tell it to drink water by clicking its bowl. | |
Workspaces | Use workspaces to preview multiple adjacent scenes/portable experiences at onces and see how they interact. |
Example | Thumbnail | Description |
---|---|---|
Atari Arcade Cabinets | Arcade cabinets containing variations of the classic Breakout game. | |
Avatar Swap | Swapping out the default avatar for another character model. | |
Beer Dispenser | A beer dispenser that uses P2P messaging so that you can pour beer for yourself and friends. | |
Coconut Shy | A coconut shy built using cannon.js physics engine. | |
Coin Pickup | Coins are picked up once the player walk over them. | |
Enemy Spawner | Spawning enemy spaceships from various shaped portals. | |
Grab Objects | Click an item to hold it and drop it somewhere else in the scene. | |
Grab Objects Advanced | Click an item to hold it in the air and carry it or toss it around the scene using physics. | |
Inflatable Punch Bag | An inflatable-punch-bag scene built using cannon.js physics engine. | |
Item Pickup | Various items like health packs and ammo that are picked up when players walk over them. | |
Key Binding | Using emote events as key bindings for switching between multiple paint colors, which can be expanded for something like weapon switching. | |
Light Bounce Puzzle | Reflecting a ray off of multiple objects at arbitrary angles. | |
Mirror Puzzle | A puzzle game where you reflect a beam of light to a target using a series of mirrors. | |
Moving Platforms | A simple platformer that demonstrates various platform movements using code. | |
NPC Dialog | A UI window presents texts from an NPC, allowing you to use Mouse Clicks, E and F keys to advance the conversation or answer questions. | |
Portal Puzzle | Using the new spawn feature to recreate a simple Portal clone. | |
Power Cube | Using simple planes to create a force field effect that blocks the player from reaching the access card. | |
Push Box Puzzle | Based on the classic Sokoban puzzle game where you push statues onto marked spots. | |
Random Noise Movement | Use noise generation to imitate the kind of randomness you see in nature. | |
Rocket Board | A rocket board that you can stand on and pilot. The board uses the cannon.js physics engine so you experience the momentum and inertia effects. | |
Rotating Platforms | A simple platformer that demonstrates rotating various platforms using code. | |
Shooting Range | Shoot at moving targets. Bullet holes appear in the spots where shots hit. | |
Shooting Range Advanced | Shoot at moving targets. Bullet holes appear at whatever angle the bullet strikes the target. | |
Splat Attack | Cover as much of the ground as you can with paint before calculating the area covered by it. | |
Switchboard Platforms | A platform that moves when the player stands on one of the switches. | |
Tin Can Alley | A tin-can-alley scene built using cannon.js physics engine. | |
Translocator | Example of how to create a projectile with physics and combining that with the new spawn feature to create a translocator disc. | |
Zombie Attack | A zombie will chase you around and attack you once it gets near. | |
Block Smart Wearables | Players wearing smart wearables are blocked from certain aspects of the scene, to prevent unfair advantages over others. | |
uv projector | Use UVs to map a video to multiple surfaces, constructing a single image that adjusts as the player changes their angle. | |
Bird field | Control a flock of birds so that they each take off when you walk near. They can then land back on uneven terrain. | |
Boolean Hole + Proximity Spheres | Demonstrates several objects that react to your proximity. Simulates a Boolean Hole in a wall, has objects that move over/around you, triggers to activate effects inside or outside the building. | |
Boid | Implementation of Boids. Flock behavior of fish or birds | |
NPC Tour Using A* Search Algorithm | Use A* Search algorithm to help guide the NPC. |
Example | Thumbnail | Description |
---|---|---|
Video Streaming | A video streamed from an external URL. The repo includes instructions for various alternatives for uploading the video content. | |
POAP Booth | Interact with the POAP contract to mint a POAP token when clicking on a booth. | |
Digital Bouncer | Grant admin players special abilities, including kick other players out, and displaying UI announcements. | |
Lazy Loading | Only load certain entities when the player walks into a room or region. | |
Auto Dance Areas | Make players dance in a loop when they stand in certain areas of your scene. | |
Show Management | Schedule the start of a video, then sync the timing of actions in the scene to the video | |
Green Screen | A simple scene with a green screen that can be used for photoshoots. You can change the background color too. | |
Video UV Mapping to Archways | Demonstrates how to UV map a video texture onto many many planes |
Example | Thumbnail | Description |
---|---|---|
Bouncing Balls | Kick balls around and make them bounce off each other, using the cannon.js library for physics. | |
Car + Physics | Drive a car through piles of boxes and see them tumble down, using cannon.js for physics. | |
2D Bouncing Ball | A bouncing ball using the box2d physics library to simulate physics in a 2D space. |
Example | Thumbnail | Description |
---|---|---|
Dhingia Builds | 35+ Opensource builds and assets for Decentraland by MrDhingia. | |
Indicator Arrows | Improve the conversion optimization and user flow of your build by indicating key areas with these animated GLB files by DOCTORdripp. |
Example | Thumbnail | Description |
---|---|---|
Donation Box | Request MANA donations to a wallet. | |
NFT Scanner Basic | Checks whether the player owns a token from a particular smart contract before granting them permission to enter the club. | |
DCL Access | Check for token or wearable ownership to easily control access to a scene area | |
Paid Button | Add a button that is only activated by paying a MANA sum to a specified address. | |
Paid Lever | Add a lever that only switches state by paying a MANA sum to a specified address. | |
Wearables Scanner | Fetch the list of wearables that a player currently has on. If they have something in the eyewear category, open the door for them. | |
Wearables Store | Display all wearables on sale on L2 and purchase them in-world. You can also configure it to only display certain collections. |
Example | Thumbnail | Description |
---|---|---|
Simple NFT | Display a 2D NFT in a picture frame. | |
NFT Wall | Display a collection of 2D NFTs in picture frames, these swap every few seconds, taking data from a JSON file. |
Example | Thumbnail | Description |
---|---|---|
MANA Burning | Interact with the MANA contract to burn MANA fees collected over time by the Market place in a ceremonious way. | |
Mint Pixelchain NFT | Paint a mural made from 32 x 32 pixels. You can then mint the image as a PixelChain NFT. |
Example | Thumbnail | Description |
---|---|---|
Party Time | Hit a world clock API to check the time, start a party if it's after 9PM. | |
DCL Trams | Hit a world clock API to sync the position of a tram line, so all players see them on the same location. Each tram does a full loop every 3 minutes, basing its position on every frame relative to the time. | |
Events API | Query the Decentraland Events API for any events that are currently active to display their info. If more than one, flip through them on the display. | |
Weather Simulation | Check a weather API, then represent the weather conditions, whatever they are. |
Example | Thumbnail | Description |
---|---|---|
Validate Player Authenticity | Hit a server that validates that the player really is in Decentraland, in a specific parcel, with a recent time-stamp, and signed a message cryptographically with their ephemeral key. |
Example | Thumbnail | Description |
---|---|---|
Block Fountain | The cubes in this fountain have several animations that each set can play. When a player pushes a button, all players see the same animation. | |
Clap Meter | A meter that goes up based on the number of claps from players applauding in the scene. | |
Piano Floor | Play the keys of this piano by stepping on them. All players will hear the notes that are played. |
Example | Thumbnail | Description |
---|---|---|
Leader Board | Upload player's final scores to a server, the best ones are displayed for all to see on a board. | |
Guest Book API | Players that sign this guest-book upload their user name and address to the server. All signatures are fetched when opening the book. | |
Pixel Mural | Create 2D pixel art by painting tiles. Players are synced through both the messagebus and a DB in a server. | |
3D Voxel Art Creator | Create 3D voxel art by placing cubes in place. Players are synced through both the messagebus and a DB in a server. | |
Zenquencer | Create musical patterns that are played in sequence. Players are synced through both the messagebus and a DB in a server. |
Example | Thumbnail | Description |
---|---|---|
Broadcast Server | (server code only) | A basic server that broadcasts all messages it receives to all other players in a room. |
Color Switch | A minimal scene where clicking on cubes changes their color. The broadcast server syncs these changes to all other players in the same realm. | |
Bouncing Balls | Each player runs physics client side. Websockets sends information about new forces applied to the entities. The broadcast server syncs these changes to all other players in the same realm. | |
Frisbee Throwing | Each player runs physics client side. Websockets sends information about the throwing of the frisbee. The frisbee is hidden when picked up by a player. | |
Basketball | Each player runs physics client side. Websockets sends information about the throwing of the ball. The ball is hidden when picked up by a player. | |
Discord Chat | Display messages being posted to Decentraland discord server in real time inside the world |
Example | Thumbnail | Description |
---|---|---|
Cube Jumper | A basic server that broadcasts all messages it receives to all other players in a room. | |
Land Flipper Game | A team game for 2 players or more, where tiles switch colors when walked on. The server keeps track of the game's state, and has the final word about when the game ends and who won. | |
Space Traitor | A game of deceit and secret identities. One player is randomly assigned as the trator, that will work against the others to sabotage the space ship. | |
OSC Relay | Listen to OSC messages from any source, relay them to affect Decentraland scenes in real time via a Colyseus server. |
Example | Thumbnail | Description |
---|---|---|
Crypto Valley Conference Center | A fully equipeped venue ready for live events, with video streaming and POAP dispenser. | |
White Rabbit Night Club | A 24/7 nightclub, with lights and smoke effects, arcade machines, and much more. | |
Default Museum | A simple generic museum to display NFT art and a few common additional features. | |
Default Wearables Store | A simple generic store to sell wearables, with a few common additional features. | |
Genesis Plaza | The full code used in Genesis Plaza (0,0), including all the interactive elements found there. | |
Soho Plaza | The full code used in Soho Plaza (-75,0), including all the interactive elements found there. | |
Escape Room Tutorial | An escape room full of puzzles to solve. A video tutorial series covers how to make it, starting from the essentials. | |
Castaway 2048 | A puzzle game based on 2048, where you merge similar gems into valuable ones, till you reach the value of 2048. | |
DecentRally | A racing game that shows what the Infinity Engine code can do. | |
MVMF 2022 Main Stage | Assets and code used for the Metaverse Music Festival (MVMF) 2022 Main Stage Scene | |
MVMF 2022 Tower of Babel | Assets and code used for the Metaverse Music Festival (MVMF) 2022 Tower of Babel Scene | |
Snowball Arena | Multiplayer Snowball Fight Arena |
Example | Thumbnail | Description |
---|---|---|
Checkers Module | Two player game of checkers, with fully outlined peer-to-peer networking. | |
NFT Gallery Module | Provides easy-to-use interfaces to generate NFT (2D and 3D) displays. By simply editing the JSON files a user can quickly add displays to their scene. | |
Parkour Creation Kit | Provides all the tools need to create your own parkour stadium. Includes: multiple platform types, collectibles, traps, checkpoint/respawn mechanics. | |
Card Game Creation Kit | Provides all the utilities required to create card games in Decentraland. Also comes pre-packed with several card games that act as functional examples! |
You can access the code submitted by previous game jam competitions, for those scenes that creators chose to make open source.
Note that each library is only compatible with either SDK 6 or SDK 7, use libraries that match the version of the Decentraland project you're working on.
Article | Description |
---|---|
SDK Utils | A very handy collection of common tasks made simple. Gradually move, rotate or scale over time. Add trigger areas, delay an action, run an event periodically, and more!. Replaces SDK6 ECS Utils |
NPC Toolkit | A collection of tools for creating Non-Player-Characters (NPCs). These are capable of having conversations with the player, and play different animations. Replaces SDK6 NPC Utils |
UI Toolkit | A collection of tools for common UI requirements for Decentraland scenes. Replaces SDK6 UI Utils |
Article | Description |
---|---|
ECS Utils | A very handy collection of common tasks made simple. Gradually move, rotate or scale over time. Add trigger areas, delay an action, run an event periodically, and more!. Migrating to SDK7, see SDK Utils |
UI Utils | UI Prefab components and functions for common game UI elements. Show health-bars, labels, counters, icons, prompt windows, NPC dialogs |
NPC Utils | Tools to easily create non-player characters (NPCs) that you can have a conversation with. They can ask quesions, play animations, turn around to always face the player, etc. Migrating to SDK7, see UI Toolkit Migrating to SDK7, see NPC Toolkit |
Crypto Utils | Several functions to allow you to easily carry out operations with MANA, other currencies, NFTs, the Marketplace, sign messages or anything that involves smart contracts. |
L2 Utils | Several functions to allow you to easily carry out operations with MANA in a Layer 2 Ethereum network, with significantly reduced gas fees and transaction delays. |
DCL Access Area | Several functions to easily controll player acccess to an area in the scene, based on ownership of tokens, wearables or allowlist of player IDs. |
Authentication Middleware | To use on servers that interact with Decentraland scenes, to validate that a request truly comes from a real player that is in fact in Decentraland. |
Scene Object Model (SOM) | A Scene Object Model (SOM) file lists all of the GLTF or GLB models to load into a Decentraland scene. This module contains a SceneObject data structure used to define the models and their positioning in the world, and a ModelLoader class that handles the loading and positioning at runtime. |
Noise Utils | Tools for generating semi-random noise based on the Perlin and Simplex algorithms. These generate random sequences of values similar to the kind of randomness seen in nature. |
DCLDash | A suite of entities, debug utilities and helper functions that will speed up your decentraland SDK development. |
Show Management | A set of tools for managing the playing of videos and video playlists, together with synchronized events in the scnene like animations. It reads subtitle-like instructions with time-stamps to match timing with the video. |
Note: To update these libraries from versions older than February 9th 2021, see the migration guide
Find a full playlist of all Decentraland video tutorials here:
This series of 5 minute videos covers a number of essential concepts, game mechanics and coding best practices. They take you through the whole process of building a full escape room game.
Tip: The videos are presented in the above link together with written accompanying content, including all the code in case you want to copy and paste parts of it.
The full code from the tutorial is available in this repository.
Article | Description |
---|---|
Servers - Part 1 | Send requests to an API to fetch data. |
Servers - Part 2 | Launch your own server on Firebase to handle HTTP requests from your scene and store data in a DB. |
Servers - Part 3 | Build a WebSockets server to handle real-time updates. |
Article | Description |
---|---|
Creating Genesis Plaza - Part 1 | Tips and tricks that went into the creation of Genesis Plaza, regarding best practices and optimization. |
Creating Genesis Plaza - Part 2 | Guidance about several features that were first introduced with Genesis Plaza, like video and audio streaming, teleports, external links, etc. |
Creating Salmonomicon | Tips and tricks that went into the creation of Salmonomicon (-50,0). Mostly related to UI and ray casting. |
Article | Description |
---|---|
Using the UI | A walkthrough by Surz about how to create a UI for your scene. |
Picking & Moving Objects | A walkthrough by Interweaver about how to pick up objects and place them in position, snapping to a grid. |
Sprite Animations | A walkthrough by Brent Greyling about creating an animated fireplace using 2D sprite images. |
Using the Blockchain - Part 1 | Part 1 in a series by Baus that goes from scene building essentials to using smart contracts. |
Using the Blockchain - Part 2 | Part 2 in a series by Baus that goes from scene building essentials to using smart contracts. |
Using the Blockchain - Part 3 | Part 3 in a series by Baus that goes from scene building essentials to using smart contracts. |
Using the Blockchain - Part 4 | Part 4 in a series by Baus that goes from scene building essentials to using smart contracts. |
Placing Art NFTs | A walkthrough by Holodot about how to place NFT 2D art in a scene. |
Video | Description |
---|---|
Add a collider | Add a collider to an existing 3D model, to prevent players from walking through it. |
Add predefined animations | Download a freely licenced 3D model and apply free animations that you can download from Mixamo to it. |
Create animations in Blender | Download a freely licenced 3D model, import it into Blender and then create an armature to manually create your own animations for it. |
Video | Description |
---|---|
Auto Deploy With Git Actions | How to use git actions to deploy a scene from a branch. Code Here |
All of these scenes are open source, protected with a standard Apache 2 licence. This licence states that this content can be used freely, even commercially, as long as you acknowledge the author. See the terms and conditions in the LICENSE file.