Repository navigation
openOMSI 0.3.49
Pre-releaseopenOMSI 0.3.49
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
Online play moves to LAN protocol 17: players and servers need this version to play together. Timetable buses show their fleet numbers, plates and the server's destination signs, and passengers near players are protected when a server reuses its people pool. Dedicated servers gain their own AI limits, a clock that catches up with real time, steadier joins and less repeated work during bus downloads. Solo driving and inviting friends share Drive. You can repaint a bus in place and bind a head-tracking recentre button. The navigator uses smaller video-memory buffers and preserves more road detail; distant passengers, night-time signs, trolleybus radio switches, AI driver personalities and local diagnostics also improve.
Performance note: the navigator's interface vertex buffers fell from 110 MB to 66 MB in the contributor's Berlin-Spandau measurements on a Radeon 680M. This is a buffer-allocation reduction, not a 40% reduction in total game VRAM. Dense-map rebuild measurements improved, but the unmatched driving sessions do not establish an FPS gain. The multiplayer changes were not validated with a full busy-server, 64-player run.
Online play and servers
- Multiplayer protocol 17. A game of this version and a server of this version play together; older ones are turned away at the door, as at every protocol change (#3682, @isaacsa2).
- Timetable buses show the host's numbers, plates and destination signs. The host sends each bus's identity and depot-file name, and its
.hofis fetched for the session. A player's different depot choice no longer changes the AI bus's sign. Downloads are kept per session, so joining another host starts afresh. A full real-player check with the map's buses was still outstanding in the PR (#3682, @isaacsa2). - People no longer vanish in front of the players of a server. When the pool of people (
ai_max_humans) is full, somebody walking or standing out of sight is taken to make room, as in OMSI 2. A dedicated server judged "out of sight" from its own camera, where nobody plays, so it took people standing beside the players - passengers who had just got off a bus among them. Now nobody near any player is taken (#3682, @isaacsa2). - A server sets its own AI limits in
server.cfg:ai_unsched_factor(the random traffic, percent of the map's density),ai_max_scheduled,ai_max_parkedandai_max_humans, as the game's options have them. Left empty, the machine'ssettings.cfgsays, as before. They count for the whole server, so a busy one can raise them (#3682, @isaacsa2). - A server that cannot keep up keeps the day. Its world clock (the day, the timetable, what the players are told) moved with its physics steps, so a server short of CPU fell behind the day for good, silently: at half its steps, half a day's timetable in a day. It follows the wall now, at most twice as fast while it takes back what it lost; the physics still take their fixed steps, and the log says when the machine cannot keep up (#3682, @isaacsa2).
- Joining a busy server is quicker. A player loading holds one of the eight loading slots only while their game is heard from: one closed or stuck no longer keeps the others waiting for two minutes (#3682, @isaacsa2).
- A server still loading its world lets players in once it is ready, telling them it is loading (an older game is told to try again); before, one let in met an empty world (#3682, @isaacsa2).
- A game joining through a server's tunnel tries its direct address first, which a quick tunnel's breaking connections do not touch, and keeps the tunnel if it does not answer within three seconds. The server finds the address by itself: its own internet address, else the one the internet sees if it reaches itself there - never behind a carrier's NAT (CGNAT), so nobody waits on an address that cannot answer.
public_addressinserver.cfgnames another, orofftells none (#3682, @isaacsa2). - Bus downloads repeat less packing work and limit concurrent compression. Every piece of a bus was packed the moment it was asked for, on the thread of its connection (up to 160 of them), and once more for every player who asked: players downloading together packed on every core, and the server's traffic and people fell behind. A quarter of the cores pack at most (at least one worker), the others' downloads wait their turn, and a piece packed is kept for the next player. A bus a player sends a dedicated server is packed at its smallest at once, in the background, so the others fetch it ready (#3682, @isaacsa2).
- A server's fleet bus is listed once, not once per player. A player asking for a bus of the server's fleet had the server load it and read every file of every paint again (the seconds a bus takes in the fleet check), once for each paint asked for: many players at once took every core. The list the fleet check made at the start is given instead, while the bus's files are as they were; a list to make again is made by one request at a time (#3682, @isaacsa2).
- The rear engine is heard inside another player's articulated bus. Rear-section sound sets now run when riding inside too, instead of only in the outside view. A live multiplayer run with the reported vehicle was not made in the PR (#3658, @thibautgnt).
Graphics and performance
- The navigator's map uses smaller vertex buffers, with the same picture. Packed interface vertices reduce the Berlin-Spandau map's buffers from 110 MB to 66 MB; all reported game allocations fell from 873 MB to 829 MB, while the driver's reserved VRAM fell less. Measured on Linux Vulkan, with buffer/pipeline tests on macOS Metal. DirectX 12 and Android GLES were not tested in that PR (#3671, @thibautgnt).
- Dense navigator and city maps keep road shapes and markings at close zoom. Roads receive the existing geometry budget before terrain, and off-view triangles no longer waste it. Bounded fallback remains, so exceptionally dense or broad views can still coarsen roads. Automatic driving zoom alone no longer forces ground rebuilds. Windows GreatGrundorf2 LHT driving and images support the detail change; unmatched-duration performance figures do not prove a speed-up. Other platforms and VR were not exercised (#3662, @shamough1792).
- Waiting passengers remain visible farther down the road. Each person is culled as a whole object instead of separate small body parts: with the default minimum-object-size setting, the reported range increases from about 130 m to about 265 m. Busy stops can therefore draw more triangles (#3693, @thibautgnt).
- Less sun-glare flicker behind the visor, and coloured signs at night. Enhanced checks the close shadow map first for the off-screen sun, and caps unswitched night-map brightness so signs and windows keep their colour. Those windows and lamp heads are dimmer and bloom less; script-switched night maps are unchanged. The visor limitation with ray tracing remains (#3693, @thibautgnt).
- Road glare also controls night-time highlights. The Enhanced slider, renamed from Road sunlight glare, now tones down headlight and street-lamp highlights on roads and terrain, wet roads included. Puddles are unchanged, and far lamps at grazing angles can retain some glare even at 0% (#3658, @thibautgnt).
Launcher and interface
- Solo driving and inviting friends share Drive. Map, bus and duty stay selected when switching modes; a running host's code remains on the same page. Join friends opens a code-only dialog; server addresses and saved/public lists stay separate under Servers. Preparing a connection does not start the game or save a server implicitly. Two Windows PCs successfully hosted/joined in the contributor's test; other native platforms and VR were not manually exercised (#3676, @shamough1792).
- The launcher shows a server's date beside its time and weather (in the list and before joining), from the server's status page (
date); an older server shows none (#3682, @isaacsa2). - The launcher says why a game could not host. When a game started to host by code could not open its session (its port taken by another program, or refused by a firewall or an antivirus: since 0.3.47 it reserves a TCP port for its mods beside the UDP one, and checks it reaches itself there), Invite friends waited for a code that never came, without a word. It now shows the game's reason (#3682, @isaacsa2).
- Choose whether today's date keeps the real year. Settings → Gameplay → Simulation gains Keep today's year, even outside the map's years, shown with Start on today's date. With it off, the year is still fitted to the map's years as before. The web and Apple launchers follow the choice (#3658, @thibautgnt).
- The launcher scans buses once at a time. A content change during a scan requests one follow-up instead of starting several scans side by side and making the counter jump. This does not by itself resolve reports of a full rescan at every start (#3658, @thibautgnt).
Driving, vehicles and traffic
- A new livery without a new bus. Vehicle options → Livery offers a searchable repaint list and applies the choice where the bus stands, keeping passengers, trip, odometer, fuel, doors, displays and damage. Variables the old repaint alone set return to their unpainted values, and explicit player options stay. Old render resources are released; a situation saved in default paint loads in default paint. LAN games still choose the livery before placement, and loading textures can cause a short hitch (#3644, @thibautgnt).
- AI drivers have more varied personalities. Gaussian draws make ordinary values more common and extremes rarer for several traits, with new horn-patience and amber-light factors. Some drivers can rarely proceed through amber or red. The capped 60 FPS benchmark was close to its base and does not establish an uncapped frame-rate improvement (#3498, @trolley813).
- Late buses still find waiting passengers, and distant roads receive AI cars. Stops consider services up to 15 minutes late instead of roughly one minute. Cars can appear in plain view beyond 350 m, including oncoming traffic. Short nearby side streets and splines starting beyond the spawn radius remain limitations; distant cars can pop in (#3658, @thibautgnt).
- Trips with trailing spaces in their file names run again. Timetable, editor and route lookups match the trimmed trip names. Saving such a trip in the editor can create a file without the trailing space (#3658, @thibautgnt).
- Duty entry points keep their indices. A map with some missing entry-point objects no longer shifts a valid high-numbered selection down. A selected point whose own object is missing still falls back to the timetable start (#3658, @thibautgnt).
- Buses answer the pedals without the OMSI program folder. Built-in road-vehicle variables are available when
programis missing or speltProgram, also restoring the affected temperatures, lights and outside-sound variables. Native Android testing was not performed in the PR (#3658, @thibautgnt). - Loud engine recordings play cleanly when the game volume gives them room. Sound entries over 100% account for game volume before the buffer limit, as in OMSI, instead of fluttering around that limit. Those entries can sound louder than before at game volumes below 100% (#3658, @thibautgnt).
- Scripted tram cars contribute their own brakes, and unbound pantographs keep their scripted pose. Each car's own brake force is counted once and cleared each frame; copied lead-car force is not counted again. Pantographs without a raising trigger no longer receive an extra simulated displacement. Live tram testing was not made in the PR (#3658, @thibautgnt).
Controllers and wheels
- A key or a wheel's button can recentre head tracking. Head tracking: centre again takes the current pose as the middle for opentrack, native TrackIR/freetrack and Tobii without changing F1's behaviour. A pre-existing
head_tracking_recentercontroller binding now works. The action has no default key; the live tracker-and-wheel check was still outstanding in the PR (#3636, @Luc-nbr). - Force-feedback road rumble follows the front wheels' surface. Smooth asphalt is gentler; cobblestones, gravel and dirt are stronger. The existing road-vibration setting still scales it. A separate impact-strength control is not included, and hardware testing was not made in the PR (#3658, @thibautgnt).
Trolleybuses and plugins
- One press can toggle a radio switch. A cab button sending
Trolley_Switch_Request = 2flips receivers on its channel in range once per press. Held manual requests no longer change switches merely by entering their range; a nonzero route code still sets its listed switches on arrival. Tested with Lublin and Trollino add-ons; the route-code entry path has regression coverage but was not used by those add-ons (#3670, @GUMOLIT). - Fewer spurious sparks and closer trolley sounds. Wire roughness fades at joints, so the shoe no longer arcs merely because the pattern restarted. Maps can tune frog/insulator arc chance, strength and minimum current. Built-in sounds fade over shorter distances and are muffled in a closed cab; vehicle sound entries keep their settings. Maps own frog/switch recordings, while hiss and arc crack belong to the vehicle. VR, online play and Windows/Linux in-game tests were not made in the PR (#3670, @GUMOLIT).
- A plugin can load its DLL from beside its
.oplin a subfolder. The top-levelpluginspath remains first, then the.oplfolder. Duplicate copies with the same.opland DLL file names load from the first folder only; a failed first copy does not fall through to another. A 32-bit DLL still needsomsi-plugin-host32.exe. A native plugin and a separate Lua port can both run if both are installed (#3688, @thibautgnt). - Plugin permission tests keep completed result messages during loading. The fixture starts consent requests from frame IO, and a completed denial is reported once after reload. This is a test-only fix without player-visible behaviour changes (#3667, @shamough1792).
Privacy and diagnostics
- A local history helps explain crashes and stuttering. The game keeps small, privacy-filtered records of frame times, how a game ended and its last error in
~/.openomsi/diagnostics/, for 30 days and at most the newest 100. Settings → General → Support → Support package includes the history for the player to inspect and attach; nothing is uploaded automatically. A killed process can leave an open record without an error, which is not proof of a crash. This is the initial recorder: later games in the same mobile process can miss their own record; the subsequent per-game fix is not in 0.3.49 (#3697, @thibautgnt).
Thank you
- @isaacsa2, for multiplayer bus identities and depot files, people-pool protection, server AI limits and clock, joining and download fixes, and hosting-error messages.
- @shamough1792, for the shared Drive/invite flow, clearer join dialogs, preserved navigator road detail and plugin-test stability.
- @Luc-nbr, for a bindable head-tracking recentre action.
- @GUMOLIT, for trolleybus radio toggles, wire-joint arcs and sound balance.
- @trolley813, for AI driver personality and randomness improvements.
- @thibautgnt, for in-game liveries, navigator memory savings, graphics and vehicle fixes, plugin lookup, local diagnostics and integration.
Full changelog: 0.3.48 → 0.3.49.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | openOMSI-0.3.49-windows-x64-setup.exe (installer) or openOMSI-0.3.49-windows-x64.zip |
| Windows ARM64 | openOMSI-0.3.49-windows-arm64-setup.exe (installer) or openOMSI-0.3.49-windows-arm64.zip |
| macOS (Apple silicon) | openOMSI-0.3.49-macos-arm64.dmg (disk image) or openOMSI-0.3.49-macos-arm64.zip |
| macOS (Intel) | openOMSI-0.3.49-macos-x64.dmg (disk image) or openOMSI-0.3.49-macos-x64.zip |
| Linux x64 | openOMSI-0.3.49-linux-x64.zip |
| Linux ARM64 | openOMSI-0.3.49-linux-arm64.zip |
| Android (arm64, 8.0+) | openOMSI-0.3.49-android-arm64.apk |
| Dedicated server, Linux | openOMSI-0.3.49-server-linux-x64.zip, openOMSI-0.3.49-server-linux-arm64.zip |
| Dedicated server, Windows | openOMSI-0.3.49-server-windows-x64.zip, openOMSI-0.3.49-server-windows-arm64.zip |
The SHA-256 of every file is in SHA256SUMS: sha256sum -c SHA256SUMS --ignore-missing checks the ones downloaded.
VirusTotal
The files of this release are being scanned, results appear here as they come, by the antivirus engines of VirusTotal. When an engine flags a file, the maintainers look into it; a file reviewed as a false positive says why, and the engine's maker is told.
| File | VirusTotal |
|---|---|
openOMSI-0.3.49-android-arm64.apk |
Clean: no engine out of 66 |
openOMSI-0.3.49-linux-arm64.zip |
Clean: no engine out of 67 |
openOMSI-0.3.49-linux-x64.zip |
Clean: no engine out of 65 |
openOMSI-0.3.49-macos-arm64.dmg |
Clean: no engine out of 61 |
openOMSI-0.3.49-macos-arm64.zip |
Clean: no engine out of 67 |
openOMSI-0.3.49-macos-x64.dmg |
Clean: no engine out of 61 |
openOMSI-0.3.49-macos-x64.zip |
Clean: no engine out of 66 |
openOMSI-0.3.49-server-linux-arm64.zip |
Clean: no engine out of 65 |
openOMSI-0.3.49-server-linux-x64.zip |
Clean: no engine out of 66 |
openOMSI-0.3.49-server-windows-arm64.zip |
Clean: no engine out of 68 |
openOMSI-0.3.49-server-windows-x64.zip |
Clean: no engine out of 66 |
openOMSI-0.3.49-windows-arm64-setup.exe |
Checked: 1 of 67 engines, a heuristic guess, usually a false positive |
openOMSI-0.3.49-windows-arm64.zip |
Checked: 1 of 68 engines, a heuristic guess, usually a false positive |
openOMSI-0.3.49-windows-x64-setup.exe |
Checked: 1 of 49 engines, a heuristic guess, usually a false positive |
openOMSI-0.3.49-windows-x64.zip |
Clean: no engine out of 51 |
openOMSI-android.apk |
Clean: no engine out of 66 |