1. NIMBY Rails
  2. News

NIMBY Rails News

Version 1.1.68 Changelog

- Multithreaded, asynchronous, speculative pathfinder warmup for pax inside trains. Use the time the train spends on the tracks to perform the pathfinding its pax (and those of the next station stop) will require to make decision about said train. On top of that make such process happen in separate thread(s) in a nonblocking way, by mediating its results using the existing pax pathfinder cache.
- After certain zoom level, make trains thicker so they are more visible
- Draw trains starting at wider zoom levels (they may appear offcenter from the track at these zoom levels; this will solve itself in v1.2)
- Make trains with less than 24h of life return 100% of purchase price when sold
- Clustered pax: pax now represent groups rather than being individuals. The count column is now always visible in pax listings.
- Store pax lists sorted by their next destination or their next stop, for stations and trains, respectively. This allows pax to be processed in batches and to quickly skip over pax when they are not interested in a train or station.
- Lost pax detection is now performed at a much lower rate than before, up to 30m of in-game time.
- Pax with a valid next stop station that is no longer part of a line (for example, after a user edits a line) are now detected and forced to leave the train at its next stop to hopefully continue their trip (also checked with a long delay of ~30m).
- Add pending pax counters to the train pax counters on station stops, to give more information on its progress
- Add missing "full station" accounting at the station level
- Use a true LRU cache policy for pax pathfind cache and track pathfind cache
- Cap pax pathfind cache to 256K entries for biased and nonbiased results, and to 128K entries for no path results
- Optimize some data structures in the game logic after testing them for safety and correctness
- Optimize data structures used in pathfinder
- MP: make state streaming from the server have less potential bandwidth spikes
- Add pax pathfinder cache stats to the F11 panel.
- Review train boarding flow to remove some fairness guarantees, making it faster overall
- If all trains in a station have completed their normal loading/unloading phase, slow down the station flow by a large margin
- Make all stations have the same flow, independent of capacity, as long as one of their stopped trains still has nonzero pending counters
- Jitter lost pax checker timers so they don't pile up in the same frame
- When a fatal error is detected in the renderer, show a fatal modal dialog and automatically switch to the other renderer, then collect the Bugsplat report
- Fix: when the IME popup is displayed some text editing keys should be reserved for the IME editor and not passed to the UI
- Fix: rare crash related to using a translation while the translation mod is being updated in the background
- Fix: refunded pax due to full stations are counted twice in the station event labels
- Fix: performance never went back to fully cached levels after the pathfinder cache was flushed by a line edit
- Fix: the lost pax checker could cause stuck trains in very specific circumstances
- Fix: sometimes trains weren't properly storing their creation date

Devblog for March 2021

Work in v1.2 will start soon, but first it was time to polish v1.1 so there's a good, stable build to play while v1.2 bakes. The new pax pathfinder delivered on its promises of smarter pax, and then large performance improvements were implemented. Read about this and more in the March devblog:

https://carloscarrasco.com/nimby-rails-march-2021/

Version 1.1.62 Changelog

- An asset listing can now be accessed in the top right toolbar (for now it uses the dollar sign icon, like Company; a new icon will come in a later build). Allows to list stations, lines and trains and sort them by any of the accounting items they collect.
- Add new real time stats to the asset listing for stations, trains and lines
- The train counter shown in the line editor is now a link into the train editor. if there are 0 trains in the line, it opens the purchase interface with a single slot clone schedule for the line. if there is already one or more trains in the line, it opens the regular train editor selecting a random train from the line
- Add a "purchase new train" button to the line editor. if there are 0 trains, it behaves like the train counter link. if there is already one or more trains in the line, it opens the purchase interface cloning a random existing train from the line
- Display current global ridership in the top status bar for no cash games. Cash games can switch to this display by clicking the balance number
- Optimize train AI by building a coarser track occupation map. Builds with thousands of trains will benefit from this optimization.
- Rename "started trip" pax account to "new pax", since this is what is actually tracking, and only track for stations
- Add new "started trip" pax account to lines, stations and trains to track new pax being spawned into full pax
- Add new "never serviced" pax account to stations to track new pax that never had a chance to become a full pax before demand mechanics decreased the station counters
- Do not allow leg calculator usage without a train
- Remove car listing from train bill
- Draw text input cursor as a vertical line segment
- Update the UI library to a newer version to fix some text input scrolling issues
- Fix: the track distance function used by the train speed control was sometimes wrong on branched tracks
- Fix: leg calculator panels should not be displayed when selecting the accounting or status tabs in the line editor
- Fix: leg calculator was overestimating braking time by ~10s
- Fix: leg calculator should always use an empty train as reference, since the new speed control does not allow to slow down below the min speed. Show a warning when the player selects more than 90% of the train max speed in the leg calculator.
- Fix: limit the maximum timestep allowed when integrating the train motion to make it independent of the simulation time step (after 10x speed) in single player and in the leg calculator, iterating extra steps if required (not required in multiplayer since MP simulation is always fixed time step)
- Fix all known errors involving Unicode text and copy/paste
- Fix: increase input text buffer so long strings of IME input are not cut after 6 characters
- Fix: expand rectangle of queried tracks for tile track cache at high LODs so partially out of tile tracks are included in the tile and not cut out
- Fix: do not add catch areas twice when collecting real time stats on lines
- Fix: implement Steam UGC API query pagination to support unlimited amount of mods in mod uploader

Version 1.1.58 Changelog

