Stabilitás mindenek felett: megjelent az OpenTTD 15.0 második kiadásra jelölt változata

Segítséget kaptál? Szívesen töltöd itt az idődet? Visszajársz hozzánk? Támogasd a munkákat: Ko-fi és Paypal!

kami911 képe

Az OpenTTD fejlesztői közzétették a 15.0-RC2 verziót, amely a közelgő stabil kiadás második kiadásra jelölt verziója. Az új előzetes kiadás elsősorban a stabilitásra koncentrál, miután az első RC-ben több, főként a kibővített betűkészlet-kezeléshez kapcsolódó hibát talált a közösség. Ezek közül több változtatást ideiglenesen visszavontak, hogy a funkciók egy későbbi, kiforrottabb állapotban térhessenek vissza. A fejlesztők hangsúlyozzák, hogy a játékosok visszajelzései most kulcsszerepet játszanak abban, hogy az OpenTTD 15 valóban a sorozat egyik legjobb kiadása legyen.

A release candidate fázisban a hangsúly már nem az új funkciók hozzáadásán, hanem a hibák felkutatásán és javításán van. A fejlesztőcsapat szerint továbbra is nagy esély van arra, hogy rejtett problémák maradtak a kódban, ezért mindenkit arra biztatnak, hogy aktívan játsszon a 15.0-RC2-vel, és az észlelt gondokat jelentse a hivatalos hibakövető rendszerben. A részletes változáslista, valamint a letöltési lehetőségek a projekt hivatalos oldalán érhetők el.

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.

Az OpenTTD 15 fejlesztése során számos kényelmi és játékmenetet érintő újítás született, amelyek már a bétákban és az RC-kben is elérhetők. 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. A feliratok, állomásnevek és útvonalpontok áthelyezhetők, a terepgenerátor pedig képes olyan mocsaras folyószakaszokat létrehozni, amelyek nem érik el a tengert. Az új térképgenerálási lehetőségek mellett a sziget- és magasságtérképek immár végtelen vízzel is körülvehetők a korábbi fekete háttér helyett.

A közlekedési infrastruktúra is több ponton fejlődött. A hidak mostantól zsilipek és dokkok fölé is építhetők, sőt bizonyos feltételek mellett állomások fölött is, feltéve hogy az adott NewGRF állomáskészlet ezt támogatja. A hajók intelligensebben kerülik egymást, amikor ellentétes irányban közlekednek, a felület méretezése pedig több finomhangolást kapott a különböző kijelzőfelbontások jobb kiszolgálására. 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.

Kiemelt újdonság az NewGRF jelvények (Badges) támogatása, amely egy teljesen új rendszert vezet be a kiegészítők áttekinthetőbb kezelésére. Ezek a jelvények egységes ikonokkal és metaadatokkal jelzik például egy jármű energiaforrását vagy ajánlott felhasználási módját, és beépített szűrést is lehetővé tesznek a vásárlási és kiválasztási menükben. Bár jelenleg még kevés kiegészítő használja ezt a funkciót, a fejlesztők szerint hosszú távon ez jelentősen javítja majd a NewGRF-ek közti konzisztenciát és a felhasználói élményt.

A pályaszerkesztő különösen sok figyelmet kapott. Javult a városok elhelyezése és bővítése, megjelentek külön gombok az utak és az épületek növeléséhez, valamint lehetőség nyílt házak manuális elhelyezésére és azok védelmére a városnövekedéssel szemben. A hóval borított sziklák most már vizuálisan is megjelennek, a meredek hegyoldalak pedig extra sziklákat kapnak a valósághűbb látvány érdekében.

A motorháztető alatt is történtek jelentős változások. Javult a teljesítmény több területen, gyorsabbá vált a jelzők kezelése, és alapértelmezésben zöld állapotból indulnak. A hálózati játék egyszerűbbé vált a jelszó nélküli hitelesítés (password-less authentication) bevezetésével, amely kulcsalapú azonosítást használ. Egy korszak ugyanakkor lezárult: a régi NPF útkereső (pathfinder) végleg kikerült a kódból, miután a YAPF már hosszú évek óta bizonyította fölényét alapértelmezett megoldásként.

Az OpenTTD 15.0-RC2 tehát egy tudatosan visszafogott, de annál fontosabb kiadás, amely a stabilitást és a finomhangolást helyezi előtérbe. A fejlesztők reményei szerint a közösségi tesztelés segítségével a végleges 15.0-s verzió kevesebb hibával és egységesebb élménnyel jelenhet meg, méltó folytatásaként a nyílt forrású közlekedésszimulátor több évtizedes történetének.

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.

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.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)