Inspiration
The inspiration for my project came from a noticeable gap in the skydiving-themed VR worlds that were already available. Many of the ones I tried were underwhelming and didn’t capture the true thrill of skydiving. I wanted to create something that would give players the same adrenaline rush they might experience in real life, but with an added twist of adventure and excitement. I felt like there was potential to bring something new to the table—a game where the player could feel like they’re actually soaring through the air, with dynamic challenges like collecting rings and avoiding bombs.
What it does
Right from the start, you’ll have full control to tailor your adventure:
- Swap out the world’s music,
- Adjust ring themes, and
- Transform the sky blocks and environment to craft the vibe that suits your style.
When the game begins, you’ll find yourself in a realistic holding plane, just like prepping for a real-life jump. During this time, the 3 arenas are generated with nearly 700 rings take about 50 seconds to assemble. Once everything is ready, you’re launched to the top, and your epic journey begins.
Scoring System
The gameplay features a dynamic 3-ring scoring system:
- 🟡 Gold rings earn you 1 point,
- 🔵 Blue rings are worth 5 points,
- 🔴 Red rings bring in a whopping 10 points.
But beware of bombs! 💣 Hitting one will reduce your score by 10 points, adding a thrilling layer of strategy to your flight.
Objective
Your mission is simple yet exciting:
Collect 20 points to advance to the next level.
Game Progression
- The game consists of three fast-paced levels, each lasting one minute.
- After completing all levels, you’ll return to the holding plane, where you can:
- Take a breather, or
- Jump back in for another round of action.
- Take a breather, or
How We Built It
The world design relies heavily on asset spawning to create a dynamic and customizable environment. This includes spawning various elements such as sky blocks and rings. Early on, I anticipated the need to adjust arena sizes and reposition them frequently. To avoid manually modifying the code each time, I implemented a solution to dynamically spawn ring assets.
Dynamic Ring Spawning
I achieved this by:
- Capturing the XYZ position of the three specially designated non-collectible blocks.
- Using these captured variables as the boundaries for a random number generator to calculate positions between the defined limits.
This approach allowed me to quickly adapt the arena layout without needing to hardcode changes repeatedly.
Gravity and Movement Adjustments
One unexpected challenge I encountered was the player’s velocity increasing over time, even with gravity set very low. To resolve this, I:
- Set the gravity to zero, eliminating its influence.
- Introduced a set downward velocity for the player to maintain consistent movement throughout gameplay.
Challenges we ran into
What would development be without challenges? At one point, I hit a wall so daunting that I thought weeks of work would be wasted, and the game would be doomed to never see the light of VR day. This journey was anything but smooth, but every challenge shaped the final product—and taught me lessons I never expected to learn.
Big Ideas, Little Knowledge
It all started with ambitious ideas and limited experience. Sure, I had previously built a three-arena lightsaber battle game, but it lacked any asset spawning—a completely new challenge for me. I envisioned a world where rings would randomly spawn within non-collectible blocks, but getting there required more than just an idea. Once I figured out how to spawn assets randomly, another challenge arose: creating a system where players could collect the rings and resetting the arenas once all three levels were completed.
The "Crude Solution" That Nearly Broke Everything
My first attempt? Overcomplicated, to say the least. I surrounded each ring with two triggers: one for the player and one to be activated by a descending block. The idea was that the block would "hit" the ring and trigger its removal. It worked, but not without a massive performance cost. Spawning 500 rings with 1,000 triggers and 500 sounds completely overloaded the world’s capacity—hitting over 300%.
This was a moment of crisis. I knew my system couldn’t scale, but I wasn’t sure how to fix it. After researching and experimenting, I removed the object triggers and switched to a system where rings de-spawned after a simple event call. This adjustment brought my capacity down to 160%, a significant improvement. I also simplified sounds, by moving them when a player entered a ring, instead of preloading each ring with a sound.
The Capacity Crisis
Feeling confident, I expanded the world to feature three arenas, each spawning 250 rings. It was during testing that I hit another roadblock. After clearing all the rings on the field and completing the levels, the rings stopped spawning altogether. The console showed an error: I had exceeded capacity again. This time, it wasn’t just a performance issue—it was a fundamental flaw. The world refused to recycle assets for the next round even though the worlds capacity was below the 100% threshold.
At this point, I thought it was over. Collecting the rings had to be there, its what added to the experience, and gave the player purpose.
A Midnight Epiphany
Defeated, I stepped away for the night. But the next morning, inspiration struck: instead of attaching a trigger to each ring, what if I attached a single trigger to the player? This trigger would detect objects with the correct tags, simplifying the system entirely. I gave it a shot, and not only did it work, but it reduced the world’s capacity usage to under 80-90%.
It was a game-changing moment—pun intended. The rings now had zero triggers, and the satisfaction of seeing it all come together made the long nights of trial and error worth it.
Lessons Learned
Looking back, it’s funny to think how much time I could have saved by taking this approach from the start. But the learning process itself was invaluable. The satisfaction of conquering these challenges far outweighed the frustration of facing them.
Of course, this wasn’t the only hurdle. I also dealt with lag caused by file-backed scripts, the complexities of tracking individual player scores for the HUD, and the sheer time required to test arena spawning mechanics. But none of these compared to the battle of optimizing asset spawning in a way that worked—and worked well.
In the end, every misstep and late-night brainstorm shaped the game into what it is today: a world where every challenge was bent to my will.
Accomplishments That We're Proud Of
Looking back, the journey to building this world was filled with challenges, but it’s those very challenges that made the accomplishments even more rewarding. Here are some of the highlights that we’re incredibly proud of:
1. Dynamic Asset Spawning
We successfully implemented a system to dynamically spawn assets, including nearly 700 rings across three arenas, using a randomized method based on captured XYZ positions. This not only made the world more customizable but also allowed us to scale the game efficiently without manually adjusting code for every change.
2. Innovative Trigger Solution
One of our proudest moments came when we replaced a cumbersome two-trigger-per-ring system with a single player-trigger solution. This breakthrough not only solved the capacity issues but also reduced the world’s overall usage to 80-90%, paving the way for smoother gameplay and better performance.
3. Streamlined Ring Collection System
By rethinking the way rings were collected, we eliminated unnecessary complexity while ensuring the system was reliable and responsive. The final solution was both simple and elegant, reducing the need for excess triggers and sounds while maintaining a satisfying user experience.
4. Player-Centric Design
From customizable environments to a 3-ring scoring system that balances strategy and fun, we created a game that puts players at the center of the experience. The addition of randomized assets and responsive mechanics ensures every jump feels fresh and engaging.
5. Overcoming Technical Challenges
The process of learning to dynamically reset the arenas, spawn new assets after each level, and manage player scores for the HUD—all while maintaining performance—was no small feat. Each of these technical hurdles was met with persistence, creativity, and the drive to deliver an exceptional experience.
6. A Fully Functioning Three-Level World
Creating a cohesive world with three distinct levels, each designed to be completed within a minute, was a massive milestone. This structure adds replayability and keeps players engaged, making every run feel like a fresh challenge.
7. Personal Growth and Learning
Perhaps the biggest accomplishment of all was the personal growth gained along the way. From understanding the nuances of asset management to optimizing performance under strict capacity limits, this project was a masterclass in creative problem-solving and perseverance.
Each of these achievements represents a step toward mastering world-building and creating an experience im truly proud to share.
What We Learned
This journey has been as much about personal growth as it has been about technical achievements. The biggest lesson I’ve learned is the importance of humility and the need to temper my perfectionist tendencies. Despite years of coding experience in front-end and back-end application development, creating a game in Meta Horizon proved to be an entirely different beast—one that required me to step outside my comfort zone and embrace the challenges with an open mind.
The Power of Events
One of the most valuable technical skills I gained was understanding how to send events to players or objects and listen for those events. This capability is a cornerstone of Meta Horizon coding, and it’s a tool I hope to utilize more in future projects. It’s incredible to think how something as simple as an event call can open up so many creative possibilities.
The Challenge of Working Solo
I also learned just how hard it can be to be a one-person team. Without someone to challenge my ideas or push me in a different direction, it was easy to fall into the trap of thinking my approach was the only or best solution. Often, the biggest obstacle wasn’t the code but my own mindset. I’ve realized the importance of collaboration—not just for splitting the workload but for broadening perspectives and uncovering better solutions.
Looking to the Future
This experience has inspired me to seek out opportunities to create alongside other scripters who can challenge me and help me grow. I hope my journey in Meta Horizon will lead to collaborations that push the envelope of what’s possible. One day, I aspire to be a name to remember, not for the worlds I’ve built alone, but for the partnerships and innovations that came from working with others.
The lessons learned in this project have been humbling, challenging, and ultimately inspiring. They’ve shown me that even when we’re unsure, even when the road ahead feels impossible, there’s always room to learn, grow, and create something extraordinary.
What's Next for EPIC SKY DIVING
What’s next for EPIC SKY DIVING? The possibilities feel endless, and I’m brimming with ideas to take the experience to new heights. Here are some of the features and improvements I’m excited to explore:
1. Enhancing Trigger Systems
While attaching a trigger to the player has been a game-changing solution, I’m looking into building a redundancy system around it. This would make the mechanics even more reliable, ensuring a smoother and more consistent experience for every player.
2. Player Customization
Customization is key to creating an immersive experience. I plan to introduce a purchasable streamer system, allowing players to personalize their jumps with different-colored streamers. This feature would not only add a new layer of customization but also make each jump feel unique and personal.
3. Optimizing Ring Reset Mechanics
Currently, resetting the entire field of rings adds a noticeable wait time. My goal is to optimize this by tracking which rings are collected and replacing only those specific ones. This improvement could reduce the reset time to a fraction, keeping the game’s pace fast and engaging.
4. Turning the World Trimesh
One of my ultimate goals is to enhance the world’s visual quality by turning it into a trimesh environment. This would significantly improve the aesthetic and immersive feel of the game. While this step requires learning and working with Blender, I’m determined to tackle it once I can invest in a computer capable of handling the software.
Looking Ahead
EPIC SKY DIVING is just the beginning. With these enhancements, I aim to create an even more seamless, customizable, and visually stunning experience for players. Every step forward is an opportunity to refine my skills, push creative boundaries, and continue crafting a world that players will want to return to again and again.

Log in or sign up for Devpost to join the conversation.