Az OpenTTD 15.0 hivatalos megjelenése méltó módon indítja a 2026-os évet: a klasszikus Transport Tycoon Deluxe nyílt forráskódú továbbgondolása ezúttal nemcsak rengeteg hibajavítást, hanem a játékmenetet, a kezelőfelületet és a többjátékos módot is érdemben érintő újításokat hozott. A fejlesztők célja egyértelműen az volt, hogy a veterán játékosok számára mélyebb, rugalmasabb szimulációt, az új belépőknek pedig átláthatóbb és modernebb felhasználói élményt biztosítsanak.
Az egyik legfontosabb változás a multiplayer működését érinti. A vállalatokhoz tartozó jelszavak teljesen megszűntek: helyettük egy korszerűbb, biztonságosabb meghívásos rendszer lépett életbe. A szervereken a játékosok immár konkrét felhasználókat hívhatnak meg egy-egy céghez az „Online Players” listából, gombnyomással. Ez nemcsak kényelmesebb, hanem megszünteti a jelszavak kiszivárgásából vagy újrafelhasználásából fakadó problémákat is, és jól illeszkedik az OpenTTD hálózati kommunikációjának korábbi titkosítási fejlesztéseihez.
A térképgenerálás és a földrajzi realizmus terén szintén látványos előrelépés történt. A sziget-alapú térképeknél mostantól lehetőség van arra, hogy a térképszéleket ne üres „void”, hanem végtelen víz vegye körül, ami sokkal természetesebb látványt és hangulatot ad a játéknak. Ehhez kapcsolódik az is, hogy a folyók viselkedése életszerűbb lett: amennyiben nem tudnak eljutni a tengerig, vizes élőhelyekben (wetlands) végződhetnek, a korábbi, sokszor furcsa lezárások helyett. A városok víz közeli generálását is tovább finomították, hogy a települések ne kerüljenek irreális vagy játékmechanikailag problémás helyekre.
Fontos változás érinti az alap grafikai készleteket is. Akik már kipróbálták a korábbi bétákat az OpenGFX basesettel, és hiányzó sprite-okra figyeltek fel, azok számára a fejlesztők az OpenGFX2 használatát javasolják. Ez az újabb, aktívan karbantartott grafikai csomag teljes mértékben kompatibilis az OpenTTD 15 újdonságaival, és könnyedén telepíthető a játék beépített tartalomletöltőjén keresztül.

A közlekedési infrastruktúra építése terén több régóta várt funkció érkezett. Az egyik legnagyobb újítás, hogy hidak már zsilipek, dokkok, állomások és megállók fölé is építhetők, ami sokkal rugalmasabb pályatervezést tesz lehetővé zsúfolt városi környezetben feltéve hogy az adott NewGRF állomáskészlet ezt támogatja. Emellett a közúti hálózat is kapott útvonalpontokat (road waypoints), ami eddig elsősorban a vasúti közlekedés privilégiuma volt. Ennek köszönhetően a buszok és teherautók útvonala is precízebben irányítható, elkerülve a nem kívánt kerülőket vagy torlódásokat. A hajók intelligensebben kerülik egymást, amikor ellentétes irányban közlekednek.
A városok és iparágak kezelése is új dimenzióval bővült. Az ipari létesítmények és a települések mostantól részletes rakománytörténeti grafikonokat jelenítenek meg, amelyek jól áttekinthetően mutatják, hogyan alakult a termelés, a szállítás és a kereslet az idő múlásával. Ezek a grafikonok nemcsak esztétikai kiegészítések, hanem komoly stratégiai segítséget is nyújtanak a hálózat optimalizálásához. Ehhez társul az a lehetőség, hogy házak kézzel is elhelyezhetők, akár játékon belül, akár a térképszerkesztőben, ami különösen a forgatókönyv-készítők és a városépítésre fókuszáló játékosok számára jelent nagy szabadságot.
A felhasználói felület szinte minden pontján érezhetőek a finomítások. Megújult a főmenü, letisztultabb és következetesebb elrendezést kapott, miközben a Game Options és Game Settings korábban különálló ablakait egyetlen, átlátható felületté vonták össze. A kezelőfelület skálázása intelligensebb lett: jobban alkalmazkodik a különböző képernyőméretekhez és felbontásokhoz, valamint számos ablak és lista most már gördítősávval és javított betűkezeléssel dolgozik. A betűkezelés például automatikusan képes betölteni azokat a karaktereket, amelyek nem részei az adott nyelvi fájloknak, így a játékosnevek és csevegőüzenetek megjelenítése megbízhatóbbá vált. Az infrastruktúra-lista görgetősávot kapott, a kiválasztóablakok előnézetei pedig nagyobb méretben jeleníthetők meg, ami például a felhőkarcolók esetében különösen hasznos. Az apró, de mindennap érezhető kényelmi javítások – például pontosabb hibaüzenetek, stabilabb legördülő menük, jobb ikon- és szövegigazítás – összességében sokkal kiforrottabb élményt adnak.
A motorháztető alatt a 15.0-s kiadás rendkívül nagy mennyiségű hibajavítást és belső módosítást tartalmaz. Ezek érintik többek között a NewGRF-rendszert, a szkripteket, a grafikonok megjelenítését, a járműútvonal-kezelést és a hálózati szinkronizációt is. Számos ritka, de zavaró összeomlást sikerült megszüntetni, javult a régi mentések kompatibilitása, és több korábban félreérthető vagy hiányos viselkedést tettek egyértelműbbé a fejlesztők. A végleges 15.0 kiadás már a kiadásra jelölt (RC) verziók tapasztalatait is magában hordozza, így kifejezetten stabil alapot nyújt hosszabb játékokhoz is.
Letöltés és további információk
Az OpenTTD egy nyílt forráskódú szimulációs játék, amely a Chris Sawyer által írt népszerű Microprose „Transport Tycoon Deluxe” játékon alapul. Megpróbálja a lehető legjobban utánozni az eredeti játékot, miközben új funkciókkal bővíti azt.
Az OpenTTD a GNU General Public License 2.0 verziója alatt érhető el.
Összességében az OpenTTD 15.0 nem pusztán egy szokásos verziófrissítés, hanem egy átfogó evolúciós lépés. Úgy bővíti a lehetőségeket és modernizálja a rendszereket, hogy közben hű marad a játék alapfilozófiájához. Akár többjátékos gazdasági versenyre, akár aprólékosan kidolgozott egyjátékos térképekre használja valaki, ez a kiadás egyértelműen az OpenTTD eddigi egyik legérettebb és legsokoldalúbb változata.

