Skip to content

Repository files navigation

openOMSI

Version Build Docs Discord Buy me a coffee License

Warning

Early release. Expect bugs. openOMSI is in an early stage of development: things may be missing, broken or change between versions. Please report problems in Issues or on our Discord server.

openOMSI is a from-scratch recreation of the bus simulator OMSI 2, written in Rust: 64-bit, multithreaded, with a modern renderer (Metal / Vulkan / DirectX 12 through wgpu), and fully compatible with the existing maps, buses, scenery and mods.

Important

openOMSI needs an original copy of OMSI 2. It contains no game content of its own: it plays on the maps, vehicles and other files of an installed OMSI 2 and will not start without one.

Download

Every commit to main is built by GitHub Actions and published on the Releases page:

Platform File
Windows x64 / ARM64 openOMSI-<version>-windows-x64.zip / -windows-arm64.zip - run openomsi.exe
macOS (Apple silicon / Intel) openOMSI-<version>-macos-arm64.zip / -macos-x64.zip - open openOMSI.app
Linux x64 / ARM64 openOMSI-<version>-linux-x64.zip / -linux-arm64.zip - run openomsi
Android (arm64, 8.0+) openOMSI-<version>-android-arm64.apk - see docs/ANDROID.md
Dedicated server openOMSI-<version>-server-linux-x64.zip (also -linux-arm64, -windows-x64, -windows-arm64) - see docs/SERVER.md

