UPDATED
I had been working on this engine & game for a year in small pockets of free time. Originally it was a single player, stationary game where enemies spawned on the other side of a portal in mixed reality. For this hackathon I added multiplayer support.
Inspirations
Probably a very common answer, but Ready Player One. I want to live in the Oasis, be able to travel from planet to planet, go anywhere and do anything with anyone. That is my ultimate goal.
What it does
Im building a mixed reality wave shooter game. Instead of guns, you use spells, cast with drawing a series of runes in the air with your fingers & hand tracking. The rune drawing focuses on a grid pattern, NOT ai, for reliability and performance sake.
How I built it
I'm a solo developer. This is a side project I work on 2 hours a day before work. Runs in a custom (wip) voxel engine built from the ground up in native/vulkan/openXR. Starting from basically just a vulkan renderer, I built up the engine around it. I originally implemented finger tracking as just a stepping stone to controllers as it was quicker to implement. The more I delayed adding controller input, the more I became attached to finger tracking input. I started to see finger tracking not as a gimmick, but as a viable way to interact with games. I noticed how most finger tracked games had annoying locomotion methods that broke immersion for me and felt clunky and like a hindrance and a bother. I decided that I wanted to focus my engine only on finger tracking and innovate to open a path for finger tracked games to be deeper and more rich. It seemed while there were some cool tech demos, nobody had really tried to make anything of substance with finger tracking.
Challenges I ran into
Moving from Unity to native, getting my head around Vulkan was very slow and painful. OpenXR's extension system was very confusing at first. Lack of good documentation made it worse. Having mostly built my game before the hackathon and submitting it as an update, retro-fitting multiplayer into it was a lot of hard work. If I had more time I would properly implement client side prediction & rollback and host/server authority. Right at the end my frame rate started tanking without making any changes. I realised suddenly the game was being thermally throttled when it wasn't before. I expect meta pushed a change to the settings in this regard, so I had to cut the rendering costs by downgrading graphics a bit.
Accomplishments that I'm proud of
Fluid, responsive and accurate game controls with hand-tracking only. Opening a path to a richer hand-tracked only game. I'm also proud of being able to retro-fit multiplayer into a game that wasn't built for it, in such a small amount of time.
What I learned
I already sort of knew this, but its very tricky to add multiplayer to something built as single player.
What's next for Runes: Unbound
I wanted to add a hand-free innovative locomotion technique that I have as a prototype into this game but ran out of time for this competitions build. Then procedurally generated planet-scale open worlds with modifiable terrain. I have an LoD system already in place, and the architecture already supports planet scale worlds, even in multiplayer. Not only do I have a streaming system that loads in new parts of the world at runtime, but even OTHER worlds. The end goal is to stream in a 'space' world if you go upwards enough, and have a seamless planet to space to other planets traversal.
Built With
- android-studio
- c++
- openxr
- vulcan


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