Az OpenTTD futtatásához külön alap grafikus készletre van szükség, amely a telepítőn keresztül (Windows) vagy az első futtatáskor (Windows, Linux) letölthető. Abban az esetben, ha manuálisan szeretné letölteni és telepíteni, néhány lehetőség:
- OpenGFX (grafika)
- A Transport Tycoon Deluxe adatfájljai használhatók alap grafikai készletként. A Transport Tycoon Deluxe egy verziójával kell rendelkeznie; nem tölthetőek le.

A hang- és zenei készletek ajánlott (de nem szükségesek). Az OpenSFX (hang), és az OpenMSX (zene) telepíthető a telepítőprogramon keresztül, vagy - ha rendelkezik CD-vel - a Transport Tycoon Deluxe hang- és zenecsomagok is használhatóak
További grafikai, hang- és zenei készletek letölthetők az játékon belüli tartalom letöltéskezelőn keresztül.
További információkért kérjük, olvassa el a readme-t.
Minden általunk hivatalosan kiadott bináris programhoz közzétesszük az MD5, SHA1 és SHA256 ellenőrző összegeket. Ezen ellenőrző összegek segítségével ellenőrizheti, hogy a letöltött fájl nem módosult-e. Mindhárom ellenőrző összegnek meg kell egyeznie a letöltött fájllal; ha ez nem így van, az azt jelenti, hogy a fájl vagy nem tőlünk származik, vagy a szállítás során elromlott. Akárhogy is, a fájl esetleg veszélyes módosításokat tartalmazhat, ezért nem szabad megbízni benne!

