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.
Let's get started by verifying you have the right environment to start developing and testing your World. Check these hardware requirements:
Now let's install the applications that you will use during your world creation:
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:
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:
Pretty simple, right? Let's explore the blank world for a moment:
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:
Nice work! Let’s give the world some areas to explore:
So much room for activities! Let’s set the mood by adding generated looping background audio:
You have great taste! Let's explore that creativity even further! We'll add the sky in your world by generating a skybox:
Looking good! Try adding some custom lights to make your world feel more alive.
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:
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:
It's time to level up with some simple scripting! We'll be creating a simple respawn script. Let's start here:
Excellent work! Now let's enhance the script by adding a custom property:
You're getting the hang of this! Time to bring in the trigger gizmo:
Get ready for the best part! Let's put it all together:
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:
Very nice! Empty objects really shine when you add child objects to them. Let's turn this empty object into a ball:
How about we turn on some fun interactivity? Let's make this entity grabbable and physics-enabled:
The fun is just getting started! Try changing some other settings on the entity:
You're glowing from all of the skills you've gained! It's time to sharpen your tools by learning about debugging:
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?
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:
You've got this! Custom player controls can only be added to local scripts. So let’s implement it into our new script:
Do you feel like you’re Thor calling back your hammer? Let’s start turning interaction into a game mechanic:
You're leveling up like a champ! Let’s set up your player user interface so you can keep score:
You’re doing great! Let’s set the UI up to show player score:
You're getting the hang of this! Let’s persist the score you already show in your UI so players keep progress between visits:
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:
You're nailing these concepts! Let’s update the Object Trigger script to broadcast an event other systems can listen to:
maxScore
variablemaxScore
Time to juice up the world! You can make the world come alive with audio and visual effects:
sfx
and vfx
propertiessfx
propertyvfx
propertyFeels pretty magical, right? Let’s make the score reset after a few seconds:
score
variable with gameData.score
gameData.score
Amazing job! Ship your latest changes so others can try them:
Keep building amazing Worlds! 🌟