I made a fully-featured WebXR experience in 13 KB zipped.
I didn't use any third-party libraries.
It's all custom-written vanilla JavaScript and WebGL.
I had to compromise on a number of axes to make it fit into 13 KB.
ROAR is designed for the Oculus Quest.
It can't be played in regular desktop nor mobile browsers in 2D.
The UI is minimal and 2D-only.
I think these were mostly the right trade-offs.
I prototyped different ideas and tested them with other people.
I know this sounds like a no-brainer, but it's a big improvement for me.
I usually tend to focus on the technical side too much.
And I usually end up with polished tech demos rather than games.
Admittedly, ROAR is a tech demo, but at least it was a 100% conscious decision.
The Oh no! test for evaluating narratives and the core gameplay loop.
The idea is to try to summarize the story in a single sentence starting with Oh no!
For ROAR, this was On no! The baby-zilla has been taken away!
It helped me come up with a narrative and clarify the idea for the core gameplay loop.
Goodluck and ECS.
It's amazing how just a few basic rules, like destroy this entity after X seconds and move forward each frame, can create interesting behaviors in the game.
Components like Lifespan, Toggle, Shake, and ControlMove will likely end up in my upcoming starter Good Defaults Goodluck template.
I kept a time sheet when working on ROAR.
I clocked 110 hours.
It's a lot, and frankly, I think it was too much.
I hope that recording the time I spend working will make me more aware of how much energy I dedicate to side projects.
I also recorded time spent writing this book: 28 hours.
I made frequent breaks and got outside a lot.
I probably wouldn't if it wasn't for the dog!
I know it sounds cliché, but spending time away from computer did wonders for my creativity and problem solving.
I started writing this book right after the competition's deadline and I finished it a few weeks later!
I'm calling it a book rather than a post mortem because of the copious amount of detail included here.
It's more of a game design bible / technical reference of how ROAR works.
The Making of Backcountry took 4 months to complete. ROAR's Making of took 3 weeks!
What Could Be Improved
I made a tech demo rather than a game.
There are some gameplay elements and a core loop, but they're rather lightweight.
This has been the bane of all my js13kGames submissions so far.
I get excited about the technical side too easily, and don't focus on gameplay enough.
With ROAR, it was at least intentional.
The goal was to build a WebXR experience in 13 KB zipped without any libraries.
ROAR is a proof of concept, a demo, if you will.
I spent too little time on the audio design.
Sound and music are must-haves in probably just about any game.
In VR in particular, they are even more important.
When things look like they're real and when the game feels like you're in it, and the audio is lacking, it creates a really jarring experience.
Unless the minimal audio is part of the experience, of course.
I missed an opportunity to allow the player to control the fire breath by shouting into the microphone.
In the released game, you have to press the trigger button on one of the Oculus Touch controllers.
During testing I saw friends open their mouths when they started breathing fire.
Argh, how come I didn't connect the dots!
Hindsight is 20/20.
I didn't do enough research about presenting UI inside the VR session.
The approach that I settled on was to exit the session when the player wins or dies, and show the UI in regular 2D HTML.
It's a jarring experience and it might even look like a bug.
I should have looked into generating textures from SVG and show some UI in-game.
I didn't explain the controls nor the rules of the game anywhere in the game.
Instead, I relied on people reading the description on the submission page.