A változásokról részletesen
## 15.x ### 15.0 (2026-01-01) - Fix: Small ufos would loop over vehicles in depots forever (#15008) - Fix #14982: Can't place buoys under bridges (#15007) - Fix #15004: Crashes when dropdown is held open during endgame screen (#15006) - Fix: Further improve town spawning near water (#15002) - Fix: Use correct 'minutes per year' setting for old savegames (#14995) - Fix: Rare crash dividing by 0 when drawing a line (#14994) - Fix #14992: Respect non-stop order setting when adding waypoint orders (#14993) ### 15.0-RC4 (2025-12-26) - Fix: Incorrect text colour in fund industry window (#14987) - Fix: Towns failed to find spawn locations near water (#14988) - Fix: Don't draw bridge deck rail sprites for default bridges (#14985) - Fix: "(Invalid parameter)" in error message when trying to remove another player's object (#14981) - Fix #14978: Don't clear water tiles after removing buoys (#14980) - Fix #14973: Composed strings are incorrect colour (#14976) - Fix: Badge filter toggles no longer worked (#14972) - Fix #12465: Click/tooltip alignment of industry chain cargo lines (#14963) - Fix #14951: Possible incorrect data in industry production graphs (#14962) - Fix #14958: Crash when opening station window (#14959) - Fix #14938: Don't allow cacti to die off (#14956) - Fix: Don't allow joining a company after it was taken over (#14955) - Fix #14949: Crash when moving station sign in a network game (#14950) - Fix #14945: Hang when deleting implicit orders during vehicle loading (#14946) ### 15.0-RC3 (2025-12-20) - Fix #14932: [NewGRF] Increase internal badge index size to avoid overflowing BadgeIDs (#14933) - Fix: Crash related to object picker recolours in Scenario Editor (#14929) - Fix #14921: Crash during station autorefit if station doesn't accept current cargo type (#14924) - Fix #14917: Crash when opening house picker with no houses available (#14920) - Fix #14916: Duration of error message window could be too short (#14919) - Fix #14915: Crash due to divide-by-zero of industry probabilities (#14918) - Fix: Script configs were cleared by intro game (#14910) - Fix: [NewGRF] Automatically push/pop colours when formatting a sub-string (#14006) ### 15.0-RC2 (2025-12-13) - Fix #14677: Desync due to using newgame time settings to validate savegame time settings (#14904) - Fix: Graph label allocated size could be too small (#14901) - Fix #14891: Minimum sprite zoomlevel could break in some cases showing placeholder sprites instead (#14894) - Fix #14889: [FluidSynth] Don't try to load a soundfont that doesn't exist (#14890) - Revert: Dynamic font loading changes removed (#14903) ### 15.0-RC1 (2025-12-07) - Feature: Automatically load extra fonts for missing glyphs (#13303, #14856) - Feature: Rivers can end in wetlands if unable to reach sea (#14784, #14846) - Feature: Signs, waypoint and station names may be moved (#14744) - Feature: House placer mode to replace existing houses (#14469) - Feature: Draw infinite water when all borders are water (#13289) - Add: [NewGRF] Allow badges to be excluded from badge name list (#14818) - Add: [Script] ScriptTile::IsHouseTile (#14806) - Add: Game units for height (#14615) - Add: Show height difference in bridge is too low error message (#14614) - Add: Include build cost in rail/road dropdowns (#14599) - Add: Show all railtypes in the build vehicle and engine preview dialogs (#14357) - Add: [Script] Function to get all rail types of an rail engine (#14357) - Add: [NewGRF] Train property to set multiple track types for an engine (#14357) - Add: [Script] Auto-convert ObjectType bool to integer when setting values for items in lists via [] (#14308) - Change: Ensure generated towns have enough room (#14803) - Change: Eliminate small seas instead of ending rivers there (#14797) - Change: Clamp terraform toolbar to main toolbar (#14725) - Change: Make groups window group list aware of interface scaling (#14679) - Change: Prefer normal/medium weight font in FontConfig fallback detection (#14672) - Change: Support interface scaling in network client list buttons (#14659) - Change: Record and show multiple errors for each NewGRF (#14658) - Change: Replace the "(City)" identifier in the town directory with the city icon (#14634) - Change: Determine automatic interface scale by window size (#14627) - Change: Apply interface scale to window snap distance (#14625) - Change: Ask for confirmation before deleting a savegame / scenario / heightmap (#14621) - Change: Add lock penalty to ship pathfinder (#14603) - Change: Allow bridges over locks & docks (#14595, #14594) - Change: Removed disable_node_optimization YAPF setting (#14578) - Change: Provide road and rail overlay sprites for bridge decks (#14557) - Change: Scale number of towns/industries by amount of land tiles (#10063) - Fix #14802: Close NewGRF inspection window when overbuilding with default station/waypoint (#14859) - Fix #14839: Do not set stacked widget height, which might not be shown (#14858) - Fix: Incorrect background colour in badge configuration list (#14850) - Fix #14844: Use company colour remap for badges in picker window (#14849) - Fix: Drop down scrolling broken for mixed-height items (#14840) - Fix #8062: (Try to) ensure enough room for profit in vehicle group window (#14835) - Fix #9071: Don't consider tram tracks when growing towns (#14833) - Fix: Saved default houses had incorrect class and index information (#14812) - Fix #14756: Invalidate nested focus before widget container is cleared (#14809) - Fix #14800: Incorrect register processing in GetCustomStationRelocation (#14801) - Fix #14755: Remove clicked type selection when not visible (#14796) - Fix: Incorrect parsing of var 6x parameter in NewGRF debug window (#14789) - Fix: Improve lighthouse spawn conditions (#14785) - Fix #14777: authorized_key add/remove console commands did not apply to correct list (#14778) - Fix: Incorrect spacing for badges in dropdown lists (#14768) - Fix: Unconfigured badge classes should be visible in column 0 by default (#14766) - Fix #14763: Crash if NewGRF currency separator is not valid (#14764) - Fix #14701: Company colour remap for sprites in badge filter dropdowns (#14732) - Fix: Do not pre-fill industry production history for unused production slots (#14730) - Fix: Depot-related crash when loading old savegames (#14729) - Fix #14721, #14723: Inconsistent behaviour when skipping signals (#14724) - Fix: Miscalculated cargo penalty for poor station rating (#14712) - Fix: Crash when user enters a blank line in the console (#14711) - Fix: Console command dump_info should not reverse non-ASCII label (#14697) - Fix: Incorrect parameter order for CmdSetCompanyManagerFace (#14695) - Fix: Bootstrap ignored default OpenTTD truetype fonts (#14684) - Fix: League Table layout broken with RTL languages (#14667) - Fix #14549: Changing interface scale could underflow viewport zoom (#14655) - Fix: Incorrect row height in network server list (#14653) - Fix: Doubled beep sounds when clicking toolbar buttons (#14642) - Fix: Wrong button type for town menu in scenario editor toolbar (#14641) - Fix #14631: Waypoint customs spec not allocated properly on initial construction (#14633) - Fix: Variant cycle detection in FinaliseEngineArray (#14629) - Fix #14620: Use full file path when deleting files (#14623) - Fix: [Script] Return rail types as list instead of bitmask (#14617) - Fix #14604: Clearing tiles to build objects did not update town ratings (#14616) - Fix: Bridge height check for waypoints didn't include axis in layout (#14609) - Fix #14607: Bridge-over-station discrepancy depending on build order (#14608) - Fix: Don't add spacing in rail/road type dropdowns if no badges are present (#14598) - Fix: [Script] Incorrect infrastructure cost for road/tram tiles (#14596) - Fix #14588: Show error when unable to clone partly-cleared crashed train (#14591) - Fix #14586: Empty station tile layouts incorrectly substituted with default layouts (#14587) - Fix #14584: Crash due to drawing non-existent orders of new vehicle (#14585) - Fix #14572: Incorrect playlist entry was removed if there are duplicates (#14583) - Fix: Wrong row may be selected in music playlists (#14581) - Fix #14569: Ensure music playlist window is large enough (#14570) - Fix #14278: [Script] Memory allocation limit did not work and could result in a crash (#14568) - Fix: Road stop properties 0x13/0x14 were not skipped properly (#14567) - Fix #13922: Ensure music track number widget is wide enough for track number (#14566) - Fix: Badge filters were only applied to trains (#14565) - Fix: [NewGRF] Industry acceptance/production when not contiguous range from 0 (#14555) - Fix #14240: Remember previous GUI scale when toggling auto-detect (#14380) - Remove: Rail type cost from replace vehicle window (#14748) ### 15.0-beta3 (2025-08-31) - Feature: Identify cities in the main viewport by appending an icon to their names (#14504) - Feature: Allow stations and roadstops under bridges (#14477) - Feature: Separate ships travelling in opposite direction (#14493) - Feature: Town and Industry cargo history graphs (#14321, #14461) - Feature: New company face definition system and UI (#14319) - Feature: Rework intro screen menu (#14220, #14233) - Feature: Scrollbar for infrastructure window (#14056) - Feature: Double-Ctrl+Click on default size box to clear saved size (#14055) - Feature: Configure badges in build vehicle and picker windows (#13993, #14021) - Feature: Player configuration of badge display (#13993, #14021) - Feature: Merge Game Options and Game Settings together (#13242, #14088) - Feature: Option to disable activate-on-release behaviour of toolbar dropdown buttons (#10938) - Add: Maori (New Zealand) language (#14540) - Add: Vietnamese Dong currency (#14474) - Add: Buttons to change picker preview image height (#14373) - Add: Show and sort online content version in list (#14355) - Add: Allow separate expansion of town buildings and roads in scenario editor (#14341) - Add: Hover on graph legend to highlight line (#14314) - Add: [Script] Ability to clone ScriptList objects (#14305) - Add: [NewGRF] All callbacks returning D0xx strings, have now the option to return any string id via register 0x100 (#14224) - Add: [BaseSet] Allow basesets to set minor and patch versions in obg/obs/obm files (#14169) - Add: "Many random towns" button in scenario editor now prompts for the number of towns, with defaults based on new game settings (#14158) - Add: [NewGRF] Special value 0x7FFE for VarAction2 results specifying 'return calculated result' (#14149) - Add: [NewGRF] Special value 0x7FFF for Action2 references specifying explicit 'callback/sprite-resolving failed' (#14149) - Add: [NewGRF] Add purchase list Action3 CID for houses, industries, industry tiles, airports and airport tiles (#14121) - Add: [NewGRF] Provide random bits in var10 of house callback 1C 'construction stage changed' (#14095) - Add: [NewGRF] Station/roadstop animation-triggers 'tile loop' (bit 7) and 'path reservation' (bit 8) (#14080) - Add: [Script] ScriptVehicleList_Waypoint (#13456) - Change: Update OpenTTD TTF fonts to v0.8 (#14546) - Change: Hide bridge pillars if obstructed by tile below (#14517) - Change: Reduce visual height of default rail waypoints (#14503) - Change: Improve sprite ellipsis appearance (#14404) - Change: [Script] Don't allow scripts to instantiate ScriptEvent (#14276) - Change: [Script] ScriptVehicleList_Station accepts an optional VehicleType parameter (#14260) - Change: Remove Apply button from NewGRF config window when unneeded (#14254) - Change: [NewGRF] Increase the textstack for all callbacks to 16 registers (#14224) - Change: Remove button to toggle showing advanced signal types (#14219) - Change: [Script] Remove the limit of 20 parameters to a Text string (#14193) - Change: [NewGRF] If Action123 does not resolve in a valid SpriteSet, prefer drawing the default sprite instead of an invalid sprite (#14143) - Change: Remove extra close buttons from some windows (#14124) - Change: Limit height of settings description, and add scrollbar (#14102) - Change: [NewGRF] Provide shared random bits in multi-tile animation-triggers of airport tiles and objects, just like for other features (#14090) - Change: [NewGRF] Animation-trigger 'construction stage changed' of houses and industries now also triggers at construction start (#14089) - Change: "setting" console command now shows default value (#14061) - Change: Include dragged train in depot tile length display (#14060) - Change: Don't select content when toggling its download status (#14059) - Change: Draw boolean settings toggles as a slider widget (#14051, #14071) - Change: Don't replace stripped control codes with '?' for scripts (#14028) - Change: [Script] Move GSStation::GetOwner to GSBaseStation::GetOwner (#13406) - Fix #14561: Vehicle effects were missing for vehicle on bridge (#14563) - Fix #14553: Parameter configuration of pre-action 14 NewGRFs did not work (#14554) - Fix: File/directory titles not updated if language is changed (#14542) - Fix: Missing space after old file type identifier (#14541) - Fix: Account for both text and icon size in station waiting cargo display (#14535) - Fix: Crash when buying out company with groups (#14534) - Fix #10222: Off by one drawing lines of certain widths (#14520, #14522, #14523) - Fix: [Script] Invalid title on GSGoal.Question windows (#14519) - Fix: 'Map edges' GUI buttons shouldn't initialize with water on northeast edge (#14514) - Fix #14415: Update survey option text when changing setting (#14487) - Fix #14480: Music player playlist buttons are clickable but non-operational in intro menu (#14482) - Fix: Missing button beeps (#14470) - Fix #14464: Invalid string parameter in scenario editor when unable to build industry (#14465) - Fix: [Linkgraph] Use correct station ID when erasing flows (#14459) - Fix: Vehicle liveries did not update when switching company (#14456) - Fix: Engine preview window could have the wrong size (#14455) - Fix #8167: No error sub-message when trying to clear protected buildings (#14444) - Fix #14433: [NewGRF] Road tile for drive-through stops was not drawn (#14434) - Fix: [Win32] Build failure with newer Windows SDK version due to WinRT changes (#14432) - Fix #14396: Industry production graph showed zero when data was unavailable (#14416) - Fix #14385: Crash in industry view due to incorrect string parameter calculations (#14413) - Fix #14360: Stop reusing strings for Low/Medium/High setting values to improve translations (#14409) - Fix #14377: Make house picker window remember house protection state when closed (#14406) - Fix #14375: When loading config, validate timekeeping mode and minutes per year (#14405) - Fix: Include sort button width in content list header minimal size (#14402) - Fix: Don't draw truncation ellipsis if it's too wide (#14401) - Fix: Don't include ellipsis width in RTL truncation offset (#14400) - Fix: Buildings with non-zero subtile offsets broken in house picker (#14390) - Fix #12900: Could not use join station with new non-square stations (#14378) - Fix: Allow object picker to resize if there are no classes (#14372) - Fix #14081: Only allow "rm" & "del" console commands to remove savegames (#14371) - Fix: Train path reservations on different railtypes could join leading to train crashes (#14366) - Fix #14356: Incorrect sprite group chosen for stations and road stops (#14359) - Fix: Wrong error message about script Save() returned value (#14334) - Fix: Hidden-by-facility station signs were not ignored when handling clicks (#14326) - Fix: [Script] SQOpsLimiter had no effect for native valuator/filter (#14322) - Fix: Crash if loading compatibility scripts fails (#14318) - Fix #14277: Aircraft could land when a zeppelin was on the runway (#14317) - Fix: Drag drop line position when dragging NewGRF from file to active panel (#14316) - Fix: Upgrade button in NewGRF window no longer worked (#14315) - Fix: [NewGRF] Clear rail vehicle flipped flag if reverse probability callback returns false (#14281) - Fix: [Script] Conversion from ScriptEvent to ScriptEventCompanyTown subclasses (#14274) - Fix: Empty first parameter of EncodedString was skipped (#14273) - Fix #14271: Crash due to incorrect parameter index in string (#14272) - Fix: Restore the behaviour when entering numbers in query windows: clamp integers out of range to the maximum valid value (#14268) - Fix: Replacing a dropdown list could reposition it partially off-screen (#14261) - Fix: Click+Dragging of selected order was not possible (#14259) - Fix #14256: Company finance windows not updated when paused (#14258) - Fix: Incorrect tile colour in smallmap for snowy clear tiles in vegetation mode (#14257) - Fix #14241: Invalid string parameters in subsidies list window (#14243) - Fix #13854: 40bpp-anim blitter recolouring failed for 32bpp pixels without mask channel (#14242) - Fix #14234: Crash due to broken invalid string parameter handling (#14235, #14236) - Fix: Closing the Game Options window closes all textfile windows (#14210) - Fix: Zoom-scroll extra viewports only if the mouse cursor is over the viewport (#14209) - Fix: Changing monospace font didn't refresh the monospace width cache, causing wrapping issues (#14185) - Fix: Crash/Undefined behaviour in station view window (#14183) - Fix: Handle tab characters when loading GS strings from savegame (#14180) - Fix: [Script] Access to enum/consts defined outside of main.nut (#14176) - Fix: Small order list arrow was wrong direction for RTL text (#14174) - Fix #14170: Missing spaces for timetabled order strings (#14172) - Fix #14166: Loan was no longer invalidated when refreshing finance window (#14168) - Fix #14098: Ability to play MIDI tracks over 7 minutes long (#14144) - Fix: [NewGRF] AI station construction callback did not work for stations with ID >= 0x100 (#14142) - Fix: Out-of-bounds read, if NewGRF stations provided no spritesets (#14140) - Fix: [NewGRF] The result of Action123 evaluation affected rerandomisation in a weird corner case (#14139) - Fix: [NewGRF] Computed VarAction2 callback results were not always properly masked to 15 bit results (#14138) - Fix #14125: NewGRF sounds were not loaded (#14130) - Fix: List Ctrl+Click behaviour for vehicle details tooltip (#14127) - Fix: Road vehicle blocking and train collisions used slightly inconsistent distance thresholds (#14114) - Fix #14107: Mark the company value in the company view window dirty when it changes (#14112) - Fix #14107: Invalidate all shared vehicle windows when changing group (#14110) - Fix #14104: Don't base timetable timing decisions on client settings (#14105) - Fix: Focus settings filter box (only) when the tab becomes active (#14100) - Fix: [Script] Reject scripts using negative version (#14096) - Fix: Map size column in server list could be too wide (#14094) - Fix: [NewGRF] Cargo-types for airport-tile animation-triggers were not properly translated (#14092) - Fix: [NewGRF] For animation-triggers which do not supply a cargo-type in var18, the var18 bits should remain empty (#14091) - Fix: Changing language or interface scale could hang (#14087) - Fix: [NewGRF] For roadstop multi-tile-animation-triggers, the upper 16 bits were not the same for all tiles (#14084) - Fix: Town view caption lost "(City)" flag (#14082) - Fix: [NewGRF] Randomisation-trigger 'path reservation' did not work for waypoints (#14076) - Fix: Incorrect test of object flags allowed HQ to be removed (#14062) - Fix: Odd drawing and crash if scrollbar is not tall enough (#14052) - Fix: Incorrect string display for autoreplace wagon removal status (#14038) - Fix: House picker crashes if selection is not available (#14030) - Fix: [NewGRF] PrepareLayout worked on a copy of the data resulting in bad sprite layouts (#14013) - Fix: [NewGRF] Strange things happened, when using the synchronised tile loop animation trigger for houses (#14011) - Fix: [NewGRF] Animation speed properties of houses and stations had wrong default (#14005) - Fix: [NewGRF] Roadstop animation/randomisation was not triggered on vehicle arrival (#14003) - Fix: Don't display badges if the class has no name (#13994) - Fix #13954: Plotting graphs with limited data to the right (#13956) - Fix #13307: Return non-zero value when there is a mistake in command-line arguments (#13547) - Fix: [Script] Make ScriptOrder functions aware of road waypoints (#13419) - Fix: Scale graph gridlines and axes with GUI scale (#12131) - Fix: Original graphics' tycoon-of-the-century sprite assumes a black background (#11679, #14545) ### 15.0-beta2 (2025-04-13) - Feature: Snow-covered rocks are now visible (#13627) - Feature: Generate more rocks on steep slopes during map generation or heightmap import (#13462) - Feature: Prevent towns from upgrading individually-placed houses (#13270) - Feature: [Win32] Touchpad two-finger map scrolling (#13172) - Feature: NewGRF Badges (#13073) - Add: [NewGRF] Add road-/tram-/rail-type variable 0x45 to get mutual road-/tram-/rail-type on same tile (#13934) - Add: [Script] Newer Cargo Classes (#13779) - Add: Show hyperlink destination tooltips in text window (#13742) - Add: [Script] Saving/loading ScriptList (#13556) - Add: Press Ctrl to build diagonal canals in game mode (#13432) - Add: Sandbox settings to Sandbox Options window (#13268) - Add: Setting to allow placing houses manually in-game (#13266) - Add: [Script] Event for when a company's president name changes (#13208) - Add: Ability to toggle visibility of station signs by facility (#13207) - Add: [Script] ScriptEventCompanyRename (#12878) - Add: Ukrainian Hryvnia currency (#12877) - Add: Convert 32bpp-only sprites to 8bpp when needed (#11602) - Change: [Script] Start GS (but don't run it) when generating world in scenario editor (#13961) - Change: [Script] Add vehicle owner to crash event (#13878) - Change: Make tree placement at world generation look more organic (#13515) - Change: [MacOS] Put the icon in a rounded rectangle (#13446) - Change: [Script] GetWaypointID to return the StationID of any waypoint (#13407) - Change: Draw company manager face jacket after collar (#13390) - Change: Don't distinguish between bus and truck stops when removing them (#13384) - Change: [Script] Rename BridgeID to BridgeType in the script API (#13352) - Change: Add fonts document to help window (#13305) - Change: Log changes to sandbox settings (#13267) - Change: When player joins network company, use its name instead of number in chat (#13263) - Change: [Win32] Draw window title bar according to current Windows light/dark theme (#13196) - Change: Restore wider spacers in main toolbars (#12039) - Fix: NewGRF Global variables 0D, 0E and 1E refer to wrong GRFFile (#13986) - Fix #13980: Allow diagonal selection for road convert (#13983) - Fix: Validate raw strings from game-scripts, and strip invalid and control characters (#13976) - Fix: Capitalise "Disabled" for the "maximum non-sticky open windows" setting (#13975) - Fix: Frame widget with label had incorrect spacing (#13967) - Fix: StringFilter included quotes in the search and failed (#13965) - Fix #13955: Make graphs respect RTL (#13957) - Fix: Numbers were left-aligned for RTL languages in several windows (#13959) - Fix: MayHaveRoad claimed rail station tiles had road, so the custom stationspec index would be read as roadtype (#13949) - Fix: [Script] Prevent cloning of API instances (#13947) - Fix: Reference to the correct section of the README, if a graphics or a sound set is incomplete (#13946) - Fix: Draw the bevel around the music track name as inset (#13935) - Fix #13923: Padding in music GUI was asymmetric, so it looked different for LTR and RTL languages (#13933) - Fix #13928: BuildOilRig did not properly set airport rotation (#13929) - Fix: SDL2 application name hint was not effective (#13926) - Fix #13921: [Win32] Don't try close an already closed event handle during destruction (#13924) - Fix #13921: Don't reject MIDI files with a valid file magic value (#13924) - Fix #13912: Multitile buildings break apart in house picker (#13914) - Fix #13908: Require double click on order to change stop location (#13913) - Fix #13910: Invalidate content of house picker window if language is changed (#13911) - Fix: [Script] Reset instance when changing running scripts in scenario editor (#13906) - Fix: [Script] Only run the gamescript GameLoop() in-game (#13896) - Fix #13893: Reversed all x-axis labels for company related and industry production graphs in wallclock mode (#13894) - Fix #13842: Close industry production graph if industry is removed (#13890) - Fix #11528: Starting autorail dragging from existing track tiles resulted in adding non-continuous tracks (#13885) - Fix: Autoreplace rail/road list only listed buildable types (#13887) - Fix: [NewGRF] Display an error, if NewGRF reference out-of-bounds string parameters in gender/plural choices (#13881) - Fix #13849: Settings in old saves could be overridden by defaults (#13874) - Fix #13562: Removed cost estimation message from money cheat (#13857) - Fix: [NewGRF] Plurals and genders did not work in strings with cases or substrings (#13853, #13852) - Fix: [NewGRF] String parameter stack and case selection were not processed for control code 0x81 (#13851) - Fix #13839: Incorrect colour of first company legend in smallmap window (#13841) - Fix: i circumflex width in TrueType small font (#13836) - Fix: Don't show owner of non-existent road (#13824) - Fix: Error message window timeout doesn't match setting (#13812) - Fix #13795: Crash in vehicle list of 32-bit platforms (#13796) - Fix: [Script] Company rename event sometimes had the wrong name (#13794) - Fix: Improve manager face randomisation (#13776) - Fix #13740: [Script] Handle implicit orders for jump orders (#13753) - Fix #13749: Default service intervals were not updated when changing timekeeping unit (#13751) - Fix #13725: Use proper query strings for changing timetable values (#13737) - Fix #11226: Don't draw story page elements that won't be visible (#13736) - Fix: More AI than max_no_competitors could start with competitors_interval=0 (#13670) - Fix: League table window ignored the minimal size in its widget description (#13629) - Fix: Incorrect snow density when making rocks snowy (#13626) - Fix: NewGRF vehicles display loading sprites when not actually loading or unloading (#13554) - Fix #12925: Prevent cost estimates for settings changes (#13550) - Fix: [Script] Report errors happening during 'Load()' (#13537) - Fix: [Script] Improve type checking of parameters (#13522) - Fix: [Script] Don't set CommandCallback for asynchronous commands (#13501) - Fix: Missing error messages with sell- and autoreplace-all commands (#13469) - Fix: Too many trees when generating trees at same height (#13460) - Fix #12912: Company inaugurated year in wallclock mode was not saved (#13448) - Fix: [Script] Wrong return value for failed preconditions Vehicle::CloneVehicle (#13445) - Fix #13140: Scale initial industry production estimate by cargo scale (#13427) - Fix #13384: Crash when remove bus/truck stop tool used on road waypoints (#13391) - Fix #12987: Historical houses now always spawn completed (#13332) - Fix: [Win32] Font detection didn't work for locales not supporting code pages (#13306) - Fix: Restore ability to disable service interval (#13281) - Fix: Hide company settings from console commands (#13269) - Fix: Disable service interval widgets for non-owned vehicles (#13260) - Fix #13225: Cargo payment graph key toggled wrong data sets (#13226) - Fix: Rail station tile flags were not set early enough (#13203) - Fix #13199: -f command line parameter does not need a value (#13200) - Fix: Missing water region invalidation after flooding a half tile with rail in the highest corner (#13047) - Fix: Strip control codes before sorting NewGRF names (#13034) - Fix #12968: Added back ability to create unremovable houses (#12989) - Remove: Drop support for UCS2/UTF-16 encoded scripts (#13992) - Remove: Support for SDL1.2 (#13298) ### 15.0-beta1 (2024-12-24) - Feature: Town, industry and vehicle window zoom with mouse wheel (#12810, #12809, #12797) - Feature: Show count of towns and industries in their directory window captions (#12800) - Feature: Toggle for showing industry names in small map (#12770) - Feature: Manually place town buildings in scenario editor (#12661, #12741) - Feature: Filter new picker window by all classes, by used types, or by favourites (#12595) - Feature: New picker window for rail and road stations, rail and road waypoints, and objects (#12595) - Feature: Road waypoints (#12572) - Feature: Allow base sounds set to be changed mid-game (#12399) - Feature: Authorize specific clients to join network, company and remote console without password (#12337, #12326, #12329) - Feature: Authenticate to the server without sending the password (#12323, #11878) - Feature: Encrypt the connection between game server and client, and admin (#12300, #11878) - Feature: Industry production/transported graph (#10541, #13083) - Feature: Import town data from JSON file (#10409) - Add: Implement 2D map scrolling under SDL2 (#13169) - Add: [NewGRF] Callback for custom refit mask for engines/vehicles (#13090) - Add: [NewGRF] Vehicle prop that allows refittability based on cargo class intersection (#13090) - Add: Ability to show and filter different datasets on the same graph (#13083) - Add: Show and toggle follow vehicle state in vehicle view window (#13076) - Add: Set application name for SDL2 (#13061) - Add: Support sound effects in Ogg Opus format (#13055) - Add: Improving town-owned bridges increases company rating (#13036) - Add: Apply rail/road type conversion when NewGRFs are updated mid-game (#13021) - Add: Implement missing road type label conversion (#13021) - Add: [NewGRF] Cargo class bits 13 and 14 now define potable and non-potable (#12979) - Add: Overlay cargo icon in vehicle/depot list when holding shift+ctrl (#12938) - Add: [Script] Include number of victims in ScriptEventVehicleCrashed (#12861) - Add: [Console] Schedule command to execute a script file next in-game month (#12761) - Add: Setting to disable warning for old vehicles (#12714) - Add: Use macOS Game Mode identification (#12700) - Add: Shade button to waypoint picker (#12682) - Add: [NewGRF] Extended custom waypoint classes (#12653) - Add: 'Get Content' buttons next to base set dropdowns in Game Options (#12627) - Add: [NewGRF] Custom road waypoint support (#12572) - Add: [NewGRF] Allow fixed layout up to 256 tiles per NewGRF rail station (#12554) - Add: [NewGRF] Station property 1E, extended station tile flags (#12554) - Add: [SDL2] Driver parameter 'no_mouse_capture' to ease interactive debugging (#12336) - Add: Basic autocompletion on tab for console commands (#12163) - Add: Portuguese Escudo currency (#12108) - Change: Hide buttons in Found Town window that can't be used (#13182) - Change: Include new cargo classes in dump cargo types console command (#13174) - Change: Use floats for tracking 2D scrolling to improve smoothness (#13169) - Change: Improve news window layouts (#13136, #13134) - Change: Show company finances column if it has any values in it (#13112) - Change: Treat recolour sprites as regular sprites in the SpriteCache (#13107) - Change: Determine industry directory width only on visible rows (#13097) - Change: Add sound memory usage to framerate window (#13055) - Change: Invalidate build toolbars when NewGRFs are changed (#13046) - Change: Don't try to flood buoys or dock tiles (#13013) - Change: Store water tile flooding state in the map (#13013) - Change: Exclude parent item from directory sort in FiosGetFileList (#12947) - Change: [NewGRF] Place all 8 bits of station tile layout in var 40/41 (#12890) - Change: [NewGRF] Install translation tables into overridden NewGRF (#12879) - Change: [UI] Use scaled sprite sizes and correct matrix padding for content list (#12875) - Change: [UI] Improved Network server list icon sizing and text positioning (#12874) - Change: Path signals now show green on junction-less tracks by default (#12857) - Change: Don't use house construction states in Scenario Editor (#12822) - Change: Changing zoom no longer stops following vehicle (#12808) - Change: Allow bribing local authority when other company has exclusive rights (#12763) - Change: Position caret on left or right of glyph depending on language direction (#12760) - Change: Do not automatically connect double depots with track (#12752) - Change: Call custom house name callback in House Picker (#12741) - Change: [NewGRF] Treat house max year 0xFFFF as MAX_YEAR (#12740) - Change: [UI] Remove substitution of missing glyph with '?' glyph (#12736) - Change: [UI] Use SetMinimalTextLines to set label height correctly (#12734) - Change: Don't use house construction states in Scenario Editor (#12730) - Change: Ignore min/max years for manual house placer (#12687) - Change: Use default NewGRF cargo translation table if no custom table is provided (#12646) - Change: Don't include midi file processing in dedicated server build (#12632) - Change: [Linkgraph] Improve distance scaling algorithm in demand scaler (#12542) - Change: Draw group hierarchy tree lines (#12522) - Change: Display more useful information in sprite aligner than sprite ID (#12439) - Change: Disallow using Action A to load sprites above the baseset unless reserved (#12435) - Change: Use aspect ratios for some common widgets and buttons (#12386, #12636) - Change: Show correct default value and unit for vehicle service interval setting (#12376) - Change: Use per-company group numbers (#12297) - Change: [NewGRF] Increase house type limit from 512 to 4096 (#12288) - Change: Add dividers in vehicle group action dropdown (#12284) - Change: Use same audio buffer size (and config parameter) for all sound drivers (#12227) - Change: Allow rail and road depot overbuilding in current orientation in order to connect to rail or road (#12219) - Change: Show tile index as decimal number in land info window (#12104) - Change: Increase object/station/roadstop class limit (#12094) - Change: Disable the insecure admin login by default; replaced by allow list (#11878) - Fix: [NewGRF] New engines did not have a default cargo type set (#13146) - Fix: String parameter not set when determining width of smallmap contour labels (#13145) - Fix #13022: Ensure minimum size of scrollbar slider (#13119) - Fix #13110: [Script] Convert table keys to string when generating JSON (#13113) - Fix: Error message not set when unable load an old save (#13106) - Fix: Network clients incorrectly truncated all strings to NETWORK_COMPANY_NAME_LENGTH (#13102) - Fix: Don't allow right-click to close world generation progress window (#13084) - Fix: VF_LOADING_FINISHED and VF_STOP_LOADING flags tested on wrong vehicle part (#13063) - Fix: X-axis direction of industry production graph (#13062) - Fix #13053: Payment transfers incorrect for non-passenger cargos (#13054) - Fix: Invalid data used for height map curves after first run (#13039) - Fix: SkipGarbage() skipped all multi-byte utf-8 characters (#13032) - Fix: Don't invalidate water regions on the other side of the map (#13012) - Fix: ScriptTile::PlantTreeRectangle does not check that the end tile is in bounds (#13004) - Fix #12973: Don't exclude high score after using sandbox (#12999) - Fix #12976: Incorrect widget rect scrolling for RTL languages (#12978) - Fix: Crash when exiting game with end game window open (#12962) - Fix #12957: 1-in-X proportion of towns being cities is unnecessarily random (#12960) - Fix: ICUParagraphLayout line wrapping (#12956) - Fix: Highscore/Endgame window can disappear offscreen if game window is resized (#12951) - Fix #12940: Use specific error when overbuilding station on signals (#12943) - Fix #12917: Write to negative array index for some string patterns (#12932) - Fix: Incorrect truncation in string setting validation (#12924) - Fix #12914: Fix use of invalidated pointer in viewport drawer (#12918) - Fix: Train curve detection did not take shortened parts into account (#12910) - Fix: DepotWindow::GetVehicleFromDepotWndPt not refreshing vehicle list (#12907) - Fix: DupSprite did not copy the control_flags field (#12906) - Fix: Excessively fast ships on aqueducts fail to move at correct speed (#12895) - Fix: Timetable does not show vehicles as early (#12873) - Fix #12856: Updating network settings does not invalidate data (#12858) - Fix #12839: Truncated help text dialog on Windows (#12844) - Fix #12832: Sanitise strings from NewGRF before logging them in Debug output (#12835) - Fix #12825: Crash when opening road toolbar in scenario editor (#12826) - Fix #12818: During Hostile Takeover, profit was calculated incorrectly (#12819) - Fix: Apply widget's internal padding to scrollbar capacity/position (#12801) - Fix #12365: Company Window now displays proper inauguration year and period while in wallclock mode (#12798) - Fix #12787: Boostrap doesn't have main vindow (#12788) - Fix #10239: Use elevated snow height for roads on flat foundations (#12776) - Fix #12764: Crash when opening Detailed performance rating window with no companies (#12765) - Fix: Water infrastructure total when changing owner of object on water or using DC_FORCE_CLEAR_TILE (#12757, #12729) - Fix: Editbox behaved improperly with RTL languages (#12746) - Fix #12283: Vehicle group dropdown shouldn't have default action (#12727) - Fix: Reverse left/right keypress when editing RTL text (#12711, #12710) - Fix: Crash if interface scale or font size changes with chat box present (#12705) - Fix: Make progress bars obey language direction (#12704) - Fix #12681: Abstract filetype not set for network client join savegames (#12701) - Fix: Implement support for secure state coding on macOS (#12698) - Fix: Add entitlements needed for plugins on macOS (#12697) - Fix: Allow resolving house parent scope (town) of unbuilt houses (#12695) - Fix #12685: Nullptr dereference when checking for equal loaded/loading groups (#12686) - Fix: Unable to choose a font containing hyphen (#12684) - Fix: [Timetable] Use days as precision in day mode for accurate timetable syncing (#12683) - Fix #12550: Files were not saved in the right location when binary and configuration are in the same folder (#12679) - Fix #12591: Give descriptive error when station construction fails due to wrong layout (#12678) - Fix #12594: Give descriptive error when company takeover fails due to vehicle limit (#12676) - Fix: Ensure revision mismatch also considers random debugging status (#12673) - Fix #12411: [Admin] Send Network Welcome Packet to admin port after game creation completed WelcomeAll moved into NetworkOnGameStart (#12672) - Fix: [MacOS] Memory leak in CoreTextFontCache (#12662) - Fix: Use widget resize step instead of window resize step (#12659) - Fix #12563: Race condition setting finish flag in WinHTTP (#12658) - Fix #12648: Ensure all uses of std::filesystem::path use native encoding (#12650) - Fix #12643: _is_water_region_valid is not cleared/reset in AllocateWaterRegions (#12649) - Fix: Console command scrolling did not take account of padding and cursor width (#12642) - Fix: Allow changing size of default OpenTTD font (#12641) - Fix: Always allow setting company settings, company/president name/face (#12635) - Fix: For GUI network servers, name the first company the same as any other company (#12629) - Fix: Properly test for presence of waypoint in NewGRF resolver (#12579) - Fix: Inconsistent space between console history and current line (#12528) - Fix: Build industry window did not take width of count into account (#12476) - Fix: Draw continuation lines for engine variant hierarchy tree (#12434) - Fix: Viewport signs assume small font is smaller than normal font (#12422) - Fix #11345: Use correct default button value for vehicle service interval setting (#12376) - Fix #7982: Show existing coverage with unambiguous adjacent station (#12346) - Fix: Off-by-one in EnsureVisibleCaption (#12261) - Fix #11055: Make saveload failure error messages consistent with others (#12247) - Fix: Train running sounds should only be produced for engine parts (#12229) - Fix: Maximum permitted sound volume from NewGRF is 128 (#12222) - Fix: Relocate main toolbar and statusbar before other windows (#12218) - Fix: YAPF doesn't check destination for start nodes (#12217) - Fix: Make link graph node borders scale with GUI (#12167) - Fix #10490: Allow ships to exit depots if another is not moving at the exit point (#12161) - Fix: Incorrect padding for text purchase list (#12160) - Fix: GetNextDecisionNode ignored go to nearest depot when combined with stop at depot (#12130) - Fix: Aircraft could route to hangars outside their range when stopping at them (#12130) - Remove: Hidden setting for adjacent stations (#12862) - Remove: Custom opendir implementation for Windows no longer needed (#12524) - Remove: Company passwords; replaced by client allow lists (#12337) - Remove: Autoclean_unprotected settings; all companies will be protected (#12337) - Remove: NPF and pathfinder change settings (#12209)





