Skip to content

shingonati0n/xivomega-decky

 
 

Repository files navigation

XIVOmegaHeader

XIVOmega - Decky Version

A Steam Deck Plugin (for Decky Loader) to mitigate latency on the Critically Acclaimed MMORPG Final Fantasy XIV. This plugin is the evolution of xivomega which in turn is based on XivMitmLatencyMitigator, XivMitmDocker and XivAlexander.

20240923184221_1

Installation

  • The plugin is now available in the Decky Testing Store - from Decky, go into Options > General and on Store Channel change to "Testing"
  • Select XIVOmega and install

(The following steps are to install the prerelease version of this plugin. The end state will be to install via Decky Loader Store).

  • Download the zip file in the releases page. Note this is a prerelease version.
  • In Decky Loader, enable Developer mode by going into Settings -> General -> Developer Mode
  • In Developer select install from Zip. Navigate to the location of the zip file and install

Notes - How it Works

  • This plugin makes use of Podman, which is included by default with SteamOS since 3.5 as part of Distrobox. It creates a rootful container which executes the mitigation script as in XivMitmLatencyMitigator, without the need of another computer to run.

  • The plugin applies a fix in order to use Podman: By default, any image downloaded with podman gets save to /var/lib/containers/storage. When trying to run a container using the default location, it will error out indicating there is not sufficient space. The plugin fixes this by setting the storage location to the runtime folder of itself (homebrew/data/XIVOmega) via a storage.conf file which gets created into /etc/containers.

  • The podman image used is pulled from here: https://quay.io/repository/shingonati0n/xivomega. This container runs Debian with the following contents:

    • a script to set up iptables POSTROUTING rule (iptset.sh)
    • a script which calls the mitigator as in XivMitmLatencyMitigator (omega_alpha.sh).
  • 2 ipvlan adapters get created - one for podman and one native for linux. These get automatically assigned the last 2 ip addresses for the network host is connected to. In the future, this will customizable.

  • The game traffic is routed thru this container, which effectively mitigates latency. This translates into less GCD clipping - the same effect as using XivAlexander.

  • The container and the networking set up are ephemeral - when the mitigator is toggled off, everything is removed seamlessly and can be activated again smoothly.

  • The opcodes file which gets changed each time a new game patch releases gets updated along with XivAlexander and XivMitmLatencyMitigator.

  • Container activity gets saved to the plugin log - this can be checked on homebrew/logs/XIVOmega.

  • When uninstalling, the image and the container along with all other elements gets effectively removed. The storage.conf file from /etc/containers gets restored to default values.

Special Thanks

  • To soreepeong and bankjaneo, for creating XivAlexander, XivMitmLatencyMitigator and XivMitmDocker
  • To bnnuy for testing
  • To jurassicplayer and the folks at the Steam Deck Homebrew Discord for all their help whenever I got stuck.

Was this plugin useful??

  • Consider donating at ko-fi. Any support is greatly appreciated.

License

This project is licensed under the terms of the BSD 3-Clause License. You can read the full license text in LICENSE.

Packages

No packages published

Languages

  • Python 85.0%
  • TypeScript 14.7%
  • JavaScript 0.3%