
I Got Fed Up and Built My Own VR Cinema
Most of the software I've written over forty years was for somebody else. A publisher, an employer, a client. This one is different. Reel Room exists because I wanted it on a Tuesday night and nobody had made it.
The Itch
I've got a media collection I'm genuinely fond of. Blu-ray rips, a stack of 3D films from when 3D televisions were briefly a thing, and a lot of lossless music. It sits on a server in the house doing very little, because the telly in the living room is usually occupied and my headset is sat right there on the desk.
Watching that collection in VR should be one of the great, obvious uses of the hardware. A screen as big as you like, in whatever room you fancy, at eleven at night without disturbing anyone. That was the whole idea. It didn't seem like a big ask.
Two Walls, Over and Over
I tried the existing VR media players. Properly tried them, over a few months, because I wanted one of them to work far more than I wanted to write another one.
Every time I hit one of two walls.
The first was quality. A lot of players re-encode everything on the way through, which means a 4K rip arrives on the virtual screen looking visibly worse than it does downstairs on the actual telly. Lossless audio gets quietly flattened into something convenient. And 3D — the thing I most wanted — either didn't work, or worked only after I'd told it what kind of 3D it was, every single time, for every single file.
The second wall was usability. There are players that genuinely will give you high quality output, and fair play to them, but the path there runs through config files, command line flags, and setup instructions that read like a networking exam. I've been programming since I was a teenager and I still found it a slog. Which meant there was no chance I'd ever recommend it to a mate.
So the gap was easy to state and apparently hard to fill: easy to set up, and no compromise on the output. Pick one seemed to be the going rate.
The Bit Where I Should Have Known Better
There's a well-worn developer trap here. You look at a piece of software, decide it's not good enough, and assume you'll knock out something better over a couple of weekends. Then you discover why the existing thing is the way it is.
I walked straight into it, eyes open. And the lesson turned out to be real but not fatal — the reason the other players compromise isn't that their authors are lazy. Video pipelines are genuinely awkward. Deciding when you can pass a file straight through to the hardware and when you can't is fiddly detective work. Automatic 3D detection means parsing filenames, container metadata, and stream layouts that people have been tagging inconsistently for fifteen years.
None of it is impossible. It's just unglamorous, and there's no shortcut. That's probably why it doesn't get done: it's a lot of careful work in service of a feature most users will never consciously notice, because when it works, nothing happens. The film just plays, in 3D, correctly, and you don't think about it. That's the entire point.
I found that quite a satisfying thing to spend a year on.
What Being My Own Customer Changed
Building for yourself removes an entire category of argument. There's no stakeholder asking whether we could add a subscription tier, no growth meeting about what we might learn from a bit of telemetry. I wanted a thing that plays my films properly and then leaves me alone, so that's what it does. One payment, no tracking, watch history stays on my server.
I'm aware that reads like marketing copy. It genuinely isn't — it's just what happens when the person specifying the software is also the person who has to live with it.
It cuts the other way too, mind. Being your own customer means you have no one to tell you that a feature you're obsessed with is a rabbit hole. I spent an unreasonable amount of time on the in-headset controls — scrubbing that ramps up as you hold it, chapter jumps, environment switching, all on a single controller with no flat menus. I don't regret it, because fumbling for a floating menu bar in the middle of a film is precisely the sort of thing that breaks the illusion. But nobody was there to check.
Where It Ended Up
Reel Room plays films, TV, and music from a Jellyfin server, a local drive, or a network share onto a virtual 4K screen, in three hand-crafted rooms. It direct-plays your files where the hardware allows, handles 3D automatically, and runs on OpenXR so it isn't tied to one headset vendor.
I've written up the details properly on the project page rather than turning this into a spec sheet.
Was It Worth It?
For anyone weighing up the same decision — the honest answer is that building it yourself is almost never the efficient choice. If something out there does 80% of what you want, take the 80%.
But every so often the gap isn't 20%, it's the entire reason you wanted the thing. I didn't want a VR player that mostly worked. I wanted to sit down at eleven at night, put a 3D film on, and have it look right without touching a config file first. That turned out to be worth a year of evenings.
It's coming to Steam for PCVR on Windows. If your own collection is sat on a drive gathering dust while you scroll a streaming service failing to find anything to watch, you can wishlist it on Steam.
— David