First TrainLag: TrainLag x GESO
My old student association, GESO at ETH Zürich, advertised an event: TrainLag. The description was minimal – basically, an escape game using the entire Zürcher Verkehrsverbund (ZVV) public transport network. As a huge ÖV (public transport) fan, that’s all I needed to hear. I roped in three friends from my geospatial engineering undergrad days (F, P, and L), we dubbed ourselves “brain-lag”.
For those unfamiliar, TrainLag pits teams against each other across the ZVV network. You’re either a Wegrenner (runner) completing challenges for points, or a Jäger (catcher) hunting down runners to steal their accumulated bounty and switch roles. All while using only ZVV-approved transport and being tracked via a location-sharing app (Life360, in our case).
Go Time: Wegrenner Duties Call
We started at ETH Hönggerberg as Wegrenner. Our first three challenge options popped up on Discord:
- Feusisberg: 866 points.
- Lufingen: Sit on a specific bench near the ‘Lufingen Dorf’ bus stop for 7 minutes. 1022 points.
- Dürnten: 914 points.
Lufingen seemed closest, and the points were tempting. Our 40-minute estimate quickly went sideways. A delayed bus meant a mad dash for an S-Bahn we missed by seconds. Plan B: the tram. Slow, but forward progress. The 15-minute grace period ended, and the Jäger teams were released. Our dot had been live on their map.
On the tram, we strategized. After Lufingen, options were: run towards Winkel/Oberrüti (tougher for chasers), head back towards ZRH, or push on to Embrach. Going back felt risky, but we planned to use a bus stop slightly outside Lufingen, timing our move carefully to avoid tipping off potential chasers.
Off the bus in Lufingen, we ran. A bus arrived just two minutes later – potentially carrying Jäger who took a faster IC train via HB? We ducked behind trees. Empty. Phew. Up the hill, viewpoint challenge completed.
Fountain Fail and Getting Caught
New challenges:
- Fountain: Drink from a fountain. 97 points.
- Uitikon Waldegg: 1204 points.
- Binz bei Maur: 519 points.
Uitikon and Binz were far. A fountain seemed easy points in a town. OpenStreetMap showed one right by the bus stop… but it was dry. Annoying!
Waiting for the bus back towards the airport, paranoia kicked in. The Jäger must be close. We hid again as the next bus approached – also empty. Relief washed over us as our bus arrived and we hopped on. Then, disaster. At the next stop, a group boarded, their eyes scanning the bus. Definitely Jäger. Our luck ran out. They’d correctly guessed our move back towards ZRH but had taken a slower route, arriving later than we anticipated. A gentle tap on the shoulder, a #catch
command in Discord, and just like that, we were the Jäger.
Switching Sides: The Hunt is On
Readjusting quickly, we scanned the map. A team was waiting at Esslingen. Their potential challenges pointed towards either Hinwil or somewhere in Zürich city. From ZRH, we hopped on an IC via Zürich Oerlikon. Checking connections, we saw they had a bus towards Uster departing in 5 minutes. If they moved at 15:42, Hinwil was the goal. We realized their connecting train to Hinwil also went via Oerlikon – we might intercept them!
A frantic call to a teammate on the toilet, a quick exit from our train, and confirmation: they were moving towards Uster. We scrambled onto the same train heading to Hinwil via Uster. Perfect setup.
Time to plan the Zugriff. We coordinated via call, spreading out through the train carriage, assigning doors to watch. People gave us weird looks – we probably looked like undercover cops. One door remained uncovered.
Arriving in Uster, teammates at the front spotted them hiding behind a large platform sign. The train stopped perfectly, positioning the sign between my door and the uncovered one. I tried to blend in, hoping they’d board without noticing. They didn’t board. Panic in the voice call – had we lost them? Convinced they had to be on the train, I urged everyone back inside.
And there they were. Sitting right between my door and the unguarded one. Gotcha! #catch
. We were Wegrenner again, with a fresh 15-minute grace period.
Back in the Game: Waterfalls and Döner
New challenges:
- Humlikon: Walk through a specific alley. 1825 points.
- Do you know da way?: Go back to the start point without using your phone. 1214 points.
- Rheinfall II: Visit a waterfall (min. 1m high, not a fountain). 659 points.
Knowing the Wetzikon area, I pitched the Kemptnertobel – a nearby ravine with a decent waterfall. Sold. We had 5 minutes until the bus from Wetzikon. But I was starving (no breakfast, no lunch, now 16:15). A quick dash to the Dönermann at Wetzikon station. “Can you make one in under 4 minutes?” He delivered. Legend.
Our 15-minute grace period ended mid-hike through the Tobel. Location tracking back on. The plan: hike through to Bäretswil (near the ‘Bäretswil, Gemeindehaus’ stop), then bus to Bauma, train to Winterthur – shaking any potential Jäger.
The Challenge Grind and Tactical Maneuvers
Next up:
- Unique Shop (🛤️): Photo of a non-chain store (🛤️ means you can stay on the vehicle). 189 points.
- Business Card (Zone 111) (🛤️): Find one in Zone 111. 1736 points.
- Zürich Airport: Visit the Circle viewing platform. 1051 points.
Finding a unique shop in the countryside near Bäretswil or Bauma seemed doable. But we realized our timing was off; we wouldn’t make it to Bäretswil before Jäger could potentially intercept us. Nerves frayed again.
In Bäretswil, we snapped a photo of a shop, grabbed sugary drinks at the Landi (morale boost!) after missing our connection. New challenges:
- Albisrieden: Go to the “Albisrieden” stop. 336 points.
- Thalwil: Visit the Labyrinth Thalwil. 1348 points.
- Sleep Well: Ride a public transport line end-to-end. 223 points.
Plan B: Take the bus (line 850) from Bäretswil to Bauma and back to Wetzikon, completing the “Sleep Well” challenge. Tactical move: board the bus going the wrong direction first, hoping to lure any Jäger off early before doubling back on the now chaser-free bus towards Bauma.
We boarded in Bäretswil… and promptly got on the wrong bus (851 instead of 850). Happy accident! The 851 went to Andetswil, terminated, and turned around. Perfect. We stayed put.
Things got sketchy again. Another team was near Wetzikon. Jäger would have good reason to head in our region. We braced for capture upon arrival in Wetzikon, completing the challenge just before the station. Agreed plan: take the S5 towards Zug, split up in the rush hour crowds.
New challenges upon deboarding:
- WC Symbol (🛤️): Photo of one. 52 points.
- Kluspark: Visit it. 299 points.
- Loorenstrasse: Go to the stop. 407 points.
Everyone looked like a Jäger. Paranoia level: high. Especially groups. No one moved on us. We jumped on the train seconds before departure. Phew. Snapped the WC symbol photo on the train.
- Elevator Ride: Ride an elevator end-to-end. 146 points.
- Letzipark West: Go to the stop. 300 points.
- Schaufelbergerstrasse: Go to the stop. 314 points.
Off at Stadelhofen. Crowds = cover. We split up, reconvened individually at an elevator, rode it. Easy points.
- Museum: Go to one. 135 points.
- Zone Border: Walk across a ZVV zone border (check ZVV Zone Maps). 149 points.
- Rosengartenstrasse: Go to the stop. 263 points.
The Kunsthaus Zürich was minutes away. We cut through the parking garage – risky, but the poor GNSS might confuse chasers. Snapped a pic at a side entrance.
- Last ZVV Stop (🛤️): Ride the next train to its last stop within the ZVV. 335 points.
- High-Light (🛤️): Go to 420m altitude. 171 points.
- Altenhofstrasse: Go to the stop. 249 points.
Easy one! According to the map data from Swisstopo, we were already at 422m. Completed while hiding near the Kunsthaus.
- Mobility Spot: Go to one. 118 points. (Mobility Car Sharing)
- Tobel Time: Visit a ravine. 459 points.
- Römerhof: Go to the Haltestelle “Römerhof” (Check ZVV Map). 244 points.
Römerhof was close but away from the centre. Game end (19:00) was approaching (it was 18:43). Found a Mobility car-sharing spot nearby, moved quickly past the new Chipperfield Kunsthaus extension. Done at 18:49.
- Holz/Hölzli: Go to a stop with “holz” or “hölzli” in the name. 209 points.
- Albisrank: Go to the stop. 320 points.
- GMBH - Get Beer (🛤️): Find an ad for alcohol. 203 points.
Perfect! BQM bar near ETH surely had booze ads. We ran. Found a Möhl cider ad. Nice. Our team bounty was getting high, but we weren’t paying attention, just thrilled to be near the end (18:55).
- Market Stall (🛤️): Find one. 312 points.
- Hadlaubstrasse: Go to the stop. 347 points.
- Fire Truck (🛤️): Find one. 183 points.
Pure luck: a food truck drove past near the Polybahn funicular. Snapped it at 18:57. Nail-biting time.
- Hiking Sign (>2h) (🛤️): Find one. 122 points.
- Technopark: Go to the stop. 246 points.
- Shoe Store: Go to one. 162 points.
Too risky. Only option was down in Niederdorf, but the Polybahn had just left. No chance. We called it. Time for a much-needed toilet break at the ETH LEE building. Walking down, we felt great. Second place, just 50 points behind the leaders. A fantastic first TrainLag. Our bounty: 733 points.
The Final Twist
Suddenly, shouting and running footsteps. A Jäger team burst out of the Polybahn station, pushing hard. It was 18:59. I reacted slowly, completely surprised. I jumped and bolted.
We don’t know the exact second they tagged us, but the #catch
message appeared in Discord after the official 19:00 end time.
GG! What a game.
Find out more about TrainLag:
- GH project: https://github.com/oOCraftRabbitOo/trainlag
- Founders/Legendäri Urgstei: Aurèle, Julian, KaiTheJu, oOCraftRabbitOo (alphabetically)