Inspiration

Glitch Glide City was born from a collision of eras. I wanted to capture the "Golden Age" of arcade gaming, and the rebellious, high energy spirit of the Dreamcast era. Fusing it with the physical freedom of modern VR utilising custom arm swinging mechanics with a 'touch of flight' twist.

My love for roguelikes and procedurally generated adventures drove the core concept: What if the community built the dungeon? This led to the idea of a world that never ends because the players keep building it. As a solo developer, this project was an ambitious attempt to push the boundaries of what a single creator can achieve with Meta's tools and backend integration.

What it does

Glitch Glide City is a fast-paced, light MMO set in a surreal, glitching simulation. For the Meta Start competition, I implemented three massive new systems:

What I specifically built for the comp:

The Glitch Lab (VR Level Editor) Built from the ground up, this is a casual level builder designed for accessibility.

-Touch Bubble UI: Instead of complex menus, players interact with playful, floating bubbles to spawn assets.

-Tactile Creation: Users can remote-grab blocks, stretch, scale, and assemble them. Even the workbench itself is grabbable and scalable.

-Cloud Publishing: Creations can be saved locally or published instantly to the global database using the custom VR UI.

⚠️ Alpha Note regarding functionality: The auto-naming system is currently temporary. There is also a "Test Scene" function mapped to the 'Y' Button that shrinks the player. This feature is currently unstable in the build; please avoid pressing 'Y' to prevent getting stuck in miniature mode.

The CityVerse Shuffle (micro Roguelite Mode) This mode turns player creations into a unique "playlist" of micro-adventures. It is a multiplayer-ready roguelite system where the "dungeon" is streamed from the cloud.

-No Loading Screens: The system downloads player levels and instantiates them in real-time.

-Procedural Chaining: Levels are stitched together into an infinite run.

⚠️ Alpha Note regarding functionality: In the submitted build, there is a coordinate offset bug that causes spawned levels to be visually misaligned. Additionally, a rogue collider in the start area may block smooth locomotion. While the backend logic (downloading/instantiating) is fully functional, the gameplay flow in this specific mode is currently interrupted by these offsets.

The Level Browser -A separate system allowing players to browse, select, and play specific community levels from the main hub.

⚠️ Alpha Note regarding functionality: Similar to the Shuffle mode, levels may spawn with an offset (off-screen to the right). The respawn logic in this specific viewer is also pending a hotfix; falling off the map may require a game restart.

This trio of updates creates a very unique pick up and play gameloop that is perfect for 15-20min sessions. Everyday there will be updated content for players to engage with. What Glitch Lab users come up with will be completely unpredictable.

Summary: The Movement: It relies on high-energy physics. Players grab, fling, and glide through a vertical neon city. The Glitch Lab (Creation): I built a unique "Touch Bubble UI" system. Instead of complexity, players interact with floating bubbles to spawn building blocks.

The CityVerse Shuffle: This is the game's heartbeat. It is a roguelike mode made of user-generated content. The game instantly stitches together random player-created levels into a continuous "Run." You never play the same adventure twice.

How I built it

The project is built on Unity 2022 targeting Meta Quest 2/3/3s using the Meta SDK v81, utilising Photon PUN 2 for real-time multiplayer synchronisation.

The UGC (User Generated Content) pipeline is the technical centerpiece, powered by Microsoft PlayFab and CloudScript:

-Level Storage: Map data (JSON serialized blocks) is compressed and stored in the creator's public Player Data.

-The Directory: To ensure instant discoverability, I used CloudScript. When a level is published, the client triggers a server-side script that validates the entry and posts metadata to a PlayFab Title Data list. This acts as a live global "Bulletin Board."

-Real-Time Generation: The GameSessionManager parses block IDs and transforms from the JSON data and instantiates networked prefabs instantly, allowing for the "no loading screen" feel.

Challenges I ran into

-The UGC Pipeline: Allowing clients to write to a global list is a security risk. I initially tried Client Permissions on Shared Groups, but it was brittle. Pivoting to a Server-Authoritative CloudScript solution was a steep learning curve but ultimately the correct architectural choice.

-Tracking Origins: The "Editor Mode" rig and the "Gameplay" rig had different tracking origin behaviors. This discrepancy led to the coordinate alignment bugs present in the Shuffle mode. While the fix is identified (unifying the rig anchors), the deadline arrived before the patch could be compiled.

Accomplishments that I'm proud of

VR-Native UI: Inventing the "Touch Bubble UI". CityVerse Shuffle (Cloud Architecture): Successfully building a full "Create -> Publish -> Download -> Play" loop from scratch as a solo dev. Level Browser

What we learned

This project was a massive learning curve. Backend engineering, XR interaction and scope management.

What's next for Glitch Glide City

The foundation is now laid for an infinite game. Next steps include:

Add passthrough and hand tracking for creator tool.

Add a user progression system based on how many levels they visit, level rating system, level naming system, level icon generation for the level browser.

Fix all the bugs that's in the current build. I introduced an improved collision detection system. This interrupted the locomotion system to a degree. I need to fix this.

Add MR mode to the creation tool. Finalise player comfort features (I have this in-game already but it's turned off at the moment since it's not complete)

Built With

  • cloudscript
  • english
  • metasdk
  • openxr
  • photon
  • playfab
  • unity
Share this project:

Updates