Is there a list of more advanced subtle mini metro algorithm rules anywhere?


#1

Hi, first post - I’d like to know if there’s a post anywhere with a list of more subtle rules that mini metro follows that are not the more obvious ones.

For example, when creating a new line from a station on an existing line, and connecting it to a different station on the existing line, I can’t seem to accurately predict who it’ll take.

Sometimes it’ll take destination station passengers, sometimes it’ll take a mix of passengers matching stations on the existing line - leaving destination station passengers behind.
Does it matter which stations are closest to passengers, or which way trains are going, or maybe if there’s a train coming on the existing line will that affect it?

Also, is it true that only one train can be at a station at a time?
I had a train pick up only one teardrop passenger when the destination station was the teardrop shape and the source station had 6+ teardrop passengers waiting (among a mix). Another train was also at, or close to the station going a longer route to the teardrop station, and that had a carriage, but it left the station full, with a mix of passengers, leaving 5 teardrop passengers waiting. So my direct train just picked up one and left 5!

I don’t think these are bugs, I just think they’re more subtle algorithmic rules that mini metro follows in certain situations and I’d love to see a list of them somewhere!

Cheers

:sunglasses:


#2

I don’t know of a breakdown of those sorts of rules anywhere. As the game’s written in Unity you can decompile the C# code and dig around yourself if you’re up for it. :slight_smile:

The issue with the teardrop passengers does sound like a quirk of the pathfinding that we’ve yet to iron out. When passengers have multiple viable destination stations, and multiple ways of getting there, they’re evaluating their options every time a train boards passengers at their station. Between boarding one passenger and the next, the movement of other trains in the network might change the passenger’s predictions and cause it to commit to another train instead. The main culprit there is the difficulty of predicting train ETAs (I’ve written about this elsewhere).

There is a reservation mechanic where waiting passengers will check for estimated capacity on inbound trains (closer than one stop away) and, if seats are free, reserve seats. Before we added this, passengers were making bad decisions in situations that sound far-fetched but crop up fairly frequently in reasonably complex cities. Say you have twelve square passengers waiting at a station, with a red train and a green train inbound. The red train would arrive first, but take longer overall to reach a square station than the green train. All the squares would ignore the red train in favour of the green train. With the reservation system, the first six passengers reserve a spot on the green train, and the others hop on the red train. However the game doesn’t make any attempt to predict free capacity on trains further than one stop away, so if the green train was a full stop behind the red train all the square passengers will ignore the red train. The game’s full of little intricacies like that, most of which we don’t know about. :slight_smile:

Multiple trains can definitely stop at the same station. They’re ignorant of each other, except when they’re leaving stations when they can delay to maintain decent headway.


#3

I didn’t know that about delaying to create headway! I was worried about trains bunching up on the permanent lines I added for my Rio map, but they never seemed to… neat to find out about the magic that makes that work!