Simutrans 124 Released

The long awaited Simutrans 124 is finally here! This version comes with a lot of changes, although the most visible ones are the improved support for anti-alising of fonts and some reworked windows. Under the hood, many less visible changes were made to allow this to be the first stable Android release – which means you will be able to play online now on Android too!

Download Simutrans 124

Highlights of this version

  • Improved anti-aliasing of fonts, now using TrueType fonts by default.
  • Reworked main menu and option windows.
  • Reworked list windows, they are now checkered lists easier to read.
  • The minimap now changes if you are in underground mode.
  • The new directory structure allows the players to install paksets if they don’t have admin rights.
  • Fixed loading of heightmaps.

Paksets updated since Simutrans 123

  • pak64 124.0
  • pak128 2.9
  • pak192.comic 0.71
  • pak64.german 124.0.0.2
  • pak128.german 2.2
  • pak64.nippon 0.62

Full changelog

Here’s the full list of changes since the last version.

Added

  • pak64.german 0.124.0.0.1 uses 40×40 buttons and therefore the theme is necessary and should not be missing
  • labelupdate for all windows were it makes sense
  • Checkered list windows
  • obj_xxx_details in translation will display some more details on an obj, especially vehciles
  • traffic lights remove themselves if only a curve or a single tile is below them
  • fontconfig for linux font selection
  • Aliasing fonts
  • Rework of banner and options windows. Added button to play tutorial and load last save to banner
  • rotate house tool will also switch railroad switches (eyecandy only)
  • new parameter in simuconf.tab cityroad_speeds for a timeline (year,new_speed) of speed limits of way with pavement
  • rotate also rotates the order of vehicles on a tile to avoid overlapping
  • Sell all convois in a depot with Ctrl + Sell button
  • Signals can be replaced by overbuilding them using left-click
  • missing script ai text
  • menubar can be dragged to each corner
  • Display artist credits for music
  • function find backend specific default TTF font dr_get_system_font()
  • Theme colour parameter for highlighted objects (gui_color_object_highlight)
  • scroll to selected font in load-font window
  • theme parameter gui_color_image_transparency to set transparency color for icons (Yona-TYT)
  • update vehicle history frame with search string
  • .pak files are now also searched for in subdirectories of pakset
  • tooltip warnign when try to cross way without suitable crossing or curves on runways
  • Loading time display in depot, convoi info and vehicle timeline
  • MSI installer for SDL2 MSVC builds
  • single toolbar mode (top and centered) primarily for Android and tablets
  • Try to detect base_dir when installed on linux
  • new tool (and button in signal dialog) for removing signals only
  • map view can be changed with any general tool by dragging the pointer above a threshold

