Skip to content
Kane Rogers edited this page Feb 9, 2022 · 6 revisions

Frequently asked questions

NOTE: though this section is about Hotham, I've written it from my perspective as that seemed easiest. However, anyone is welcome to contribute!

  • @kanerogers

Want to know more about Hotham? I'm glad you asked. Here's some questions I've been asked about Hotham that I thought I could put into one place.

What's your background? Are you a game developer?

Great question. I worked in network security and founded various related startups for about ten years. When the COVID-19 pandemic hit in early 2020, I decided to take some time off work and investigate new technologies. As a person who'd played many computer games in my teenage years (though eschewed them completely in my 20s to focus on work), game development seemed really exciting. I was also extremely interested in the idea of jumping into a deep and complex field - how do images appear on a screen, anyway? How do you actually make 3D models? How do games do so many things on such small machines?

This curiosity led me to take a couple of online courses and teach myself Unity (including the terrific Catlike Coding), Blender (thanks to Andrew Price's Donut tutorial series) and some basics on computer graphics. I was absolutely hooked. After a month or so of mucking about, I decided to make a Chess game to see if I could ship an actual game on the App Store. I did all the modelling, sound and programming, and had an absolute blast. Then in October 2020, the Quest 2 was released and everything changed.

As a kid I'd always been fascinated by the idea of VR. I remember my Dad telling me about a demo he got given in the late 90s at his work, and the idea stuck with me. In the decades that past I heard VR being dismissed as a fad technology, and never looked into it. Then a mate of mine who'd been working in VR for years insisted I buy a Quest 2 at release, an my mind was blown. Those first 20 minutes of VR stay with me to this day - the feeling of complete awe, of being taken into another world. From that moment I knew this was something I wanted to work on.

As I still had no idea what I was doing, I decided to just try and port my chess game to the Quest. The result was Chess Together, which, for a very brief moment was the most popular chess game on the Quest 2. Probably.

After I finished Chess Together I was keen to work on something new (and never play another game of chess in my life, ever), so I started working on different game ideas. As is the case for when technical people work on something creative, they find a way to solve a technical problem instead.

I felt that my experience working with Unity was quite frustrating. Compared to the tools available in Rust, or even in the React / React Native eco-system, I felt the editor was clumsy and error prone. Importantly, I just felt like I didn't understand what was going on inside the engine, so when things went wrong, I couldn't intuit what was happening and how to fix it.

Further, I found it very difficult to build anything remotely complex for the Quest 2 in Unity. Scenes would suddenly judder and slow down, and the cause was difficult to determine. Again, because I didn't have a good understanding of Unity's internals, it was very difficult to profile and debug performance issues.

So, I decided to create Hotham.

Why did you start Hotham?

Continuing on from my experiences with Unity, I thought that making VR games with Rust was a completely obvious choice. It's fast enough to meet the incredibly strict performance requirements of VR games, but it's far more ergonomic and safe than C/C++. Having written some incredibly complex networking software with Rust, I was confident that it was the best choice for building VR games.

However, one thing that is lacking in the Rust ecosystem is tooling. I've been following Are We Game Yet website for a couple years and saw there still wasn't something comparable to Unity/Unreal Engine for Rust just yet. Bevy definitely piqued but (for reasons explained in detail below), it did not fit my requirements.

So, while on a hike up a certain mountain (see below for more detail on that), I thought about the idea of creating a system that would glue together what I thought were the best technologies currently available: OpenXR, Vulkan, glTF and the hardware of the Oculus Quest 2. I didn't know how I was going to that of course, but it sure seemed like a good idea at the time.

I figured it would be important to understand how rendering worked, so I followed the Learn Vulkan tutorial and got some triangles rendering on the screen. That first moment of rendering a triangle felt like developing some Godlike super power - I was able to conjure raw pixels from the ether! From there began the process of trying to get that triangle showing up on the Quest 2 (my adventures of which are documented here). With the basic pieces in place, I was good to go.

To kick my pants into action, I bet 3 of my close friends $1,500 that I could render a 3D object in the Quest 2, with head tracking in 30 days. This was a complete act of hubris, as I had only very recently got a triangle rendering.

Luckily, I was able to get the 3D object (an Asteroid, of all things!) rendering in the headset just in the nick of time. And thus, the very first Hotham app was born.

Beyond my personal adventures in learning game engine development, I'm also incredibly passionate about pushing forward Rust as the defacto language for game development, and making VR a first class platform for games. So it seemed absolutely obvious that the project should be completely open source: rising tides lift all boats.

Why not just be a Bevy plugin?

That's a good question, and I think one that Hotham will need to constantly ask itself. A very reasonable argument could be made that work on Hotham is wasted effort that could be consolidated in Bevy, as it's clearly the leader in the Rust gamedev ecosystem. A hand-wave response could be that having different approaches also helps makes an ecosystem thrive, but that feels a little weak.

The reason for me personally is I wanted to build a game engine that was exclusively focussed on mobile VR. That means making certain trade-offs and decisions that are difficult for even the large, established engines like Unreal and Unity: how do you have an engine that is equally optimised for use-cases on complete opposite ends of the resource spectrum: a 2D platformer for mobile devices on the one hand, and a 120hz, immersive, physically based 3D simulation in virtual reality on the other?

At the time I initially investigated Bevy, there wasn't support for OpenXR, nor was there solid support for wgpu's Vulkan backend running on Android. So to make things simple, I decided to just use Vulkan and OpenXR directly.

What's your plan for the project?

As far as I see it there are three possible models for the project:

  1. A fully open source, community driven project that's sponsored by individuals and large corporate donors (eg. Bevy, Blender, etc.)
  2. A commercial business that sells value-added products on top of the open source core (eg. Docker, etc.)
  3. A game studio that uses Hotham exclusively for its projects, and maintains the open source project.

I do not consider the possibility of making Hotham "closed source".

Option (3) is the most appealing to me because, well, I got into this whole thing because I wanted to make games to begin with! But games are notoriously difficult to make, and even harder to commercialise. But this is the option I'm heavily leaning towards.

Option (1) seems very fun, as I'm incredibly passionate about an open source game engine's ability to help the Rust/VR ecosystem grow.

Option (2) seems boring because business is boring.

How are you funding the project?

I used most of my savings to fund my work in 2021, so since then I've taken on small contract roles to keep a roof over my head and food on the table. There's also been people generous/insane enough to sponsor the project, which has been incredibly helpful!

Do you plan to support other devices?

At the moment Hotham is almost exclusively designed for the Oculus Quest 2, as it is currently the most popular and most fully featured standalone VR headset.

However, if another headset were to come along, we would certainly want to have first class support for it. Part of the appeal of OpenXR and Vulkan is that they are open standards, which should hopefully make the engine a bit more portable, should it come to that.

Do you plan to support non-VR games?

No. Bevy does an amazing job of that and it just makes no sense to overlap in that way. If you're hellbent on using Hotham for that purpose, it can certainly be done but I couldn't possibly understand why you'd want to do that!

Why is it called Hotham?

I was hiking up Mount Hotham when the idea of making a VR game engine using Rust and Vulkan popped into my head. It's also a kind of self-deprecating Australian humour: Mount Hotham, while the tallest mountain in my home state of Victoria, is but 1.8KM tall, compared with Everest's 8.8KM. The gag being Hotham is the small, insignificant player compared to the big ones (eg. Unity/Unreal).

Jokes are much funnier when you explain them.

How do you pronounce "Hotham"?

I was very surprised when I first got asked this question. I think it's because Hotham is an everyday word here in the east coast of Australia, so I'd never thought of someone referring to the project as "hot ham". That would be weird. Is hot ham a thing somebody would eat? Questions for another day.

I present to you The Definitive Guide on how to Pronounce Hotham, inspired by when, at age 12, I discovered an OGG of Linus Torvalds pronouncing Linux I could play to people who mis-pronounced Linux as "Lie-nux". I was very popular in High School.