Roblox on Linux (Everything summarized in 1 post) (updated)

Why is there a second one?

Well the original was outdated, and a lot of the things said in it, I no longer agree with, I believe it deserves a rewrite entirely, to make it more friendly for people to read and understand. Everything in this version will be sourced, and formatted nicely. I will be keeping the original for you to look at and laugh at.

What will we discuss?

We will discuss the following:

  1. Brief history of Roblox on Linux
  2. Will Roblox support Linux?
  3. How to run Roblox on Linux today (may be out of date in the future)
  4. How to run Roblox on LInux in the future (Qemu/KVM Single GPU Passthrough)

So let’s get started

Brief History of Roblox on Linux

Pre-2012

There’s not many reliable sources for pre-2012, at least from what I looked at

2012

On July 28th 2012, Roblox CEO David Baszucki released a QnA blog post found here where a user by the name of Oliver asked if Roblox would be supporting Roblox on Linux, David Baszucki replied with the following:

“We’re probably 97% of the way to a Linux port, now that we’ve all the work necessary to port ROBLOX to OSX – which, as you probably know, is based on the UNIX kernel. I think the problem that we would likely run into on Linux is poor video driver support. I’ve heard horror stories from other developers. However, as Linux becomes more popular, I expect this hurdle to disappear.”

2013

On December 10th 2013 Roblox released their Feedback Loop blog post, found here a user by the name of osd3001 asked the following:

Is it possible for ROBLOX to become available on Linux? I know that Mac OS X is UNIX-based, so why couldn’t you do it for Linux? John Shedletsky replied with this:

John Shedletsky replied with the following:

We could spend six months porting ROBLOX to Linux, or we could deliver other highly requested features. If we’re going to be porting ROBLOX to another platform, Android is definitely next in line. Consoles are a close second–maybe that would involve a Linux port, particularly if the Steam OS takes off. We’ll see.

2015 - 2021

in July 2015, Roblox has broken unofficial wine support, and Roblox no longer worked under Linux for years until 2021. Here’s a post linking to the time period where Roblox broke

2021

On June 11 2021, User ImSlappy826 created a patch for wine that allowed Roblox to run on Linux for the first time in years. This patch has this function: “ZwFilterToken”, BrinkerV ported this patch to Arch Linux & robigan ported it to Debian.

2022

On January 18th 2022, Wine officially includes the patch in their stable 7.0 release

2023

Roblox began to roll out it’s Hyperion Anticheat, breaking Roblox support on Linux

2024

In March 2024, Roblox started to see an increase in cheaters using Wine, and have blocked Wine from playing Roblox again.
In August 2024, VinegarHQ made a closed source software called Sober, which uses the Android version of Roblox to run under Linux.

Will roblox support Linux?

Quick answer

No. QnA Answers from YouTube here (skip to 1:08:00)

Long answer

Still no. But this time, not as strong of a no. While yes right now, there’s no real shot that Roblox would port to Linux, I do believe that in several years time, as Linux grows in marketshare, Roblox will change their minds.

Let’s start with an example, Roblox announced their port to Mac on January 2011, and released it on October 2011, In January 2011, MacOS had a marketshare of 6.56% growing at rapid rate, While LInux only had 0.74% and stagnant. It is only recently Linux started growing at a similar rate as MacOS was in 2009 to 2010.

Around the time of RDC 2020 QnA, Linux still looked like it wouldn’t reach 2% in years. fast forward a year and it’s at 2.3%, fast forward a year after that, it’s at 3.12% fast forward a year later and it’s at 4.44% in the present. source, and I am sure Roblox took note of this sudden rapid growth.

Comparing the Mac port for a second, Roblox officially ported Roblox to Mac on October 2011, it had 7.18% of the marketshare, which is a 2.74% difference when comparing to Linux today. There’s a very good chance they are already porting Roblox to Linux. (hugely speculative), I am not even mentioning that porting a game the size of Roblox takes ages, years in fact, and it’s very expensive. I am looking at it from an investment standpoint with reference to the Mac port.

