Welcome to Worlds 101

This is a simple, step‑by‑step path designed by MHCP Mentors to help you build and publish your first world.

We’ll keep things practical and short. Follow the steps below and you’ll be creating, testing, and sharing your world in no time.

This guide links to the official Meta documentation—open those docs to complete each step, then come back here to continue the path.

We’ll guide you through each step—
let’s get started.

Tools & Account

Read System Requirements

Let's get started by verifying you have the right environment to start developing and testing your World. Check these hardware requirements:

Download Worlds Desktop Editor

Now let's install the applications that you will use during your world creation:

Create a Meta Account

You've successfully set up your world creation environment! Great job! Let's log in and create an avatar to start you on your world creation journey:

World & Assets

Create New World

You’re ready to start building in the metaverse! Every masterpiece starts as a blank canvas. In Meta Horizon, you start on a blank world! Open the Worlds Desktop Editor and log in with your new account. Then, create a new world:

or

Move Around the World

Pretty simple, right? Let's explore the blank world for a moment:

and

Generate a 3D Model

You're making great progress jumping into this new territory! Let's give it a personal touch by creating your world's very first 3D model:

Generate an Environment

Nice work! Let’s give the world some areas to explore:

Generate Ambient Audio

So much room for activities! Let’s set the mood by adding generated looping background audio:

Generate a Skybox

You have great taste! Let's explore that creativity even further! We'll add the sky in your world by generating a skybox:

Add Lighting

Looking good! Try adding some custom lights to make your world feel more alive.

Publish Your First World

You may not realize this yet, but you are officially a World Creator! It's time to share your awesome progress by publishing a public version of your world, making it possible for others to visit your world:

Open on Mobile

Now you can tell your friends to look up your world name on the Meta Horizon app on their mobile device! You can find a shareable link by finding your world on the Creator Tools website, too:

Code & Systems

Create a Script

It's time to level up with some simple scripting! We'll be creating a simple respawn script. Let's start here:

Create Custom Properties

Excellent work! Now let's enhance the script by adding a custom property:

Place a Trigger Gizmo

You're getting the hang of this! Time to bring in the trigger gizmo:

Attaching the Script to the Trigger

Get ready for the best part! Let's put it all together:

Create Entity

If you've made it this far, then you REALLY want to step your world creation skills up! Let's learn about creating empty objects:

Adding Children

Very nice! Empty objects really shine when you add child objects to them. Let's turn this empty object into a ball:

Enable Grab and Physics

How about we turn on some fun interactivity? Let's make this entity grabbable and physics-enabled:

Modifying Grab Settings

The fun is just getting started! Try changing some other settings on the entity:

Debugging

You're glowing from all of the skills you've gained! It's time to sharpen your tools by learning about debugging:

console.log("Hello World")

Apply Custom Player Velocity

You should be very proud of your progress! For doing such a great job, let's have some more fun! How about we launch your avatar into the air?

player.velocity.set(Vec3.up.mul(500))

Create Local Script

What'd you think of that last section? Pretty wild stuff, huh? Now we are going to turn the difficulty up a bit. Let’s get ready to implement custom player controls. First, we need to create a Local Script. Let’s set one up now:

Create Custom Player Control

You've got this! Custom player controls can only be added to local scripts. So let’s implement it into our new script:

this.entity.as(GrabbableEntity).forceHold(this.entity.owner.get(), Handedness.Right, true)

Tagging objects

Do you feel like you’re Thor calling back your hammer? Let’s start turning interaction into a game mechanic:

Create UI

You're leveling up like a champ! Let’s set up your player user interface so you can keep score:

Create UI Binding

You’re doing great! Let’s set the UI up to show player score:

Use Player Persistence

You're getting the hang of this! Let’s persist the score you already show in your UI so players keep progress between visits:

Create a Quest

Now that you are a programmer, it’s time to become a Pro Gamer! Let’s create a score milestone quest that uses your existing PPV and leaderboard:

Create Custom Events

You're nailing these concepts! Let’s update the Object Trigger script to broadcast an event other systems can listen to:

Activate Special Effects

Time to juice up the world! You can make the world come alive with audio and visual effects:

Using Timers

Feels pretty magical, right? Let’s make the score reset after a few seconds:

export const gameData = { score: 0 }
this.async.setTimeout(() => { /*Add Reset Logic Here*/ }, 3000);

Republish Your World

Amazing job! Ship your latest changes so others can try them:

🎉 Congratulations!

You've completed the learning path!

What’s next

Keep building amazing Worlds! 🌟

Progress: 0/30 steps