_    _    _           _      
 | |_ (_)__| |_ ___ _ _(_)__ _ 
 | ' \| (_-<  _/ _ \ '_| / _` |
 |_||_|_/__/\__\___/_| |_\__,_|
                    historia.vg

Install Ultima Adventures on Steam Deck

You can install both the server and client on Steam deck and run it all locally, or you can install just the client and connect to another server.

Note that there is a potential impacting issue with werewolf serialization that needs to be solved with the server.

Install Server

Get into Desktop Mode

Press B. Go to Power > Switch to Desktop.

Open the terminal program Konsole to run commands. Press Steam + X to bring up the keyboard. The Paste button in the Steam deck keyboard won’t work in Konsole so use the Paste button on Konsole itself.

Install Distrobox

Install DistroBox. Below are the commands to do this as of August 2025. I can’t figure out how to press C-x to exit nano on a Steam Deck (L1 doesn’t work with the keyboard up) so I’m using vim.

export PATH=/home/deck/.local/bin:$PATH >> ~/.bashrc

source ~/.bashrc

curl -s https://raw.githubusercontent.com/89luca89/distrobox/main/install | sh -s -- --prefix $HOME/.local

Run vim ~/.distroboxrc and add the following (press the Konsole Paste button, then type :wq to save and quit)

# Ensure the graphical apps can talk to the Xwayland session
xhost +si:localuser:$USER >/dev/null
# Force the use of pulseaudio inside the container
export PIPEWIRE_RUNTIME_DIR=/dev/null
# Needed to ensure distrobox can find the podman binary we previously downloaded
export PATH=/home/deck/.local/bin:$PATH
export PATH=$PATH:/home/deck/.local/bin

Install Podman

curl -L -o /home/deck/Downloads/podman-launcher-amd64 https://github.com/89luca89/podman-launcher/releases/download/v0.0.5/podman-launcher-amd64

mv /home/deck/Downloads/podman-launcher-amd64 /home/deck/.local/bin/podman

chmod +x /home/deck/.local/bin/podman

sudo touch /etc/subuid /etc/subgid

sudo usermod --add-subuid 100000-165535 --add-subgid 100000-165535 deck

chown deck:deck /home/deck/.local/share/icons

Create a distrobox with mono

distrobox create --image docker.io/library/archlinux:latest --name ultima --additional-packages "mono"

Press enter to pull the image. Then enter the distrobox with the following (this will take a while):

distrobox enter ultima

You should be able to run the command mono and see something now.

Install Ultima Adventures

These instructions are the same as this post now

wget https://github.com/FinalTwist/Ultima-Adventures/releases/download/v2.10/Ultima-Adventures-Server.zip

unzip Ultima-Adventures-Server.zip

rm Ultima-Adventures-Server.zip

cd Ultima-Adventures/Server

find Server -name "*.cs" | xargs mcs -optimize+ -unsafe -t:exe -out:Adventures-Server.exe -win32icon:Server/runuo.ico -nowarn:219,414 -d:NEWTIMERS -d:NEWPARENT -d:MONO -reference:System.Drawing

Run the Server

mono Adventures-Server.exe

Unfortunately, I get a serialization error on regarding werewolves (see the old post). You can press Y to delete them and run the server again, however this may cause the server to crash when werewolves are spawned.

If you find a solution to this, please join the Ultima Adventures discord. I tried Alpine, Arch, and Debian with Distrobox and had the same issue each time.

Install Client

If you just installed and ran the server, type exit to get out the distrobox, then cd to get back your home directory.

Run the following to install TazUO

wget https://github.com/FinalTwist/Ultima-Adventures/releases/download/v2.10/Ultima-Adventures-Client.zip

wget https://github.com/jsebold666/TazUO/releases/download/v3.24.1/TazUO.3.24.1.0.zip

unzip TazUO.3.24.1.0.zip -d tazuo/

unzip -j Ultima-Adventures-Client.zip "Ultima-Adventures/Client/Data Files/*" -d "tazuo/Data Files"

cd tazuo

chmod +x ClassicUO.bin.x86_64

./ClassicUO.bin.x86_64

You’ll get an error about a wrong client version and a pop up about settings.json. If you don’t get the popup, make sure you’re not in the server distrobox. Click OK, then run vim settings.json

Edit these lines:

  "ip": "127.0.0.1",
  "port": 2593,
  "ultimaonlinedirectory": "/home/deck/tazuo/Data Files",
  "profilespath": "",
  "clientversion": "7.0.15.1",

Running the Server and Client

You can manually run the server by opening Konsole then running:

distrobox enter ultima -- mono /home/deck/Ultima-Adventures/Server/Adventures-Server.exe

After the server is running, create a new tab in Konsole and launch the client:

/home/deck/tazuo/ClassicUO.bin.x86_64

You can make a systemd service to run the server in the background automatically if you want, or just run it from the terminal before you start the client. Press Ctrl-C to stop the server process. Run exit to leave distrobox.

Troubleshooting

I’m getting prompted for the sudo password to “deck”

  1. Try password “Decky!” or blank
  2. Run “passwd” and when prompted enter blank as your current password, then set a new password.

Otherwise, recover the deck password:

  1. Shut down Steam deck all the way down (not just sleep)
  2. Plus a USB-C keyboard into the top port
  3. Hold … and Power until you see a boot menu
  4. Select the third option (Current SteamOS-B … + Boot Menu)
  5. On the Select Operating System menu, press “e” while SteamOS is highlighted
  6. Move the cursor to the steamenv_boot line. Press Ctrl-E to go to the end of the line.
  7. Add a space and add systemd.debug_shell
  8. Press Ctrl-x. The Steam Deck will reboot (into Steam)
  9. Press Ctrl+Alt+F9
  10. Run passwd then type the new password twice.
  11. Press Ctrl+Alt+F1 to return to Steam

Repeat steps 1-8 and remove the systemd.debug_shell in step 7.