Start the game, point the launcher to your OMSI 2 folder once, pick a map, a bus and a duty, and drive. Mods go into the folder next to the game (or through the launcher's Mods page); the original installation is never written to.

From 0.1.7 on the launcher updates itself: when a newer release is out it asks at the start and, with your yes, downloads it, replaces the program and starts again (on Android through the system's installer). Settings → Updates switches the check off or installs without asking.

Installation

You need an installed OMSI 2 (Steam or retail, any version) with its stock content - the maps Grundorf and Berlin-Spandau and the stock buses (MAN SD200/SD202, NL). openOMSI brings no game content of its own; it plays the original's maps, buses and mods.

  1. Download the file for your system from Releases (table above) and unpack it into a folder of its own that you can write to - your Documents, a games folder, or the OMSI 2 folder itself. Not Program Files: the launcher could not update itself there.
  2. Start it.
    • Windows: openomsi.exe. Windows SmartScreen may warn about an unknown app: More info → Run anyway.
    • macOS: open openOMSI.app. The first time, macOS may refuse an app from the internet: right-click → Open → Open, or run xattr -dr com.apple.quarantine /path/to/openOMSI.app once.
    • Linux: ./openomsi (run chmod +x openomsi if it does not start). It needs a Vulkan or OpenGL driver (Mesa: mesa-vulkan-drivers, or your GPU vendor's driver).
    • Android: see docs/ANDROID.md - the OMSI 2 folder is copied onto the phone first.
  3. Point it at OMSI 2. The launcher usually finds the installation by itself (Steam libraries, the usual folders). If not, open Setup and choose the OMSI 2 folder - the one with Omsi.exe, maps and Vehicles in it (the folder, or Omsi.exe itself) - and press Save. The Steam version is under …\Steam\steamapps\common\OMSI 2.
  4. Drive: pick a bus, a map and a duty on the Drive page and press Start the duty.

Mods are installed on the Mods page (a folder or a .zip, or dropped on the window) or by putting them into the Mods folder next to the game; the OMSI 2 folder is never written to.

When something goes wrong

  • "The original OMSI 2 was not found" - choose the folder under Setup (step 3); the message says what the chosen folder lacks.
  • The game closes after a few seconds, or "the graphics device was lost" - update the graphics driver (NVIDIA, AMD or Intel's own, not the one Windows installs). On Windows you can also switch to DirectX 12: Settings → Graphics API (the launcher offers it after such a crash).
  • An older graphics card (no Vulkan): openOMSI falls back to DirectX 12 and then OpenGL by itself; Settings → Graphics API chooses one.
  • Stuck at a bridge or an invisible wall on a mod map: Esc → Options → Collisions with objects switches collisions with the map's objects off (Settings has it too).
  • Multiplayer: you do not meet the others - both players need the host's map (a map in the OMSI 2 folder is not passed on; one from the Mods page is). The joining game switches to the host's map by itself and says in the HUD when it is not installed.
  • Keys do not do what you set: Controls - the page shows which driving keys are in use; a key you change there takes effect at once.
  • Anything else: when the game ends on an error, the launcher shows it with Copy report and Report on GitHub. The logs are in ~/.openomsi (Windows: C:\Users\<you>\.openomsi), game.log for the last game.

Goals

  1. 1:1 behaviour. Every content format of the original - maps, splines, scenery objects, vehicles, scripts, timetables, HOF files, fonts, weather, tickets, situations, plugins - loads and behaves exactly as in OMSI 2.2.032. Existing maps and mods work unchanged.
  2. No original code or assets. Nothing from the original is copied; the formats are described in docs/FORMATS.md.
  3. A better engine. 64-bit address space, streaming and texture loading on worker threads, no 2 GB limit, no single-thread stalls, LAN multiplayer and a dedicated server.

Documentation

The full documentation is on the website: https://turbo-devv.github.io/openOMSI/. The same pages live in docs/:

Document What is in it
User guide running, controls, launcher, settings, mods, LAN play, debug switches
Android the mobile version: install, touch controls, building the APK
Modding limits lifted for modders: more interior lights, larger textures, additions OMSI 2 ignores
PBR materials normal, roughness, metalness and occlusion maps for mods
Building building from source on macOS, Windows, Linux and Android
Content formats every OMSI 2 file format
Architecture crates, threading, renderer, roadmap
Routes how the original runs timetables, chrono, HOF, IBIS
Plugins Lua plugins (API and examples), OMSI plugin DLLs and the 32-bit plugin host
Dedicated server hosting a session without a window
Versioning & releases the MAJOR.MINOR.COMMIT scheme and the CI
Changelog what changed in each version

Building from source

git clone https://github.com/turbo-devv/openOMSI.git && cd openOMSI
scripts/build-macos.sh        # macOS   → dist/macos/openOMSI.app
scripts\build-windows.cmd     # Windows → dist\windows\openomsi.exe
scripts/build-linux.sh        # Linux   → dist/linux/openomsi
scripts/build-android.sh      # Android → dist/android/openOMSI-<version>.apk
scripts/build-server.sh       # server  → dist/server

Needs Rust stable (1.85+) and the platform's C toolchain; details in docs/BUILDING.md.

Repository layout

openOMSI/
├── VERSION            MAJOR.MINOR of the next release (edited by hand)
├── crates/            the engine, one crate per subsystem of the original
│   ├── omsi-app/        the game binary `openomsi` (window, launcher, HUD, server mode)
│   ├── omsi-launcher-core/  launcher data side + `openomsi-launcher` terminal tool
│   ├── omsi-cfg/        text files, code pages, virtual file system, content roots
│   ├── omsi-script/     the OMSI script language (compiler + VM)
│   ├── omsi-o3d/ omsi-model/ omsi-texture/ omsi-geometry/   meshes, models, textures, splines
│   ├── omsi-map/ omsi-scenery/ omsi-timetable/ omsi-vehicle/ omsi-content/   content formats
│   ├── omsi-sim/        vehicles, AI traffic, people, physics
│   ├── omsi-render/     the wgpu renderer
│   ├── omsi-audio/ omsi-net/ omsi-plugin/ omsi-ui/   sound, multiplayer, plugins, UI toolkit
├── tools/             developer tools: omsi-check (format coverage)
├── scripts/           build scripts for every platform, version.sh, packaging files
├── assets/            fonts, Material icons, app icons (assets/icons/app), logos (assets/logos)
├── docs/              documentation (also published as the website)
├── site/              the GitHub Pages website
└── .github/workflows/ CI: release builds for every commit, the website

Contributing

Issues and pull requests are welcome - see CONTRIBUTING.md.

Support

openOMSI is made in free time. If you enjoy it and want to help it along, you can buy me a coffee - thank you!

Buy me a coffee

License

openOMSI is released under the MIT License. OMSI and OMSI 2 are trademarks of their respective owners. openOMSI is an independent project and is not affiliated with them.

About

OMSI 2 recreated from scratch in Rust, compatible with every map and mod (requires the original OMSI 2)

Topics

Resources

Contributing

Stars

86 stars

Watchers

9 watching

Forks

Releases

Packages

Contributors

Languages