We can’t even go around without talking about the Meta Quest port, as Linux already surpassed the Quest
-Meta Quest sold ~ 20,000,000 units (note: may be innacurate)
-Linux userbase ~ 74,200,000 users (note: may be innacurate)
The way we calculate this is by taking the total PC userbase and times that by Linux’s marketshare (4.44%)

Challenges

All that is fine and all but what kind of challenges will Roblox face should a Linux port be a thing?

  1. Well Roblox is going to face a lot of API issues
    things work differently on Linux, you have to go around and painstakingly get alternatives and dependencies that are built into Windows, Mac, Android ect. It isn’t impossible, just really really difficult.
  2. Roblox may, or will lose in profit.
    Linux may be a growing market but Roblox is still a business in a capitalist society. A for-profit company, Roblox absolutely sees zero profit in Linux unless Linux starts to go absolutely ballistic in marketshare
  3. They can do literally anything else
    Why spend potentially years on a port for a platform you aren’t even sure is worth your time when you can spend that manpower developing features people want to use
  4. Just accept it’s not happening.

Is a port likely now? No. Is it likely in the distant future? Maybe.

How to run Roblox on Linux today

Run Roblox on Linux today (may be out of date in the future)

If you want to play Roblox today (writting this on 28th August 2024) We are going to use Sober, Which has been made by VinegarHQ. Note that Sober is closed source, if you don’t feel comfortable with that, then it’s fine I guess.

You can download Sober by following these steps:

  1. Ensure that Flatpak is installed on your system. You can setup flatpak here.https://sober.vinegarhq.org/
  2. After that, run this command:
    flatpak install --user https://sober.vinegarhq.org/sober.flatpakref
  3. Reboot, and launch Sober, and follow the steps it shows you.

Note that Sober uses an x86_64 APK version of Roblox to run Roblox, which you can get here
!!!(Please note that this website may be untrusted, if you feel uncomfortable using it, I reccomend you get your own Android x86_64 device, or use virtual machine with Android x86 to get the file. I used this website and I haven’t gotten hacked but your mileage may wary.)!!!

-You then want to get the universal APK file listed with the “universal” architecture. After you download it, you can select it in Sober.

If Sober pops up with a error message complaining about how it can’t use a particular version, use the version before that using the same steps shown above.

After this the Android app of Roblox should show up, and you can start playing Roblox.

How to run Roblox in the future

VFIO Single GPU-Passthrough Guide

Note that not all hardware will support what we are going to do here, but the principle here is simple. We are going to pass a graphics card onto a virtual machine that way we can play Roblox.

Requirements:

  1. Your PC must support IOMMU
  2. Your PC must have Intel VT-x & Intel VT-d or NX mode SVM mode enabled in BIOS
  3. UEFI

For NVIDIA GPUs

You may require your GPUs BIOS to put it under a virtualized environment, I am not using an NVIDIA GPU, and I am not too familiar with the process. To obtain your GPU’s BIOS, check this tutorial to see how you can get the files.

Grub Config

Edit /etc/default/grub by the following command
sudo nano /etc/default/grub

and add the following to GRUB_CMDLINE_LINUX_DEFAULT:
On Intel systems add the following:

  1. intel_iommu=on
  2. iommu=pt

On AMD systems add the following

  1. amd_iommu=on
  2. iommu=pt

After this run the following:
sudo grub-mkconfig
and reboot your system after the command is done

To verify if IOMMU is enabled, paste the following into the terminal:
dmesg | grep IOMMU
The output should pop out with Intel-IOMMU: enabled for Intel CPUs or AMD-Vi: AMD IOMMUv2 loaded and initialized for AMD CPUs

Now that you have enabled IOMMU in grub, we can move on to actually installing packages for virtualization

Gentoo

sudo emerge -av qemu virt-manager libvirt ebtables dnsmasq

Arch Linux / arch based

sudo pacman -S qemu libvirt edk2-ovmf virt-manager dnsmasq ebtables

Fedora /Fedora-based

