How to build a VR retro arcade: a hack week retrospective

New year, new projects!

But also where do you get started after a holiday break? AND keep yourself motivated?

For us, two things were happening:

  • We wanted to showcase what kinds of apps you as a developer can build on the Alloverse platform.
  • Plus we wanted something fun to kick the year off with after a well deserved holiday rest.

It took us no time to realize that we could address both by doing something really nerdy, technical AND fun! Nevyn had previously experimented with using LibRetro* in an AlloApp, so it was a no brainer that we should take his side project experiment and turn it into a full on multi-user VR retro arcade!

*LibRetro is an open source project and reusable software library for emulating and playing retro games -- anything from Super Nintendo to relatively modern Playstation games.

In Nevyn’s experiment, two Alloverse users could play Turtles 2 for NES, albeit with a low framerate and slightly broken color palette. So it was a truly perfect project to take on and hack in two weeks, show off how much you can accomplish in Alloverse in a relatively short amount of time and have fun while at it!

Our goals were as follows:

  • Re-do the hacky parts, so that color, audio, framerate and input are all smooth and comfortable to use
  • Let the user pick games from a list
  • Design a space where you can hang out and play together — the building, the bleep-bloop sounds, the smell of popcorn (or, the nostalgic memory of it at least! Although we highly recommend making some popcorn before you start playing 😉), all that jazz.
  • Put the emulator in a proper arcade cabinet, and skin it with art from the chosen game
  • Improve the controls, both when used from VR and when used from a computer

At the end of all that, our hope was (and is) that people (looking at you developers) from around the Internet would find the thing we’ve built, try it out, realize how awesome our tech and APIs are, get an urge to build their own 3D apps, and try out our app building tutorial! And maybe join our Discord and tell us what they think of it 🙂

How did it all go? Well, honestly it exceeded our own expectaions! Not only we managed to check off all the things in that bullet list, we now have a beautiful fancy arcade space with plants and art in it (and of course retro arcade machines with many games to choose from), and we implemented A LOT of overall performance improvements for the platform.

Take a look! (remember: you’ll need the Alloverse app to try it out)

And if you’re curious, here’s a snippet of how the experience was for each of the Alloteam members:

Nevyn:

Being able to stream video from any random app into Alloverse really inspired me, and got me thinking about so many different fun applications. I’m also a huge retro tech nerd, so building a SNES emulator for VR was unavoidable once the idea got into my head.

Doing a hack project with the whole team after three weeks of winter holidays was a great choice. After a lot of rest, the project really kick-started our brains with creativity, teamwork, and just… fun!

The things I’m the most happy with are:

  • The competence of our platform and APIs. Without adding any platform features, it’s apparently possible to build a working multiplayer game, integrating with a C library, with live-streamed video, audio and two-handed controller input. That would be really hard to build with in two weeks on pretty much any other platform I can think of.
  • Working together intensely on a project, sharing creativity from our own fields of expertise, is super rewarding. The whole is so much better than if any one person had built it, and we’re pushing each other to explore our skills even further.

The things that could be improved:

  • Performance of the Alloverse platform is a little too low to have more than 2 arcade machines and multiple players, so that’s a bit disappointing. However, we’re spending time this week to improve it, so this “dogfooding” exercise actually ends up making the platform better for everyone, even though we “just” made a fun side project.
  • My brain was in a bad way for several days after the first week after working too much. Even when work is extremely fun, it’s important to take breaks and find ways to rest (especially when your normal “resting activity” is writing fun code 😅)
  • Now that we’re mindfully designing a whole Place and not just an app, it’s becoming really clear that there needs to be a way to save a “layout” — a set of apps and decorations for a space, so you can set it up once and then come back to it later (e g if strangers come in and “mess” your place up, or if apps crash and lose their setup)

Domi:

Working on a big project together was a great way to start the year and easily find focus after the holiday break. Bonus points: it’s been REALLY fun! I loved the world building aspect of it, from imagining the arcade to translating it to paper and visualizing it, and then explaining what I see in my head to everyone else. The amount of progress I made in navigating and using Blender is crazy, the skills were pretty much there already, but my confidence level in using the tool got a massive boost. I do wish I worked more with everyone else (even if by chilling in the General Voice chat room when everyone was there), because the times I did, I feel like I was getting more done than when working separately. But we’ve already established a while back that working together works better for us than working individually. So now this team member just has to remember to hop into general when working so she doesn’t get lost in her own head and give in to frustrations.

I got hit with allergies early on which messed up my flow a bit (not being able to look at screens is no fun), feeling like I was behind with my side of the project compared to everyone else. But the end result absolutely exceeded my expectations and is so much cooler than what I imagined we would have at the end of the two weeks.

Most important take away? It was a very successful experiment beautifully showcasing how much you can actually accomplish in Alloverse in just two weeks. (no surprises there, but it still feels amazing).

Voxar:

Building a defined place was a super inspirational way to work and gave things a clearer goal of what we really need to do instead of random apps floating around in nothing.

Tobi:

The decision to start a new, fun-oriented team project right after the winter break was fabulous. Not only did it turn out to be a great way to de-escalate the angst of getting back to work, but it came with additional (un)expected benefits as well:

  • By making sure the project is multidisciplinary, it promotes internal communication & collaboration. There were days when I worked with 2d art, 3d modelling and coding it all together. It’s been a while since I feel like I learned so much.
  • Dogfooding leads to a slew of downstream benefits – but finding a way to do it in a genuine, joyful way has been challenging. Building this Arcade was far and away the most successful approach yet. aps

Technically, a few issues became apparent with the building of a complex environment such as this one:

  • Transparency rendering is an issue. Now that we’re building more complex environments, we’re realising that transparency and rendering order is complex.
  • Serious performance issues can no longer be ignored. They’re suddenly make-it-or-break-it.

Pleasant surprises:

  • Alloverse’s spatial sound works wonders for ambiance. The bleeping and blooping from several arcade machines feels very genuine.
  • The fact that we were able to materialize this whole project in a virtual world is crazy.

Related Posts