Changed

  • High resolution icon for Android
  • all list react immediately on editing the filter name
  • removed a lot of table to speed up convoi list and added route bar
  • right click/control+left -> goto pos, left click -> open window
  • Again orange as default unowned color to have more contrast
  • Decouple label style and show option
  • enforce a minimum width of 5 digits for number edit fields
  • GUI numberinputs stretch horizontally to fill their space
  • Players can’t build over public ways if there is another player halt on them
  • Slightly improved goods window
  • Almost impossible to have a language selected with a non-matching font
  • rename texttype to correct name
  • save button and save window single translate
  • button text to exists translate (equal to the window title of the dialog)
  • state of railroad switches will be saved between games
  • Delete buttons are always shown when saving/loading. Config show_delete_buttons is deprecated
  • Increased default vertical spacing of loadsave items from 0 to 1 (so it doesn’t look super crammed)
  • use internal server list name for backup
  • use 5bit granularity for alpha-blending sometimes
  • do not change debug tab in scenario window if debug text is empty
  • issue warning when old object is overlaid by new one
  • click on ticker jumps to coordinate of message under cursor (or opens message window)
  • send doubled-object warning as message, click on the message shows the full warning
  • only warn about doubled objects with different checksums
  • a go-to-coordinate action will change view to underground/normal view if target is invisible
  • messages, speed records, ticker use 3d coordinates
  • tests use command_x.set_slope
  • Display number of station tiles in parenthesis in convoi details
  • update convoi list name filter on enter to avoid longer delays
  • reflect underground view settings in minimap windows
  • Look for fonts in subdirectories recursively (up to 5 levels)
  • pedestrians spawned on more tiles, more distributed over tiles, now client wise settings for server games
  • Ignore pedestrians for deletion tool
  • only show connection of top factory window in minimap
  • use TAB to change between tabs
  • 6% speed gain to to a freelist with integrated iterator
  • Always allow ‘-until’ command line parameter
  • MacOS bundle is now self-contained
  • removed LEFT_REPEAT message hack, as this destroys left dragging for fps<10
  • discard all but the last drag event in a single call to check_events(() or the calac_route maz be called twice during mark_tiles
  • process events in screen refresh and queue them for execution for more responsiveness on weak devices”
  • reset frame time when zoom in
  • file location in the same directory
  • pakset downloader in separate file
  • Divide minimap ‘Selections’ button into two (Show networks and Selections)
  • Use XDG_DATA_HOME for user dir on linux (only if it has been set)
  • allow dragging scrollpanes instead using scrollbars
  • only load goods for a destination into a single convoi. This avoids loading in parrallel of slow loading convois
  • test connect timeout now 2 seconds (for windows, please adapt and test on Linux/Mac) for query server status

Fixed

  • generating header script works under windows again
  • all again to connect from vertical cliff to monorailboden
  • vehiclelist ignored name filter for waytypes selection
  • vehicle list did not sort by capacity and was not properly restored after saving
  • hide wayremover, wayobjremover and signalremove icons when those ways are not available
  • labellist positions need to be 3D
  • derive ground info from obj info so long waynames work again
  • a bridge and tunnel has just a default street => do not show info
  • extra margins of objects inside a marginless container fixed => all dialogues open in the same size again
  • if a schedule open not of plane 1 => crash
  • Could connect way to side of sloped elevated way
  • Game lags when paused, especially on big maps
  • Withdraw Line button did not indicate withdraw status correctly
  • OS window sometimes does not close when modal dialogue is open
  • makeobj MSVC builds
  • show waiting bars even without labels
  • banner window does not close on window close!
  • outside was not redrawn when windows minimized
  • wrong function name
  • default char for cyr.bdf and revision detection fpor MSVC
  • start also with a wrong unloadable font specified
  • Error when using ‘makeobj dump’
  • removed unblocking sockets for linux
  • distribute.sh was not working for some time on linux with default template
  • Height conversion mode ignored if selected after heightmap
  • Wrong speed of bridge ramps in some cases
  • Wrong length for bridges in build preview tooltip
  • pakset.nsh
  • built nsis again for github nightly
  • Extract .cab and .tar.gz correctly
  • (THLeaderH) crossings upgrade in ways are upgraded
  • crash when loading vehiles as cnv==1 is used as flag during loading
  • drawing order of private car
  • better calculation of dsip_lane also with overtaking cars and road convois
  • Wrong draw order of road convois turning E->SE or NW->N
  • airplane convois are somewhat working. Need through stops better for this
  • Makeobj ignored switch images for tracks with no seasons
  • Graphical glitches related to translucent player colours
  • Wrong brightness of colours in screenshots
  • Label colours when label is unowned
  • swallow all extra finger events to have better zoom and three finger scrolling
  • Debug assertion failure when starting a new scenario
  • Loading window no longer closes all other windows and does not trigger other loading tools in the toolbar.
  • Missing translation of ‘Depot’ (dataobj/schedule.cc:590)
  • Clamp env_t::max_acceleration correctly
  • Cannot load sounds from pakset if pakset is in user directory
  • ticker messages – use one method to insert in list
  • replace %% in translated strings by %, but only for those strings where the base string does not contain format specifiers
  • Memory label cut off when increasing map size in New World dialogue
  • Broken compat.tab parsing
  • Crash when trying to load TTF font without family or style name
  • Crash when allocation of buffer for node name fails
  • Crash when dumping pak file containing a node with invalid size
  • Crash when reading pak nodes with malformed or unknown type
  • Crash when using ‘makeobj dump’ on corrupted pak files
  • Crash when reading non-null-terminated object names from pak files
  • Use-after-free when listing node names of pak files
  • crash when such a pedestrian was created near map border
  • do not generate pedestrians on roads without any connected roads
  • Crash when displaying alpha images near window border
  • builing vehicles from the future is not allowed
  • problems with transparent pixels
  • crash in build-station tool without cursor
  • get_available_* returns only descs of buildable objects
  • do not draw on the window boundary
  • correctly check for character 30
  • improved width calculation for numberinput elements
  • cannot build double slopes if the pakset does not support it
  • try to repair broken format strings (replace % with %% for broken specifiers)
  • use double percent sign in translatable strings
  • format string checks
  • fix/remove more RGB555 stuff
  • crash if desc == NULL (may come from scripts)
  • Missing credits of midi tracks
  • Credits of midi tracks
  • correctly handle suspended calls with ct == FORCE
  • crash in scripted tools
  • correctly reset tool-drag event if scenario check failed
  • search_folder_t::search_path if d_type is not supported (koroal)
  • invert schedule function not working properly (koroal)
  • window position not being saved in some cases (koroal)
  • factory_x::get_tile_list returns list of tile_x’s (Yona-TYT)
  • remove preview image of tools if moved on a tile that is forbidden by scenario rules
  • memory leak
  • -addons/-noaddons setting saved in settings.xml
  • do not reset full underground mode when zoom with mouse wheel
  • apply the correct coordinates when processing links in scenario window
  • Vehicle list name filter not saved due to typo
  • initialize restart-variable (Yona-TYT)
  • properly clear random-mode flag
  • do not check for local execution, shut down network on quit
  • size calculation of depot dialog to properly show vehicle list (Roboron)
  • loading of scenarios for paksets from addons (Yona-TYT)
  • (after ranran) loading of legacy translation files
  • schedule positions when rotating non-square maps
  • clear schedule-editing flag if check fails
  • trivial case in haltestelle_t::is_connected
  • crash with invalid defaultparam
  • Cannot build trees on clouds
  • world.generate_goods did not work correctly for mail/freight
  • Uninitialized read in gui_image_t::get_min_size when COLOUR_DEPTH=0
  • Adapt Load Script dialog to new directory structure
  • restore all open convoi and halt windows
  • quit does not quit the server
  • Addons are loaded by default (contrary to documentation)
  • starting a scenario in now a command to do this in the step
  • call the quit tool from dialogues for quitting
  • Undefined Behaviour when converting char * to utf8 *&
  • Crash when supplying invalid default_param to tool_plant_groundobj_t
  • Crash when supplying invalid default_param to tool_build_station_t
  • Crash when supplying null default_param to tool_build_station_t
  • implement constructor in c++ instead in squirrel
  • correctly propagate error when pushing large arrays
  • Crash when supplying invalid default_param to tool_plant_tree_t
  • Speedbonus not being applied to air (reverts partly r9208)
  • use translated error message instead of raw string
  • setslope for scripts on server games on single-height paks
  • accept sym-links as directory
  • dragging of tools with ctrl, propagate flags through defered calls
  • scrolling with mouse wheel in droplists opened above combobox
  • copy way-flags when replacing ground tiles
  • Cannot load addon scenarios if there are no addon objects
  • Use-after-free in makeobj when reading malformed dat file
  • crash when trying to save to unreachable location
  • check for NULL pointers
  • Paks loaded from addon subdirectory even if -noaddons is specified
  • Signals not shown when minimap is set to show tracks
  • Graphical glitch when ticker disappears while background is visible
  • Position of elements in ‘Sort by’ depot combobox
  • PVkraftwerk should produce again power
  • Disable font size button for bitmaps fonts
  • do not updtae crossing speed with new way
  • when deleting stuff from tiles with two or more objects
  • Don’t double sync_step citycars
  • focus with comboboxes
  • pedestrians agon walking diagonal
  • also forbid pedestrian entry on tiles with more than 240 objects
  • Do not generate too many pedestrians per ground
  • pedestrians try to hop to full ground
  • beaches were not properly recognised for environmental sounds
  • Curl pakset download for built-in installer
  • pakset downloader not listing any paksets
  • crash due to calc_route called twice when dragging way tools at low fps
  • Obey control lock tool in more all situations where the control key would work
  • accidently swapped single toolbar option defualt for non-android
  • Pakset selector failed to load a single pakset with no addons
  • Network filter comboboxes take preference capturing the mouse wheel over the minimap
  • control+drag of ways
  • append halt only once
  • show no tooltips on toolbars if cursor is on title bar
  • do not swallow keys and scrollwheel events in scrollpanes
  • windows were topped before the underlying window got their removal message => topped window function not working as expecting i.e. schedule display of convois
  • Disallow merging with public stop (or any stop) to take over ownership
  • heavy_rotate_saves does not delete old saves correctly
  • Cannot load PPM heightmaps
  • Int overflow for large power networks in minimap
  • missing string and no spaces at the end of translator objects
  • switch on and off network overlay when line is active
  • minimap background rendiering mode is not reset but selecting other options
  • crossing logic did not correctly obeyed speed limits
  • After loading a save, the color of the stop list title
  • display_snapshot uses wrong area if area is offset horizontally
  • scaling window with GDI

Pak192.Comic V0.7

The Pak192.Comic recently released version 0.7 of this comic themed pakset. If you are playing Simutrans on Steam and you installed the Pak192.Comic DLC, you will get the update automatically. Otherwise, please see “Where and what to download” section.

Changelog

Gameplay changes

  • turned “avoid over overcrowding” off by default again
  • , and . now work for controlling time in the game
  • ( and ) now work for sliced view up/down
  • road speeds from 50 to 55 and from 70 to 80
  • pricing that considers the actual build year of the vehicle, instead of the introduction year
  • Pubs now comsume rum as well
  • there is a track/track submenu now
  • increased the productivity of the wiredrawer
  • higher fix costs for ships
  • changed to intro years of 120 and 160 kph track
  • tutorial works with the tutorial button now
  • playing from 1930 onwoards should feel way more complete now compared to previous versions

New objects

Industry

  • European sugar production with beets (farm, fields, refinery)
  • biofuel plant
  • Additional coal power plant that better fits early years

Infrastructure

  • river stop for goods
  • letter box stop for road
  • docks for pax
  • older post office
  • track with different kinds of gravel beds
  • 1850 station hall
  • steel girder bridge for narrowgauge
  • HUGE HUGE station hall for people that need to prove they have the biggest network
  • narrowgauge tunnel for 50km/h
  • 80kph railway bridge
  • streetlights as (free) wayobj
  • fake city road in cobblestone look
  • Lot of new SBB Type N and L Signals

Buildings

  • citybuilding “Danivision”
  • citybuilding “Keycaps Skyscraper”
  • citybuilding “Taipei 101”
  • monument “Disco Sphere”
  • curiosity “StarGate”
  • curiosity “Guardhouse”
  • inverse Corner for St. Pölten station building
  • alternate version of all Pölten elements
  • several new citybuildings across all climates

Vehicles

  • more ships for channels
  • gigaliner converter for semitrucks
  • HHA DT6
  • Baden IVh
  • a couple of Baden express coaches
  • old Baden compartment coaches
  • lots of old freigth cars and hoppers
  • Baden VIc
  • old AC S-Bahn Hamburg
  • DRG D21b / C21 Abteiwagen
  • DRG “Donnerbüchse”
  • DR Rekowagen
  • DRG E01
  • KPeV EG502
  • KPeV EG511
  • KPeV ES1
  • Getreideschiff
  • old postal tram
  • prussian G12
  • ET 88
  • ET 41

Things that walk around

  • various new generic pedestrians
  • try to spot some easteregg-pedestrians too
  • ducks, swans, sharks and a whale
  • a fox

Improved objects

  • the narrowgauge to road crossings
  • some sounds for some trains (not too many yet sadly)
  • swapped the first and second player colour for green coaches
  • various glitch fixes
  • palyer colour for the Alsterdampfers
  • player colour for V200
  • SBB EW I
  • the old track plattforms
  • updated DRG coaches
  • loading image for beets for many vehicles
  • crossing track narrowgauge now fits the whole tile
  • SBB PTT
  • player colour for bavarian D VIII
  • ET 11

Addons

In plus to the “core” Pakset, there are multiple changes to the addons provided within the repository:

New version of the game: The all DACH pakset contains the main pakset and the DACH addons.

Vehicles

  • BR 216 “Lollo”
  • 4 car OBB Cityjet for Vorarlberg
  • Bpm 61 20-70
  • SBB Bpm 20-90
  • SBB EW IV
  • BT EW IV
  • orientrote BR 218
  • updated Nuremberg subway cars
  • new SNCB I6 livery
  • update gear values for most british vehicles so they can reach their top speed
  • SNCB HLE 17
  • SBB IC2000 postal car
  • DB Mintling coaches
  • fictional BR 427
  • BR 423 and BR 430 for BWegt
  • BR 422 for VRR
  • BR 426 for BOB
  • BR 425 for Transdev
  • 120km/h Silberling
  • more colours for the BR 110, 110.12, 110.3, 111, 112, 113, 140, 141, 150, 151…
  • HHA AL
  • EMT CLASS 156
  • two RZD sleepers
  • FLIRT 1 for SBB
  • FLIRT 3 for BWegt and SBB
  • extra livery for DSB EG
  • player colour for class 59, 92, 375, 376, IC225
  • 140kph/h TEE VT11.5
  • sleeper 61-7034
  • update of the docklands units to jakops boogies
  • more colours for BR 18.3, 58.2, 75.4
  • Wittenberger Kopf
  • German luggage cars as empty and piece good cars
  • more “preußische Abteilwagen”
  • prussian luggage car PWIRP91
  • RABe512
  • CIWL Lx20
  • express coach Bauart 1935

Infrastructure

  • tunnel catenary for standard gauge
  • side swapped catenary
  • infty Tunnel
  • vmin = 121 and vmin = 71 signs
  • track with different kinds of walls
  • infty bridge for track
  • two extra platforms based on the 1850 platform
  • station hall 1890 in 3 parts as well as an inversed version
  • brick build depot
  • 1850 station hall in bright colours

Where and what to download

What’s missing still?

  1. There are only 3 climates actively developed so far, those are Western, Continental and Alpine (temperate, tundra, rocky) other climates are lacking in city development. If you got cities in those climates, you might want to use the climate tools as public player to switch to a more developed climate. Most factories are not affected.
  2. Translations! The German translation now seems pretty complete, while the English translation is still ongoing. And don’t mention anything else…
  3. Ships, ships and even more ships.
  4. Not every mode is able to transport every good at any given time. Best bet is that there is a narrowgauge option for it, second are rail and trucks.

Contribute?!

Feedback always is appreciated!
Please tell us what you like, dislike and would want to have improved!

In plus, freely contributing to the pakset is a thing! Pak192.Comic is open source, freely adjustable and auto compiles from github actions. That means, you could just clone the repository, do some funky changes and have github build your very own version without doing a lot for it. There’s no weird encoding, no encrypted values, nothing. If you go to the dat file for your favourite steam engine and change the maximum speed from 100 to 2000, you just did that. It’ll appear in the game just like that. Don’t like coal power stations? Just get rid of them. Want to have a rainbow coloured subway? Just draw a rainbow on the image of your favourite subway train. That’s pretty cool, right? But how about you share your funky changes with the rest of the world by adding them to this repository once they work out just fine. That way you could improve the world!… or well, at least this game.
Link to the GitHub: https://github.com/Flemmbrav/Pak192.Comic

In Plus, there’s a lot of stuff to translate. In case you can speak a langauge in plus of German, you’re a perfect match for this!

In case you need help modifiing or contributing towateds the game, do not hesitate to ask for some.

Tags: ,

Simutrans Extra #3: UI improvements, new paksets, new online server and more!

Welcome to Simutrans Extra! I have been pretty quiet so far this year as I needed a break after the Anniversary events of last year, but a lot of things have been happening in the Simutrans world meanwhile. It’s time to review them!

But first, let’s talk about the elephant in the room.

When there will be a new Simutrans release?

We couldn’t make a Simutrans release last year, the reason behind this being the war in Ukraine. Another negative effect of the war is that Ukrainian developer Pelya was drafted for the military. Pelya is not directly related to the Simutrans project, but he maintained a set of scripts that enabled games like Simutrans and OpenTTD (between others) to be compiled on Android.

Unfortunately, the build for Android stopped working and to fix it one would have needed to fix Pelya’s scripts. But no one in the team knew how to do so, so the release was delayed until we could release for all supported platforms at once.

Seeing that the war was not going to end anytime soon, I stepped in some months ago to do something about this. I developed a new build system for Simutrans on Android completely from scratch. It took quite a lot of work, but the end result is a far simpler build and, more importantly, one I know how to fix in case it stops working!

Wars are bad. But you know what’s good? UI improvements! A few of them are currently under development, so you can expect a new release when we are done with them. Let’s see which they are!

Font anti-aliasing is coming to Simutrans!

Thanks to the work made by developers Hajo and Dwachs, font anti-alising is nearly ready for Simutrans. While you can currently set any TrueType font in Simutrans 123, they look quite a bit ugly without anti-aliasing.

Introducing anti-aliasing will finally make these fonts look good at any size (although the UI still needs to be redesigned to adjust to font sizes, specially very large ones). We will also take this opportunity to move away from bdf fonts and change Simutrans’ default font, probably to Noto Sans font.


A screenshot showing how Simutrans looks with Noto Sans and anti-aliasing.

Main menu

What was initially going to be an addition of a “Play Tutorial” button in the initial banner has evolved into a redesign for the entire banner, adding a few more options and now working as a “main menu” to which you come back when you want to start a game.


The new main menu. Final version may change.

Consequently, the options windows and other windows will be simplified and adapted to the new flow.


The options windows. Final version may change.

Improved Station labels and markers

When legendary Hajo came back earlier this year, he focused on improving various part of the UI (which Simutrans is indeed in need of improving). One of his most exciting ideas was a new appareance for station labels and markers which could be defined by themes.


Just look at those, they look fantastic!

Hajo has unfortunately not been active since the start of this year – but you can bet I will do my best to finish this and include it in the next Simutrans version.

Lost and found musicians

You may remember that one of the Anniversary events of the last year was a post showcasing the music of Simutrans, where we asked for help to identify the unkown musicians for some of the songs.

Now with help from jm764 and other members, we have fully identified all the creators of Simutrans music! To honour them, in the next version, Simutrans will display credits for the current song!

Pak144.Excentrique

Another of Hajo’s comeback works has been a rework of pak44.Excentrique – now with better graphics!


Who said Simutrans paksets have to look old?

The project is on hold as Hajo is not active at the moment.

Pak48.bitlit

Okay, hear me. One of the most exciting things about Simutrans is the degree of personalization you can achieve. Experimental paksets like the recently announced pak48.bitlit are a proof of that.

What if your Simutrans game was set in a world made by Electrons, Bytes, Memory and CPUs? Welcome to pak48.bitlit, where you will transport Electrons instead of passengers, Data instead of mail, through uni- and bi-flows instead of roads and tracks!

New online server

In the previous weeks I have been experimenting with the hosting of Simutrans game servers, with the intention of hosting a permanently online Simutrans game server based on Simutrans stable (Simutrans 123.0.1 currently) and Pak128 stable, so anyone who just installed Simutrans can join to experiment online play.

I’ve learned enough in the process, so I will go on and open a new game server in the following days called “Simutrans Public Server” (the precursor server, “Roboron’s Public Server”, will close soon).

Everyone is welcome to join! If we manage to fill all slots, I will spin up a second game server.

[…”>

We have come to the end of this Simutrans Extra. But worry not, because you will hear from me again, soon. Don’t forget that, as every year, we will celebrating a Screenshot Contest by the end of this year. And for this edition we have a surprise! I will reveal all the details in a few weeks!

Until then, happy Simutransing!

How can YOU contribute to Simutrans

Simutrans is an open source project. That means that anyone – including you – can improve it! Did you ever want to contribute to Simutrans but you have no skill for coding? Worry not, you can contribute to Simutrans in a variety of ways:

Translating

Simutrans is constantly updating and adding texts so we are always in need for translators:

Painting

Simutrans is always looking for artists! If you want to paint graphics for Simutrans, check:

Coding

Reporting bugs and submitting suggestions

Announcing the winners of the Simutrans 25th Anniversary Video Contest

Votations are closed and the first winner is…

“Furniture Industry Route”, by meruhen205. With the diverse routes shown and the attention to details (including the music!), it is no wonder why it is the most voted video – a total of 14 votes. Congratulations!

In the second position we have “Akiwa Tsuneyama Main Line Local Service from Nakahara to Yamano” (have you read it to the end?) with 8 votes by danivenk, another greatly produced video. Good job!

The third place is reserved to “Airport Hotel Shuttle Bus”, by DThunder (he can’t stay away from the podium!), a simple yet elegant video that reached 7 votes. Nice done!

Here is the rest of the winners:

4 – “Autumnal Journey” by cousjath (6 votes)
5 – “Barington F line Light Rail Northbound Trip” by Jausdepot (3 votes)
6 – “The New Express Line” by Fightdrug (2 votes)
7 – “North American Style Commuter Train Journey” by DThunder (1 vote)

Congratulations to all! I will contact you all one by one so you can pick your prizes in order. That may take some weeks, be patient!

The first winner will also be featured in the Simutrans Steam Store page.

That’s all for now! Did you like this first video contest? We may celebrate another one in the future, if there is demand. For now, next year contest will be another screenshot contest. Until then – Happy Simutransing!

Vote now on the Simutrans 25th Anniversary Video Contest!

Thanks to everyone who submitted a video!

Vote now to select the winner of the first ever Simutrans Video Contest! Playlist of participants is available on the Simutrans YouTube channel

You can cast your votes on this survey in the Simutrans WIki.

You can cast up to two votes. Every participant will take a prize, so please don’t vote for yourself!

Simutrans 25th Anniversary #10: The Music of Simutrans

On this unscheduled last post of the Simutrans 25th Anniversary, we will honour one of the (usually overlooked) characteristics of Simutrans: its music.

Simutrans is unique in more than one way. One of these uniqueness is that, considering it is an open-source game, it has an incredibly rich set of music. With over 50 songs over various genres contributed by various artists over the years, Simutrans has one of the greatest collection of music of any open-source game.

To celebrate this, we have uploaded the music of Simutrans for the first time ever in non-MIDI format; so you can play it directly in your browser! You can now listen to the music of Simutrans at this YouTube playlist https://www.youtube.com/playlist?list=PLzRXNerdR1xM1qAkIQANJeDmWgyJc6KBa

Which is your favourite track of Simutrans? I do have a personal favourite. You may be thinking it is “Above the Sky” as it is the track used in the trailer. Wrong! It’s actually “Techno-movement”. Kudos to RykSeb for composing such an awesome track!

Note that most tracks (from before Simutrans went open-source) are not properly credited. Unfortunately, that information have been lost to time. If you know who composed the original tracks, please let us know so we can credit the artist!

Remember that we have a currently ongoing Video Contest (ending in one month) with plenty of prizes for everyone! You can use any of this music to make it better 🚄 https://forum.simutrans.com/index.php/topic,22031.0.html

Simutrans 25th Anniversary Video Contest

Welcome, everyone! The first Simutrans Video Contest is about to begin! This is the first time ever we celebrate a video contest, and it is not the only surprise! This year you can also win actual prizes just by participating! Let everyone win!

Participation
1 – There are no categories. This means you can choose whatever pakset you want, and also whatever Simutrans version you want (yes, including Extended and OTRP).
2 – You can submit as up to two videos. This also means you can win up to two prizes!
3 – You need to include title for every video. Videos without title will not be eligible!
4 – You have until Januay 15st (inclusive) to submit your video!

Theme and guidelines
1 – The theme this year is… Routes! Show us your best routes, for example by following a convoi or different convois. Be creative!
2 – To keep videos clean, hide city/station names and waiting bars. Also, avoid showing non-Simutrans elements such as the title bar.
3 – There are no limits to video size and resolution, but recommended resolution is 1920×1080 as this is the most common resolution.
4 – Video duration limit is 10 minutes, but consider a duration of around 5 minutes.
5 – Use Simutrans music when possible. If you wish to use other music, please check that the license allows for its usage freely.

Remember that you can submit videos that do not fit the theme or guidelines just for the sake of showing others your work, but theme and guidelines will be used to select the winners!

Prizes
1 – For the first winner ONLY: The video will be displayed on the Simutrans Steam store page, alongside the new trailer. If the version used is not Simutrans Standard the next winner will be considered.
2 – For EVERY participant: You can choose a game* from the following list (choosing will be made in order, starting from the first winner):

  • Surviving Mars + Green Planet + Project Laika + Colony Design Set + Marsvision Song Contest + Space Race + Deluxe Edition Upgrade Pack
  • DEATHLOOP
  • Just Cause 4: Complete Edition
  • Ghostrunner
  • Killsquad
  • Railway Empire
  • Little Big Workshop
  • Epic Chef
  • Not tonight
  • Dinosaur Fossil Hunter
  • Gas Station Simulator
  • Rogue Heroes: Ruins of Tasos
  • NARUTO TO BORUTO: SHINOBI STRIKER
  • Embr
  • A Plague Tale: Innocence
  • Emily is Away <3
  • The Dungeon Of Naheulbeuk: The Amulet Of Chaos
  • Forgive Me Father
  • Descenders
  • Monster Train + The Last Divinity DLC
  • The Dark Pictures Anthology: Little Hope
  • Disciples: Liberation
  • Golf Gang
  • Maid of Sker

* Games are provided as Steam keys. Some keys may be region-locked in some countries; in such a case, you can choose a different game.

Voting
Voting will be done on a wiki survey (I will post a new announcement when the time comes). Everyone (participants and non-participants) can vote, but you can only vote one time.
If two or more videos have the same votes, we will select a winner, taking into account theme and guidelines.

Submission
1. First upload your video to a site where we can download it (a cloud storage like Nextcloud, Dropbox, Google Drive, etc…).
2. You don’t need to upload it to a video site like YouTube. You can do it if you want, but we will be uploading the videos to the Simutrans YouTube channel later anyway.
3. You can submit then a link to the video file through the following platforms (don’t forget to include title):

  • The International Simutrans Forum: Posting the link to this thread.
  • Steam: submitting your videos to the “Videos” section of the community Hub, or just posting the link on the Announcement comments.
  • Reddit: Submitting your videos to /r/simutrans/
  • Twitter: Using the hashtag #SimutransVideoContest and mentioning the @SimutransTeam account.
  • Mastodon / Fediverse: Using the hashtag #SimutransVideoContest and mentioning the simutrans@fosstodon.org account.
  • E-mail: Send us your submission via e-mail to social@simutrans.com

We reserve the right to decline any submission that does not follow the guidelines and that we believe not enough effort was put into it.

Resources
If you have never recorded a video before, here are some resources that were used for the new Simutrans trailer video:

  • OBS Studio: Cross-platform tool to record your screen and applications. Fully free and widely used https://obsproject.com
  • Kdenlive: Cross-platform tool to edit your videos. Fully free and part of the KDE project https://kdenlive.org

Finally, if you want some examples / inspiration, you can think on something like the video showcased in our last interview to himeshi.

Simutrans 25th Anniversary
This is the last of the events planned for the 25th Anniversary. Getting to know better the people and the history behind Simutrans has been such an experience, and the videos and projects done like the trailer or the Simutrans Timeline were definitely fun to do, but also very time-consuming and tiring.

I hope you have enjoyed them as much as I enjoyed doing them, and that they were worth doing. And I hope we have many fruitful years of Simutrans to come. At least, 25 more!

I need to take some months to rest now, but I’ll come back next year with more Simutransing. Until next time, Roboron.

Tags: ,

Simutrans 25th Anniversary #8: An interview with himeshi, OTRP creator

Welcome to the last of interviews of the Simutrans Anniversary before the final event! Our special guest today has the honor of being the only other successful developer who has made a Simutrans fork: Simutrans OTRP. Let’s explore the boundaries of Simutrans with the help of his creator, Himeshi!
______________________________________

First of all, introduce yourself. Who are you? Where do you live? What did you study? Where are you working or have worked on the past?

I am Himeshi. Himeshi is a handle which I use in the Japanese community. THLeaderH is my handle on the International Simutrans Forum and other international simutrans communities. I have lived in Tokyo for my whole life except for its very beginning.

I am a software engineer at a Japanese IT company, which provides a chat app for smartphones. My job is developing the company’s chat app for iOS with Swift programming language, and the chat app is widely used in Japan and some east Asian countries. I am in the second year of my career since I graduated from the school in March of last year.

I studied computer science and electrical engineering in the University of Tokyo, and its graduate school. I have a master’s degree, but do not have a doctor’s degree. I enjoyed studying in the university, but was not so good at research. I studied electrical tactile display during my master’s period, but it ended with submitting only a few papers to small conferences without paper review, and did not participate in any on-site academic meeting since the COVID era started during my master course.

When not programming in your daily job or in Simutrans, what do you like to do?

Aside from development, I love playing Simutrans. I usually play my local map with OTRP, and sometimes play a network game with my friends in the Japanese Simutrans community.
Chatting and voice calling on Discord is my daily habit. There are a bunch of discord servers which are derived from the Japanese Simutrans community, and I am in multiple of them. The relationship is a kind of friendship, rather than the simutrans community members, and we talk about so many kinds of topics there.

Although the frequency has decreased recently due to COVID, I often go to the home party in the house of one of the core community members. I don’t remember how many times I went there. At least, so many times since a few years ago. We spend a precious time there with beers and Japanese Sake. The house owner (We call him “Kumi-cho”) could not drink alcohol at first, but recently, he started enjoying the Sake we brought with us.

And recently I bought a new Toyota car with a manual gearbox, so I frequently go driving in my holidays. The driving is often with my family and the friends in the Simutrans community.

Indeed, the Japanese Simutrans community seems very united, and it is without doubt the largest and most active community. Which is surprising, since traditionally the largest community has been the German one (being the early developers from Germany). Why do you think the Japanese community has become the most active?

It is a tough question. Personally, I think the offline meeting culture and Japanese characteristics to prefer crafting are the factors of Japanese simutrans community prosperity. However, it is only one aspect of the community. To understand how the community became as today, I have to summarize the history of the Japanese simutrans community.

Fortunately, three years ago, Peruri summarized the community history in our meeting. The history described below is based on this video.

The Japanese Simutrans community is said that it started on the anonymous board, called “2ch”. It started with the translation project to Japanese, then the members started to post addons, their saved map, and screenshots. Since 2ch is anonymous, most of the members did not have their handle at that time.

After that, the Japanese simutrans wiki was founded, and addons were posted there. Uploading simutrans videos to “niconico”, a Japanese video sharing service, became popular at that time. With these activities, creators had handles in the community.

Simutrans 111.0 supported the network game. As soon as it was released, Japanese simutransers started to play the network game. Addon authors were also in the network game, which means players and addon authors play the game in the same place. At that time, twitter was becoming popular, and twitter became the main place for the Japanese community. On twitter, players also have their handles. Since the conversations on twitter are public, more and more people joined the Japanese simutrans community.

As the community prospers, some people started to meet face to face. They understood how great meeting face to face is, and the number of face to face meetings gradually increased. As a result, in the Japanese simutrans community, a bunch of smaller and closer communities which are based on face to face meetings were formed. Some members regularly held drinking parties in these communities. Moreover, meeting face to face encouraged starting the larger projects, such as SIS and pak256.

As the information exchanged in the communities increased in amount and became more private, twitter became not suitable for communities. So many communities moved to Discord, and they became closed communities. Since a few years ago, Discord has worked as comfortable and safe places for communities.

On the other hand, Japanese simutrans communities are not an exception for the recent world wide simutrans community shrink. As most communities work on Discord, fewer newcomers are coming to the communities. At the same time, some existing members reduce the time to spend in the community, and often disappear from the community. Also, we talk about things other than Simutrans more frequently.

One of those meetings is the Japanese Simutrans Conference. Could you tell us more about it? What kind of activities are done? When did it start and by who?

The Japanese Simutrans Conference started in 2017. At that time, the community members explored how to make addons and their play styles individually, and the knowledge was not shared enough. So, on twitter, I suggested holding a simutrans conference. The events themselves had been operated by other community members. The first one was held by JHSDF.

In the simutrans conferences, the attendees presented Simutrans related knowledge and experiences with slides. The simutrans conferences were held three times in 2017, and once a year since 2018. This year, I called for presentations for the simutrans conferences as we did last year, but no one applied for it. So I decided not to hold the conference this year. The Simutrans knowledge and experiences have been shared enough via the past simutrans conferences, and I think the Japanese Simutrans Conference served its purpose.

When did you join the community?

I joined the community ten years ago. At that time, the series “The story of Kumagaya peninsula development”, which is still a monumental Simutrans video series for these days, was being uploaded. I was affected, and also uploaded my Simutrans video series.
Seven years ago, I joined a face to face meeting for the first time, which was in a chartered train. And five years ago, I started modifying the simutrans code, and my contribution for the International Simutrans Forum.


Video from the Kumagaya series by 128Na

The Simutrans version you started working on at that time is what we know today as Simutrans OTRP (One-Way Two-Lane Road Patch). What did motivate you to start working on this project?

At the end of 2016, I was developing Route map maker, which is a software for PCs to make a railway route map easily. It was a success to some extent, and I was looking for the next thing to develop.
Route map maker was written from scratch, and I wanted to develop a new feature for an already existing larger software as the next step. Simutrans was the best for that purpose. At that time I had already played simutrans for five years, and I had wanted to try to add new features to it. So I decided to try modifying simutrans and adding a new feature for it.

There were so many candidate features to be developed, but I thought that it was easy to improve the road vehicle overtaking logic for one-way highway, which was revealed to be completely false. I knew that some conditions which seem to be too strict were imposed on overtaking, and I thought the overtaking improvement can be completed just by removing these conditions. The result was, the collision of the two vehicles on the overtaking lane. Then, my long journey of OTRP started.

At what point of development did you announce that you were working on your own version of Simutrans?

As soon as I succeeded to relax the conditions of overtaking, I posted the demo video on YouTube . This video showed overtaking under slope, dense traffic, and intersections. At this point, there were so many side effects to be solved.
Two months later, I posted a message on the International Simutrans Forum. Like Simutrans-Extended, at first, OTRP was intended to be merged into Simutrans Standard, so I submitted the patch files. The overtaking logic of Simutrans Standard was already very complicated. And as a result of adding so much logic to deal with the side effects by the relaxed overtaking conditions, the code of overtaking logic got more and more complicated, and I knew that the patch was very hard to merge into the simutrans nightly. I wanted to discuss how to solve this situation, but unfortunately, the overtaking logic complexity has not been solved and it is still a large technical debt of OTRP.

At the same time of posting a patch to the forum, I posted the executable binaries to test with. For the Japanese community, I mainly announced about these executable binaries, and eventually, they started to test and play with the OTRP binaries.


Demo video of Simutrans OTRP

What are other features that differentiate OTRP from Simutrans Standard?

There are four features which largely differentiate OTRP from Simutrans Standard. The first one is the improved road vehicle overtaking and other road related configurations, which is the original feature of OTRP.

The second one is the area construction tools which are suitable for large scale development. With the removal tool, you can select the area where you want to remove the object by dragging the area. The city building construction tool of OTRP enables you to select multiple kinds of city buildings, and distribute the selected buildings randomly in the selected area. The slope making tool also supports area selection. These area construction tools are useful especially on a network game. I should note that now these area construction tools can be implemented as squirrel scripted tools, and modifying the C++ code is not necessary.

The third one is convoy coupling. Convoy coupling can be a powerful tool to accommodate so many routes on a single track. OTRP realizes the convoy coupling feature with the two simple options in the schedule, “try coupling” and “wait for coupling”.

The last one is time scheduling.Before this feature was implemented, players had used the “maximum waiting time” feature to make trains depart at the regular interval. However, the waiting time was not so flexible (only 1/(2^n) month) and this approach was quite fragile because a single delay of arrival caused the delay of all successors. OTRP has the time scheduling feature which is similar to that of simutrans-Extended, but has some additional parameters like “no load” and “load immediately before the departure” options. These options are useful to control the passenger flow by optimizing the route costs.

Recently, Simutrans’ Lead Developer prissi stated in a previous interview that he would like to see the overtaking code ported back to Standard “now that it does not desync any more and seems stable”. Would you still like to see your code merged or are you afraid that this could make OTRP players lose interest in Simutrans OTRP after so many years of work?

Bringing the OTRP features to Standard is welcome. According to the survey conducted by Peruri, who talked about the Japanese simutrans community history in the conference, about 70% of Japanese players still use OTRP. Since OTRP stopped merging the nightly commits for some reasons, the fruits of simutrans standard development are not delivered to OTRP players. OTRP was derived from Simutrans Standard, and I hope Japanese players go back to the Standard version and enjoy the latest achievements of Simutrans Standard development.

There were some forks of Simutrans which implemented novel features. As far as I know, Experimental (now Extended), Iron Way, and Tiny Timetable Patch (ttt) are listed as larger ones. Especially, ttt, which was developed 10 years ago, had much more features than OTRP around time scheduling. However, except for Simutrans Extended which is actively maintained and developed by James, all these forks are not maintained and already obsolete, which means that the features of these forks were lost for most of the Simutrans players. Seeing the “loss” of the time scheduling feature of ttt, I wanted to avoid making OTRP one of these obsolete forks. But unfortunately, it is becoming one of them. I believe that most OTRP players will go back to Simutrans Standard in the future, although it may take a long time. Porting the overtaking code of OTRP to Simutrans Standard prevents the loss of overtaking feature, which should be a huge benefit for players.

I am for porting the overtaking logic to Simutrans Standard, but I think the code itself should not be ported. The overtaking code in OTRP contains so much ad-hoc logic to deal with the relaxed overtaking conditions. No one, including me, knows why the current OTRP overtaking code looks to work fine. The overtaking logic should be fully reimplemented when we port it to Simutrans Standard so that everyone can maintain it. At least, the complicated logic should be encapsulated. And, I regret to say that I have no plan to join this porting project for now. Compared to the time when I brought this to Simutrans Extended, I lost some of my motivations to contribute to the Simutrans codebase.


Screenshot showing Tiny Timetable Patch

What are the reasons behind your lack of motivation? Is this lack of motivation behind OTRP lack of development too?

To answer this question, I have to figure out what was my motivations for Simutrans development. I think there were four motivations for me.

The first one was simply realizing features I wanted. I wanted to make road vehicles overtake others more efficiently on a highway, and make convoys being coupled to simulate the railway operation in the real world. A smooth overtaking of trains was also what I wanted to play in my local and network games.

The second was realizing features everyone wanted. At the time when I started the OTRP development, road vehicle overtaking, railway convoy coupling, and time scheduling were the three largest features which so many Japanese Simutrans players had been dreamed. Also, keeping the base nightly revision up to date was an important thing, because OTRP players can enjoy the fruits of the latest Simutrans nightly development.

The third was learning how to modify an existing large software. Simutrans was the largest code base I had ever seen at that time, and the development of OTRP was a valuable opportunity to learn how to find the code I wanted to modify, how to modify while minimizing the bug, and how to deal with the players feedback. In this aspect, the OTRP development experience became the fundament of my carrier as a software engineer.

The last one was contributing to the Simutrans community. As a player who has been loved Simutrans for more than ten years, contributing to Simutrans is just fun.

Unfortunately, as OTRP matured, three of them seems to have been lost. Firstly, in the end of 2020, I almost completed the implementation of the time scheduling feature, and the three features which I and the Japanese community had been dreamed, road vehicle overtaking, railway convoy coupling, and time scheduling, were achieved. Now I have nothing new which I strongly want to realize. Other Japanese Simutrans players also seem to be basically satisfied with the current OTRP, although I still receive some minor requests.

Secondly, keeping the base nightly revision up to date became almost impossible. About two years ago, I remember that there was a big change on Simutrans nightly in the schedule settings UI. At that time, the schedule settings UI of OTRP was highly optimized for OTRP features. I made a prototype of the schedule settings UI based on the new one of the nightly, but it was very unpopular from the Japanese OTRP players at that time, and I had to give up following that change of the Simutrans nightly. I tried to merge other nightly commits at first, but it became soon very hard since there were so many dependencies to the schedule settings UI change.

Lastly, as I spent so much time in OTRP development, what I learn from OTRP development was decreasing. This is generally inevitable when you work in the same product for a long time. As I learned programming in other fields such as the research and my job, using modern languages such as Swift and Kotlin was much more fun. And, I gradually felt tired to work with the very old fashioned C++ code and deal with the bugs which are never seen with the modern languages.

For now, contributing to the community can be the only motivation of coding in Simutrans. To be honest, since I started my full time job, I am as busy as I was a graduate school student. However, my Simutrans development time was replaced with learning modern programming language features which I may use in my job, and other hobbies like driving a car.

Is there any feature you considered (or that was proposed to you) for OTRP but was discarded for technical or other reasons?

The road intersection feature. As in the real world of left sided driving, turning right causes the crossing over the opposite lane, and it may cause a traffic jam. The right turn lane feature and the right turn traffic light feature were considered, but both needed to handle multiple tiles as a single intersection object, and it was technically difficult. When I considered the intersection feature, I was playing Cities Skylines with the famous mod TM:PE, which gives so much control on road traffic. And I thought you could play Cities Skylines if you wanted much more control on the road traffic. Since Simutrans is a tile based game, this level of road traffic control is too much for Simutrans, I think.

Have you received any help from other contributors in Simutrans OTRP?

In code, the area construction tools were contributed by Shingoushori.

And, some people helped me to develop OTRP in other ways. Ahakuoku helped me a lot by doing so many tasks other than coding such as release announcement, response for inquiries, and bug investigation. 128Na opened the site “OTRP updates” which summarizes the OTRP releases. I often refer to this web site to check in which version a feature was implemented. And, so many Japanese community members helped me in the bug investigation in the early phase. Road vehicle overtaking, convoy coupling, and time scheduling are the features which received most bug reports.


The site OTRP updates is a living changelong of Simutrans OTRP.

We have discussed in previous interviews the apparent decline in Simutrans playerbase in the last decade. Simutrans OTRP collects statistics about usage, and that can help us understand this tendency. What does the OTRP data say about it?

The OTRP usage statistics says nothing about Simutrans player base decline. The Simutrans player base decline is a phenomenon over 10 years, and OTRP started collecting usage in 2020, only two years ago.

The OTRP usage statistics tells us about the number of active players, the share of OTRP versions, and the pak set share among the OTRP players. Although I have not analyzed the usage of this year, in 2021, the number of daily active players was constantly over 80, and over 100 on holidays. Older versions of OTRP are still used because sometimes a specific OTRP version has a problem with loading a player generated pakset. Some popular network games in the Japanese Simutrans community still use an older OTRP, such as v29_6.

According to the usage statistics, OTRP players prefer pak128 as much as pak128.japan. pak.nippon is slightly less popular than those two popular paksets, and the share of pak64 was about a half of that of pak.nippon in 2021.

The detailed analysis of 2021 is in this article, although it is in Japanese.

Where do you see Simutrans in the future?

I think Steam will be the main distribution route of Simutrans, due to the recent trend of relying on platforms and thanks to the effort of the Simutrans nightly development. The Japanese community has contributed to Simutrans mainly with addons, but most Japanese addons are not in the Simutrans official distribution. Since Steam is becoming a popular distribution route, I think we should consider how to deliver Japanese addons to the players from Steam. It’s kind of a political issue rather than a technical issue.

What is your preferred play-style?

I usually play Simutrans as a transport simulator, rather than a diorama. Basically I let cities grow as the game engine does. The hand construction of city buildings is only for the extension of the city limit.
Since OTRP became stable, I also prefer “car only” play. Since the capacity of road vehicles is much smaller than that of trains, it is very challenging to transport all passengers with road vehicles. Roads are always crowded, and large bus terminals suffer from grid locks.

Three years ago, we built a very large scale highway network in the network game. The highway has 10-lanes width at the widest point, which cannot be seen in Japan. Also, junctions are highly complicated.


Video showing the large scale highway network

Is there someone from the Simutrans community you admire?

In the international community, I especially admire Leartin. He gave me deep insights and showed proper ways when I was stuck in difficult problems. The convoy coupling feature is one of the most difficult problems for me and I did the implementation of it three times. Leartin proposed to me an uncomplicated and effective solution for this and the current architecture is based on Leartin’s proposal.

In the Japanese community, I admire 128Na. I cannot list all of his contributions, but he made the simutrans video series which are the most famous in Japan. He now builds and operates “Simutrans addon portal”, a website where a lot of Japanese addons have been posted recently.

What is your favorite pakset?

I love pak128, with a bunch of Japanese addons. I like this pakset because it has a high resolution and so many published addons with realistic painting.

Thank you so much for the interview! Is there anything more you would like to say to Simutrans players?

I hope the international community and the Japanese community interact more. There used to be a language barrier between the international community and the Japanese community, but now we can overcome it with an effective translation service. One of the reasons why OTRP was born was that the Japanese community could rarely bring the ideas which were discussed in the Japanese community to the international forum at that time. I hope more feature requests from the Japanese community are discussed with the international development team, and a bunch of Japanese addons contribute to Simutrans players all over the world, not only for Japanese. Fortunately, the international community and the Japanese community are interacting in some Discord servers these days.

And, I want to say thank you to Simutrans. Simutrans made me join this wonderful Japanese Simutrans community, which is now one of my essential communities. Simutrans gave me a chance to make changes in the code. The OTRP development experience is now the foundation of my career as a software engineer. And above all, Simutrans gave me so much time of joy.

______________________________________

Schedule of the Simutrans 25th Anniversary Posts

That’s all for the anniversary! Goodbye!

What? What do you say about a SUPER SECRET BIG FINAL EVENT? Ah yes, I nearly forget about the greatest Simutrans event ever made where everyone can participate! Do you want to know what it is…?

Sorry! It’s a surprise. See you in two weeks :-)

Tags:

Simutrans 25th Anniversary #7: The Simutrans trailer

The new trailer for Simutrans is here! Watch it now!

Schedule of the Simutrans 25th Anniversary Posts
We are getting close to the end of the events of the 25th Anniversary. But before the final event, we will be having a last interview with a very special guest. In two weeks, it will be time for Simutrans OTRP developer, “himeshi”, to answer some questions!

Tags:

Simutrans 25th Anniversary #6: An interview with James Petts, the Ex-Father

One of the greatest honours an open-source project can have is to generate enough interest so that other people consider making their own versions of it. Simutrans, being a successful open source project, is no exception, and the greatest of those versions is Simutrans Extended (formerly Simutrans Experimental). Today, we will take a closer look at this fantastic fork with the help of his creator, James Petts.
_____________________________________________

First of all, introduce yourself. Who are you? Where do you live? What did you study? Where are you working or have worked on the past?

I am James Petts, and I live in London. My education and professional life are in the law.

How does a man of law end up doing software development in his spare time?

As with many open source developers, I started work on what eventually became the Extended fork of Simutrans because I wanted to see features in the game that were not present. I remember playing Simutrans in around 2007, shortly after the British railway vehicles had first become available as an addon for Pak128. I enjoyed it, but found that there were certain things that were not quite right for what I wanted.

I remember making some feature requests on the forum, but the developers were not interested in implementing them, so I thought that I could implement them myself. This was in around 2008. They were initially written as patches for Simutrans, intended to be part of the main codebase, but they were not integrated, so I eventually just made my own fork. I think that I had a different idea as to what made a good game than the developers of of the original Simutrans; but also, I imagine that, as I was only just learning C++, the coding quality of my patches at the time was not what it should have been.

Once I had started adding features, I realised that there were more and more that were desirable, and I ended up spending more time developing the game than actually playing it; and the more complex features that were added, the more bugs that needed to be fixed and the more pakset work needed to implement the features.

Has Simutrans been your only experience with open source software development, or have you ever contributed to any other open source project?

Simutrans has indeed been my only experience with open source software. I have briefly contemplated contributing to other things, but I only have the one lifetime to live, and open source development is extremely time consuming.

And what do you devote your life to when not working and doing Simutrans development?

When not working or developing Simutrans, I enjoy photography, baking and railway modelling. The latter has entailed me having a sizeable shed built in my garden for several model railway layouts, and I am also a member of the Model Railway Club in London. As may be anticipated, there is some overlap between Simutrans and railway modelling.


James’ model railway.

How did you know Simutrans? What was your first contribution?

I cannot remember exactly how I came across it now. I think that I was searching for transport based games to play in around 2007, and found Simutrans and thought it interesting; I think that I had considered Open TTD, but this was at a time when only the executable was available, and one already had to have Transport Tycoon Deluxe to play it; had the original Transport Tycoon, but not the Deluxe version, hence could not play Open TTD at the time. Simutrans, however, was available in a full version, so I think that I downloaded that. As to my first contribution; I am afraid that this is now lost to the mists of time and fading memory. This would have been sometime in late 2008, and I think that I wanted to implement something like comfort or journey time based routing, both of which are now long-standing Extended features.

When did you announce that you were making a Simutrans fork?

Initially, I just intended to produce a patch for Simutrans with the various features. This would have been in late 2008. The features were all in one large patch (literally, a .patch file for SVN), which was not the best way of doing it, and I was introduced to Github at around this time by another contributor, I think, so I created a “Simutrans-Experimental” branch on Github I think in around 2009 and added all of my features to this. Initially, the idea was still for the features to be merged into the main Simutrans trunk, but it became apparent after a while that some of my development goals, especially the targetting a higher level of economic realism at the cost of higher complexity, were not consistent with the development goals of the principal Simutrans developers, who tended to favour simplicity and a more synthetic economy, and so gradually the patch became a fork, although some Simutrans-Experimental features were merged into the original version (“Simutrans-Standard”) eventually. However, the “Simutrans-Experimental” name stuck until 2017, when, after discussions with others, I thought that it was time to make it clear that what I was working on was in fact its own game and a distinct fork, rather than just a development/beta branch. Nonetheless, I did not really want to divide the Simutrans community, as both Extended and Standard have a lot in common, and fans and developers of both have more to gain by co-operation than competition. I am very pleased that all of the Simutrans community still shares one single international forum and, latterly, Discord server.


On January 21 2009, James announced that he was working on an experimental version.

What are the core features that differentiate Simutrans Extended from Simutrans Standard?

The core Extended features, I think, are (1) the time based routing; (2) the passenger generation model; (3) passenger and mail classes; (4) the more realistic vehicle physics; and (5) private car transport. These are the features that fundamentally alter how players build networks. The time based routing means that players need to build networks that are time efficient rather than merely having sufficient capacity. It matters when people get to their destinations rather than just whether they get there. If their journey is too long, they may not travel at all, thanks to the passenger generation model. It is not enough to have a single one way circular ‘bus route that covers the whole town – players must build a complex ‘bus network consisting of multiple point-to-point lines that get people where they want to go quickly. If people can get to where they are going more quickly by driving their own car or by walking, they will. If people can get to where they want to go more quickly using a rival transport company’s services, they will. People can interchange between distant stations/stops by walking between them, and can walk long distances to player stops – but would sooner travel from a nearer stop if the transport services take them where they want to go within a reasonable time. It is no longer the dominant strategy to use the most powerful locomotive on every train – balancing power and tractive effort means that different locomotives work better for heavy freight, short distance commuter trains and long distance express passenger trains. Different classes mean that wealthier passengers or mail senders can pay a premium for a faster or (in the case of passengers) more comfortable journey, allowing different modes of transport between the same points (e.g., aircraft, train and coach) to co-exist at different price points. Other significant features that have a real impact on player network design are infrastructure wear and renewal, public rights of way (which links with the private car routing
feature), automatic road connexions to industries and realistic railway signalling. Also worth mentioning, although having less of a direct impact on player network design, is the improved UI (largely as a result of efforts by Ranran in the last two years or so), with lots of very clear and engaging visual presentation of often complex data, and the multi-threading which allows even very large games to work (relatively) smoothly.

What is the biggest challenge you faced when working on Simutrans Extended?

This is not an easy question to answer, as there have been many challenges. From a technical perspective, probably the greatest
challenge was the multi-threading work in 2016-2017. Multi-threading is one of the most technically challenging aspects of computer programming: essentially, one has to manage multiple completely independent bits of the program (“threads”) all working at the same time and potentially reading and writing the same information, and try to stop it all from conflicting with itself and making things go terribly wrong. I had no experience of writing multi-threading code before this, so this was definitely a steep learning curve. It has made a real difference to the performance of the game on larger maps, however, so it is worth it.
Another very challenging thing has been debugging loss of synchronisation errors for the game in its online mode: essentially,
different instances of the game running on several different computers must all do absolutely precisely the same thing or else the everybody will immediately disconnect. Any tiny difference between what one computer does and what another does with respect to the simulation code will cause the whole online game to fail completely. Debugging this sort of problem is much harder than finding normal bugs, because one has to work out exactly where two completely separate computers running the same code can end up diverging. There have been occasions when it has taken six months to find and fix a single bug of this type. I am very grateful for all of the people who have helped with this process over the years. One of the biggest challenges coming up, I think, is doing the full costs balancing. We currently have an interim balance produced by Dr. Supergood a few years ago, which has made the costings make much more sense than they did before, but when we cone to do the final cost
balancing, that will be a lot of work. I have been researching in anticipation of this balancing project for over 11 years; I am just awaiting the balance critical features on which I am currently working before launching into that.

Talking about upcoming challenges, what are the next goals for Simutrans Extended?

The current work on Simutrans-Extended is focussed on the 15.x branch. The focus of this intended major version is implementing all the features necessary for balancing the costs. This is a complex task: the amount of fuel that vehicles use must change depending on how hard that they are being worked; vehicles must need to be maintained regularly and thus not be available for service all the time, but for this to work automatically and seamlessly to avoid the need for constant player supervision; vehicles must be able to be overhauled periodically, at substantial cost, and this also must be partly automated to avoid the need for micromanagement; maintenance costs need to depend on how long that it has been since the last overhaul; overhaul costs need to depend on how many overhauls that the vehicle has already had; staff costs need to depend on what sort of and how many vehicles are in a train or similar (e.g., a train with continuous brakes needs only one guard even if there should be multiple brake carriages); costs need to vary with time according to inflation, and different costs need to vary to different extents with time (the cost of staff, for example, needs to increase at a different rate to the cost of coal, and the cost of oil at a different rate again, and so forth); vehicles need to require refuelling stops; it needs to be possible to lay over vehicles temporarily so as to avoid the need to expend staff cost on them for a low frequency service; and it needs to be possible to break up and re-combine multi-vehicle consists (“convoys” in the Simutrans way of describing things) dynamically.

This is all a very large project; coding work on this commenced in 2018, but stalled shortly thereafter because of the need to resolve some of those very difficult loss of network synchronisation bugs described in the previous answer, and I have only recently been able to recommence this work, having been focussing more on my model railway during the pandemic. Fortunately, we now have an excellent UI developer in the form of Ranran, who is likely to make it much easier to add the UI for these features, and greatly increase the quality of the UI that we get from what it would have been had I done the work myself. This will probably be the largest single set of features added at once, so this is likely to take a long time not just to code but also to test – and then an equally large amount of time to update the pakset (Pak128.Britain-Ex) to balance according to these new features. However, this will hopefully very much be worth it: we currently have only an interim balance, and, to a large extent, the game is the balance.

Although there are substantial additional features in Extended, and the game plays very differently to Standard in terms of network design, the game still plays in much the same way as Standard (and much the same way as Transport Tycoon before it, and myriads of other transport based games, such as the more modern Transport Fever): there always comes a time, assuming that the player should design a successful network, when the player has more money than he or she can spend, and only truly catastrophically bad decisions can bankrupt the player; beyond that point, players are limited by time rather than by money. This is obviously not how any real commercial company ever works (with the possible exception of Apple or Google, but that is another matter), so we need gameplay in which money is always an issue to a significant extent even for players with larger and generally successful networks. By simulating entropy and inflation, as well as some other dynamics, it should be possible for the game to get much closer to a reality based economic balance using reality based figures, although we cannot be sure of how this will work until we actually try it, and there may be need for further adjustment. To my knowledge, no other game has ever tried to simulate transport economics to this depth before.


RanRan’s work has helped to improve greatly the UI for Simutrans Extended

Regarding other transport based games, Simutrans is usually compared with OpenTTD (because both are open source). But while OpenTTD is a huge success, Simutrans has gone pretty much under the radar in comparison – and even more Simutrans Extended. Why do you think players prefer OpenTTD over Simutrans?

It is difficult to know for sure the reason for others’ preferences as that needs more information than I have available to me; I can only guess and the guesses could easily be wrong. Perhaps it has something to do with OpenTTD having what I and many would regard as a more robust open source licence (the GPL, I believe, compared to the Artistic Licence of Simutrans). Perhaps it has something to do with the fact that OpenTTD is more closely connected with a classic well-known commercial game, Transport Tycoon. Perhaps it is because, in its early years, Simutrans seemed to be focussed on the German-speaking market, wheras OpenTTD was focussed more on the English speaking market (note that Simutrans has a higher level of interest in Germany and Japan). It might simply be that OpenTTD acquired a critical mass early on and that that lead into positive feedback.

Compared to Simutrans-Extended in particular, it might be that Simutrans-Extended is more niche and in-depth, whereas OpenTTD is more accessible to casual players. It would certainly be good to broaden the audience for Simutrans and Simutrans-Extended; those who do play it do seem to get a great deal of enjoyment from doing so, but I do not know how many people that there are who are interested in a game that has the singular focus on economic realism that Simutrans-Extended by design has.

Simutrans (Standard) reached its peak in April 2012, when the game was downloaded more than 100.000 times on SourceForge. Since then its popularity has declined slowly but surely. Has this decline affected Simutrans Extended too?

I am not entirely sure as I do not keep download statistics. Certainly, forum activity seems to have peaked in 2012; the early 2010s were a time of rapid development in Simutrans-Extended (or “Simutrans-Experimental” as it was then), but it was less stable at the time. 2012 was the year that the Bridgewater-Brunel server first started, with the large semi-persistent online games that have become the hallmark of Simutrans-Extended play. At the time, the codebase was less stable, and the games were prone to interruptions through bugs that needed fixing, including some of the most difficult bugs to fix, loss of synchronisation bugs, which sometimes took 4-6 months to fix a single bug, during which time the server was unavailable. In more recent times, the game has been much more stable and the hours that people play online have greatly increased. Only to-day, I notice that somebody has started a new Simutrans-Extended server. I am not sure of the total numbers playing Simutrans-Extended now compared to 10 years ago, but, for those who do play, I am quite sure that the experience is significantly better, and suspect that, as a result, people play for longer now than they did then.

Indeed, the playerbase of Simutrans Extended, although smaller than Standard, seems to be also more active. Which do you think are the reasons behind Simutrans Extended players sustained interest?

It is always difficult to answer these questions as I can never really be sure about what motivates other people. One thing that I have seen mentioned on the forums and in the Discord servers by Extended players, many of whom spend many hours nurturing large and highly complex networks in the Bridgewater-Brunel server (and others servers that have been run from time to time) is that there are no other transport games that quite have the depth of Simutrans-Extended. Another factor may well be the servers themselves; I am not aware of any other transport game that has a large, semi-persistent online server and that by itself – the ability to build a successful network in a persistent and stable world lasting over one real life year in which others are striving to do the same thing – may well make the game satisfying in a way that other games are not. I know that Standard also has online servers, but, from what I gather, they tend to use smaller maps and have time passing more quickly, so may not generate the level of personal satisfaction that comes with carefully nurturing a large network gradually evolving over a long time. Also, Extended’s features, especially relating to passenger transport (things such as walking between stops and time based routing), makes it easier both to co-operate and compete in a realistic way with other players, which I suspect makes the world feel more immersive for players.

More generally, one of the reasons that Extended diverged from Standard in the first place was that Extended was intended to have features that added depth and realism at the expense of additional complexity, whereas Standard focussed on accessibility to newer players and simplicity at the expense of depth and realism; that by itself would probably tend to generate fewer, more dedicated players for Extended as compared with Standard.


The Bridgewater-Brunel server is the most popular server of Simutrans Extended.

Is there anything you think current Simutrans Extended is in great need of improving?

Yes – there are lots of plans for improvement. I have written in a previous answer about many of the things that I am working on for version 15.x, such as vehicle maintenance and inflation that are needed to improve the balance. However, after that, the next major thing that needs improving is town growth. Currently, town growth works largely in the same way as Standard with some minor modifications over the years: the whole town grows evenly (and, due to a quirk in the way in which town boundaries are currently set in Extended, in a square) depending on the rates of fulfilment of mail, freight and passengers in the town as a whole. In reality, towns were shaped – literally – by their transport: they were small, compact units before public transport, with high densities in the centres but no suburbs. Commuter railways allowed high and middle wealth residents to live in suburbs centred around stations (termed “Metroland” by the Metropolitan Railway in London – this company also bought land near the stations to sell or rent for a profit once the lines had opened, a practice also common in Japan, I believe), while lower wealth residents still lived near the centre. Then, trams and later motor ‘buses allowed lower wealth residents to live farther away from their workplace. Finally, the mass adoption of the private car resulted in evenly sprawling suburbs for people of all levels of wealth around city centres that had very little in the way of residential buildings.

So, after 15.x, the next major project will be a total overhaul of the town growth system so as to make growth based on local, rather than whole town, transport, for towns to compete with one another for residents (the population increase over time being not dependant on the quality of transport in towns, but rather the best towns attracting the
most residents), towns to be able to shrink as well as grow, buildings to be able to become abandoned, overcrowded or be re-purposed as times change, players to be able to buy buildings in towns and rent them out or later sell them, the occupancy rates and market rent depending on the desirability which will be heavily influenced by transport, towns that grow so as to touch other towns will become metropolitan areas with the consumed former towns becoming boroughs, the overall rate of population growth should be in line with historical figures and towns should finally cease to be square.

Simutrans Extended has changed a lot through the years. When you look at it today, what makes you think?

Simutrans-Extended has indeed changed over the years, and hopefully will continue to do so. In the early years, its original name of “Simutrans-Experimental” was apt, as there were many features that had not been fully implemented in the pakset or fully tested. I think that it is only with the regular use of the Bridgewater-Brunel server from perhaps about 2012/2013 onwards that Simutrans-Extended began to mature. It was always intended to be a realistic and detailed economic simulation, but earlier versions had a lot of anomalies that were only shown up with testing over time and which often required quite sophisticated new features to remedy. That process is continuing as a large number of the currently planned features arise out of testing showing up anomalies, but Simutrans-Extended is certainly more mature and stable now than it was 10 years ago.

If you were to start Simutrans Extended today, would you make anything different?

There is a lot that one can learn from hindsight. If I were to start afresh, I should have rewritten the railway signalling code rather than adapted the existing code for multiple types of signalling, as it has proved to be difficult to debug and maintain. I should not have used an arbitrary number for comfort, but instead had a field for the maximum comfortable journey time (and comfort is likely to change to this in the future). There are many things that started out being done one way that have long since changed to being done another way, and in many cases I cannot recall what the original way of doing things was, where, if I were starting afresh, I should just go straight to doing things the current way. When I started working on Simutrans-Experimental, as then it was, I was just learning C++ specifically in order to work on Simutrans. I have learnt much about coding since then and about modern C++, and if I were starting afresh now, I should like to think that the code that I wrote would be more modular and robust.


Video by James Petts demonstrating how signals work for Simutrans Extended

How is your relationship with Simutrans (Standard) developers?

I think that when what became Simutrans-Extended first started back in 2008, there was perhaps a degree of tension with the Standard developers: I may have given the impression by coding new features that I was expressing dissatisfaction with their work or with their game design choices. My own coding skills were not the best at the time, having learnt C++ specifically to add features to Simutrans and having no professional background in coding, so one of the reasons that some of the features that I wrote in the early days were not added was that the coding quality was not to the standard of Standard. Also, I think that, in my eagerness to promote the new features, I may inadvertently have given the impression that I was trying to take credit for things which were largely based on others’ hard work. Also, I think that forking a codebase can be seen as a somewhat hostile thing to do in some ways.

However, I did not wish to cause any tensions, and I think that the other developers are reasonable people too. I did work to ensure that I gave proper credit to the existing developers for the excellent work that they had done, without which Simutrans-Extended would never have been possible, and to acknowledge that there is nothing inherently wrong with the play style and game design choices in Simutrans-Standard: it is just that different people’s preferences differ, and my preference (and, as it turns out, the preference of a number of other people who play Simutrans-Extended avidly) is for a higher degree of realism and complexity than the preference of those who tend to prefer Simutrans-Standard, which has its own loyal following.

After the brief initial tensions and for most of Simutrans-Extended (and its predecessor’s) 14 year lifespan, the relationship with the Standard developers has generally been good: they have often been very helpful in responding to my questions about how the code works, or even proposing solutions to problems specific to the Simutrans-Extended code (and in some cases have even written fixes for Simutrans-Extended, which is very much appreciated). In turn, Simutrans-Standard has over the years adopted a few features that started life in Simutrans-Extended and that are compatible with the somewhat different design philosophy of Standard, so there is a definite symbiosis. Perhaps most importantly, although there are two forks of the game and many players play only one or the other, there remains one single community: both the International Simutrans Forum and the more recent Simutrans Discord channels are common to both Standard and Extended and the same people interact freely and happily with each other in those channels. This has, I think, been very mutually beneficial for both variants of the game, and we are very lucky in the Simutrans community that we seem to be far less prone to the sort of aggressive and abusive behaviours that for reasons that remain obscure seem so common in online communities dedicated to many other forms of computer games.

Although you did neither start nor were involved in pak128.britain, you choose this pakset to be sort of the default pakset for Simutrans Extended, where new features are implemented first. Why did you choose pak128.britain?

Being from the UK, I had a particular interest in British vehicles and buildings; but, also, and probably more importantly, Pak128.Britain was a new pakset at just around the time that I was forking Simutrans-Extended, and it was being made open source, so there was the opportunity to adapt the sources for the Extended fork, as well as have the pakset be developed in part with Extended in mind (the original Standard maintainers actually added buffet cars and multiple liveries before these features were included in Extended). The only other open source pakset at the time was Pak.64, and I found the graphics too low resolution for my liking; Pak.128 had not been open sourced at this time.

How is the process of creating graphics for pak128.Britain-ex?

The system for creating graphics for Pak128.Britain-Ex was inherited from the original Pak128.Britain. It uses Blender to create simple 3d objects, which are then rendered automatically (with a pre-set lighting orb, intended to represent lighting on a typical British cloudy day) into the requisite 4 or 8 images as the case may be. This was all set up in circa 2006, I believe, by Kieron Green, the original progenitor of Pak128.Britain. It does actually make creating realistic looking graphics (within the confines of a 128×128 pixel set) much easier than they would be if one were pixel painting, not least because a single 3d model will automatically produce all the directional renders. This process has allowed us to create a very large number of graphics over the years to have a very large number of subtly different vehicles, which is one of the hallmarks of the pakset.

What is your favourite pakset? (Excluding pak128.Britain(-Ex))

A challenging question! I think probably the Japanese Pak.256. This is another pakset that has an Extended version: it has excellent high resolution graphics and is evidently curated with much meticulous attention to detail. Simutrans is more popular in Japan than anywhere else in the world so far as publicly available sources show (there is even an annual in-person Simutrans conference in Japan, or at least was before the pandemic), so I am always very interested in the Japanese Simutrans scene.


The Japanese Pak256-Ex is the highest definition pakset ever done

Thank you so much for the interview! Is there anything more you would like to say to Simutrans players?

Simutrans-Extended has been a long journey; there have been very many achievements along the way, but also some frustrations. My own development of Simutrans-Extended is not as intense as once it was as I have other hobbies to compete for my time, as well as a busy professional life, but I still enjoy working on Simutrans when I have the time, and we have some other very dedicated coders such as Ranran who have been doing some excellent work in the last few years. I very much hope that people will continue to enjoy playing Simutrans-Extended for years to come.

_____________________________________________

Schedule of the Simutrans 25th Anniversary Posts
I hope you have enjoyed this first interview to a non-Standard Simutrans developer. We will keep exploring the boundaries of Simutrans with the final interview next month. But before of that, the next event in two weeks will feature the most exciting creation made to commemorate the Simutrans anniversary so far. Stay tuned!

Tags: