Repository navigation
Releases
Homeworld: Unbound 0.14 — your fleet answers you again
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
Polish, after the two launch bugs 0.13 fixed. Nothing here is urgent, but the first item is the sort of thing you feel rather than notice.
Your fleet answers you again
Give a move order in VR and nothing happened — no chime, no pilot on the radio, nothing. Assign a hotkey group and it was silent. On a monitor you would at least see the ships turn; in a headset the destination is often behind you or across the room, and that callback was frequently the only sign the order had been taken at all.
The VR controls talk to the engine directly rather than pretending to be keyboard presses, which is deliberate — a key the player has unbound would otherwise make the command vanish without a word — and the sounds the mouse and keyboard pick up along the way were quietly lost with it.
So: moves get the pilots acknowledging, recalling a hotkey group clicks and names it, assigning one calls it out, and kamikaze clicks. Halt stays silent, because it is silent on a PC too.
The move line points at your ships
The line from your fleet to a move destination started wherever the ships had been when you began giving the order. For a fleet already under way that is a point in empty space they have long since flown past, with the line stretching back to nothing. It follows them now.
The controls card knows about the sensor view
It still said "Click stick — open Sensors", which was true and told you nothing. Everything else on that card is a screen you dismiss before playing, so that is the natural reading of it, and it is exactly backwards: the sensor view is somewhere you give orders from. The card now says what the colours mean, that pointing at a sphere picks it out, that every order still works while you are in there, that the zoom comes in on what you have selected rather than the middle of the map, and that leaving takes you to whatever you picked.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install, and Developer Mode is only needed for that first sideload.
Already have it? Install this over the top — do not uninstall first. Installing over keeps your saves, your settings and the file permission. Uninstalling deletes your saves, and your game data in Downloads is the only thing that survives it.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, finds and copies your game data if you have it, and grants the file access the app needs.
Playing the full campaign
Nothing is asked for while you play. The demo runs the moment you install it. When you quit, the headset asks whether to give the app All files access — that is the one moment there is no running game for the panel to take over. Granting it is what lets the game find a copy of Homeworld you own.
- Install and play the demo.
- Quit. Grant All files access when the headset asks.
- Put your
homeworld.big,HW_Music.wxdandHW_Comp.vcein Downloads. - Launch. It finds them and starts the full campaign.
You can also grant it yourself at any time in the headset's settings, under the app's permissions. install.py grants it over adb, so if you set the headset up from a PC you will never see the prompt. The Remastered Collection is not required — the classic files are in its Homeworld1Classic/Data folder and work directly.
If the game appears but will not respond to your controllers, press the Meta button to close any panels left open behind it. Launching straight from SideQuest leaves its own panel holding your input.
Multiplayer
Unchanged from 0.8, and still true:
The host forwards TCP 10500 and UDP 10600. Nobody else configures anything. Anything a player cannot be reached at directly is passed on by the host.
Two players across the internet works and was tested between a PC on home broadband and a headset on a phone's mobile data.
More than two has not been tested. Nothing is known to stand in the way of it, but nobody has sat three machines on three different connections and played a game, and that is not the same thing.
You still cannot both be on the same home network range. Most routers hand out 192.168.1.x; if both of you are on it, one needs to change. Only affects internet play.
Windows players cannot host or join. The lobby data goes over the wire in a layout that is a different size on Windows than on Linux and Android, so the two cannot read each other. In-game traffic is unaffected; this is discovery and joining, and it is the next thing being worked on.
Known
The sensor view shifts slightly while ships are moving. The regions it draws are recomputed from where the fleet is, and they jump rather than slide when a ship crosses between them.
Ships still move in steps rather than gliding in multiplayer, because the simulation only advances as network updates arrive.
Homeworld: Unbound 0.13 — quitting and relaunching, and the first launch
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
A fix release, and if you are on 0.11 or 0.12 it is worth taking. Two things were broken that a player meets immediately and cannot work around. Everything new in 0.11 — the Sensors Manager rebuilt as a room-scale 3D view — is unchanged.
Quitting and launching again did not work
Quit the game, launch it again, and it sat in the headset's loading environment and never started. A third press worked. That has been true of every release so far.
Android keeps an app's process around after you quit and hands it back on the next launch, and the engine cannot start twice in one process — the second run began over state the first had left behind and gave up. It looked like a first-launch quirk rather than a fault because the failure cleaned up after itself: it destroyed the very process that was wrong, so the next launch found nothing to reuse and worked.
The game now closes its process properly when you quit, so every launch starts clean.
A fresh install hung on its first launch
Installing from SideQuest for the first time, the app asked for file access before it had started, and then sat on the loading screen forever. Granting the permission did not help. Uninstalling and reinstalling made it more likely rather than less, because that clears the permission that was hiding it.
The request opened a system settings panel, the panel took focus, and the game will not start drawing without focus — so it never drew, and focus never came back to something that had never appeared.
How the permission works now
Nothing is asked for while you play. The demo runs the moment you install it and never needs the permission at all.
When you quit, the headset asks whether to give the app All files access. That is the one moment there is no running game for the panel to take over. Granting it is what lets the game find a copy of Homeworld you own — without it, the app cannot see your Downloads folder, so it cannot tell whether your files are there.
So the full sequence for playing the campaign standalone, with no PC involved:
- Install and play the demo.
- Quit. Grant All files access when the headset asks.
- Put your
homeworld.big,HW_Music.wxdandHW_Comp.vcein Downloads. - Launch. It finds them and starts the full campaign.
You can also grant it yourself at any time, in the headset's settings under the app's permissions. install.py grants it over adb, so if you set the headset up from a PC you will never see the prompt.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install, and Developer Mode is only needed for that first sideload.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, finds and copies your game data if you have it, grants the file access the app needs, and brings across anything left in the old package's folder.
The Remastered Collection is not required. If that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly.
Multiplayer
Unchanged from 0.8, and still true:
The host forwards TCP 10500 and UDP 10600. Nobody else configures anything. Anything a player cannot be reached at directly is passed on by the host.
Two players across the internet works and was tested between a PC on home broadband and a headset on a phone's mobile data.
More than two has not been tested. Nothing is known to stand in the way of it, but nobody has sat three machines on three different connections and played a game, and that is not the same thing.
You still cannot both be on the same home network range. Most routers hand out 192.168.1.x; if both of you are on it, one needs to change. Only affects internet play.
Windows players cannot host or join. The lobby data goes over the wire in a layout that is a different size on Windows than on Linux and Android, so the two cannot read each other. In-game traffic is unaffected; this is discovery and joining, and it is the next thing being worked on.
Known
The sensor view shifts slightly while ships are moving. The regions it draws are recomputed from where the fleet is, and they jump rather than slide when a ship crosses between them.
Ships still move in steps rather than gliding in multiplayer, because the simulation only advances as network updates arrive.
Homeworld: Unbound 0.12 — demo to full game in one launch
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
A fix release. Everything new in 0.11 — the Sensors Manager rebuilt as a room-scale 3D view — is unchanged.
Adding your game data after playing the demo took two launches
Install from SideQuest, play the demo, then copy your own Homeworld files into Downloads and come back to it: the next launch sat in the headset's loading environment and never started. Pressing launch a second time worked, so it read like a first-launch quirk.
It was not a hang. It was a crash, and the reason it looked like neither is that the game died before it drew anything at all — the headset's compositor keeps showing its own environment when an app never presents a frame, which from the inside is indistinguishable from a freeze.
Whether you get the demo or the full campaign is decided when the app starts and is built into the engine it loads, and Android reuses a running app rather than starting it fresh. So the app correctly noticed your game data had appeared, then handed it to the demo engine that was already loaded and could not be swapped, which went looking for a demo file that was not there and gave up. The second launch worked because the crash had cleared the app out of memory, so it started clean.
This is exactly the path 0.10 opened up — try the demo, buy the game, add your files — and it has been broken since.
If this is happening to you now, launching twice is a complete workaround, and updating removes it.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install, and Developer Mode is only needed for that first sideload.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, finds and copies your game data if you have it, grants the file access the app needs, and brings across anything left in the old package's folder.
Playing the full campaign
Put your own copy of Homeworld's data in Downloads — loose, or in a folder of its own — and turn on All files access for the app.
| Put in Downloads | What it is |
|---|---|
homeworld.big |
the game |
HW_Music.wxd |
music |
HW_Comp.vce |
speech |
The game reads them where they lie; nothing is copied and nothing is renamed. The Remastered Collection is not required — if that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly.
The demo runs without any of this. It does ask for All files access on the first run, because without that permission it cannot see Downloads at all and has no way to tell whether you own the game. Decline it and the demo still plays.
Multiplayer
Unchanged from 0.8, and still true:
The host forwards TCP 10500 and UDP 10600. Nobody else configures anything. Anything a player cannot be reached at directly is passed on by the host.
Two players across the internet works and was tested between a PC on home broadband and a headset on a phone's mobile data.
More than two has not been tested. Nothing is known to stand in the way of it, but nobody has sat three machines on three different connections and played a game, and that is not the same thing.
You still cannot both be on the same home network range. Most routers hand out 192.168.1.x; if both of you are on it, one needs to change. Only affects internet play.
Windows players cannot host or join. The lobby data goes over the wire in a layout that is a different size on Windows than on Linux and Android, so the two cannot read each other. In-game traffic is unaffected; this is discovery and joining. It is the next thing being worked on.
Known
The sensor view shifts slightly while ships are moving. The regions it draws are recomputed from where the fleet is, and they jump rather than slide when a ship crosses between them.
Ships still move in steps rather than gliding in multiplayer, because the simulation only advances as network updates arrive.
Homeworld: Unbound 0.11 — the Sensors Manager in the room
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
The engine draws the battle in tracked stereo around you, and you command the fleet by pointing at it. Nothing is streamed from a PC and there is no virtual monitor involved.
The Sensors Manager is a place now
Homeworld's strategic map has always been the odd one out among its screens, because it was never really a screen. Build and Research are lists of ships and costs, and a flat panel is the right home for them. The Sensors Manager is a 3D scene with its own camera, and it is where the game expects you to move fleets across distances the normal view cannot reach, and where hyperspace jumps are aimed. Until now this port drew it flat on the panel at your wrist — correct, cautious, and the one place that choice cost anything.
Open it now and the battlespace comes into the room. The navigation disc with its bearing ticks lies out in front of you at the scale of the whole engagement. Sensor coverage is drawn as it is described in the manual and never quite was on screen: spheres, which you can look across or lean into. Your ships are points inside them, with class glyphs, coloured the way the map's own legend says — green yours, yellow an ally's, red an enemy's.
You do not have to leave to do anything. Point at a blob and it lights up. Select ships, open the command wheel, set a formation, order an attack, draw a flight path — all of it works from inside the view, which was never true of the map on a PC either. Push the right stick to come down on what you have selected rather than on the middle of the map. Press the stick again to leave, and you arrive at whatever you were looking at.
It sounds like the Sensors Manager too. The effects duck away, the intro plays as it pulls back, and the sound of space returns when your fleet does.
Also fixed
- Dragging on the panel never worked. Press and drag anywhere on the wrist panel — a selection box on the map, the map's own Pan control, the ship view — and the pointer stopped dead where you pressed it and stayed there until you let go. Nothing you dragged over was ever selected, because as far as the game was concerned the pointer had not moved. The cause is that Homeworld starts asking the mouse how far it has moved rather than where it is the moment a drag begins, and a headset has no mouse to ask. It had been that way in every build so far.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install, and Developer Mode is only needed for that first sideload.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, finds and copies your game data if you have it, grants the file access the app needs, and brings across anything left in the old package's folder.
Playing the full campaign
Put your own copy of Homeworld's data in Downloads — loose, or in a folder of its own — and turn on All files access for the app.
| Put in Downloads | What it is |
|---|---|
homeworld.big |
the game |
HW_Music.wxd |
music |
HW_Comp.vce |
speech |
The game reads them where they lie; nothing is copied and nothing is renamed. The Remastered Collection is not required — if that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly. The demo needs none of this and runs the moment you install it.
Multiplayer
Unchanged from 0.8, and still true:
The host forwards TCP 10500 and UDP 10600. Nobody else configures anything. Anything a player cannot be reached at directly is passed on by the host.
Two players across the internet works and was tested between a PC on home broadband and a headset on a phone's mobile data.
More than two has not been tested. Nothing is known to stand in the way of it, but nobody has sat three machines on three different connections and played a game, and that is not the same thing.
You still cannot both be on the same home network range. Most routers hand out 192.168.1.x; if both of you are on it, one needs to change. Only affects internet play.
Known
The sensor view shifts slightly while ships are moving. The regions it draws are recomputed from where the fleet is, and they jump rather than slide when a ship crosses between them. It is being worked on.
Ships still move in steps rather than gliding in multiplayer, because the simulation only advances as network updates arrive.
Homeworld: Unbound 0.9 — sharper ships, and saving fixed
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
The engine draws the battle in tracked stereo around you, and you command the fleet by pointing at it. Nothing is streamed from a PC and there is no virtual monitor involved.
The ships are sharp again
Homeworld's surface textures are tiny. The Mothership's are 32x32 and 64x64, one per surface region, and they were drawn to be read at 1999 resolutions.
Smoothing them was filtering pixel art: it recovers no detail, because there is none to recover, and smears what is already there. A headset magnifies a 64x64 texture far past anything its author had in mind, so the blur was not subtle — it was most of what you were looking at.
It is off by default now. This is still a setting, under Options → Video → Custom Effects → "Surface Filtering", and it is still saved in your config, so this changes what a fresh install looks like and nothing else. If you preferred it smoothed, turn it back on and it stays on.
Only magnification changed. Distant ships are still mipmapped, which matters more in stereo than it ever did on a monitor — shimmer that crawls differently in each eye while your head moves is unpleasant rather than merely ugly.
Saving works when your saves were copied on by hand
If you have ever put a SavedGames folder onto the headset yourself — with adb push, SideQuest's file browser, or by restoring a backup — saving a new game would have failed, every time, with:
error writing to file, check disk space
Your disk was fine. A folder copied on that way belongs to whoever copied it rather than to the game, and the game was left able to read it but not add to it. That is a genuinely nasty way to fail: the save screen listed every save you had and loaded any of them perfectly, so nothing pointed at permissions. Only creating a new save was blocked, because reading a folder and adding to it are separate permissions.
install.py now sets those folders so the game can write to them. If you hit this, re-running the installer fixes it and your existing saves are kept.
Saving has never been affected on a normal install where the game made the folder itself.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install.
For the full campaign
Once it has run once, put three files from your own copy of Homeworld into
Android/data/org.homeworldunbound.game/files
using SideQuest's device file browser, or adb push:
| From your copy | What it is |
|---|---|
homeworld.big |
the game |
HW_Music.wxd |
music |
HW_Comp.vce |
speech |
Names do not need changing — it matches them however they are capitalised, and renames them itself. Running the game once first matters: that is what creates the folder, correctly owned. A folder made by hand belongs to the wrong user and the game cannot read it.
Relaunch and you are in the full campaign, with the demo files cleared out for you.
The Remastered Collection is not required. If that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, finds and copies your game data if you have it, and brings across anything left in the old package's folder.
Multiplayer
Unchanged from 0.8, and still true:
The host forwards TCP 10500 and UDP 10600. Nobody else configures anything. Anything a player cannot be reached at directly is passed on by the host.
Two players across the internet works and was tested between a PC on home broadband and a headset on a phone's mobile data.
More than two has not been tested. Nothing is known to stand in the way of it, but nobody has sat three machines on three different connections and played a game, and that is not the same thing.
You still cannot both be on the same home network range. Most routers hand out 192.168.1.x; if both of you are on it, one needs to change. Only affects internet play.
Homeworld: Unbound 0.10 — the full campaign without a PC
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
The engine draws the battle in tracked stereo around you, and you command the fleet by pointing at it. Nothing is streamed from a PC and there is no virtual monitor involved.
The full campaign no longer needs a computer
Until now, playing the full game meant plugging the headset into a PC and using adb or SideQuest to copy your files into the app's private folder. Not because anyone wanted it that way — because that folder was the only place the game could read from, and Android 11 closed it to every file manager on the device. There was no way to get a file into it from the headset alone.
That is fixed. Put your own copy of Homeworld's data in Downloads — loose, or in a folder of its own — and turn on All files access for the app. That is the whole procedure.
| Put in Downloads | What it is |
|---|---|
homeworld.big |
the game |
HW_Music.wxd |
music |
HW_Comp.vce |
speech |
The game searches Downloads, Documents and the top of your storage, plus one folder deeper in each, and reads the files where they are. Nothing is copied, so a second 600 MB never appears on the headset, and nothing is renamed, so the files stay exactly as you had them. Capitalisation does not matter — homeworld.big and Homeworld.big both work now, which was not true before.
The first launch with no game data asks for the permission once. If you said no, or want it later, it is under the app in the headset's settings as All files access. The demo needs none of this and still runs the moment you install it.
Saves and settings stay in the app's own folder, so this does not put anything in with your data (bar a 135 KB loading image).
Thanks to TofuLordSeitan666 on r/OculusQuest for pointing out that this was the barrier to playing standalone, and for describing how other ports handle it.
If you already have it working
Nothing to do. Data in the app's private folder is still found first and still works. The installer now offers Downloads as the recommended option, and will move you over if you want.
Also fixed
- Saving after copying saves across by hand. A
SavedGamesfolder put on the headset withadb pushor a file browser belongs to whoever copied it rather than to the game, which could read it but not add to it. Every existing save listed and loaded perfectly and every new save failed with "error writing to file, check disk space" — which points nowhere near the real cause. Re-running the installer fixes an affected headset.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install, and Developer Mode is only needed for that first sideload.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, finds and copies your game data if you have it, grants the file access the app needs, and brings across anything left in the old package's folder.
The Remastered Collection is not required. If that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly.
Multiplayer
Unchanged from 0.8, and still true:
The host forwards TCP 10500 and UDP 10600. Nobody else configures anything. Anything a player cannot be reached at directly is passed on by the host.
Two players across the internet works and was tested between a PC on home broadband and a headset on a phone's mobile data.
More than two has not been tested. Nothing is known to stand in the way of it, but nobody has sat three machines on three different connections and played a game, and that is not the same thing.
You still cannot both be on the same home network range. Most routers hand out 192.168.1.x; if both of you are on it, one needs to change. Only affects internet play.
Ships move in steps in multiplayer rather than gliding, because the simulation only advances as network updates arrive. Known, understood, and being worked on.
Homeworld: Unbound 0.8 — only the host sets up a port
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
The engine draws the battle in tracked stereo around you, and you command the fleet by pointing at it. Nothing is streamed from a PC and there is no virtual monitor involved.
Only the host sets up a port now
In 0.7, playing across the internet with more than two people would have meant every player configuring their router — and a player on mobile data has no router of their own to configure, so they could not have joined at all.
Homeworld sends every player's orders to every other player directly. That is fine on a home network and awkward across the internet, where most people cannot be reached from outside without setting something up. So anything a player cannot reach directly is now passed on by the host instead of being dropped.
The host forwards TCP 10500 and UDP 10600. Nobody else configures anything.
The game itself is unaware any of this is happening — it still thinks everyone is talking directly — which is why nothing about how a match plays has changed.
Being honest about what is tested
Two players across the internet works, and was re-tested for this release between a PC on home broadband and a headset on a phone's mobile data.
More than two has not been tested. Nothing is known to stand in the way of it any more, but nobody has sat three machines on three different connections and played a game, and that is not the same thing. If you try it, the host still needs those two ports and everyone else should need nothing.
Also fixed
Players used to be addressed by the name their own machine knew itself by, which meant nothing to anyone else — the port a phone network hands out changes constantly, and two players could not be told apart once more than one was involved. Everyone now works out where everyone else actually is, from the announcements they are already exchanging, rather than guessing.
You still cannot both be on the same home network range. Most routers hand out 192.168.1.x; if both of you are on it, one needs to change. Only affects internet play.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install.
For the full campaign
Once it has run once, put three files from your own copy of Homeworld into
Android/data/org.gardensofkadesh.homeworld/files
using SideQuest's device file browser, or adb push:
| From your copy | What it is |
|---|---|
homeworld.big |
the game |
HW_Music.wxd |
music |
HW_Comp.vce |
speech |
Names do not need changing — it matches them however they are capitalised, and renames them itself. Running the game once first matters: that is what creates the folder, correctly owned. A folder made by hand belongs to the wrong user and the game cannot read it.
Relaunch and you are in the full campaign, with the demo files cleared out for you.
The Remastered Collection is not required. If that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, finds and copies your game data if you have it, and brings across anything left in the old package's folder.
Playing a multiplayer game
Both players need the same data — two demo installs, or two full copies. Then:
- Multiplayer, then LAN or Internet (they go to the same place).
- Tap the Name field, type a name, press Go.
- On a LAN, games on your network are already listed. Over the internet, type the host's address into Join by address and press Add Host; their game appears a moment later.
- Host with Create Game — the game needs a name of two characters or more, or it silently refuses to start — or pick one in the list and Join Game.
- The host presses Start Game.
Notes
The package name changed in 0.7, from org.gardensofkadesh.homeworld to org.homeworldunbound.game. If you are coming from 0.6 or earlier, use install.py — it brings your saves and game data across and removes the old app. Installing the APK on its own leaves them behind.
Quest 3 only in practice — the manifest lists Quest 2 and Quest Pro, but neither is tested.
A match has not yet been played through to the end, so a desync late in a long game is possible. Sync checking is on, so if it happens it reports itself rather than quietly diverging.
No game data from any commercial release is distributed here. The 1.05 demo data inside the APK is the copy Relic made freely redistributable. Homeworld is a trademark of its respective owners; this is an unaffiliated fan project, built on the source Relic released in 2003 by way of Homeworld SDL and Gardens of Kadesh.
Homeworld: Unbound 0.7 — internet play fixed, and a new package name
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
The engine draws the battle in tracked stereo around you, and you command the fleet by pointing at it. Nothing is streamed from a PC and there is no virtual monitor involved.
Read this before you install
The app has a new package name. It was org.gardensofkadesh.homeworld, inherited from the project this was forked from; it is now org.homeworldunbound.game.
Android keys an app's data folder off that name, so as far as your headset is concerned this is a different app. It installs alongside the old one, and your game data and saved games stay behind in the old folder. You would end up with two entries in your library, both called "Homeworld: Unbound", one of which has all your data and one of which does not — and no way to tell them apart.
If you have played an earlier version
Use the installer. It brings everything across on the headset, which takes seconds rather than re-copying most of a gigabyte over USB, and offers to remove the old app afterwards:
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt will find your existing data, ask before touching anything, and check every file arrived before it deletes the original.
If you are installing fresh
Nothing to think about — install the APK as usual.
The app now reports its own version number
The APK used to declare itself as version 1.2.0, build 1. That was the version of HomeworldSDL, the engine this is built on — it had nothing to do with any release here, and it never changed, so every build looked identical to anything that compares versions. Sideloaders and app listings use exactly that number to decide whether a build is newer, which meant an update never registered as one.
It now matches the release: version 0.7, build 7, and both go up with each one from here.
If you grabbed 0.7 in the first twenty minutes after it went up, the APK attached here has been replaced with an identical build carrying the corrected version. There is no need to reinstall unless you want your headset to show the right number.
Also in this build
Playing over the internet works, including the last thing that stood in the way: the host recorded a joining player under the address its own connection reported rather than the address that player calls itself, so at Start Game the joining player looked for itself in the player list, was not there, and the game died. That killed every internet game at the moment it began, and it is fixed.
The player hosting forwards two ports on their router: TCP 10500 and UDP 10600. Whoever is joining forwards nothing — they type the host's public address into Join by address on the lobby screen.
Two players over the internet, and you cannot both be on the same home network range. Most routers hand out 192.168.1.x; if both of you are on it, one needs to change. Neither limit affects playing on a LAN.
A remembered data folder that has gone is no longer fatal. The game stored the full path to its data and never checked it still existed, so anything that moved it — this rename, a hand-copied install, a restored backup — produced a startup error naming a path you never typed and could not correct from inside the game. It now falls back to where it is actually running.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install.
For the full campaign
Once it has run once, put three files from your own copy of Homeworld into
Android/data/org.gardensofkadesh.homeworld/files
using SideQuest's device file browser, or adb push:
| From your copy | What it is |
|---|---|
homeworld.big |
the game |
HW_Music.wxd |
music |
HW_Comp.vce |
speech |
Names do not need changing — it matches them however they are capitalised, and renames them itself. Running the game once first matters: that is what creates the folder, correctly owned. A folder made by hand belongs to the wrong user and the game cannot read it.
Relaunch and you are in the full campaign, with the demo files cleared out for you.
The Remastered Collection is not required. If that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, finds and copies your game data if you have it, and brings across anything left in the old package's folder.
Playing a multiplayer game
Both players need the same data — two demo installs, or two full copies. Then:
- Multiplayer, then LAN or Internet (they go to the same place).
- Tap the Name field, type a name, press Go.
- On a LAN, games on your network are already listed. Over the internet, type the host's address into Join by address and press Add Host; their game appears a moment later.
- Host with Create Game — the game needs a name of two characters or more, or it silently refuses to start — or pick one in the list and Join Game.
- The host presses Start Game.
Notes
Quest 3 only in practice — the manifest lists Quest 2 and Quest Pro, but neither is tested.
A match has not yet been played through to the end, so a desync late in a long game is possible. Sync checking is on, so if it happens it reports itself rather than quietly diverging.
No game data from any commercial release is distributed here. The 1.05 demo data inside the APK is the copy Relic made freely redistributable. Homeworld is a trademark of its respective owners; this is an unaffiliated fan project, built on the source Relic released in 2003 by way of Homeworld SDL and Gardens of Kadesh.
Homeworld: Unbound 0.6 — internet play (superseded by 0.7)
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
The engine draws the battle in tracked stereo around you, and you command the fleet by pointing at it. Nothing is streamed from a PC and there is no virtual monitor involved.
Playing against someone over the internet
0.5 shipped this and it did not work. Three separate things were broken, and none of them showed up on a local network, because a LAN keeps equal the two things they each confused: the address a machine calls itself, and the address someone else can reach it at. All three are fixed, and this has now been played between a headset on mobile data and a PC on a home broadband connection.
- Peers named each other by addresses that only mean something on their own network, so a connection would come up and then every message on it was quietly dropped.
- Replies went to port 10600 regardless of where the packet had come from. On mobile data that is never right — thousands of subscribers share one address, so the network cannot keep your port, and the answer went somewhere that did not exist. The game simply never appeared in the joining player's list.
- Worst of it: the host recorded a joining player under the address its own connection reported, rather than the address that player calls itself. At Start Game the joining player looked for itself in the player list, was not there, and the game died on the spot. That one killed every internet game at the moment it began.
What you need to do
The player hosting the game forwards two ports on their router, to the machine that will host:
| Port | Protocol |
|---|---|
| 10500 | TCP |
| 10600 | UDP |
That is it. The player joining forwards nothing — they type the host's public address into Join by address on the lobby screen and press Add Host, and the host learns them from the first packet they send.
If the host is on Linux with a firewall running, the ports need opening there too — sudo ufw allow 10500/tcp and sudo ufw allow 10600/udp. A blocked local firewall and a wrong router forward look exactly the same from inside the game.
The host can find their public address at whatismyip.com or by running curl ifconfig.me.
Two limits worth knowing
- Two players over the internet. More than that needs the players to tell each other who they are, which the protocol does not do yet. On a local network the normal limit applies.
- You cannot both be on the same home network range. Most routers hand out
192.168.1.xout of the box, and if both of you are on it, each machine goes looking for the other on its own network and finds nothing — or worse, finds a neighbour's printer. One of you changing your router's range to something like192.168.2.xsidesteps it. This does not affect playing on a LAN.
Also in this build
The keyboard keeps out of your way. It is shorter than it was, the screen shows through between the keys, and instead of jumping to the top of the panel when it has to move, it now sits directly above whatever you are typing into. It also stays clear of the button column down the right, so Join Game, Start Game and the address field never disappear behind it.
Typing into Join by address works. It went into the lobby's chat box instead — the chat box holds the keyboard for as long as that screen is up and never lets go, so the address field lost focus again the instant it got it.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install.
For the full campaign
Once it has run once, put three files from your own copy of Homeworld into
Android/data/org.gardensofkadesh.homeworld/files
using SideQuest's device file browser, or adb push:
| From your copy | What it is |
|---|---|
homeworld.big |
the game |
HW_Music.wxd |
music |
HW_Comp.vce |
speech |
Names do not need changing — it matches them however they are capitalised, and renames them itself. Running the game once first matters: that is what creates the folder, correctly owned. A folder made by hand belongs to the wrong user and the game cannot read it.
Relaunch and you are in the full campaign, with the demo files cleared out for you.
The Remastered Collection is not required. If that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, and finds and copies your game data if you have it.
Playing a multiplayer game
Both players need the same data — two demo installs, or two full copies. Then:
- Multiplayer, then LAN or Internet (they go to the same place).
- Tap the Name field, type a name, press Go.
- Hosting: Create Game, and give it a name of two characters or more — under two and it refuses without saying why.
- Joining on a LAN: the game is already in the list. Joining over the internet: type the host's public address into Join by address, press Add Host, and it appears a moment later.
- Pick it and press Join Game.
- The host presses Start Game.
Over the internet the host needs the two ports forwarded first — see above.
Notes
Quest 3 only in practice — the manifest lists Quest 2 and Quest Pro, but neither is tested.
A match has not yet been played through to the end, so a desync late in a long game is possible. Sync checking is on, so if it happens it reports itself rather than quietly diverging.
Everyone plays at the pace of the slowest connection. That is how the game has always worked — every machine simulates the same battle in step — and it is not something a transport can improve on.
No game data from any commercial release is distributed here. The 1.05 demo data inside the APK is the copy Relic made freely redistributable. Homeworld is a trademark of its respective owners; this is an unaffiliated fan project, built on the source Relic released in 2003 by way of Homeworld SDL and Gardens of Kadesh.
Homeworld: Unbound 0.5 — a keyboard, and multiplayer you can reach (superseded by 0.6)
Homeworld (1999) in room-scale VR, running natively on a Meta Quest 3.
The engine draws the battle in tracked stereo around you, and you command the fleet by pointing at it. Nothing is streamed from a PC and there is no virtual monitor involved.
You can play against someone else
Multiplayer has been back since 0.4 in the sense that the code ran. It was not something you could actually reach from inside a headset: hosting or joining meant naming yourself, naming a game, and — to play against anyone not on your own network — typing an address, and there was nowhere to type anything.
There is a keyboard now. It comes up on the panel whenever the game is waiting for text, and you type on it by pointing at a key and pulling the trigger. It is not a multiplayer thing: it appears for your player name, a game's name, lobby and in-game chat, passwords, and the name a save game is given — anywhere the game has ever asked you to type.
It stays out of your way. It sits along the bottom of the screen, moves to just above the field when the field is down there, keeps clear of the button column running down the right so nothing you might want to press vanishes behind it, and the screen shows through between the keys. CAPS latches, and shifts letters only, so the number row stays digits while it is on.
Join by address. Playing across the internet needs one player to name the other, and there is nowhere in Homeworld's own screens to do that — a LAN never needed it. So the lobby now has a Join by address panel of its own, in the space the screen leaves empty beside Join Game. Type the host's address, press Add Host, and their game appears in the list beside anything on your own network. It remembers what you typed for next time.
Both connection buttons open these screens now. Internet used to open a login for WON, the matchmaking service the game shipped with, which has not existed since 2004 and would sit there accepting a password forever — so the button named after the thing this port can do was the one that led nowhere.
And it works, which it did not. Every machine advertises the address it has on its own network, so behind a router both ends were naming each other by addresses that mean nothing outside the other's house. The connection came up, looked fine, and then every message on it was quietly dropped. That is fixed.
Before you try it
- The host forwards two ports: TCP 10500 and UDP 10600. Whoever is joining forwards nothing — they just type the host's public address.
- Two players over the internet, for now. On a LAN there is no such limit.
- You need to be on different home network ranges. If both of you are on
192.168.1.x— which is most routers out of the box — one of you has to change theirs, or each machine will look for the other on its own network. LAN play does not care.
Neither of us has yet played a full match across a real internet connection, so treat this as something to try rather than something proven. LAN play between a headset and a PC has been solid since 0.4.
Getting it on the headset
The headset needs Developer Mode first:
- In the Meta Horizon app on your phone, open your headset's settings and turn on Developer Mode. The first time, Meta asks you to create a free developer organisation. It takes a minute and costs nothing.
- Reboot the headset.
- Plug it into your computer by USB. Put the headset on — there is an "Allow USB debugging" prompt waiting. Tick Always allow and accept it. Nothing works until you do.
The short version
Install homeworld-unbound-vr.apk with SideQuest, Sidenoder, or adb install. Launch it. That is the whole demo install.
For the full campaign
Once it has run once, put three files from your own copy of Homeworld into
Android/data/org.gardensofkadesh.homeworld/files
using SideQuest's device file browser, or adb push:
| From your copy | What it is |
|---|---|
homeworld.big |
the game |
HW_Music.wxd |
music |
HW_Comp.vce |
speech |
Names do not need changing — it matches them however they are capitalised, and renames them itself. Running the game once first matters: that is what creates the folder, correctly owned. A folder made by hand belongs to the wrong user and the game cannot read it.
Relaunch and you are in the full campaign, with the demo files cleared out for you.
The Remastered Collection is not required. If that is the copy you own, the classic files are in its Homeworld1Classic/Data folder and work directly.
Or use the installer
git clone https://github.com/bearstonem/Homeworld.git
cd Homeworld
python3 install.py # Linux, macOS
py install.py # WindowsIt finds adb, connects over USB or wirelessly, installs this APK, and finds and copies your game data if you have it.
Playing a multiplayer game
Both players need the same data — two demo installs, or two full copies. Then:
- Multiplayer, then LAN or Internet (they go to the same place).
- Tap the Name field, type a name, press Go.
- On a LAN, games on your network are already listed. Over the internet, type the host's address into Join by address and press Add Host; their game appears a moment later.
- Host with Create Game — the game needs a name of two characters or more, or it silently refuses to start — or pick one in the list and Join Game.
- The host presses Start Game.
Notes
Quest 3 only in practice — the manifest lists Quest 2 and Quest Pro, but neither is tested.
A match has not yet been played through to the end, so a desync late in a long game is possible. Sync checking is on, so if it happens it reports itself rather than quietly diverging.
No game data from any commercial release is distributed here. The 1.05 demo data inside the APK is the copy Relic made freely redistributable. Homeworld is a trademark of its respective owners; this is an unaffiliated fan project, built on the source Relic released in 2003 by way of Homeworld SDL and Gardens of Kadesh.