- Train speed control is now based on keeping a minimum speed, which can be set per line leg
- Line leg times calculator now exposes the speed setting as the train min. speed, and sets it for all the unlocked legs
- New texture manager for trains based on dynamic texture uploading and a LRU cache. The train textures limit has been removed.
- Implement filtering in the train model listing by tags, max speed, max pax, year introduced, year retired and price
- Major rewrite of the high level game state handling. The game UI should now remain responsive while loading a single player game, starting a hosted game, and loading the received game when joining a server
- Show a message and a cancel button in the previous mentioned instances
- Allow max zoom to be 50m wide to show more train texture detail
- Make train models searchable in search engine; results open the train purchase screen
- Improve search engine string match for game objects to consider word boundaries and substrings
- Transfer line icons in line stop listing
- Remember last selected pax listing options when opening a new train or station info window
- When pax consider the ETA of an optimal train yet to arrive, cap said ETA to the pathfinder interval value, both for on-time and late trains. This should help with depot gameplay in the early morning.
- Non-biased pathfinds now also store all their optimal sub-paths in the cache, for a small pathfinder speedup
- Optimize the pathfinder cache to only store the minimum information required for the AI
- Add a minimum FPS cap to the sim to smooth out CPU spikes. The sim can still go slower than the cap if the overall complexity and selected sim speed demand it.
- Sort mods in mod uploader alphabetically
- Do not allow to complete a station platform or depot building when its control points at the extremes touch, like it is already done for plain tracks
- Fix: consider any lingering game state after a multiplayer disconnection to be invalid and discard it
- Fix: the "show trips" view in the info windows could get stuck if the station/train became empty while picking a destination

Version 1.1.52 Changelog

- New pax AI path finder. Pax can now tell the difference between passing by a station and changing trains, and will use the interval time divided by 2 as the waiting time when calculating the optimal path to take.
- The "show trip" option in pax listing has been greatly improved. It now distinguishes between passing by stations and transferring lines at stations, and shows the same time values the pax AI uses. It represents the optimal path, keep in mind the pax AI is also capable of modifying the times for the wait to adapt to the local conditions in its current station.
- When considering local station conditions, pax are now capable of taking into account the remaining time for a train to leave the station.
- New pax random destination picker. The older rules based on the very coarse and often wrong city location and population database have been discarded. This new random picker is in turn much more efficient.
- New company level setting to change overall pax spawn rate. After creating or loading a (SP) game, a new option is available in the company panel. It allows to tune up or down the overall demand of the pax random destination picker. The default value is 20% of the max possible pax generation rate, and higher factors are not recommended. Tune it down if you have slowdown problems or the amount of overall pax is too much to handle. This setting is stored in the save so MP hosters can change it in SP and have it apply when loading the save in MP mode.
- Since the city database is not used anymore, tweak the new random destination picker to consider instead the potential destination station catch population as a factor to discard it. This factor is less important for regional and long distance pax, which already have lower generation factors.
- UX changes to the line editor and line calculators to make it more visible that leg times and interval times are now mandatory.
- New station tab: platforms, with line timings and train information. NOTE: this is considered a WIP/developer feature and it's not fully baked.
- When the "show trip" mode is enabled in a pax listing, show the trip legs as an overlay on top of the map. NOTE: this is considered a WIP/developer feature and it's not fully baked.
- Board new pax with the same destination in chunks of 10 to speed up train boarding
- New internal model: line clusters. Identify isolated clusters of lines which are interconnected, and thus have guaranteed paths between all their stations, and start using this guarantee to simplify some code
- Perform random destination picking at the line cluster level, removing a lot of redundant processing and data
- Tune station flow to keep it fast but not overwhelm other AI processing
- Make train exit flow the same as station boarding flow
- Delete line confirmation dialog
- Pax pathfind cache should be invalidated by phases, to reduce lag spikes when editing lines
- Allow to use the max line interval when costing transfers in the new pathfinder, with a per-line toggle
- Make train cache pathfind lifetime last longer and randomize the live time
- Stop using the intermediate track textures at medium zoom and instead switch to the thinner textures
- Relax waypoint track min length to 30m
- When displaying track length in editor, if it's a platform, only display if its previous track is also platform, adding its length to it
- Display platform names on top of zoomed in stations on map
- Add a "max train textures" drop down to graphics options to allow to select less train textures in case the default max causes trouble for some users
- In track editor, station names should only be interactive depending on the mode, not on flags due to the shift key
- Fix: placeholder should not be deletable
- Fix: track deletion confirmation and blueprint confirmation should lock the track editor tools
- Fix: pax list sorting by count does not work for "next stop" grouping
- Fix: modal messages should always be toplevel windows
- Fix: some lines following tracks which got outside of the boundary formed by their stations were not properly rendered
- Fix: circular line runs were not rendered at some zoom levels
- Fix: never allow the total number of train units to be 0 in the train purchase editor
- Fix: pax inside train stopped at a station which is not their next stop do not count towards the train exit flow
- Fix (new pathfinder): the local cost overrides were substracting rather than adding the local costs
- Fix (new pathfinder): last stations on a line weren't handled properly
- Fix (new pathfinder): substract stop min time when comparing times for a train which already stopped (and is being considered by its remaining stop time)
- Fix: the pax pathfinder special case for evaluating trains with a set line and stop was not working properly, in effect disabling the local pax AI
- Fix: in the pax pathfinder, the transition from a pass-by into a wait-at node should not cost the min stop time
- Fix: line and train results in search engine should open their editors
- Fix: when pathfinding with an origin line+stop constraint, discard all paths that stop at the same origin station, not just those that make the pax wait at it
- Fix: batch new pax train loading was going over the train max pax limit in some cases
- Fix: rare crash in the cached track tracer
- Fix: do not reset the clone orders checkbox after purchasing a train.