sudo dnf install @virtualization

Debian /debian based

sudo apt install qemu-kvm qemu-utils libvirt-daemon-system libvirt-clients bridge-utils virt-manager ovmf

After installing said packages, you should enable the libvirtd service.

SystemD (used on majority distros)

systemctl enable --now libvirtd

OpenRC

virsh net-start default
virsh net-autostart default

Now it is time to setup your virtual machine
Type in
usermod -aG kvm,input,libvirt **YOUR_USERNAME**
Download the following:
VirtIO drivers ISO
Windows 11 ISO

Now before you instantly go and try to put your GPU into your VM, first let’s actually setup the VM.
After your ISO’s are downloaded you want to launch virt-manager and create a new virtual machine with your Windows 11 ISO, and name it “win11”
Follow the steps the prompt will give you until you see a button that says Customize before install. Press it.
In Overview change your Chipset to Q35 and Firmware to UEFI
In CPUs, set your CPU Model to be host-passthrough, and change the CPU Topology to whatever you think is best with your system.
Change the SATA disk section to VirtIO for high speed performance
In NIC Section, change Device model to virtio
Add hardware → Disk → CDROM, and put your virtIO iso in
Now begin installation

Windows will not be able to detect your disk, so press Load Driver, and select virtio-iso/amd64/win11 when prompted.
After this, you will be able to see your drive, and install Windows on that drive.
After Windows is installed, you can remove the VirtIO drive, and shut the VM down for now.

Now it is time for the fun part.
Edit your virtual machine and remove the following:
Channel Spice, Display Spice, Video QXL, Sound ich* along with other stuff you will never need.

Now click Add Hardware, Select PCI Devices, and choose your GPU.
Note: There may be multiple PCI GPUs under the same GPU, add all of them.
For NVIDIA users: edit the XML section of the file and add your rom below with this code:
<rom file='/path/to/your/patched.rom'/>

Do NOT start the virtual machine yet.

It’s time to add your libvirt hooks.
clone this repo:
git clone https://gitlab.com/risingprismtv/single-gpu-passthrough.git
cd single-gpu-passthrough

edit hooks/qemu, locate & change “win10” to “win11”

Make these files executable and run it via sudo
sudo chmod +x install_hooks.sh
sudo ./install_hooks.sh

Now verify that these hooks are installed properly by locating these files
/etc/systemd/system/libvirt-nosleep@.service
/usr/local/bin/vfio-startup
/usr/local/bin/vfio-teardown
/etc/libvirt/hooks/qemu

The location of logs, if needed
win11.log → /var/log/libvirt/qemu
custom_hooks.log → /var/log/libvirt/
libvirtd.log → /var/log/libvirt/

After you made your libvirt hooks, time to edit your xml file (which is in the virtual machine)

Scroll all the way down the xml file, and delete the following:

  <graphics type="spice" autoport="yes">
    <listen type="address"/>
    <gl enable="no"/>
  </graphics>
  <audio id="1" type="none"/>
  <video>
    <model type="bochs" vram="16384" heads="1" primary="yes"/>
    <address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
  </video>
  <channel type="spicevmc">
    <target type="virtio" name="com.redhat.spice.0"/>
    <address type="virtio-serial" controller="0" bus="0" port="1"/>
  </channel>

Now scroll up and find < features >

place missing items in

  <features>
    <acpi/>
    <apic/>
    <hyperv>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
      <vendor_id state='on' value='123456789123'/>
    </hyperv>
    <kvm>
      <hidden state='on'/>
    </kvm>
    <vmport state='off'/>
    <ioapic driver='kvm'/>

For mobile cards, it is neccesary to simulate a battery. change the first line to this:
<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">

After this, you now are able to test your virtual machine with your GPU for the first time.

There should be a black screen for about 15 seconds until you see yourself on your very low res desktop.

You will also notice that you may not be able to move your mouse or anything, you can now power off the PC via power button and proceed to add your USB devices, or even passthrough your USB controllers directly (PLEASE NOTE THAT THIS MAY BREAK YOUR VM, SO IF IT CRASHES FOR YOU, THEN REMOVE IT FROM THE VM.)

