🎥On-Demand Videos: Mobile Game Design from Andy Sargent - Meta Game Developer
In this series of videos by Andy Sargent, Game Developer and Community Manager in Unit 2 Games at Meta, explore how mechanics, loops, and progression combine to create fulfilling and social worlds that players will love. Session 1 - Mobile Mechanics Explore how mechanics are a fundamental building block for virtual worlds. Mechanics empower players to interact with the world, and each other. You can think of these as player actions second-to-second. Session 2 - Core Loops Investigate core loops, which build on top of our understanding of mechanics. They are a combination of mechanics that support a repeated sequence of player actions in the world. You can think of these as player actions minute-to-minute. Session 3 - Retention Look at ways to encourage players to come back to our worlds using retention mechanics. You can think of these as player actions day-to-day.195Views5likes0Comments🎮 New World Planning Form On-Demand Workshop with 5andw1ch and wafflecopters
Kick off your next project with a fresh approach to world design! This on-demand workshop introduces the new World Planning Form, a powerful tool to help you tackle early-stage design challenges and set up your creations for success. In this video, 5andw1ch and wafflecopters guide you through structured pre-production techniques to strengthen your development process: 🏁 Set clear and actionable goals 📓 Improve your design from the start 📊 Manage problems and risk Open to All Skill Levels This workshop is designed for creators of all skill levels—whether you’re building your first world or refining a top-performing one, there’s something here for everyone. Watch the video now below, and download the World Planning Form attached to this post to start planning your next world with confidence!274Views3likes0CommentsMobile Players Control and Focused Interaction Workshop
Hi... For people who attended the workshop, this is the thread in which you should request access to the world (with your horizon username) after you have done your survey. Survey: https://meta-horizon-creators.com/3RaAWrb Also: some links Custom Input API Overview https://developers.meta.com/horizon-worlds/learn/documentation/create-for-web-and-mobile/typescript-apis-for-mobile/custom-input-api Button Icon Reference https://developers.meta.com/horizon-worlds/learn/documentation/create-for-web-and-mobile/grabbable-entities/action-buttons/ Focused Interaction API Overview https://developers.meta.com/horizon-worlds/learn/documentation/create-for-web-and-mobile/typescript-apis-for-mobile/focused-interaction624Views6likes5CommentsHelp! My world is laggy and jittery! Using Real-Time Performance Metrics to understand your world.
So, you've built a great world, and gotten all the meshes and interactions implemented to make it engaging for your players, but when you go in to play test it, the framerate is awful, and actions sometimes stutter when you try to initiate some scripted interaction. You've probably overextended the runtime in some way and are going to have to 'performance optimize' your world. The first step is going to be to get some _concrete_ measurements as to what is wrong, and the best way to do that is to use the in-world performance panel tools. In VR, you can bring this up by first enabling the Utilities menu in Settings, and then selecting "Real-time Metrics' from your wrist menu. On Web (but not desktop or mobile), you can bring up the same metrics under the viewport by pressing P. Once you have the panel up, there are a variety of metrics to configure. The most important is FPS, which you want to maintain above 70 at all times (60 for web). But to do so, you will need to look at a variety of other stats to see what things are straying 'out of bounds' and need to be addressed. What to optimize: Draw calls You have too many discrete meshes and textures in view at one time. Reduce/combine them. GPU Too much work is being done by the GPU to draw the scene due to too complex modules, particles, or high rez textures. Physics Too many collisions to process, including from both active physics objects, anything collidable, and triggers. Scripting The code being executed in typescript is taking too long, perhaps due to inefficient algorithms or too many bridge calls. Custom ui bindings If there are too many binding updates per second, or the bindings are too complex, it can cause UI updates to freeze There are a number of other metrics to look at, which are described in detail in the below docs. Overview of Real Time metrics https://developers.meta.com/horizon-worlds/learn/documentation/performance-best-practices-and-tooling/performance-tools/enabling-and-modifying-the-realtime-metrics-panel Real Time Metrics on web/mobile https://developers.meta.com/horizon-worlds/learn/documentation/performance-best-practices-and-tooling/performance-tools/using-performance-tools-from-web-and-mobile Happy performance tuning!240Views5likes0CommentsFeature Spotlight: Focused Interaction
Have you ever wanted to know what exactly your web and mobile users are pointing at on screen? You can't get their real life hand positions like you can with VR players. That’s where Focused Interaction mode comes to the rescue. What is Focused Interaction? With Focused Interaction, you can turn the mobile or desktop view screen into a 'touch sensitive surface' that you can read from your game code! You can find out the x/y position on screen where they have pressed, and even get 'swipe' information as they drag their finger across the screen (or mouse across the window in desktop), to wherever they release. Additionally, you also get a point in 3D world space and a vector direction that you can use to find out what might be under their finger/cursor in the 3D world. Important Limitation: When in Focused Interaction, the player loses some ability to 'move around', as their screen clicks and drags are no longer being interpreted as turning or moving, so you don't want to use this except when you need them to 'focus in' on manipulating some in-world item. Implementation: To use focused interaction, you must have a local script owned by the player. You then call player.enterFocusedInteractionMode() to put the player into FI mode, and when you're done use player.exitFocusedInteractionMode() to take them back out. Players can also leave by clicking the X in the upper right. Event Handling You can listen to CodeBlockEvents for when the player enters or exits focused interaction: this.connectCodeBlockEvent(this.entity, CodeBlockEvents.OnPlayerEnteredFocusedInteraction, (player) => this.enterFI(player)); this.connectCodeBlockEvent(this.entity, CodeBlockEvents.OnPlayerExitedFocusedInteraction, (player) => this.exitFI(player)); Tracking Interactions While in Focused Interaction, you can subscribe to local broadcast events on the local script to get press, drag, and release information: this.connectLocalBroadcastEvent(PlayerControls.onFocusedInteractionInputStarted, ({interactionInfo}) => this.onFIPress(interactionInfo)); this.connectLocalBroadcastEvent(PlayerControls.onFocusedInteractionInputMoved, ({interactionInfo}) => this.onFIDrag(interactionInfo)); this.connectLocalBroadcastEvent(PlayerControls.onFocusedInteractionInputEnded, ({interactionInfo}) => this.onFIRelease(interactionInfo)); Interaction Data Each of these events delivers the same sort of info, an array of InteractionInfo structures containing the screenPosition, worldRayOrigin, and worldRayDirection vectors of the user interaction. On mobile, it supports multitouch, by tracking the interactionIndex of each InteractionInfo structure for each finger! For desktop/web, the interactionIndex will always be 0 and there will always be only one info structure for the mouse cursor. See It In Action For an example of Focused Interaction in action, check out my simple "Laser Pen Mechanic (TS)" world: https://horizon.meta.com/world/10160537969641146/?locale=en_US Learn More Documentation on Focused Interaction can be found at the Developer Learn Hub here: https://developers.meta.com/horizon-worlds/learn/documentation/create-for-web-and-mobile/typescript-apis-for-mobile/focused-interaction There is also a tutorial module on Focused Interaction here: https://developers.meta.com/horizon-worlds/learn/documentation/tutorial-worlds/developing-for-web-and-mobile-players-tutorial/module-7a-the-focused-interaction-manager As well as a topic in the Horizon Creator Manual: https://developers.meta.com/horizon-worlds/learn/documentation/mhcp-program/community-tutorials/creator-manual#focused-interaction Note that at the end of the month on 03-27-2025 at 5pm PST / 8pm EST, I will be holding a Build with a Mentor session where we will build up this laser pen from scratch over Zoom, and take questions. Creative Applications With some extra math, you can use focused interaction to allow a mobile or desktop player to 'reach in' and drag things around in the world, as well as figure out what they're pointing at. What will you build with Focused Interaction? Drop your ideas in the comments!351Views10likes1Comment