Repository navigation
openOMSI 0.3.47
Pre-releaseopenOMSI 0.3.47
Beta, for testing. The launcher keeps players on the stable release; this build is for anyone who wants to try what comes next. Report what breaks in an issue, with the version. openOMSI needs an original OMSI 2 installation to run; it contains no game content.
In short
Integrated graphics get the frame rate of 0.2.30 back, with an unchanged picture. Online play moves to LAN protocol 16: everyone needs this version to play together. Servers can offer their own buses for download with the player's consent, admit simultaneous joins through a queue, and each server owner now gets its own hardware identifier, which players can switch off. Players can change rooms from the pause menu, and dedicated servers can allow teleports and set an optional RP speed limit. Mods and plugins can bring interface themes, graphics options apply live with a confirmation, and the launcher limits its disk caches. Manually issued tickets lie on the desk again, change keys hand out the right coins, passengers can wave at buses and change lines (both optional), and Xbox pads over Bluetooth LE work on Windows. A full privacy policy, masked addresses in logs, redacted crash reports and Discord status off for new installs complete the release.
Performance note: on a Radeon 680M (Linux, Vulkan, Berlin-Spandau in the cab), the frame rate goes from 147.6 fps to 154.6 fps (0.2.30: 155.3 fps), with byte-identical screenshots and half as many frames over 50 ms. Built-up snow and Enhanced light shadows are now off unless a player has chosen them, including settings files that were written before without these keys. A glass interface theme costs about 0.24 ms a frame while the pause menu is open on the contributor's RTX 4070 SUPER. The server fleet, room switch and optional passenger features were not benchmarked. See the details below.
Online play and servers
- This beta changes the online protocol (LAN protocol 16): players and servers must run the same version to play together. Hardware bans made under the previous protocol no longer match anybody; a server logs a warning at start when it finds such bans (#3540, @thibautgnt).
- Each server owner gets its own hardware identifier, and players can switch it off: a host with a ban list sends a random key, and the game derives an identifier from the machine and that key. All sessions of one owner still share it, so "ban for all my sessions" keeps working, but two owners can no longer match a player by it. Settings → General → Send servers an identifier for bans (
hardware_id) is on by default; switched off, servers withrequire_hardware_id = 1turn the player away, and their message says where to turn it back on. The Swift launcher changes were not built in the PR (#3540, @thibautgnt). - The multiplayer screens say who runs a session: joining, hosting and the Servers tab explain that sessions are run by players, not by openOMSI, and what the host receives (driver name, network address, chat and voice). Every saved server and public-list entry is tagged Community server or Run by openOMSI, and a dedicated server says the same to its operator at start (#3540, @thibautgnt).
- Servers can offer their own buses and paints: the launcher lists the server's fleet, and a bus or repaint the player lacks is downloaded only after consent, then verified (fingerprint, size and hash) and cached for the session without replacing installed mods. When the server copy cannot be fetched, the game joins with the installed bus if the player has it. Tests on a live server and with real GPUs were still pending at merge (#3535, @isaacsa2, @thibautgnt).
- Simultaneous joins wait their turn: a host admits a bounded number of loading players at once; the others are told to wait for a loading slot and retry automatically, in order. Older clients without this answer are asked to try again in a minute (#3535, @isaacsa2).
- Switch rooms without restarting: Esc → Multiplayer... enters or pastes another connection code or address, reconnects to the current room, or leaves and continues offline. The current room stays active until the player confirms the new one; a different map is loaded after confirmation, and if it cannot load, the old world stays playable offline rather than reconnecting. A host leaving or switching is warned that the other players will be disconnected, and hosts cannot join their own room. A fresh two-PC run of the final version was still outstanding at merge (#3488, @shamough1792).
- Hosting no longer trips over a busy port: the host reserves UDP and TCP content transfers together and skips a port another application already holds. LAN search and joins by bare IP or hostname try all ten automatic ports (27015 to 27024), while an explicit
ip:portor a session code still targets one port. A refusal from the host (full, banned, wrong version) is shown at once instead of after the join timeout. A fresh cold-transfer test across two computers was not repeated on the final version (#3365, @shamough1792). - Dedicated servers can allow teleports and recovery: F4, city-map and entry-point relocation go through the server, which checks the authenticated player and the destination. Administrators can go to a player, bring one or all players, and recover overturned buses.
allow_player_teleport = 0stays the default;1lets ordinary players move only their own bus. Player-hosted LAN sessions keep the host-only rule (#3481, @isaacsa2). - Optional RP speed limit for dedicated servers:
speed_limit_kmh = 60,75or80eases off the throttle near the limit and helps brake above it, without clamping the speed;0(default) turns it off. It is a cooperative limit applied by the client, not anti-cheat (#3481, @isaacsa2). - Admin passwords stay out of public chat:
/admincommands are recognised whatever their case, and a command missing its password stays local. Moderators no longer see administrator addresses in individual operation records (#3457, @isaacsa2).
Privacy and security
- A full privacy policy: openomsi.org/privacy now covers the game, multiplayer, optional services, crash reports, the hardware identifier, Discord, the website and its third parties. It is linked from the website footer and from a Privacy button in the launcher's Settings → General (not built for the Swift launcher in the PR) (#3536, @thibautgnt).
- Server logs no longer grow for ever: the server scripts start
server.loganew at every start and pastlog_max_mb(20 MB by default), keepinglog_keepolder logs (5 by default). Public player addresses are cut to their network inserver.logand in a hosting game'sgame.log; local addresses stay whole, andlog_addresses = 1keeps them for an abuse report. Newserver.cfgfiles describe what the server keeps, and Docker logs are capped.run-server.ps1was reviewed but not run on Windows (#3545, @isaacsa2). - Crash reports leave out names and chat: the home folder, account names in paths, the driver profile name, other players' names and LAN chat lines are removed before a report is copied or opened as a GitHub issue, on desktop and mobile. Names typed freely elsewhere in a log line are not recognised. Android and iOS game logs now mask public addresses too, and names with apostrophes are fully removed; native device runs were not made in the PR (#3545, #3549, @isaacsa2).
- Discord status is off for new installs: Rich Presence now defaults to off in the game, the launcher and the Apple settings. A settings file that already has it on keeps it (#3545, @isaacsa2).
- Patched ZIP handling and quieter host logs: ZIP extraction uses
zip9.0.5 for a reported advisory. The host startup log no longer prints the session identity, host name or join code, and a failed dedicated-server start no longer prints the configuration path (#3486, @isaacsa2).
Graphics and performance
- The frame rate of 0.2.30 is back on integrated graphics: the main pass is drawn in one piece again, the navigator's map goes with the frame's own submit, and the ground's detail grain skips what a pixel cannot show. Measured on a Radeon 680M (Linux, Vulkan, 1280×720, 4× MSAA, 4 runs of 120 s): 147.6 → 154.6 fps, p99 12.44 → 12.22 ms, frames over 50 ms 6.0 → 2.8 per run; 0.2.30 reached 155.3 fps. Not tested on Windows, Android, iOS or in VR;
OMSI_MAIN_SPLIT=1brings back the old split for comparison (#3521, @thibautgnt). - Graphics changes apply while driving, with a confirmation: compatible options apply in the running game and must be confirmed within 20 seconds, or the previous values come back. Renderer mode and device formats still need a restart. New sliders: Road sunlight glare (Enhanced, 100% is the previous look) and Traffic headlight brightness (all modes, other vehicles only). The upscaler is now labelled AMD FSR 1.0 (#3535, @isaacsa2).
- Lighter defaults for new and untouched settings: built-up snow on roads and roofs and Enhanced light shadows are off when the player never chose them, older settings files included. Both stay in the Graphics settings, and an explicit choice is kept. With snow off, snowy roads use the season's winter textures as in OMSI 2 (#3481, @isaacsa2).
- No more coloured speckles on AMD in Ultra with MSAA: shader values AMD left uninitialised are cleared, and near-zero normals no longer produce invalid reflection directions (#3499, @teamstarwars-dev).
- No tearing on Vulkan with vsync and a frame limit: with a limit below the screen's refresh rate (for example 40 fps at 60 Hz), Vulkan and OpenGL now present every frame in order. The picture is steadier but can judder slightly; DX12, Metal and "Unlimited" are unchanged (#3512, @thibautgnt).
- Panorama backdrops give way as you approach: an object's level of detail is chosen from its distance, as in OMSI, even when the camera is inside its bounding sphere. On ProjektKameniste, the blurred hill photo no longer stands across the road in front of the map's own scenery. Objects whose top LOD threshold is high may now switch levels up close; only Kameniště was checked in the game (#3425, @VlastikYoutubeKo).
- Vanilla headlights no longer light the bus's own front on some vehicles, such as the ADL E400 MMC (#3487, @georgefung892).
- Script-switched textures work again on some models: models combining
[matl_change]with a free texture, such as the ADL E500 MMC's monitor, show the right texture when powered, a regression since 0.3.41. Tested on Windows only (#3475, @georgefung892). - The navigator keeps dense maps whole: ground and buildings are drawn exactly up to a much larger budget (2 million ground vertices, 750,000 each for shadows, walls and roofs); past it, the ground is simplified rather than later roads being dropped. These are upper bounds, not preallocated memory. Before/after screenshots on Berlin-Spandau were not provided (#3481, @isaacsa2).
Launcher and interface
- Interface themes for mods and plugins: Options → Interface → Theme pack lists themes brought by a mod (
Themes/<id>/theme.json) or a plugin. A theme can recolour the pause menu, settings, photo mode, developer tools and plugin panels, show its logo, turn the panels into frosted glass over the game, and style the loading screen, where its logo can serve as the loading bar. openOMSI's own look stays the default and is unchanged. A broken theme falls back to it with a line ingame.log. Glass was tested on DX12 only; without window copy support, panels are see-through without blur, and VR keeps the theme's colours without glass. Plugins getui.themes,ui.themeandui.set_theme(omsi.ui.version7); the format is indocs/THEMES.md(#3278, @Luc-nbr). - The launcher keeps its disk caches in check: the local cache has a soft limit of 1 GB and multiplayer downloads 4 GB; active downloads may go over for a while, then older files are removed when safe. Troubleshooting shows the usage and offers Clean to limits and confirmed clearing, which needs every game closed and protects server vehicle files. Desktop only (#3535, @isaacsa2).
- Each graphics profile is a file of its own: profiles live in
~/.openomsi/graphics_profiles/, so a damaged file loses only its own profile, and a profile can be copied or shared by itself. An oldgraphics_profiles.jsonis moved into files on first use and kept asgraphics_profiles.json.migrated. Not tested on macOS or Linux (#3539, @rafaelkaiz). - Plugins are off on brand-new installs, for now: a new settings file starts with Disable plugins on, as a temporary safety measure while plugin freezes are investigated. Existing settings files keep plugins as they were, an explicit choice is always respected, and normal OMSI bus scripts still run (#3481, @isaacsa2).
- F4 "Move here" faces the camera: the bus is put down facing the direction the map camera looks, instead of keeping its old heading (#3421, @rafaelkaiz).
- The information bar shows temperatures to one decimal (for example 22.0 °C), as OMSI 2 does, so heating and cooling can be followed. The navigator is unchanged (#3454, @trolley813).
Passengers, tickets and announcements
- Tickets issued by hand lie on the desk again: on buses without a ticket printer, clicking a tear-off block puts that single ticket on the desk, several can lie there at once, and the passenger takes only the one they accepted; a wrong ticket stays. The
ev_ticketsale_giveticketandev_ticketsale_taketicketsounds play. Ticket packs withoutTicket_<n>_single.o3dmodels cannot show the ticket (#3525, @insus100, @thibautgnt). - Change keys hand out the coin they name: on cash desks with a coin changer (such as the Heuliez GX327), the 0.50, 1.00, 2.00 and 5.00 keys give that coin or note again on maps whose money system has an extra 0.20 coin, such as Grand Paris-Moulon. Only
cashdesk_changer_*andcashdesk_change_*triggers change; non-euro money systems were not tested (#3511, @thibautgnt). - Passengers can wave at approaching buses, or turn away from full ones (optional): Passengers signal approaching buses adds a raised arm and a look towards a compatible bus; Passengers react to full buses adds a short glance with the arm lowered. Both are off by default, affect Natural animation only and never change who boards. Remote players' passengers do not show it. Gameplay screenshots and low-end performance figures were not provided (#3427, #3428, @isaacsa2).
- Passengers can change lines in single player (optional): Passenger connections between lines, off by default with a 20% chance once enabled, lets some alighting passengers walk to a nearby stop (within 80 m) for an onward service, at most twice each. Walks are checked conservatively, not with full pavement pathfinding. LAN and dedicated servers always keep it at 0% (#3429, @isaacsa2).
- Passengers on AI timetable buses press the stop button: the bus's script now receives the stop request, so rear doors that wait for it (such as on
NSAC_City_2Door.bus) open. Not checked in a live run with that bus (#3442, @jay23606). - The line's start recording plays once at the first stop: with arrival announcements on, it no longer repeats every second while the bus stands there, and an announcement the IBIS did not take is retried instead of lost. Only buses with auto-announce on (off by default) are affected (#3422, @m3rlinek01).
- Manual roller blinds on the Likino 677 follow the chosen destination: their triggers are recognised, so the blind turns to the selected terminus when the bus is switched on and passengers board for it. The Ikarus i200, which uses the same triggers, was not tested in the game (#3538, @insus100).
Driving, vehicles and traffic
- A restart keeps the traffic and passengers: after the game restarts itself because the graphics card was lost, or on a quick load with F9, AI traffic, waiting passengers, the driver file and the depot bus are kept instead of an empty world (#3512, @thibautgnt).
- Driven wheels can spin on ice from a standstill, so ASR scripts have something to react to. Wheel locking and snow grip are not covered, and some scripts may react differently at standstill (#3512, @thibautgnt).
- AI timetable buses go round a car parked in their lane on roads with two lanes each way, then return to their route. Not tested on the reported Novi Sad map or in LAN play (#3512, @thibautgnt).
- Automatic start-up handles more ignition systems: separate battery-master switches, multi-stage keys and stages that start the engine without a starter trigger, with recovery after a stall. Reverse and engine-stop triggers are never pressed as start-up actions (#3481, @isaacsa2).
- Launcher bus options win over the repaint's: a
--setvaroption (door type, mirrors, fog lamps) now stays even when the chosen repaint sets the same variable. AI copies of that repaint are unchanged; what other online players see was not checked (#3501, @Luc-nbr). - A trolleybus pole pulled down by the retriever can go back on the wire: each raise now behaves like the first instead of the pole snapping back to the hook. Verified by a test, not in the game (#3480, @m3rlinek01).
- Smaller stability fixes: recovery logs, completed duties on the schedule paper, empty photo buffers, controller names and mirror sliders no longer crash or misbehave on edge cases, and passenger profiling history stays bounded (#3457, @isaacsa2).
Controllers and wheels
- Xbox pads over Bluetooth LE work on Windows: a pad seen through DirectInput drives the bus like a wired one (steering, combined triggers, buttons, D-pad). Only real Xbox pads are taken (Microsoft vendor id, known pad product ids, no force feedback), so wheels such as the G920 or a SideWinder keep their setup and force feedback. The axis layout comes from the author's pad; other Xbox models over DirectInput are untested (#3499, @teamstarwars-dev, @thibautgnt).
- Force feedback reaches the MOZA R5's wheel again: forces go to the lowest axis with a motor (steering before pedals), whatever order the driver lists them in. Only devices with several force axes listed out of order change; other wheels were not tested in the game (#3494, @Luc-nbr).
Dependencies
- Routine dependency updates: the game and launcher crate groups,
parking_lot0.13,sevenz-rust20.24.1,unrar-rs0.14.1 andresvg0.49 (#3527, #3528, #3529, #3530, #3531, #3532).
Thank you
- @isaacsa2, for the server fleet and join queue, disk budgets, live graphics options, server teleports and speed limits, optional passenger gestures and connections, privacy work on logs, crash reports and Discord, and many stability fixes.
- @Luc-nbr, for interface themes, the MOZA force-feedback fix and launcher options that win over repaints.
- @shamough1792, for switching rooms in game and reliable host ports.
- @insus100 and @jay23606, for tickets on the desk, roller blinds and stop requests from AI bus passengers.
- @teamstarwars-dev, @georgefung892, @VlastikYoutubeKo and @rafaelkaiz, for AMD and Xbox fixes, vehicle lighting and textures, backdrops, graphics profiles and F4 placement.
- @m3rlinek01 and @trolley813, for start announcements, trolleybus poles and information-bar temperatures.
Full changelog: 0.3.46 → 0.3.47.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | openOMSI-0.3.47-windows-x64-setup.exe (installer) or openOMSI-0.3.47-windows-x64.zip |
| Windows ARM64 | openOMSI-0.3.47-windows-arm64-setup.exe (installer) or openOMSI-0.3.47-windows-arm64.zip |
| macOS (Apple silicon) | openOMSI-0.3.47-macos-arm64.dmg (disk image) or openOMSI-0.3.47-macos-arm64.zip |
| macOS (Intel) | openOMSI-0.3.47-macos-x64.dmg (disk image) or openOMSI-0.3.47-macos-x64.zip |
| Linux x64 | openOMSI-0.3.47-linux-x64.zip |
| Linux ARM64 | openOMSI-0.3.47-linux-arm64.zip |
| Android (arm64, 8.0+) | openOMSI-0.3.47-android-arm64.apk |
| Dedicated server, Linux | openOMSI-0.3.47-server-linux-x64.zip, openOMSI-0.3.47-server-linux-arm64.zip |
| Dedicated server, Windows | openOMSI-0.3.47-server-windows-x64.zip, openOMSI-0.3.47-server-windows-arm64.zip |
The SHA-256 of every file is in SHA256SUMS: sha256sum -c SHA256SUMS --ignore-missing checks the ones downloaded.