You can now install your GPU drivers, install Roblox, whatever and you should run Roblox with only about 10-20% less FPS than running natively.

Sources

Sources

I want to end off with every single source used in this post, mostly for ease of access, but also show sources that I did not link in any hyperlink

  1. Roblox Brief History
    1 - Roblox on Linux Wiki
  2. Official Roblox Support?
    1 - Statcounter (for Marketshare data)
    2 - Mixed News (for Quest unit sold numbers, may be innacurate)
    3 - Desktop usercounts (may be innacurate)
  3. How to play Roblox on Linux Today
    1 - VinegarHQ
    2 - Sober
  4. How to play Roblox in the future
    1 - Risingprism’s Single GPU Passthrough Guide
    2 - QaidVoid’s Single GPU Passthrough Guide
    3 - Arch Linux - PCI passthrough via OVMF
    4 - Coodos Single GPU passthrough guide
Updates

November 19th 2024 - Corrected some mistakes with the GPU Passthrough guide.

Thank you!

Thank you for reading & learning about this topic, I spent several days on this new updated guide (and a few months of procrastinating), I hope I got you to learn something new.

-Was this post helpful?

  • Yes
  • Somewhat yes
  • 50/50
  • Somewhat not
  • No

0 voters

Please correct any incorrect statements here and I will edit this to fix the incorrect statements.

2 Likes

Given this information, and your mention of the market share, do you believe the EoL for Win10 would have a significant impact on the market share?
Namely asking because I proactively develop a fair amount on Roblox, and have tried using various Linux ports - none of which really seem to work all that well for me - but plan on moving entirely to Linux when support for Win10 ceases, and would still like to continue developing on Roblox on my OS of choice.
I get this post is purely speculative and informative, but would still like to bounce thoughts off of someone more knowledgeable than myself in this matter.

Yes, I do believe that the EoL for Windows 10 will cause a significant growth for Linux. Mainly because a lot of users cannot upgrade to Windows 11 because of system requirements, or just don’t like Windows 11.

However it may also make users choose other alternatives as well such as Win10 IoT LTSC, which is debloated and offers support up to 2032 because the version isn’t targetted at regular users like me and you.

People understand they need security updates if they want to stay safe, and the more Windows becomes shittier, the more people move to Linux.

So yes, the EoL for Win10 will cause a boost in Linux marketshare. However if you aren’t ready to leave Windows as a platform, there is also Windows 10 IoT LTSC.

Linux users will never make a perfect Roblox port, there’s always going to be that occasional bug or two, especially given Roblox is closed source. The only people who could make the perfect Linux port is Roblox themselves. And as dicussed in the post, that is very unlikely for the time being. But it is possible in the future.

If sober is running an android version of roblox, wouldnt that limit games with pc support only?

To reword, wouldn’t roblox see it as a mobile device instead of a pc?

The client correctly sees that you are on a PC instead of a mobile device, afaik they don’t hardcode the platform during compilation (aka, they check if you’re on mobile or desktop at runtime, though this might be different for consoles)

Roblox automatically detects whether or not you are using a keyboard and a mouse and correctly assumes you are playing on a computer,

It works very similarely from mobile, if you have an Android phone, you can use a USB C dock to plug in a mouse and a keyboard, then launch the Roblox app and join a game which identifies your device like for example Arsenal, if you press tab to see the leaderboard, your Roblox will not say you are on a phone, but rather on a PC.

Furthermore if you first play on a touch screen, and the game says you are playing on mobile, if you plug in a keyboard and a mouse, from my experience the entire app relaunches and starts viewing you as a PC user, rather than a mobile user.

Sober is using this fact to it’s advantage and using the APK version of Roblox instead of the PC version to get Roblox to work on Linux.

I don’t have sources to back this up though, I just know based on my previous experiments on the client to see if I find any bugs.

updated some of the GPU passthrough guide to be more accurate