Repository navigation
Releases: kanezr/eefiOMSI
Release list
eefiOMSI v0.2.0.2
eefiOMSI v0.2.0.2
Performance upgrades and fixes from the latest version of openOMSI
Early release. eefiOMSI needs an original OMSI 2 installation to run; it contains no game content.
If you have any issues, report it in the GitHub issues page or in the discord server.
Fixes
- Less CPU work for traffic out of sight: a car outside the view and beyond 150 m runs its script a few times a second; timetable buses keep their usual beat. Distant, unseen cars' lamps and smoke leave the frame's work, and placing dormant traffic no longer scans every lane for every car (#5, @kanezr).
- Destination displays light up at night in Enhanced and Enhanced+: a script's screen is never taken for a pane. The EMT Citaro's Krueger matrix (Mallorca) is blended, writes no depth and draws its letters through a
\S:ntransparency map - the layout of a window - so the Enhanced pictures shaded it as glass, which gives no light of its own: its light map was left out and its letters stayed grey at night, where Vanilla+ lights them (#5, @kanezr). - Less GPU work in Enhanced by day: AI cars no longer lend the scene all their headlamp beams whenever their lights are on. Clear daylight needs none; gloomy daylight keeps the nearest few, and night keeps the previous range. On the author's Apple M4, the GPU time of a clear-day frame fell from 27.4 to 13.0 ms, and a heavy grey snow day from 27.6 to about 19 ms. These are measurements of those scenes, not a gain every PC should expect. AI vehicles use suitable lower levels of detail from their models, and a timetable bus waits for its vehicle to be read ahead instead of building it on the frame it appears on (#5, @kanezr).
- AI cars and buses are drawn with their model's lower levels of detail (
[LOD], as Omsi.exe picks them by the vehicle's size on the screen, and as the scenery's levels are): only the first level was loaded, so each AI vehicle was all its meshes at any distance. A model with interior lamps, displays, switched textures or a lit or animated lower level (a bus, a tram) keeps its full meshes.OMSI_FORCE_LOD=1draws the lower levels at any size, for a look at them (#5, @kanezr). - Timetable buses no longer stall the frame when they appear: a departure whose vehicle was not on the graphics card yet (the clock set far ahead, a type nothing read ahead) had its meshes and textures built on the frame it appeared on - 120 to 300 ms; it is tried again once the vehicle is read ahead. A parallel loop's caller sleeps while it waits for the items a helper has started instead of spinning (#5, @kanezr).
- A paint scheme's
[setvar]is what the bus shows, also when a script writes the same variable every frame: the scheme's values are set again after the scripts, as Omsi.exe draws them. The Kajosoft Jelcz Vectus with the JGSP Novi Sad repaint chooses the glazed doors (v_drzwi 1) and had the standard doors' white frames (#5, @kanezr). - Culling and shadow casters in many small parts: less main-thread time per frame in dense areas (about 1 ms in a lit city street at night), so a higher frame rate where the CPU is the limit (#5, @kanezr).
- Destination displays light up at night - a script's screen is never glass (#5, @kanezr).
- Startup tests isolate Steam and temporary folders more reliably (#5, @kanezr).
- Closing the game stops frame stages instead of letting plugins load again on exit (#5, @kanezr).
- Cabin condensation reads the weather's humidity in the right units (#5, @kanezr).
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.0.2-windows-x64.zip |
eefiOMSI v0.2.0.1
eefiOMSI v0.2.0.1
Small fixes
Early release. eefiOMSI needs an original OMSI 2 installation to run; it contains no game content.
If you have any issues, report it in the GitHub issues page or in the discord server.
Fixes + Changes
- Reduced Enhanced SSAO blur GPU work. Reuses linear depth already produced by the AO pass for edge-aware blur weighting, avoiding repeated depth-buffer reads and reconstruction (#4, @musmuin).
- Fixed workspace test failures. Updated stale test imports and fixtures, synchronized generated flag and plugin API documentation, and refreshed the scene shader fingerprint. The updater's
FIRST_SELF_TESTEDcutoff was left unchanged (#3, @musmuin). - Scenery backdrops disappear as you approach them. Backdrop objects identified by their filename, friendly name, or group are limited to their owner tile, so distant one-sided scenery cards no longer remain visible across nearby roads (#3, @musmuin).
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.0.1-windows-x64.zip |
eefiOMSI v0.2.0
eefiOMSI v0.2.0
based on openOMSI v0.3.37 (yes i returned back to the orignal openOMSI version)
Early release. eefiOMSI needs an original OMSI 2 installation to run; it contains no game content.
If you have any issues, report it in the GitHub issues page or in the discord server.
Added
- Added a chance (default 25%) for late passengers to spawn out of sight and run for the bus as it arrives at a bus stop, complete with realistic running animations and updated AI bus behavior to wait for them. (I changed the chance.)
- Cosmetic cigarette: Press B on foot to toggle it. The generated cigarette and rising smoke appear on the avatar, and the smoking state is synchronized to LAN players. The LAN protocol version changed, so all players must use compatible updated builds (you can see the cigarette in third person only).
- EXPERIMENTAL: Added a Bouncier suspension option for a livelier response to bumps, using the experimental wheel-mass and tyre suspension model. Standard suspension remains the default.
Performance
- Enhanced: vehicle headlights fade out with daylight. Their spotlights are left out of the light grid at full daylight, avoiding per-pixel light evaluation and unnecessary headlamp shadow work when the beams are washed out. Driving through a tunnel during daytime might look a bit worse.
- Reduced driving hitches in new areas by restoring background decoding for painted ground textures on the loader thread, eliminating main-thread stalls during tile transitions.
- Eliminated quarter-second freezes when loading tiles with extremely long AI paths by optimizing traffic grid cell checks with a hash set, drastically reducing link times and frame spikes.
- Improved frame times while driving by caching render bundle resource bindings only when batches repeat from the previous frame, reducing main-thread CPU overhead and eliminating redundant per-frame allocations.
Changes
- When scenery textures exceed the GPU memory budget, up to 256 distant textures can now be reduced per budget pass (up from 96), helping newly streamed scenery recover its detail sooner. The pass still limits its work time per frame.
- Made auto-updater work on my github repos.
Fixes
- Road markings (crossings, zebra, spline paint) no longer disappear or flicker at distance. Surface objects placed on roads now get the proper depth bias (1.25) so the vertex shader pulls them above the road surface consistently. Before, they used the legacy 0.9 bias which fell outside the shader's decal range (1.1–1.35), causing Z-fighting with the road at grazing angles.
- Enhanced: volumetric fog and headlight beams no longer show a coarse checkerboard pattern. Fog-light rays now use evenly distributed samples along the beam, and stable midpoint sampling for the integrated fog light, reducing visible grid-like dithering in fog.
- Matched original OMSI 2 behavior for undefined model variables by ignoring [visible] comparisons, retaining base materials, removing model-driven variable inference, and adding asset-free regression tests.
From newer openOMSI releases (v0.3.37+)
- Added support for passengers to pay using both banknotes and coins based on the map's currency configuration, allowing Lua plugins to set custom payment amounts via the omsi.people.set_ticket() API without altering ticket prices.
- A shorter hitch when a very detailed object comes into view: Grand Paris-Moulon's LED street lamps went from 25 to 10 ms of one frame.
- Destination displays keep their text from afar: the route text no longer disappears when the camera moves a few metres away from the bus, as on the LiAZ 5293.53 and many other buses.
- No random pedestrians on footpaths with zero density, as the map asks, such as the traffic island near Duba on map 400. People already walking can still use those paths.
- Bigger raindrops on the glass: fewer, larger drops replace fine specks on the windows, so the wipers' sweep shows clearly.
- Choose which vehicles show smoke: a new Vehicle smoke option, in the launcher and in the game's Graphics menu, shows smoke from all vehicles (the default), only your own bus with its articulated sections, or none. Scenery smoke and glowing effects stay as they are.
- A new Shift+Y information bar: a compact, rounded bar of two rows, route, time, speed, speed limit (in red) and delay on the first, distance, odometer, temperatures, passengers and fuel on the second, with its labels in english.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.0-windows-x64.zip |
eefiOMSI v0.1.0
eefiOMSI v0.1.0
I have decided to start working on bigger and better stuff. I also have changed to Sobol's version of openOMSI due to less bugs.
First release. eefiOMSI needs an original OMSI 2 installation to run; it contains no game content.
If you have any issues, report it in the GitHub issues page or in the discord server.
New
- Graphics: AMD FidelityFX Super Resolution 1.0 (FSR 1.0) upscaling with EASU (Edge-Adaptive Spatial Upsampling) and RCAS (Robust Contrast-Adaptive Sharpening). Enabled via
fsr=1in settings or the launcher's Graphics tab. Works when render scale < 100% (Settings → Render scale). Sharpness adjustable 0.0–1.0 (fsr_sharpness).
Performance
- Render hot path: Eliminated per-frame
Vec::new()allocations inrender_inner()(prepass/main pass batching, draw item collection, culling),prepare()(instance entry arrays), andprepare_lights()(light grid) by usingVec::with_capacity()with size hints derived from visible instance counts. Reduces allocation pressure and improves frame time consistency. - AI traffic: Reused per-frame hash maps and vectors in
Traffic::tick()(by_lane,coming,reservations,walkers_map,remove,frames) with capacity hints based on car count. Avoids repeated allocations for lane occupancy tracking, junction requests, and AI frame data. Reusesgeo_prevandindex_ofbuffers. - Render culling & blend sorting: Added capacity hints to
visible/foundvecs in frustum culling (Vec::with_capacity(n/2)). Replacedholders.contains()O(n) lookup withHashSetin blend sorting. Added reusable per-frameHashMapfornearest_by_origin(object origin → nearest blended mesh distance) instead of allocating each frame. Pre-allocatedkeyedvec for blend sorting. - prepare_smoke/prepare_coronas: Pre-allocated working buffers with capacity hints, eliminated intermediate collects, and used single-pass sorts with inline keys.
Fixed
- Tests: Updated
omsi-appsettings test expected item counts, madesit_wish/pick_weightedpublic inhumansmodule, fixedomsi-audioSoundSet test initialization with missing fields. - Smoke from vehicles really smoke now.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.1.0-windows-x64.zip |
Auto-updater will be returning in the next update.
openOMSI v0.2.45.2-eefi
openOMSI v0.2.45.2-eefi
Fixes (from openOMSI pull requests)
- Street lamps' shadows no longer switch between lamps at night after the mirrors are drawn (Enhanced).
- Passengers: the destination they read off a bus is the depot row the IBIS was set to, not the display script's row.
- Smooth and filter force feedback output (Road and engine feedback is less likely to turn into slow, artificial wheel shake at low frame rates. On Linux, force changes sent to the wheel are smoothed over 25 ms; this smoothing applies only to the evdev backend).
- People off a bus where the stop has no pavement step away from the door, each to a place of their own, instead of crowding the doorway.
- The map's drivers (drivers.txt) stay out of the passenger pool when the people are drawn from everybody installed.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.45.2-windows-x64.zip |
openOMSI v0.2.45-eefi
openOMSI v0.2.45-eefi
Based on v0.2.44, added one feature coming to v0.2.46 and couple fixes from v0.2.45.
Launcher Upgrade (coming to v0.2.46 on the actual version, made by thibaut)
- Classic Layout: Added the step-by-step classic launcher layout option (Bus, Weather, Map & Duty) with keyboard and multiplayer support.
- Interior Bus Preview: Added Driver and Passenger camera views with drag and zoom controls.
- Performance Fixes: Restored resting mode during gameplay (openOMSI-org#2362), eliminated unnecessary screen redraws, and optimized 3D preview rendering.
Fixes
- All of the performance fixes from previous versions.
- Removed self-centering force at standstill.
- Corona shader compatibility: the corona pass now uses the full camera uniform prefix (up to
lod_bias), fixing validation errors with the updated uniform layout. - Severe dithering (mesh grid artifacts) on volumetric light and bus body in dark conditions (night, late evening, early morning) is not fixed. A poor hash function in the fog lamps pass created a visible "coarse checker" grid pattern in volumetric fog, headlight beams and the bus body in Enhanced and Enhanced+ graphics. The jitter hash now uses a better pseudo-random function that eliminates the grid artifacts while preserving the intended noise distribution.
This did not fix the severe dithering. I'll keep this in the changelog tho.
Removed
- The "playing now" counter: the game no longer tells a Cloudflare Worker
(openomsi.savvabestbrother.workers.dev)every ten minutes that it is being played. Gone with it: the setting Count me in the website's "playing now", OMSI_NO_PRESENCE and OMSI_PRESENCE_URL, services/presence/ and the counter on the website and in the README.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.45-windows-x64.zip |
openOMSI v0.2.38.2-eefi
openOMSI v0.2.38-eefi.2
Fixes
- Fixed old launcher not having the new options.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.38.2-windows-x64.zip |
openOMSI v0.2.38-eefi
openOMSI v0.2.38-eefi
Performance
- The reflection probe skips redraws when the camera is still. The probe (six faces + blur, ~2 ms) was redrawn every 0.5 s even at a bus stop. It now only redraws when the camera has moved >2 m since the last probe, saving hundreds of redraws per session.
- Tree shadows in the near cascade can be disabled. The near cascade is the costliest shadow pass and a third of it is trees' leaf cards (alpha-tested cards). A new
tree_shadowsoption (on by default) lets players disable just those shadows for a measurable FPS gain with little visual loss - the cards are just silhouettes. - Culling adapts to render scale. When the 3D picture is drawn at a lower resolution (render scale < 1), objects appear even smaller on the final screen; the min object size threshold is divided by the scale so more small objects are culled, saving draw calls.
- Maximum texture size can be limited. A new
max_texture_sizeoption (default 0 = device limit) lets players cap texture dimensions to save VRAM and bandwidth on cards with less memory. - LOD bias for mipmapping. A new
lod_biasoption (default 0) forces blurrier (positive) or sharper (negative) mip levels, trading texture detail for bandwidth. - fixed updater
Fixes + Performance (from original v0.2.38)
- The Drive page follows the computer's clock when the real time or date is on.
- The bus preview no longer takes graphics memory from a game started from the launcher on small graphics cards.
- The roundabout search is 2-5 times faster at loading a map, finding the same roundabouts
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.38-windows-x64.zip |
openOMSI v0.2.37-eefi
openOMSI v0.2.37-eefi
This update can get you up to 2x more FPS.
Changes
- Discrete graphics cards get a larger texture allowance. A card of 2.5–6 GB was held to 1.6 GB of textures and one above 6 GB to 30 % of its memory, which was too little for the maps' detail: their textures were shrunk and rebuilt every frame. The allowance is now two thirds up to 2 GB for the smaller cards and 40 % up to 4 GB for the bigger ones.
Fixes
- The pipeline cache no longer blocks the game's end. Writing the driver's compiled pipelines (
get_data()on a few MB) used to run on the calling thread, so ending the session, a phone going to the background and the pipelines just built all waited on it. It is written on a thread of its own now, and a save already running is not started again. - The near shadow cascade is not redrawn on every small nudge. Its box snaps to whole texels of its own map, so a still caster stays on the same texels while the camera moves; the threshold that decided a redraw was 0.03 m - inside a single texel - and it fired on every small nudge. It now needs 0.1 m of real drift, which is what the cascade's own snap means.
- The texture budget gives way to more scenery. When the textures are over their memory allowance the far ones are shrunk, but only up to 96 a second - a map's first tiles stayed over a small card's budget for a minute and a half while the far ones kept giving way. It now shrinks up to 256 a second, so the tiles the bus drives into keep their detail.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.37-windows-x64.zip |
openOMSI v0.2.30-eefi
openOMSI v0.2.30-eefi
Changed
- Windows backend order: Vulkan tried first (best on AMD), then DirectX 12, then OpenGL. Settings → Graphics API or
OMSI_BACKENDstill overrides.
Fixes
- AMD Vulkan fullscreen FPS drops and lag spikes: explicit
Fifo(VSync) andImmediate(no VSync) present modes replace the driver-chosenAutoVsync/AutoNoVsyncthat misbehaved on older AMD GPUs.
Downloads
| Platform | Download |
|---|---|
| Windows x64 | eefiOMSI-0.2.30-windows-x64.zip |