Hoe te spelen 20,000 Games in Ticket to Ride Without Actually Playing it

In this guide I’ll explain what counts for Conductor achievements and present you with 2 ways of reaching the final Level 5 prestatie. Unfortunately slow progress and announcement of shutting down the servers pushed me to look for a new approach to unlock these achievements.

What counts for Conductor achievements

With some testing I came to a conclusion that only the following counts for Conductor achievements:

  • Online ranked games,
  • Solo games against bots
  • Tutorial games (sic!)

The progress for offline games (solo and tutorial) is stored locally.

The More Legit way

Ja, je leest het goed, tutorial games count for the achievement and that’s what we’re gonna use.
Finishing one tutorial game takes ~70 seconds which is almost 4x faster than a game against bot (when farming).
70 seconds x 20,0000 games ~= 389 hours ~= 16 dagen

We’ll use AutoHotkey, since going through tutorial 20,000 times manually would be extremely boring.
Below is my script, just make sure to:

  • Run it always on the same PCthe progress is not saved on the cloud/servers,
  • Use AutoHotkey v1.1, the script is not compatible with the newer version. You can download it from hier.
  • Set your Display resolution to 1920×1080,
  • Run the game in Fullscreen mode,
  • Run the game and the ahk script, then press F2 key to start the script,
  • Stop the script with F3 key before you exit the game.
; This script will keep playing Ticket To Ride

F2::

SetDefaultMouseSpeed,6
WinWaitActive Ticket to Ride
Run()

F3::ExitApp


Run() {
    while true {
        StartNewTutorialGame()
        DrawTicket()
        als (CheckIsStuck()) {
            Herstarten()
            doorgaan
        }
        PlayMiamiAtlanta()
        PlayAtlantaWashington()
        DrawSecondAndFourth()
        PlayWashingtonNewYork()
        DrawNewTicket()
        DrawFourthAndDeck()
        PlayNewYorkMontreal()
        DrawNewTicket()
        DrawFourthAndFifth()
        PlayMontrealChicago()
        DrawSecondAndDeck()
        PlayChicagoDuluth()
        DrawSecondAndDeck()
        PlayDuluthDenver()
        ConfirmLastTurn()
        Draw2Deck()
        ClickForwardAndQuit()
    }
}

StartNewTutorialGame()
{
    ;Click Play
    Click, 713, 299
    Slaap, 1000
    ;Click Tutorial
    Click, 1061, 139
    Slaap, 1000
    ;Click Go
    Click, 1000, 839
    Slaap, 1000
}

DrawTicket()
{
    Klik, 1846, 345
    Slaap, 1000
    Klik, 1846, 903
    Slaap, 1000
}

PlayMiamiAtlanta()
{
    Klik, 1000, 959
    Slaap, 500
    Klik, 1506, 883
    Slaap, 1000
}

PlayAtlantaWashington()
{
    Klik, 1000, 959
    Slaap, 500
    Klik, 1496, 653
    Slaap, 1000
}

DrawSecondAndFourth()
{
    Slaap, 2000
    DrawSecond()
    DrawFourth()
}

PlayWashingtonNewYork()
{
    Klik, 1000, 959
    Slaap, 500
    Klik, 1566, 405
    Slaap, 1000
}

DrawNewTicket()
{
    Slaap, 1000
    ;Click Go
    Click, 1000, 939
    Slaap, 1000
    ;Click Ticket Pile
    Click, 1846, 100
    Slaap, 1000
    DrawTicket()
    Slaap, 1000
}

DrawFourthAndDeck()
{
    Slaap, 2000
    DrawFourth()
    DrawFromDeck()
}

PlayNewYorkMontreal()
{
    Klik, 850, 959
    Slaap, 500
    Klik, 1566, 305
    Slaap, 1000
}

DrawFourthAndFifth()
{
    Slaap, 2000
    DrawFourth()
    DrawFifth()
}

PlayMontrealChicago()
{
    Klik, 1000, 959
    Slaap, 500
    Klik, 1366, 305
    Slaap, 1000
}

DrawSecondAndDeck()
{
    Slaap, 1000
    DrawSecond()
    DrawFromDeck()
}

PlayChicagoDuluth()
{
    Klik, 1000, 959
    Slaap, 500
    Klik, 1166, 365
    Slaap, 1000
}

PlayDuluthDenver()
{
    Klik, 1000, 959
    Slaap, 500
    Klik, 876, 445
    Slaap, 1000
}

Draw2Deck()
{
    Slaap, 1000
    DrawFromDeck()
    DrawFromDeck()
}

ConfirmLastTurn()
{
    Slaap, 2000
    ;Click Go
    Click, 1000, 839
    Slaap, 1000
    Versturen, {Binnenkomen 100}
}

DrawFirst()
{
    
}

DrawSecond()
{
    Klik, 1846, 345
    Slaap, 1000
}

DrawThird()
{

}

DrawFourth()
{
    Klik, 1846, 557
    Slaap, 1000
}

DrawFifth()
{
    Klik, 1846, 757
    Slaap, 1000
}

DrawFromDeck()
{
    Klik, 1846, 803
    Slaap, 1000
}

ClickForwardAndQuit()
{
    Slaap, 1000
    ; Forward
    Click, 1446, 957
    Slaap, 1000
    ; Quit
    Click, 877, 42
    Slaap, 1000
}

CheckIsStuck()
{
    PixelGetColor, color, 1000, 550, RGB
    if (color = 0xF4EFE1)
    {
        Slaap, 1000
        return true
    }
    anders
    {
        return false
    }
}

Herstarten()
{
    Slaap, 1000
    Versturen, {Ontsnappen 100}
    Slaap, 1000
    Versturen, {Ontsnappen 100}
    Slaap, 1000
    Versturen, {Binnenkomen 100}
}

Feel free to experiment with DefaultMouseSpeed value and Sleep times, but I found above to be the most reliable. Tutorial sometimes get stuck during drawing the ticket, I’ve added some logic to restart it in case of that happening.

The Less Legit way

Als 390 hours is still too much and you feel like a bit of cheating is ok, then you can get there much much faster. The progress for offline games is stored locally in UserDefault.xml file. You can find it in local app data:

%localappdata%\Days of Wonder\Ticket to Ride\UserDefault.xml

Just:

  1. Open the file in your favourite text editor (when the game is not running),
  2. Vinden <NbSoloGamesPlayed> element <NbSoloGamesPlayed>12345</NbSoloGamesPlayed>
  3. Update the value to 200000 (or whatever you want) en sla het bestand op.
  4. Voer het spel uit, done. (Actually you might need to play one more game, didn’t test that).
Deze gids over Kaartje om te rijden is geschreven door PapaSmok. Hiervan kunt u de originele publicatie bezoeken koppeling. Als u zich zorgen maakt over deze gids, aarzel dan niet om ons te bereiken hier.

Over de auteur