Inspiration

As my first Horizon World, I wanted to learn the tools but the goal was for it to be a satisfyingly complete project. I had never built a full world with the Desktop Editor, and was relatively new to TypeScript coming from a Unity background, so I needed to learn the language first, then the base features, and then the Horizon Worlds features of Custom UI, Camera API, Mobile Gestures, NPCs, GenAI, Leaderboards, and integrated music.

In so doing, I wanted to make a game that was immediately accessible and playable to anyone new to Horizon Worlds that had an achievable goal that was social and shareable, and I ended up liking the concept of "tap the right square". Wanting to go beyond, I incorporated NPC avatars to call out real and fake commands, as well as to explain the game, respond to various events, and finally to summarize the game at the end.

What it does

The player is immediately introduced to one of the two shot callers randomly, who describes the game, and once pressing Play, the game shows two buttons that need to be pressed, which offer a multiplier when enough successful taps are made in a row, and subtracts score when hitting the wrong button. Shot callers call out "Red Tap" or "Green Tap" when the mode changes, and also call out "Red Light" and "Green Light" randomly to throw the player off. Player's score is calculated and read aloud by one of the shot callers, and is put into a Daily and All-Time Leaderboard.

How it was built

Running through hours of training videos made both by MHCP as well as the community, loading up every tutorial world, and passively listening to YouTube videos while coding, this then started out by building out core systems for game management, UI management, scorekeeping and timers. Once the game was working, NPCs were added to be shot callers, and then diving in to the NPC APIs resulted in adding conversational elements and emotes as well. We also used the Camera API to fix the location and overlaid the UI to "box" the NPCs in presentable positions, and utilized the recommended Facebook music library to provide even more professional sounding musical ambiance.

Challenges in development

For the first few weeks, NPCs didn't generate the Meta Avatars, and at times the Editor would stop compiling scripts or showing the properties until restarting. The learning curve was also much more challenging than previous tools, but that could also be a by-product of being new to TypeScript programming. I also had never done server+client programming in the same tool, so that was new to learn. Some of the documentation was also outdated, but that's expected given the speed of tools development.

Accomplishments to be proud of

This hackathon resulted in a fully functional, tappable mobile game with environment, sounds, music, speech capable context-aware NPCs in a matter of weeks, learning everything needed for the first time, with built-in music that feels catchy and professional. I honestly didn't think it would be possible and I'm already using the remaining time to explore more ideas during this competition.

What we learned

Horizon Worlds was much more powerful than I'd realized. Many of my contemporaries had written it off, but the competition along with the workshop at Meta Connect was enough to convince me to spend more time with it, and what I learned most of all was how to think about the potential of the Horizon Worlds platform.

What's next for Red Tap Green Tap

I'd like to go back and add some Vfx once I've learned that system, and now that Portrait mode has been released it would be interesting to see what that could look like.

Built With

Share this project:

Updates