Inspiration

My core vision was to create an endless, always-on arena where players never wait in lobbies. Instead of fixed rounds, each player gets their own personal 60-second timer the moment they join. Runs continuously, with AI NPCs filling empty slots to keep the arena at maximum capacity.

How I Built It

Paintball Royale is built entirely in Meta Horizon Worlds using TypeScript, optimized for portrait mobile gameplay. The majority of my development time went into crafting performant AI behavioral logic for NPCs that feel like real players. They use the same auto-aim and auto-fire systems, seek ammo strategically, and maintain arena density.

The core loop is simple: one joystick for movement, auto-aim locks onto targets, auto-fire engages when in range, and ammo auto-picks up on contact. The portrait HUD uses safe-area padding and oversized numerals for instant readability. I optimized for mobile with trigger-based pickups (no heavy physics), capped projectiles, AI at 10 Hz, and efficient target scanning.

Challenges

The biggest challenge was building AI that performs well on mobile while feeling authentic. Balancing NPC behavior complexity with frame rate targets required careful optimization. Creating instant-onboarding without tutorials meant every interaction had to be intuitive and discoverable.

Future Plans

I'm planning to expand into different game modes like team matches and capture the flag. Players could build teams with friends and top up with NPC AIs. The game level is already procedurally generated, but I want to expand this to runtime generation, creating a more complex unique level every time a world spins up, keeping each match fresh and unpredictable.

Time constraints limited polish, so plans include enhanced visual effects, sound design, and music to add more juice and atmosphere to the experience.

Designed for mobile devices

Built With

Share this project:

Updates