2026-08-18 15:50 UTC · Community Announcements · Weird and Wry
- Map rotation binding can now be toggled between shift + vertical wheel, alt + vertical wheel, and horizontal wheel - Fix: population palette mods did not always apply on loading a game - Fix: Linux native builds could not join Windows multiplayer hosted sessions, and could host sessions for Windows clients - Fix: Linux saves backup folder was not created on game launch and defaulted to the game install folder - Fix: Linux IME window position was incorrect. IME has been verified running as a Wayland client under KWin and Niri, and as a X11 client under XWayland, with Fcitx5. Other combination
2026-08-09 11:28 UTC · Community Announcements · Weird and Wry
Updated default mapThe default, bundled OpenStreetMap data has been updated to a newer planet database. It also includes a huge amount of data that was removed in previous versions. Building footprints are now visible at the highest zoom if they are mapped in OpenStreetMap. It also includes nearly all POIs defined in OpenStreetMap as map labels in the highest zoom. Due to the newer version of the data, and these new, additional data layers, the bundled map size is now a bit over twice the size of the previous version, requiring 55GB of storage. The format used for OpenStreetMap tile data is no
2026-05-29 20:51 UTC · Community Announcements · Weird and Wry
Raster layers are now implemented in the new 1.19 map renderer. They use the same raster data as the current version, but adapted to the new coordinate system, which required a lot more work than anticipated.All the work cleaning up coordinate handling paid off in the end, with some major new features enabled by it. For example in 1.19 it will be possible to rotate the map. The map system is now capable of supporting any number of map data sources, both raster and vector. Players can create new map sources, reorder them and apply basic color filters from the UI, even to sub-layers for vector m
2026-04-01 17:31 UTC · Community Announcements · Weird and Wry
Version 1.19 is shaping up to be one of the largest, most significant updates to the game. It will bring a long overdue redesigned train motion physics simulation with the aim of once for all fix all the inconsistent timing situations in the context of schedules and line legs.Linux will become a supported OS! It will receive the same level of support as Windows, with simultaneous builds provided for both OS.And finally but most importantly, 1.19 will update the game map, but it won't be a mere refresh of OpenStreetMap data. The lower level of the map system is being replaced with industry stan
2026-02-21 15:28 UTC · Community Announcements · Weird and Wry
- Stop selection signals now again perform a (possibly redundant and unnecessary) goal stop selection at the last possible moment, both from a stop or a pass-by. - Fix: queue_train_drive_to() was fully resetting the Motion::drive component and zeroing the stored waiting signal ID. If the train was positioned exactly at or an infinitesimal distance distance ahead of the signal (which is legal) it caused the train to skip the signal wait. - Fix: dead end point mode tracks set as parallel of a point mode track did a poor job of matching the tangent of the parent track - Fix: push-pull capability
2026-02-12 18:02 UTC · Community Announcements · Weird and Wry
- Fix: script operator precedence for "!" and unary "-" was incorrect. You might need to review your code if you used these operators without parentheses. - Fix: crash when loading saves with potentially invalid demand curves - Fix: show again reservations on the map but only if the map reservation mode is enabled
2026-02-11 20:00 UTC · Community Announcements · Weird and Wry
- Remove debug display of train reservations on the map - Fix: shared simulation multiplayer did not properly sync train motion state - Fix: wrong auto scroll listing position in some cases - Fix: more instances of possible crashes while pausing the game, disabling train mods, and then editing trains which were using these mods - Fix: rare crash while rebuilding timetables
2026-02-09 12:23 UTC · Community Announcements · Weird and Wry
Version 1.18 is finally released. This version has been a long time under development, also with a very long beta period, due to the complexity of its main feature, NimbyScript. Until 1.17 game mods have been limited to changing textures and adding new static rules (in the form of new trains, tracks, etc), with no new mechanics possible. NimbyScript adds programmability to game mods, allowing them to add new mechanics to the simulation.Some signal and script mods are already available in the Workshop, and more will appear in the future. I want to thank all mod developers (scripting or not) for
2025-10-01 18:47 UTC · Community Announcements · Weird and Wry
Signal scripting is finally in a finished enough state to create new signals! During September a lot of decisions to adjust NimbyScript for general usability were made, and the first 3 examples of real new signaling features were implemented: custom path reservation boundaries, custom signal checks, and the holy grail, path changing signals with no restrictions, fully independent of lines and schedules. Read and see more in the devblog:https://carloscarrasco.com/nimby-rails-september-2025/
2025-08-05 10:36 UTC · Community Announcements · Weird and Wry
- Fix: saved file validator was too strict flagging as corrupted some files with salvageable but invalid buildings or signals
2025-07-31 17:51 UTC · Community Announcements · Weird and Wry
Version 1.17 has been releasedGameplay wise this is a very small version. It is intended as a public test of the future scripting system, NimbyScript, with the top level logic of path signals and balises now being implemented in NimbyScript rather than the native C++ code. This test was successful in the beta branch and it is now being deployed for all players. NimbyScript will be used for custom signal logic and other functionality in future versions.But to make this version a little more exciting it includes a couple extra features.Dynamic brakingTrains are now capable for braking for some d
2025-07-10 16:18 UTC · Community Announcements · Weird and Wry
Version 1.17 is now ready for testing the beta branch!Gameplay wise this is a very small version. It is intended as a public test of the future scripting system, NimbyScript, with the top level logic of path signals and balises now being implemented in NimbyScript rather than the native C++ code. If this test is successful, by not introducing instability or performance issues, then future versions of the game will make it possible for players to use NimbyScript for custom signal logic and other functionality. For for now, in 1.17, NimbyScript is read only and the new Control editor is very bar
2025-06-30 21:12 UTC · Community Announcements · Weird and Wry
Development in June was focused again on NimbyScript. The language has progressed to the point of being usable, but it's still lacking some basic features. One of these features, memory ownership (think lists, allocating memory, etc) is a very complex subject and it is for now being postponed. 1.17 will feature NimbyScript, but it will be as a non-editable preview, since it's still too immature and any code written in its current state would be invalidated in the future. But not everything will be a technical test. Two often requested features will also be implemented: recolorable UI and an al
2025-06-01 22:58 UTC · Community Announcements · Weird and Wry
The past two months have been almost solely focused on developing NimbyScript, the future scripting language for NIMBY Rails. It has been quite hard to get started, with some very lofty goals to achieve, and a lot of reading and experimentation was needed. Read on for the programming nerd adventures in NimbyScript. WARNING: this is an extremely technical post of little to no interest to most players. NimbyScript is nowehere near finished. Once NimbyScript is ready for being introduced in the game it will get a proper guide. This post is NOT the guide for NimbyScript. https://carloscarrasco.com
2025-04-09 08:30 UTC · Community Announcements · Weird and Wry
- Fix: hang in train simulator when combining stop selection signals, platforms in series with the first platform being occupied, switches in the middle of platforms and trains too long for the stop area and being forced to stop over the switch - Fix: crash while visualizing pax path routes on the map and at the same time deleting tracks or stations involved in said routes - Fix: attempting work around for crash in the train info window accounting tab, which cannot be reproduced reliably - Fix: station editor stop signal pick mode should not display signal buttons if signals are not visible -
Full appinfo as delivered by Steam PICS, changenumber 38766391. Also at /api/app/1134710/raw.
{
"appid": "1134710",
"common": {
"name": "NIMBY Rails",
"type": "Game",
"oslist": "windows,linux",
"osarch": "64",
"osextended": "",
"logo": "c3cf4e530c20169a0e9d18618ae10e52ffa99c9d",
"logo_small": "c3cf4e530c20169a0e9d18618ae10e52ffa99c9d_thumb",
"icon": "217f350aca704a6e0d95f1fca855e2379002a0c4",
"clienticon": "ba0f5940ddeee4d38320833ea402cd92c5108429",
"clienttga": "160054af7c0996e017e149a028e95261b129aab3",
"releasestate": "released",
"steam_deck_compatibility": {
"category": "2",
"steamos_compatibility": "2",
"steam_machine_compatibility": "2",
"test_timestamp": "1643846400",
"tested_build_id": "7913424",
"tests": {
"0": {
"display": "3",
"token": "#SteamDeckVerified_TestResult_ControllerGlyphsDoNotMatchDeckDevice"
},
"1": {
"display": "3",
"token": "#SteamDeckVerified_TestResult_TextInputDoesNotAutomaticallyInvokesKeyboard"
},
"2": {
"display": "4",
"token": "#SteamDeckVerified_TestResult_DefaultControllerConfigFullyFunctional"
},
"3": {
"display": "4",
"token": "#SteamDeckVerified_TestResult_InterfaceTextIsLegible"
},
"4": {
"display": "4",
"token": "#SteamDeckVerified_TestResult_DefaultConfigurationIsPerformant"
}
},
"steam_machine_tests": {
"0": {
"display": "3",
"token": "#SteamMachine_TestResult_ControllerGlyphsDoNotMatchDevice"
},
"1": {
"display": "3",
"token": "#SteamMachine_TestResult_TextInputDoesNotAutomaticallyInvokesKeyboard"
},
"2": {
"display": "4",
"token": "#SteamMachine_TestResult_DefaultControllerConfigFullyFunctional"
},
"3": {
"display": "4",
"token": "#SteamMachine_TestResult_DefaultConfigurationIsPerformant"
}
},
"steamos_tests": {
"0": {
"display": "3",
"token": "#SteamOS_TestResult_GameStartupFunctional"
},
"1": {
"display": "1",
"token": "#SteamOS_TestResult_TextInputDoesNotAutomaticallyInvokesKeyboard"
}
},
"configuration": {
"supported_input": "other",
"requires_manual_keyboard_invoke": "1",
"requires_non_controller_launcher_nav": "0",
"primary_player_is_controller_slot_0": "0",
"non_deck_display_glyphs": "1",
"small_text": "0",
"requires_internet_for_setup": "0",
"requires_internet_for_singleplayer": "0",
"recommended_runtime": "proton-stable",
"requires_h264": "0",
"requires_voice_files": "0",
"gamescope_frame_limiter_not_supported": "0",
"hdr_support": "0",
"requires_proton_soundfonts": "0"
}
},
"metacritic_name": "NIMBY Rails",
"small_capsule": {
"english": "capsule_231x87.jpg"
},
"header_image": {
"english": "header.jpg"
},
"library_assets": {
"library_capsule": "en",
"library_hero": "en",
"library_logo": "en",
"logo_position": {
"pinned_position": "UpperCenter",
"width_pct": "40.160183066361554",
"height_pct": "71.65756352410354"
}
},
"library_assets_full": {
"library_capsule": {
"image": {
"english": "library_600x900.jpg"
},
"image2x": {
"english": "library_600x900_2x.jpg"
}
},
"library_hero": {
"image": {
"english": "library_hero.jpg"
},
"image2x": {
"english": "library_hero_2x.jpg"
}
},
"library_logo": {
"image": {
"english": "logo.png"
},
"image2x": {
"english": "logo_2x.png"
},
"logo_position": {
"pinned_position": "UpperCenter",
"width_pct": "40.160183066361554",
"height_pct": "71.65756352410354"
}
}
},
"store_asset_mtime": "1752925874",
"associations": {
"0": {
"type": "developer",
"name": "Weird and Wry"
},
"1": {
"type": "publisher",
"name": "Weird and Wry"
}
},
"primary_genre": "28",
"genres": {
"0": "28",
"1": "70"
},
"category": {
"category_2": "1",
"category_1": "1",
"category_9": "1",
"category_38": "1",
"category_30": "1",
"category_23": "1",
"category_62": "1"
},
"supported_languages": {
"english": {
"supported": "true"
}
},
"steam_release_date": "1611680375",
"workshop_visible": "1",
"community_hub_visible": "1",
"gameid": "1134710",
"store_tags": {
"0": "10383",
"1": "599",
"2": "12472",
"3": "4695",
"4": "1643",
"5": "3810",
"6": "1695",
"7": "4182",
"8": "4328",
"9": "3871",
"10": "9",
"11": "4845",
"12": "26921",
"13": "1685",
"14": "1616",
"15": "4094",
"16": "4252",
"17": "1669",
"18": "3843",
"19": "493"
},
"review_score": "8",
"review_percentage": "89"
},
"extended": {
"developer": "Weird and Wry",
"publisher": "Weird and Wry"
},
"config": {
"installdir": "NIMBY Rails",
"launch": {
"0": {
"executable": "NIMBYRails.exe",
"type": "none",
"config": {
"oslist": "windows"
}
},
"1": {
"executable": "nimbyrails",
"config": {
"oslist": "linux"
}
}
},
"uselaunchcommandline": "1",
"app_mappings": {
"0": {
"platform": "linux",
"tool": "SteamLinuxRuntime_4"
}
}
},
"depots": {
"228989": {
"config": {
"oslist": "windows"
},
"depotfromapp": "228980",
"sharedinstall": "1"
},
"1134711": {
"config": {
"oslist": "windows"
},
"manifests": {
"public": {
"gid": "2093459951261971908",
"size": "52838605",
"download": "31403248"
},
"legacy-1.1.72": {
"gid": "8019443166103829947",
"size": "38714010",
"download": "23776256"
},
"legacy-1.10": {
"gid": "3375052764070983436",
"size": "45631237",
"download": "27894944"
},
"legacy-1.2": {
"gid": "7906947994383247204",
"size": "41889618",
"download": "26090624"
},
"legacy-1.3": {
"gid": "5373399650085027096",
"size": "42306488",
"download": "26226192"
},
"legacy-1.4": {
"gid": "6786109304219504645",
"size": "43159384",
"download": "26731408"
},
"legacy-1.5": {
"gid": "19639489218105288",
"size": "43524732",
"download": "26848320"
},
"legacy-1.6": {
"gid": "3628323688046080956",
"size": "44051069",
"download": "27015216"
},
"legacy-1.7": {
"gid": "4128639392740578381",
"size": "45068093",
"download": "27428000"
},
"legacy-1.8": {
"gid": "4387152587817422300",
"size": "45123711",
"download": "27453760"
},
"legacy-1.9": {
"gid": "8239780996761484239",
"size": "45216589",
"download": "27483248"
},
"beta-1.19": {
"gid": "1029353288911126375",
"size": "52846797",
"download": "31408672"
},
"legacy-1.11": {
"gid": "3603720532764904917",
"size": "46115089",
"download": "28011344"
},
"legacy-1.12": {
"gid": "397680670634893321",
"size": "46385639",
"download": "28095568"
},
"legacy-1.13": {
"gid": "5227398450007534436",
"size": "47049189",
"download": "28287200"
},
"legacy-1.14": {
"gid": "4739767277078529521",
"size": "47369524",
"download": "28398528"
},
"legacy-1.15": {
"gid": "1294529805733599413",
"size": "47735258",
"download": "28497488"
},
"legacy-1.16": {
"gid": "4889746254824433587",
"size": "49030613",
"download": "28959504"
},
"legacy-1.17": {
"gid": "2805677050276926042",
"size": "49434915",
"download": "30075840"
},
"legacy-1.18": {
"gid": "3238948344654627795",
"size": "49979014",
"download": "30303488"
}
}
},
"1134712": {
"manifests": {
"public": {
"gid": "9136255606210328097",
"size": "52732208595",
"download": "50387371072"
},
"legacy-1.1.72": {
"gid": "8995194510147247681",
"size": "20085026816",
"download": "17421578608"
},
"legacy-1.10": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
},
"legacy-1.2": {
"gid": "8995194510147247681",
"size": "20085026816",
"download": "17421578608"
},
"legacy-1.3": {
"gid": "4514626100405391791",
"size": "25096223462",
"download": "22390747920"
},
"legacy-1.4": {
"gid": "4514626100405391791",
"size": "25096223462",
"download": "22390747920"
},
"legacy-1.5": {
"gid": "4514626100405391791",
"size": "25096223462",
"download": "22390747920"
},
"legacy-1.6": {
"gid": "4514626100405391791",
"size": "25096223462",
"download": "22390747920"
},
"legacy-1.7": {
"gid": "4514626100405391791",
"size": "25096223462",
"download": "22390747920"
},
"legacy-1.8": {
"gid": "4514626100405391791",
"size": "25096223462",
"download": "22390747920"
},
"legacy-1.9": {
"gid": "4514626100405391791",
"size": "25096223462",
"download": "22390747920"
},
"beta-1.19": {
"gid": "9136255606210328097",
"size": "52732208595",
"download": "50387371072"
},
"legacy-1.11": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
},
"legacy-1.12": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
},
"legacy-1.13": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
},
"legacy-1.14": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
},
"legacy-1.15": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
},
"legacy-1.16": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
},
"legacy-1.17": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
},
"legacy-1.18": {
"gid": "6100947858398220321",
"size": "27690419239",
"download": "26571697216"
}
}
},
"1134713": {
"config": {
"oslist": "linux"
},
"manifests": {
"public": {
"gid": "3104302484159169722",
"size": "56739997",
"download": "35363952"
},
"beta-1.19": {
"gid": "2898322146786027225",
"size": "56762429",
"download": "35373440"
}
}
},
"workshopdepot": "1134710",
"branches": {
"public": {
"buildid": "24696017",
"timeupdated": "1787068180",
"timebuildupdated": "1786550226"
},
"legacy-1.1.72": {
"buildid": "6523525",
"description": "Obsolete version 1.1.72",
"timeupdated": "1625753873",
"timebuildupdated": "1618169203"
},
"legacy-1.10": {
"buildid": "12610767",
"description": "Obsolete version 1.10",
"timeupdated": "1705321706",
"timebuildupdated": "1699006425"
},
"legacy-1.2": {
"buildid": "7190322",
"description": "Obsolete version 1.2",
"timeupdated": "1634142863",
"timebuildupdated": "1628950442"
},
"legacy-1.3": {
"buildid": "7913424",
"description": "Obsolete version 1.3",
"timeupdated": "1646065991",
"timebuildupdated": "1640001561"
},
"legacy-1.4": {
"buildid": "8926810",
"description": "Obsolete version 1.4",
"timeupdated": "1661437306",
"timebuildupdated": "1655133443"
},
"legacy-1.5": {
"buildid": "9831621",
"description": "Obsolete version 1.5",
"timeupdated": "1670780701",
"timebuildupdated": "1667140938"
},
"legacy-1.6": {
"buildid": "10322161",
"description": "Obsolete version 1.6",
"timeupdated": "1678550194",
"timebuildupdated": "1673694132"
},
"legacy-1.7": {
"buildid": "10804888",
"description": "Obsolete version 1.7",
"timeupdated": "1683482775",
"timebuildupdated": "1679218138"
},
"legacy-1.8": {
"buildid": "11314286",
"description": "Obsolete version 1.8",
"timeupdated": "1689667074",
"timebuildupdated": "1685005037"
},
"legacy-1.9": {
"buildid": "11749140",
"description": "Obsolete version 1.9",
"timeupdated": "1697013982",
"timebuildupdated": "1689864044"
},
"beta-1.19": {
"buildid": "25234721",
"description": "Temporary beta branch",
"timeupdated": "1789055437",
"timebuildupdated": "1789055437"
},
"legacy-1.11": {
"buildid": "13491612",
"description": "Obsolete version 1.11",
"timeupdated": "1716040422",
"timebuildupdated": "1708282470"
},
"legacy-1.12": {
"buildid": "14418654",
"description": "Obsolete version 1.12",
"timeupdated": "1719506950",
"timebuildupdated": "1716110442"
},
"legacy-1.13": {
"buildid": "14861585",
"description": "Obsolete version 1.13",
"timeupdated": "1727770567",
"timebuildupdated": "1719507405"
},
"legacy-1.14": {
"buildid": "15982664",
"description": "Obsolete version 1.14",
"timeupdated": "1733132336",
"timebuildupdated": "1728488734"
},
"legacy-1.15": {
"buildid": "16986457",
"description": "Obsolete version 1.15",
"timeupdated": "1743415670",
"timebuildupdated": "1736768643"
},
"legacy-1.16": {
"buildid": "18010498",
"description": "Obsolete version 1.16",
"timeupdated": "1754030304",
"timebuildupdated": "1744024858"
},
"legacy-1.17": {
"buildid": "19482271",
"description": "Obsolete version 1.17",
"timeupdated": "1768984300",
"timebuildupdated": "1754389984"
},
"legacy-1.18": {
"buildid": "22020013",
"description": "Obsolete version 1.18",
"timeupdated": "1771687661",
"timebuildupdated": "1771595627"
}
},
"privatebranches": "1"
},
"ufs": {
"quota": "10000000000",
"maxnumfiles": "10000",
"savefiles": {
"0": {
"root": "WinSavedGames",
"path": "Weird and Wry/NIMBY Rails",
"pattern": "*.nimbyrails5"
}
},
"rootoverrides": {
"0": {
"root": "WinSavedGames",
"os": "Linux",
"oscompare": "=",
"useinstead": "LinuxXdgDataHome",
"pathtransforms": {
"0": {
"find": "Weird and Wry/NIMBY Rails",
"replace": "nimbyrails-saves"
}
}
}
}
}
}