[{"data":1,"prerenderedAt":369},["Reactive",2],{"blog-latest-en":3},[4],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"_empty":7,"title":9,"description":10,"published_at":11,"cover":12,"body":13,"_type":364,"_id":365,"_source":366,"_file":367,"_extension":368},"/en/blog/2026/10/full-circle","10",false,"","Coming full circle","The browser game becomes a true firefighting game: dispatch and incident command in one, on a real map, with fire, water and co-op. Why I'm going back to the roots – and what I'm taking with me.","2026-10-28","/images/game/hero-nacht-1280.webp",{"type":14,"children":15,"toc":354},"root",[16,27,35,68,75,80,86,112,118,123,129,152,158,169,177,187,197,205,215,223,235,243,249,267,273,278,284,319,344,349],{"type":17,"tag":18,"props":19,"children":20},"element","p",{},[21],{"type":17,"tag":22,"props":23,"children":26},"img",{"alt":24,"src":25},"A turntable ladder at a burning house, firefighters at work","/images/game/post-house-fire-1280.webp",[],{"type":17,"tag":28,"props":29,"children":31},"h1",{"id":30},"coming-full-circle",[32],{"type":33,"value":34},"text","Coming full circle 🚒",{"type":17,"tag":18,"props":36,"children":37},{},[38,40,46,48,53,54,59,61,66],{"type":33,"value":39},"In 2015 I wrote here for the first time about my dream: a firefighting game of my own. Fuelled by ",{"type":17,"tag":41,"props":42,"children":43},"code-inline",{},[44],{"type":33,"value":45},"Emergency 1–4",{"type":33,"value":47},", ",{"type":17,"tag":41,"props":49,"children":50},{},[51],{"type":33,"value":52},"Feuerwache.net",{"type":33,"value":47},{"type":17,"tag":41,"props":55,"children":56},{},[57],{"type":33,"value":58},"LstSim.de",{"type":33,"value":60}," and later ",{"type":17,"tag":41,"props":62,"children":63},{},[64],{"type":33,"value":65},"Leitstellenspiel.de",{"type":33,"value":67},". A good ten years later, that dream has taken a turn – back to where it started.",{"type":17,"tag":69,"props":70,"children":72},"h2",{"id":71},"what-happened-during-the-break",[73],{"type":33,"value":74},"What happened during the break",{"type":17,"tag":18,"props":76,"children":77},{},[78],{"type":33,"value":79},"In early 2025 I paused the project to train as an industrial firefighter (Werkfeuerwehrmann). That time changed how I see the game. Anyone who has stood at an incident knows: nothing happens on scene by itself. Someone has to dismount, fetch the equipment, build the water supply and make the calls. That was exactly what the game was missing.",{"type":17,"tag":69,"props":81,"children":83},{"id":82},"what-the-browser-version-was",[84],{"type":33,"value":85},"What the browser version was",{"type":17,"tag":18,"props":87,"children":88},{},[89,91,96,98,103,105,110],{"type":33,"value":90},"Until now, ",{"type":17,"tag":41,"props":92,"children":93},{},[94],{"type":33,"value":95},"leitstelle.io",{"type":33,"value":97}," was a browser game: Laravel, Vue and MapLibre, a map of any place you like, vehicles as icons driving along real roads. Working with ",{"type":17,"tag":41,"props":99,"children":100},{},[101],{"type":33,"value":102},"OSRM",{"type":33,"value":104}," and ",{"type":17,"tag":41,"props":106,"children":107},{},[108],{"type":33,"value":109},"Overpass",{"type":33,"value":111},", the custom map tiles, the map debugging tool – all of it taught me an incredible amount.",{"type":17,"tag":113,"props":114,"children":117},"video-slot",{"caption":115,"poster":116},"The last state of the browser version","/images/blog/10-first-steps-with-osrm.png",[],{"type":17,"tag":18,"props":119,"children":120},{},[121],{"type":33,"value":122},"But honestly, it was a dispatch game like many others: you dispatch, a timer runs out, done. Exciting for a few calls, but not the game I dreamed of in 2015.",{"type":17,"tag":69,"props":124,"children":126},{"id":125},"the-turn",[127],{"type":33,"value":128},"The turn",{"type":17,"tag":18,"props":130,"children":131},{},[132,134,138,139,143,145,150],{"type":33,"value":133},"My passion always came from two sides: the dispatch centre from ",{"type":17,"tag":41,"props":135,"children":136},{},[137],{"type":33,"value":65},{"type":33,"value":104},{"type":17,"tag":41,"props":140,"children":141},{},[142],{"type":33,"value":58},{"type":33,"value":144},", and the incident scene from ",{"type":17,"tag":41,"props":146,"children":147},{},[148],{"type":33,"value":149},"Emergency",{"type":33,"value":151},". Leitstelle now brings both together and goes beyond them. You take the emergency call, alert the right vehicles from real stations – and when they arrive, you take over yourself.",{"type":17,"tag":69,"props":153,"children":155},{"id":154},"what-the-game-is-now",[156],{"type":33,"value":157},"What the game is now",{"type":17,"tag":18,"props":159,"children":160},{},[161,167],{"type":17,"tag":162,"props":163,"children":164},"strong",{},[165],{"type":33,"value":166},"Real map, real data.",{"type":33,"value":168}," The entire district of Freising, built from OpenStreetMap and the Bavarian terrain model: 83 fire stations, 3,716 hydrants and more than 130 vehicles modelled on the real brigades. Calls come in with real addresses.",{"type":17,"tag":18,"props":170,"children":171},{},[172],{"type":17,"tag":22,"props":173,"children":176},{"alt":174,"src":175},"An HLF responding at blue hour","/images/game/post-blue-hour-drive-1280.webp",[],{"type":17,"tag":18,"props":178,"children":179},{},[180,185],{"type":17,"tag":162,"props":181,"children":182},{},[183],{"type":33,"value":184},"Dispatcher and commander.",{"type":33,"value":186}," Vehicles wait for their crew, drive real roads and report their status like on the radio. On scene you dismount the crew, fetch hose, cutter or saw from the truck and set up the turntable ladder.",{"type":17,"tag":18,"props":188,"children":189},{},[190,195],{"type":17,"tag":162,"props":191,"children":192},{},[193],{"type":33,"value":194},"Fire and water, simulated.",{"type":33,"value":196}," A fire grows when too little water reaches it. You lay the supply line to a hydrant, draft from a stream or build long hose lays truck to truck.",{"type":17,"tag":18,"props":198,"children":199},{},[200],{"type":17,"tag":22,"props":201,"children":204},{"alt":202,"src":203},"The water supply from the stream is up while the next alarm comes in","/images/game/post-draft-line-1280.webp",[],{"type":17,"tag":18,"props":206,"children":207},{},[208,213],{"type":17,"tag":162,"props":209,"children":210},{},[211],{"type":33,"value":212},"Together with friends.",{"type":33,"value":214}," You play co-op in the same world. Everyone takes charge of their own vehicles, and the game only pauses when everyone agrees.",{"type":17,"tag":18,"props":216,"children":217},{},[218],{"type":17,"tag":22,"props":219,"children":222},{"alt":220,"src":221},"Three players in co-op with the player list and a pause vote","/images/game/post-coop-1280.webp",[],{"type":17,"tag":18,"props":224,"children":225},{},[226,228,233],{"type":33,"value":227},"And because bugs are part of development, there's ",{"type":17,"tag":41,"props":229,"children":230},{},[231],{"type":33,"value":232},"Summi",{"type":33,"value":234},": a little drone with big eyes that lets you report bugs right from inside the game.",{"type":17,"tag":18,"props":236,"children":237},{},[238],{"type":17,"tag":22,"props":239,"children":242},{"alt":240,"src":241},"Summi, the bug-report drone, as a 3D model","/images/game/post-summi-1280.webp",[],{"type":17,"tag":69,"props":244,"children":246},{"id":245},"new-tech-old-knowledge",[247],{"type":33,"value":248},"New tech, old knowledge",{"type":17,"tag":18,"props":250,"children":251},{},[252,254,259,260,265],{"type":33,"value":253},"Leitstelle no longer runs in the browser. It's a desktop game for macOS, Windows and Linux, built with ",{"type":17,"tag":41,"props":255,"children":256},{},[257],{"type":33,"value":258},"Rust",{"type":33,"value":104},{"type":17,"tag":41,"props":261,"children":262},{},[263],{"type":33,"value":264},"Bevy",{"type":33,"value":266},". None of the old PHP code survived, but a lot of the knowledge did: the research on stations and vehicles, the logic behind alarm keywords and dispatch, the ideas around reconnaissance and calling in more units. The browser version wasn't a detour, it was the foundation.",{"type":17,"tag":69,"props":268,"children":270},{"id":269},"freising-first-then-germany-and-beyond",[271],{"type":33,"value":272},"Freising first, then Germany and beyond",{"type":17,"tag":18,"props":274,"children":275},{},[276],{"type":33,"value":277},"The first district is Freising. I know it well, and every detail there can be checked. The technology behind it, though, is built for the whole of Germany – and beyond.",{"type":17,"tag":69,"props":279,"children":281},{"id":280},"whats-next",[282],{"type":33,"value":283},"What's next",{"type":17,"tag":285,"props":286,"children":287},"ul",{},[288,294,299,304,309,314],{"type":17,"tag":289,"props":290,"children":291},"li",{},[292],{"type":33,"value":293},"calls that are reported wrongly, and reconnaissance that shows what's really going on",{"type":17,"tag":289,"props":295,"children":296},{},[297],{"type":33,"value":298},"wind that spreads fires to neighbouring buildings",{"type":17,"tag":289,"props":300,"children":301},{},[302],{"type":33,"value":303},"a living world where traffic forms an emergency lane",{"type":17,"tag":289,"props":305,"children":306},{},[307],{"type":33,"value":308},"rescue service, police and THW",{"type":17,"tag":289,"props":310,"children":311},{},[312],{"type":33,"value":313},"a persistent world that keeps running around the clock",{"type":17,"tag":289,"props":315,"children":316},{},[317],{"type":33,"value":318},"a companion app for on the go",{"type":17,"tag":18,"props":320,"children":321},{},[322,324,333,335,342],{"type":33,"value":323},"There's deliberately no date yet. I'll announce the first playtests on ",{"type":17,"tag":325,"props":326,"children":330},"a",{"href":327,"rel":328},"https://discord.gg/cdRq3bztJu",[329],"nofollow",[331],{"type":33,"value":332},"Discord",{"type":33,"value":334}," and in the ",{"type":17,"tag":325,"props":336,"children":339},{"href":337,"rel":338},"https://forum.leitstelle.io",[329],[340],{"type":33,"value":341},"forum",{"type":33,"value":343}," first. Drop by, tell me about your stations and vehicles, and let's build the firefighting game we've always dreamed of – together.",{"type":17,"tag":18,"props":345,"children":346},{},[347],{"type":33,"value":348},"Coming full circle. See you soon!",{"type":17,"tag":18,"props":350,"children":351},{},[352],{"type":33,"value":353},"André",{"title":8,"searchDepth":355,"depth":355,"links":356},2,[357,358,359,360,361,362,363],{"id":71,"depth":355,"text":74},{"id":82,"depth":355,"text":85},{"id":125,"depth":355,"text":128},{"id":154,"depth":355,"text":157},{"id":245,"depth":355,"text":248},{"id":269,"depth":355,"text":272},{"id":280,"depth":355,"text":283},"markdown","content:en:blog:2026:10:full-circle.md","content","en/blog/2026/10/full-circle.md","md",1793824786150]