Launcher to manage instances of the popular bus simulator OMSI 2
OMSI-Launcher is a management tool designed to streamline the process of handling multiple instances of OMSI 2, a popular bus simulation game. It offers users an efficient way to organize, configure, and launch different game setups.
Key Features:
Instance Management: Create, edit, and delete multiple OMSI 2 profiles for diverse gameplay configurations.
Configuration Simplification: Easily adjust game settings and parameters without manual intervention.
Automatic Updates: Stay up-to-date with the latest updates for OMSI 2 instances.
Compatibility Checks: Verify that mods and add-ons are compatible with your setup before launching.
Audience & Benefit:
Ideal for bus simulation enthusiasts, modders, and players who enjoy experimenting with different game configurations. By automating tedious tasks and enhancing organization, OMSI-Launcher helps users save time and focus on what matters most: immersive gameplay.
Available via winget for easy installation.
README
omsi-launcher
Archived: This project is not maintained anymore, feel free to fork and maintain further while respecting the license
WARNING: This is unstable software. Create Backups of your game files before you use
it.
Why use this?
Omsi is optimized extremely poorly for usage with a lot of AddOns, as a single AddOn doesn't exist
in a single location,
it exists in a lot of locations (maps, Vehicles, Sceneryobjects, Splines, Scripts), this combined
with OMSI seemingly
checking your entire OMSI folder each time some UI refreshes the game gets increasingly more laggy
the more addons/mods
you add.
A simple solution is to not have as many addons installed, or having multiple installations of the
game itself for
different groups of addons.
This tool helps you to create multiple installation, without taking up more storage by
symlinking common resources to a base installation of
the game, therefore
each individual instance just takes the space of the individual addons it has installed
How to launch an instance
Whilst it is theoretically possible to launch Omsi through Steam, it is recommended to let the
launcher call Steam
instead.
What is "omsi-launcher elevation helper" and why does it request admin permissions?
omsi-launcher elevation helper is a tool we use to temporarily launch
a elevated process
for some file system
operations, this is required as Windows decided that it is necessary to be an administrator in order
to create symlinks. People interested in source code can
click here
How does this work?
When starting Omsi through Steam, Steam just calls \OMSI 2\Launcher.exe it doesn't
care what that file
is.
So when starting an instance through the launcher it will create a symlink
at \OMSI 2 pointing to the
instance you want to launch, this way Steam will actually run \Omsi.exe
Nerdy explanation of how we store which AddOns are enabled for each instance
Steam keeps track of which AddOns you have installed at \steamapps\appmanifest_252530.acf (252530 being
Omsi's Steam id)
Since Steam overwrites this file if it is a symlink, we needed a different approach.
Instead, when creating the base game installation we know copy the base manifest into \game\manifest.acf,
each time we create a new instance, we copy that file into \manifest.acf
Then if you launch an instance we check:
Does \OMSI 2 already symlink to that instance
If yes:
Copy appmanifest_252530.acf into \manifest.acf
If not (but symlink):
Resolve that symlink to the previous instance
Copy the current appmanifest_252530.acf to the resolved instance
Copy the manifest of the instance we want to start to appmanifest_252530.acf
If not (but directory)
Copy the manifest of the instance we want to start to appmanifest_252530.acf
That way no only OMSI will only see the selected AddOns
(as they're the only addons physically present in the instance folder)
also Steam will show them and not download any additional ones
Folder structure
Base game: When starting the launcher for the first time, it asks you to set up your "base game
folder", this will
contain the actual base game and addons you want to share between all other addons (OmniNavigation,
bus DLCs)
Individual Instance: Each instance of Omsi has its own installation folder, during the creation of
the instance, the
launcher will go through all contents of the base game folder and create a symlink pointing to the
base game. The
launcher will only symlink files and not directories, those will instead be created and their
contents will be
symlinked.
Using this method addon installers can write to base game locations, without writing their contents
to the base game
folders
Developer folder structure
This documents internal configuration files of the launcher, if you are not a dev working on the
project, just stop
reading
%APPDATA%\omsi-launcher\config.json: This currently only stores the actual installation location
of the launcher, set
during setup
\instances.json: This stores all set instances with their launch flags and patch
version
Trivia we found whilst making this
You can symlink \OMSI 2 to wherever you want and Steam will launch it.
You can symlink anything in your OMSI 2 directory and Omsi will load everything