À propos du projet
Sprawl//Run est une application Android basée sur Flutter qui présente la course à pied comme une histoire de coursier cyberpunk. Elle est conçue pour ceux qui recherchent une motivation narrative plutôt qu'une feuille de calcul de fractionnés, et elle fonctionne entièrement hors ligne.
Histoire et structure
Deux campagnes contiennent vingt missions suivies par GPS. Sprawl Prime est la campagne de départ ; la terminer ouvre Null Tide. Avant chaque mission, vous choisissez un objectif — un temps ou une distance — et l'histoire s'adapte à votre choix. Atteindre l'objectif réussit l'opération ; s'arrêter avant le fait échouer, la laisse ouverte, et vous pouvez réessayer quand vous voulez. Dépasser l'objectif compte toujours et déclenche des dialogues supplémentaires du contact.
Les poursuites sont le mécanisme central : lors de certaines missions, quelque chose vous poursuit, et vous avez une fenêtre limitée pour vous échapper. L'effort requis est adapté à votre propre rythme des trois dernières minutes plutôt qu'à un nombre fixe choisi par le concepteur, donc c'est un réel effort à toute vitesse de course et jamais impossible. Les poursuites peuvent être désactivées entièrement tout en gardant l'histoire.
Neuf personnages sont exprimés par synthèse vocale sur l'appareil, et le README indique que les campagnes contiennent 492 lignes de dialogue. Un codex de quarante entrées ne se débloque qu'après qu'un personnage a réellement mentionné une entrée, donc il enregistre ce qui vous a été dit plutôt que d'agir comme un wiki à lire à l'avance. Des rappels facultatifs du contact et des messages facultatifs de « bruit de signal » entre les courses peuvent être activés, ces derniers ne se déclenchant jamais pendant la nuit.
Suivi et métriques
Le suivi GPS continue avec l'écran éteint et inclut une pause automatique. Le HUD en direct affiche la distance, l'allure, le temps écoulé, un anneau d'objectif et la barre de poursuite. Les calories sont calculées à partir des équations métaboliques de l'ACSM et de votre masse corporelle. Les itinéraires sont dessinés comme une trace néon à partir des données GPS stockées et peuvent être rejoués à l'allure que vous avez réellement courue. L'application omet délibérément les cartes car les tuiles de carte nécessitent un réseau.
Progression
Les résumés hebdomadaires et mensuels peuvent être remontés jusqu'à votre première course. Un historique à long terme montre la distance par mois plus un calendrier à points où chaque mois est éclairé par la distance parcourue. Soixante succès couvrent six catégories et quatre niveaux, et la progression est recalculée à partir du journal de course plutôt que stockée comme compteurs. Les séries utilisent un engagement hebdomadaire que vous définissez vous-même (minutes, kilomètres ou missions), et une semaine encore en cours ne brise jamais une série.
Propriété des données
Paramètres → Données exporte le profil, la progression de campagne, les succès, le codex et chaque course avec sa trace GPS sous forme d'un seul fichier JSON simple remis à la feuille de partage système. L'import remplace l'appareil (une restauration propre) ou fusionne, n'ajoutant que ce qui manque afin qu'une ancienne sauvegarde ne puisse pas reverrouiller une mission. Aucune permission de stockage n'est utilisée dans les deux sens. Les courses individuelles peuvent être exportées sous forme de traces GPX 1.1 pour des applications comme OsmAnd, Strava ou Komoot.
Audio
La musique d'un autre lecteur est réduite pour une transmission et reprise si le lecteur se comporte mal. Un lit ambiant synthétique facultatif est disponible lorsque vous n'apportez pas de musique. Le débit de parole et le volume des effets sont réglables, et la voix de l'histoire peut être coupée.
Confidentialité et permissions
Le README est ici exceptionnellement explicite. Il n'y a pas de permission INTERNET, pas de comptes, pas de publicité, pas d'analytique et pas de services Google Play ; le module d'application exclut le groupe com.google.android.gms et force le LocationManager AOSP. Le suivi avec l'écran éteint utilise un service de premier plan plutôt que ACCESS_BACKGROUND_LOCATION, et la notification continue est la seule notification que l'application affiche. Le README note également que android:allowBackup est laissé à la valeur par défaut d'Android, true, donc l'agent de sauvegarde du système peut copier le journal de course vers le compte Google d'un utilisateur si la sauvegarde de l'appareil est activée — l'application elle-même ne le fait jamais. Deux permissions arrivent indirectement : ACCESS_NETWORK_STATE via ExoPlayer/just_audio, et une permission de récepteur dynamique auto-définie de share_plus.
Notes techniques
Construit avec Flutter 3.44.8 / Dart 3.12, Android d'abord avec un échafaudage iOS présent. La construction nécessite JDK 17. Le NDK est nécessaire car path_provider_android tire package:jni. Le moteur de course prend sa source de localisation, son narrateur et son horloge par injection, ce qui permet de tester des missions entières contre un GPS synthétique en millisecondes ; le README rapporte 228 tests et un flutter analyze propre. Les effets sonores, les icônes de lanceur et les captures d'écran du README sont tous générés par des scripts dans tool/, et l'outil de capture pilote les vrais widgets avec des données ensemencées.
Les packs de missions sont des fichiers JSON uniques déposés dans le répertoire de documents de l'application sous sprawlrun/mission_packs/ et rechargés depuis Paramètres, sans reconstruction requise. Le code de l'application est MIT ; les polices incluses (Orbitron, Rajdhani, Share Tech Mono) sont SIL OFL 1.1.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.