On November 22nd, I got an email telling me that my team won an award (and the money associated with it) at the “Meta Horizon Creator Competition: Mobile Genre Showdown – Reloaded” competition with our “Million Pigeon Minions” game. We, the team at VRROOM Studio, were very happy and proud of what we achieved. It didn’t happen by chance, but it was the result of a long and intense ride with many ups and downs (mostly downs). Along our journey from the moment we decided to participate to our success, we learned many lessons that I want to share with you, hoping that they may be useful for succeeding in your content creation path.
(Btw, before I start, if someone wants to collaborate with a passionate team of content creators for 3D or XR content, feel free to reach out to me… we will be very happy to collaborate with you!)
Keep pushing, and some opportunities will come to you
On the stage of the first XRCC with Christian Steiner and Binh Minh Herbst. Fun fact: she won a big prize at the same contest, too (Image by XRCC)
We arrived at the participation in this contest in a very unexpected way. I went to be a mentor to the XRCC hackathon in Berlin, where I met Shadi Nayyer, who later on invited me to Meta Connect, where I got to know about this Meta Contest and some friends at Meta invited me to participate. If I didn’t know the organizers of XRCC (Dinesh and Anna Punni), all this domino effect would have never started. If I didn’t want to invest my time going to Meta Connect and speaking with people, I wouldn’t have seized this opportunity either, because just reading a blog post about this contest wouldn’t have convinced me.
This award is the result of my spending the last 18 months traveling a lot, trying to find connections and opportunities. I said in some previous posts of mine that I had the impression that keeping traveling wasn’t giving me back what I was expecting. And then all came back together with this opportunity and this prize. If you keep pushing, if you keep showing yourself, if you keep trying, sooner or later, something is going to happen. As people say, “if you don’t buy the ticket, you can’t win the lottery”.
See things as they are
Zuck announcing Facebook Horizon back in the days
One of the lessons shared at my last talk in Hamburg was “See things as they are and not as you want them to be”. This is very important if you want to succeed in business. One of the examples that I was reporting in my speech was exactly Horizon Worlds. As a die-hard XR fan, of course, I have more sympathy for standalone VR applications on the Quest store than Horizon Worlds. But HW is where Meta is putting its money now. And as an entrepreneur, I have to look at where money is, not where I would like it to be. And if the money is in Horizon Worlds and I don’t know anything about Horizon Worlds, I had better start experimenting with it. And this was one of the reasons that led me to participate in this contest.
As I repeated multiple times on this blog, life is also not always black and white: you can create a mobile world in Horizon Worlds and still be a VR enthusiast and professional. It is not that we VR people must only do VR all the time. Let’s say that XR is our dream and our end goal in life, but we can detour sometimes if this gives us some advantages, like in this case.
Think strategically about your participation
There has been some discussion with the other members of the team about participating in or not in this hackathon. All contests bring a risk: the fact that you participate does not automatically mean that you will win something. There is a high risk that you crunch for a month, and then you come back home with your hands empty.
In the end, we decided to take this risk for the following reasons:
- Given our previous experience in making award-winning worlds in VRChat, we were sure we could deliver an experience that had a chance of winning something
- We wanted to explore Horizon Worlds because it is something Meta is putting the spotlight on
- The hackathon time was rather short: we could afford to risk 1 month of salary without becoming homeless people
- Usually, we don’t do hackathons, and it was the occasion to try a new experience
- Winning the contest could have opened new doors for us
As entrepreneurs, we need to take risks, and in this case, the possible outcome was worth taking a shot.
Just to make a comparison, we instead decided not to participate in the new contest about MR apps, even if I’m a big fan of camera access and I really wanted to join it, because:
- We didn’t come up with a genius idea that had very good chances of winning
- We already took a risk once; taking two in a row is a bit too much
- I’ve already experimented with camera access; I did not need an excuse to do that
- The contest was open to already existing apps, which are naturally more interesting than an experience we could create in a month, and this hurt our chances of winning.
So, think strategically, with your brain instead of your heart. Consider what is important to you and decide if participating or not. Notice that if for you it is important “just have fun with friends” and you can afford working for free for one month, it is still a good idea to participate. It all depends on what your goals are in life.
Underpromise, underdeliver
My spirit guide
Daniel Sproll’s motto, “underpromise, underliver,” was a very valuable lesson for this project, too. If you have one month to do something, you can’t do many things. You need to think about an idea that is easy to deliver. From my experience, it is much better to make a small project and deliver it in a polished way than to make a super complex project and deliver it in a crappy way. No judge is going to like a crappy application that has 10 half-assed features: better make two and make them well. I’ve done the opposite too many times and learned the lesson the hard way.
This is why we thought about joining the contest in the “incremental” category. Incrementals can be as easy as “click this egg and get awards”. And this is why we did not think about super complex mechanics, either. The game would have been about clicking pigeons to make them produce eggs, and then using the eggs to buy upgrades. Easy, peasy.
And this is also why I took the hard decision to make the game “mobile only”. As much as I love VR, it was impossible to deliver a game that was fun both on flatscreen and VR in just four weeks. We needed to stick with one platform only, and since the contest was about mobile, we ditched VR. It was painful, but necessary.
The fun thing is that no matter how much I made it simple, the game still resulted in being too complex to do in just four weeks, and we still needed to simplify it again down the line. So when you think it is simple enough, simplify it again, because it is still actually too complex. Underpromise, underdeliver.
Good artists copy…
I know it, when you start a new project for a contest, there is always this temptation of “doing something original”. The reality is: when you have just four weeks, and your team is not composed of Hideo Kojima and John Carmack, you had better just copy and improve. I know, it doesn’t feel cool, but that’s the best thing you can do if you want to stay real: there are already dozens of good games out there, so why can’t you just take their best ideas and mix them? You can add to them your personal final touch (more on this later), but why try to reinvent the wheel? It simply makes no sense. This is also the reason why Ben Lang created his series on XR design: to let you copy what already works.
Since I took the task of being the “game designer” (I say sorry to all the real game designers out there), I spent a couple of days playing many incremental games on Steam, Roblox, Horizon Worlds, and watching many YouTube videos about them. I got the essence of what makes them fun, and I tried to put the best ideas into the pigeon game. And you know what… it worked! I gave the game to some friends of mine during our development, and they enjoyed playing it. Even if I’m not a real game designer, I managed to design a decent game just by copying and improving. Sometimes it is enough.
Double-bet on what you are good at doing
The environment of the game is pretty good for Horizon Worlds standards (Image by VRROOM Studio)
We were originally four to participate in this project: 3 artists and one developer (it’s me, Tony!). We are definitely good at our job: the 3 other guys can deliver quality 3D assets and 2D graphics. I can do decent work in making code architecture and development. I also have another talent: I can make some jokes and memes. So we worked to make a game that could showcase good graphics, good logic, and some fun. We didn’t (mostly) use AI in the graphics of the game, and we also wrote many of the jokes ourselves, because we wanted to show what we are really good at doing. We knew we could make a good work and put the spotlight on our talents.
And I think the reason why we won the prize related to the Custom UI is that the 2D graphics of our UI are really well-made, original, and cute. The UI also works as it should and there are jokes everywhere. Of course, the judges loved them: it reflects the things we are the best at.
Ask for help with what you suck at doing
Of course, making a game requires a big team, but we could not afford that because this was a risky, unpaid project. So we needed to stay nimble. This means that there were some skills we were missing in our team.
We had no audio designer, so we asked for the help of Meta AI to make the sounds and the music in the game. Meta AI did a pretty decent job on that side, after I understood how to write the prompts.
We also had no game designer, so I needed to cover that role. I’m not a game designer, so I mostly copied other games and asked the help of ChatGPT to write the GDD (Game Design Document). But I also knew that only I with AI could not be enough, so we asked for the advisorship of Massimiliano Ariani, the game designer with whom I created HitMotion: Reloaded. Max agreed to give us friendly help in finalizing the game. And this turned out to be fundamental, because the game with the parameters suggested by ChatGPT was completely unbalanced and super-boring to play. Max spent some hours suggesting to me how to make it more entertaining, and the game bumped from super-boring to enjoyable. Sometimes a little help can make you move a long road.
The interfaces prototyped by the AI in my GDD. Of course, the final ones that won an award were much better
Understand where asking for help is critical, and ask people to support you. You’ll discover that many friends are also happy to give you a helping hand. And for the things you have no friends to help you, you can still use the many AI tools that are available today as a fallback.
Add your special touch
I think that in whatever we do, we should always put something that is deeply ours. I know many people like my blog articles because I always put some jokes in them (I guess my words are just there to give some sense to my memes), and that is my special touch.
A Pirate and a Robot pigeons (Image by VRROOM Studio)
For this game, similarly, I guess that apart from the quality of our work, the happy vibes and the humour were our special touch. We chose the pigeon as the main protagonist, which is something funny in itself because we are glorifying the most normal animal we see every day in our cities. We created some absurd versions of the pigeon (like the “Alien” pigeon or the “Robot” pigeons), we wrote funny descriptions, we invented stupid awards, and we put easter eggs in the game. We wanted to give good vibes to our players, and I think we did a good job on that side.
(I guess you want to know about at least one easter egg: well, during the review of the GDD, someone left at a certain point a comment saying “as long as the pigeons”. It was a writing mistake, and it ended up being an internal joke. So when I had to choose the name for the achievement that you win if you unlock all the pigeons, I chose exactly that as a name.
Hey, as long as it works
Go social
I can’t stress enough how much social features are fundamental in a multiplayer XR experience. Whatever can make people interact with each other is going to make your content more interesting. The bad thing was: incremental games are not made for multiplayer. I even asked ChatGPT to give me examples of past multiplayer incremental games, and it couldn’t give me very solid answers.
So we did the best that we could: we designed our space to make people meet in the middle. The game has a store where you can sell the eggs and upgrade your pigeons, and we put it in the middle of the map, so that people are forced to gather around it and meet. Then we added classifications and many achievements. And we also added some fun pigeon-related props for people who wanted to just have fun with friends: have you ever slashed someone with a big baguette sword? In our game, you can!
Maybe for the second version of the game we’ll also add the baguette magic wand… (Image by 9GAG)
Work hard
I can give you 1000 pieces of advice, but at the end of the day, it is only hard work that produces good results. There’s no escape from that. We had only one month to deliver a game, which was something like Mission Impossible. Because there were many participants, we could not just make a crappy prototype; we needed to deliver something that worked for real and looked good. And we made it only because we worked our ass off.
I personally felt a lot of pressure because I was the only dev. I crunched like hell, and spent the last two weeks in an overdose of chocolate and coffee to stay up and code the whole day and nights. I thought about giving up at least a couple of times, because crunching also put a physical toll on my body. It was not easy at all for all of us. The only suggestion I can give you here is: commit to work and deliver, ignore the voices that tell you to give up. If time is not enough, remove some features, but work to deliver. And if you want to win, you have to sacrifice yourself and work a lot of hours a day.
The last couple of days, I felt like him (but not the version of the coffee nirvana)
Limits are not walls, but tracks
When I asked my friend and colleague Lapo Germasi about a lesson to share, he suggested this interesting thought:
Limits aren’t walls, they’re tracks. When you accept that certain things will never work the way you want, you suddenly start creating ingenious solutions… even highly questionable ones, but effective nonetheless. And eventually you learn to say, “Okay, it’s not exactly how we wanted it… But let’s make it work anyway.”
And that’s true: the game I imagined in the beginning was not exactly the game we came up with. We had to face many difficulties, we discovered some things were not doable within Horizon Worlds, and we always regrouped and looked for solutions to overcome the limitations of the platform. The result is so different, but still a very nice game.
And we really “threw our heart beyond the hurdle”, which is an Italian way of saying that we really gave whatever we could in this sense. Just to make an example: we planned to do many animated pigeons in the beginning, but we discovered that Horizon Worlds could not import animations from FBXs. So the artists had to rework the design of the pigeon to simplify it, and I had to invent a custom tool to export animations from Unity and import them as JSON inside Horizon Worlds. It worked like a charm; we found an ingenious workaround to bend Horizon Worlds to our needs. If you can see limits as challenges to win, you can obtain results that you thought were impossible.
Stay United
When the pressure starts to rise, it is easy for someone to snap, and then the relationship between the people in the team gets bad. It happened to me various times in my career. I now manage to handle things better inside a team, both by trying to control myself more and also by not getting angry if someone sometimes says some bad words just because he/she is under pressure. If everyone in the team tries to work to stay united, it’s much easier to deliver. I think that at VRROOM Studio, we managed to get along very well, and we managed to begin and finish this project as a team, which was very important to deliver this product. There were some discussions here and there, but they were mostly on the technical side of things.
Also Zuck needed some time to learn how to use Horizon Worlds (Image by Mark Zuckerberg)
We never used the Horizon World Desktop Editor before this contest. I never used TypeScript before. In the beginning, we probably underestimated the difficulty of working with a new tool, especially a tool that is not stable yet and is continuously on the cutting edge. Horizon Worlds Editor is still very buggy, and we needed a lot of time to learn how to overcome its limitations. Plus, I did not know what the good practices of programming in TypeScript were, and I spent a lot of time on that, too. I could have done twice the work I did if the project were in Unity and C#. So if you have to work with a new tool, consider something like +50% of time on your original estimates, which easily becomes +100% if the new tool is experimental/beta, like the Horizon Worlds Editor.
One thing that saved us was the samples and tutorials. If Meta did a good job with Horizon Worlds, it is exactly in providing many examples from which you can freely steal the code. We won in the Custom UI, but I would have never been able to code the UI without taking inspiration from the tutorials. I totally underestimated the task and was saved by the samples and by AI. So another suggestion here is: copy from whatever samples you find online, and if you can, let AI help you. Which takes us to my next point
Hybride coding
I hate vibe coding, but I’m starting to get into the advantages of mixing standard programming and vibe coding, which I will call “hybride coding”. I made myself all the architecture of the application in draw.io, then I asked heavily for the help of GitHub Copilot (with Claude models) to write the actual code, because there was no way I could write all that TypeScript by myself. Again, also here, I was mixing my talent (able to design and develop applications) while asking for help in doing something I was not great at (writing the actual TypeScript).
You may wonder why I was using GitHub Copilot and not Meta AI, and the reason is that Meta AI was just trolling me. Every time I asked it for some code for Horizon Worlds, the code it gave me did not work. And if I told it that the code didn’t work, it just said “ah, you’re right!” and then provided me with some modified code, which was still not working.

The fun thing is that GitHub+Claude was giving better results in writing Horizon Worlds code than the official AI way to write Horizon Worlds code.
Never fully vibe code: keep control of your architecture, and review all the code that is written by AI (beware that AI introduces some subtle bugs!). But if you’re working on a new programming language, definitely ask for help from some AI system. This also helps you in learning a language: reviewing the code written by Copilot, I was able to get more into how to write TypeScript code.
Testing testing testing
Always test what you produce, test often, and test a lot before shipping. If you are working on a multiplayer application, be sure to test with multiple players: we were able to spot a nasty bug that made the game unplayable just the night before the delivery when we tested the game with the four of us playing together. The bug was hardly noticeable with one or two players, but very visible in four. The days before the final shipment always test with real players and test with as many players at the same time as you can.
I can also share one trick with you: if you are using Meta systems, like Horizon Worlds, remember that your Meta organization can produce fake test accounts. It is something I told you about in this post. Using test accounts (which is an official feature, not a hack), I was able to create a fake account called Betty Sharpeson and let her log in on one of my phones, while with the other phone, I was using my personal account. This meant that I could test the logic of the game with two players on two phones without having to disturb the other members of the team.
Mind the packaging
When you ship a product, may it be for a company launch or just for a hackathon, it is not only about the product; it is also about the packaging: you have to care about everything that is around the product. In the case of our Horizon Worlds game, it meant also shooting beautiful pictures for our submission and making a good video trailer.
When we arrived on the last day that we needed to make the video, I was thinking about a plain gameplay recording, but Lapo suggested that since the game was all about fun and jokes, our video should have been coherent with that. That was our identity, our special sauce, and it needed to be in everything about our product. He came up with an idea about selling stuff, and then we perfected it together, adding some jokes and fun. I had a hard time explaining at home why I had to dress like an idiot and try to sell bread and pigeons…, but in the end, the result was good, and we also had a lot of fun while making it.
The fun thing is that Meta in the guidelines suggested making a very serious video that didn’t mention other topics outside of the game. Sorry, but not sorry…
Making a good packaging of the game is not an afterthought; it is an important part of delivering the whole experience. I’m pretty sure we were among the very few that tried to make a fun video, and this helped us stand out.
Do a debriefing
After you deliver, go to sleep. After that, meet again with your team and try to debrief on what you did well, what you did badly, and what you can improve the next time. Debriefing is always important because every project brings some important lessons to learn.
Celebrate your victory (if any)
Here you can see a part of the UI of the store inside the game. I cried blood to make that happen (Image by VRROOM Studio)
We were satisfied with ourselves after the delivery: the first thing I said to everyone was “we have been great, we couldn’t deliver more than this for the situation we were in and the resources that we had”. We all shared the common joy of having endured something together and having delivered something good, even if it seemed unachievable.
Of course, we became even happier when we discovered that we won. It was not obvious at all: some good works didn’t win any award at this time. And it felt a bit iconic&ironic that we won in the “Custom UI” category. UI was the thing we thought we had done the worst, since the artists mostly focused on 3D and had to do some extra work to invent some nice UIs, and I managed to assemble the UI with a lot of fatigue by copying stuff from the samples, asking things to AI, and putting some tears and blood in the mix. We managed to do well also the things that we thought we couldn’t do well.
Being a remote team, we haven’t had the occasion to meet yet, but we plan to meet somehow and celebrate. We deserved it, and we need some fun for that!
I’ve also noticed I’ve not shared yet the names of all the people of this great VRROOM Studio team: Lapo Germasi, Victor Pukhov, Giovanni Guerretta, and our special advisor, Massimiliano Ariani. They all made an amazing job and deserve a big applause.
… now what?
During November, I actually also won this personal award… it has been a very good month for me!
Now, probably you have realized that I actually wrote more than 16 lessons. Or maybe not, and in this case, you can go back from the beginning of the article and count them. Sometimes I still like to overdeliver.
Anyway, after the celebration, it is important to get back to work and understand what to do with the result that you got. A quote from Nelson Mandela says, “After climbing a great hill, one only finds that there are many more hills to climb”, and that is basically how life works. After you obtain your success or your failure, there is only one thing to do: sit down and understand how to start from there to obtain something else. If you won an award, or delivered good sales of your product, or whatever else you may have, you should not just stop there and celebrate, but try to understand how to double down on that success and reach even something higher. And this is what we are trying to do (and again, if you want to collaborate, feel free to reach out to us).
And then what you can do is also share your lessons with other people, like I’m doing now with this article. I hope it may be useful for you and help you in succeeding in whatever you’re doing! And feel free to share it with other people to help them, too.
To infinity and beyond!
Disclaimer: this blog contains advertisement and affiliate links to sustain itself. If you click on an affiliate link, I’ll be very happy because I’ll earn a small commission on your purchase. You can find my boring full disclosure here.
Share this with other innovators
Related