このプロジェクトについて

Sprawl//Runは、FlutterベースのAndroidアプリで、ランニングをサイバーパンクの配達人ストーリーとして捉えます。スプリットの表ではなく物語による動機付けを求める人向けに設計され、完全オフラインで動作します。 ストーリーと構造 2つのキャンペーンに20のGPS追跡ミッションが含まれます。最初のキャンペーンはSprawl Primeで、完了するとNull Tideが解放されます。各ミッション前に時間または距離の目標を選択し、ストーリーは選択に合わせて進行します。目標達成で作戦成功、途中で止めると失敗して未完了のまま残り、いつでも再挑戦可能。目標を超えて走るとカウントされ、追加のハンドラーダイアログが発生します。 追跡が中心的な仕組みで、特定ミッションでは何かが追跡し、限られた時間内に逃げる必要があります。必要な努力は固定値ではなく、直近3分間の自分のペースに基づいて調整されるため、どの速度でも現実的で不可能ではありません。追跡はストーリーを保ったまま完全にオフにできます。 9人のキャラクターが端末内音声合成で声を発し、READMEにはキャンペーンに492行のダイアログが含まれると記載。40項目のコーデックスは、キャラクターが実際に言及した後にのみ解放され、先読みウィキではなく記録として機能します。オプションのハンドラーリマインダーと実行間の「シグナルノイズ」メッセージを有効にでき、後者は夜間に発動しません。 追跡とメトリクス GPS追跡は画面オフでも継続し、自動一時停止を含みます。ライブHUDは距離、ペース、経過時間、目標リング、追跡バーを表示。カロリーはACSM代謝式と体重から計算。ルートは保存されたGPSデータからネオントレースとして描画され、実際のペースで再生可能。地図タイルはネットワークが必要なため、地図は意図的に省略。 進捗 週次・月次サマリーは最初のランまで遡れます。長期的な履歴は月ごとの距離と、各月の走行距離で照らされるドットカレンダーを表示。60の実績は6カテゴリ4段階にわたり、進捗はカウンターではなくランログから再計算。ストリークは自分で定義した週次コミットメント(分、キロ、ミッション)を使用し、進行中の週はストリークを壊しません。 データ所有権 設定→データでプロフィール、キャンペーン進捗、実績、コーデックス、全ランとGPSトレースを単一のプレーンJSONファイルとしてエクスポートし、システム共有シートに渡します。インポートはデバイスを置き換えるか(クリーン復元)、マージして不足分のみ追加するため、古いバックアップでミッションが再ロックされることはありません。どちらの方向でもストレージ権限は不要。個別ランはGPX 1.1トラックとしてエクスポート可能で、OsmAnd、Strava、Komootなどのアプリで使用できます。 オーディオ 別プレイヤーの音楽は通信中に下がり、プレイヤーが不調なら再開。音楽がない場合はオプションのアンビエントシンセベッドが利用可能。音声速度と効果音の音量は調整可能で、ストーリーボイスはミュート可能。 プライバシーと権限 READMEはここで異常に明確です。INTERNET権限、アカウント、広告、解析、Google Play Servicesは一切なし。アプリモジュールはcom.google.android.gmsグループを除外し、AOSP LocationManagerを強制。画面オフの追跡はACCESS_BACKGROUND_LOCATIONではなくフォアグラウンドサービスを使用し、継続通知が唯一の通知。READMEはandroid:allowBackupがAndroidデフォルトのtrueのままであるため、デバイスバックアップが有効な場合、OSバックアップエージェントがランログをユーザーのGoogleアカウントにコピーする可能性があると記載(アプリ自体は決して行わない)。2つの権限が間接的に付与されます:ExoPlayer/just_audio経由のACCESS_NETWORK_STATEと、share_plusからの自己定義動的レシーバー権限。 技術ノート Flutter 3.44.8 / Dart 3.12で構築、AndroidファーストでiOSスキャフォールドあり。ビルドにはJDK 17が必要。path_provider_androidがpackage:jniを引き込むためNDKが必要。ランエンジンは位置情報ソース、ナレーター、クロックを注入で受け取り、合成GPSでミッション全体をミリ秒単位でテスト可能。READMEは228テストとクリーンなflutter analyzeを報告。効果音、ランチャーアイコン、READMEスクリーンショットはすべてtool/のスクリプトで生成され、スクリーンショットツールはシードデータで実際のウィジェットを駆動。 ミッションパックは単一のJSONファイルで、アプリのドキュメントディレクトリのsprawlrun/mission_packs/に配置し、設定から再読み込み。再ビルド不要。アプリコードはMIT、同梱フォント(Orbitron、Rajdhani、Share Tech Mono)はSIL OFL 1.1。