So last night JKQuest hit its first significant milestone... after days of bashing unrelated projects and bits of code together like a caveman trying to make fire, they eventually came together and built into one single executable/apk. The first part of any of these ports is the most tedious and dull.. basically trying to get the code to compile (and then link). Some of the previous ports have taken advantage of Emile Belanger's (Beloko) excellent Android ports code as a base, which simplified things, but for this one I have chosen to use the latest OpenJK code, which I have forked and am applying some of the renderer changes from Emile's version so it can (hopefully!) render in OpenGLES (required for an android based device like the Quest 2).
This means I am having to create my own makefiles (the OpenJK build is currently for linux, so requires some finessing to work on Android) set up the additional dependencies that are needed such as gl4es (which in this case is acting as an OpenGLES 1 -> OpenGLES 2 translation layer), OpenSLES (I have removed SDL as it is clunky and I found it introduces a delay in the audio in previous ports), and my own VR code, there's a load of other stuff too dull to mention.
This "build" definitely won't run of course, at this point it isn't properly wired up, is missing fundamental functionality and contains all sorts of basic issues that need to be resolved before I can even think about pushing it to my Quest 2 and it'll be a good time after that I can even consider peeking through the lenses and hoping I see something other than inky blackness (well.. greyness on the Quest 2 to be fair).
But this, of all the milestones this project is going to have, is certainly one of the most significant.. the code builds!! _The_ most significant milestone is actually seeing the title menu appear for the first time in the headset (and even better if I hear some sound), but one step at a time, the fact I have code that currently has no compile or linker errors is a big step on the journey to the next Quest Native Team Beef port!
Addendum: On the subject of OpenXR.. I have decided for this port to re-use my existing "library" of source, which is based on the (now deprecated) Oculus Mobile SDK. This is fine as it is still supported by all Quest headsets, and should be for some time to come, but the future is not so certain regarding other Meta headsets (Quest Pro / Quest 3). There will no doubt come a time where each of the ports needs to be revisited in order to add OpenXR support, which I will be happy to do; but for now I want to concentrate on getting JKQuest up and running rather than going back several steps and starting again with a new framework I am not currently that familiar with.
- Dr Beef