Ein GPS-Fangspiel für draussen – kostenlos, werbefrei und Open Source.
Handbuch · So funktioniert's · Datenschutz · Lokal ausprobieren · Mitmachen
Eine Person ist X und versucht zu entkommen. Die anderen spielen als Detektive und bekommen regelmässig ungefähre Hinweise auf X' Standort. Wer X im Fangradius erreicht, gewinnt.
- Eine Person erstellt ein Spiel und teilt den Spielcode mit der Gruppe, auch per QR-Code.
- Alle treten bei und wählen ihre Rolle: X oder Detektiv.
- Der Host legt die Regeln fest und startet das Spiel.
- X läuft voraus; die Detektive suchen X mithilfe der Karte und der Standort-Hinweise.
- Eigene Regeln: Der Host stellt die Regeln einzeln ein, zum Beispiel Dauer, Vorsprung, Zeitpunkt und Intervall der Standortmeldungen, Rollenanzahl, Live-Standorte der Detektive, ÖV-Budget, Startpunkt und Fangart. So kann jede Gruppe ihre eigene Runde zusammenstellen. Eine mögliche Kombination sind drei Spielende, zehn Minuten Vorsprung, 90 Minuten Spielzeit, Standortmeldungen alle fünf Minuten, Live-Standorte für die Detektive und ein begrenztes ÖV-Budget.
- Bonusmission: Optional versucht X, einen geheimen Zielpunkt zu erreichen, bevor die nächste Sichtung kommt.
- Foto-Fang: Die Spielenden bestätigen den Fang direkt in der App.
- Chat: Während der Runde können alle im integrierten Chat schreiben; der Verlauf wird nach Spielende gelöscht.
- Notfall-Knopf: Muss X die Runde abbrechen, endet das Spiel nach einer Bestätigung. Die Detektive gewinnen und erhalten den exakten Standort von X samt Benachrichtigung.
- Team-Markierungen: Detektive markieren Verdachtsorte und abgesuchte Stellen auf der Karte. X sieht sie nicht.
- Alle sicher und Funkstille: Kommt von jemandem länger keine Position an, werden alle gewarnt. Nach dem Spielende bestätigt jede Person, dass sie sicher ist.
- Akku-Warnung: Wird bei jemandem der Akku knapp, erfahren es alle (nur in Chromium-basierten Browsern).
- Auswertung: Am Ende zeigt die App Spielzeit, Sichtungen, knappsten Abstand und die gelaufene Strecke pro Person. Gespeichert werden nur Summen, kein Routenverlauf.
- Es gibt keine Benutzerkonten.
- Live-Standorte werden nur während des Spiels übertragen; Routenverläufe werden nicht gespeichert. Der einmalige Spielmittelpunkt wird für die laufende Runde gespeichert und danach gelöscht. Wenn der Host einen Startpunkt festlegt, wird dieser für die laufende Runde gespeichert.
- Fotos werden nicht in die App hochgeladen. Beim Foto-Fang bestätigen die Spieler den Fang gemeinsam in der App.
- Chat-Nachrichten bestehen nur im Arbeitsspeicher der laufenden Runde und werden nach Spielende verworfen.
- Die Standortfreigabe wird vom Browser angefragt. Du kannst sie jederzeit in den Geräteeinstellungen widerrufen.
- Spielt rücksichtsvoll: Bleibt an sicheren, öffentlichen Orten, achtet auf den Verkehr und respektiert die Privatsphäre anderer.
Beim Öffnen der Seite löst der Browser unsichtbar eine kleine Rechenaufgabe (Proof-of-Work). Der Server stellt dafür ein signiertes Ticket aus, das für das Erstellen, Abfragen und Beitreten von Räumen nötig ist. Es gibt keine Cookies, keine Konten und keinen externen Dienst. Zusätzlich gelten Limits pro IP-Adresse (Raum erstellen, Raum abfragen, Beitritt). Wer eine Verbindung mit fehlerhaften Nachrichten oder Chat-Spam flutet, wird getrennt.
Für den Betrieb den Signaturschlüssel einmalig setzen:
cd server
npx wrangler secret put HUMAN_CHECK_SECRETOhne diesen Schlüssel ist die Prüfung ausgeschaltet. Das ist für die lokale Entwicklung gedacht.
Lokal einschalten geht mit npx wrangler dev --var HUMAN_CHECK_SECRET:irgendein-text.
Wenn der Betreiber ein GlitchTip-Projekt eingerichtet hat, werden Programmfehler dorthin gemeldet. Vor dem Senden werden Standortdaten, Nutzerdaten, Header, Cookies, Breadcrumbs und Spielcodes entfernt. Ohne eingerichtetes Projekt wird nichts gesendet.
Für Karten nutzt Fang X OpenFreeMap auf Basis von OpenStreetMap. Die Kartendaten sind © OpenStreetMap-Mitwirkende. Über den Karten-Button lässt sich optional eine Satellitenkarte einblenden: Sentinel-2 cloudless 2025 von EOX (© EOX IT Services GmbH, CC BY-NC-SA 4.0). In der Schweiz wird bei Nahaufnahmen zusätzlich das amtliche Luftbild SWISSIMAGE von swisstopo eingeblendet (© swisstopo, freie Geodaten des Bundes).
Zum Entwickeln brauchst du Node.js 22 und npm.
npm ci
npm run build
cd server
npx wrangler dev --ip 127.0.0.1 --port 8787Öffne anschliessend http://localhost:8787. Der lokale Server liefert Spiel und API gemeinsam aus. Das Spiel benötigt eine Internetverbindung.
Fang X kann Fehler an ein gehostetes GlitchTip-Projekt melden. Lege dafür in GlitchTip ein Projekt an und hinterlege dessen DSN:
- Server: als Secret mit
npx wrangler secret put GLITCHTIP_DSNim Ordnerserver. - Client: als Umgebungsvariable
VITE_GLITCHTIP_DSNbeim Bauen (npm run build). Im Release-Workflow kommt sie aus der GitHub-VariableVITE_GLITCHTIP_DSNim Environmentproduction.
Ohne DSN ist die Fehlerberichterstattung ausgeschaltet. Die Bereinigung der Berichte steht in
shared/src/error-report.ts.
Note
Für den Integrationstest muss der lokale Server in einem Terminal laufen. Starte dann in einem zweiten Terminal im Projektordner:
npm run typecheck
npm run build
npm run test:integrationWeitere Hinweise zum Entwickeln und Mitwirken stehen in CONTRIBUTING.md.
Die Webseite zum Spiel (Quelle: website/) liegt unter
https://flohulo.github.io/fang-x/. Das Handbuch mit Spielablauf, allen Einstellungen und Tipps steht unter
https://flohulo.github.io/fang-x/handbuch/. Es wird mit MkDocs Material
aus den Seiten in docs/ gebaut:
pip install -r requirements-docs.txt
mkdocs serveWebseite und Handbuch werden bei Änderungen an website/, docs/ oder mkdocs.yml automatisch über den Workflow
.github/workflows/deploy-docs.yml auf GitHub Pages veröffentlicht.
Fang X gibt es auf Deutsch (Quellsprache) und Englisch. Weitere Sprachen werden über Weblate gepflegt – ohne Programmierkenntnisse, direkt im Browser. Wie das funktioniert und wie eine neue Sprache dazukommt, steht in CONTRIBUTING.md.
Fehlerberichte und Verbesserungsvorschläge sind willkommen. Nutze dafür die Issue-Vorlagen oder eröffne einen Pull Request. Bitte teile dabei keine echten Standortdaten oder privaten Spielcodes. Sicherheitsprobleme sollten privat gemäss SECURITY.md gemeldet werden.
Der Quellcode steht unter der AGPL-3.0-only.