عن المشروع

Sprawl//Run هو تطبيق أندرويد مبني على Flutter يصوغ الجري كقصة توصيل سايبربانك. وهو مصمم لأولئك الذين يريدون دافعًا سرديًا بدلًا من جدول تقسيمات، ومصمم ليعمل دون اتصال بالكامل. القصة والبنية تحتوي حملتان على عشرين مهمة متتبعة بنظام GPS. Sprawl Prime هي الحملة الابتدائية؛ وإكمالها يفتح Null Tide. قبل كل مهمة تختار هدفًا — زمنًا أو مسافة — وتتكيف القصة مع ما تختاره. تحقيق الهدف يُنجز العملية؛ والتوقف قبل ذلك يفشلها ويتركها مفتوحة، ويمكنك إعادة المحاولة وقتما تشاء. الجري بعد الهدف يظل محتسبًا ويطلق حوارًا إضافيًا من المعالج. المطاردات هي الميكانيكا المركزية: خلال بعض المهام يطاردك شيء ما، ولديك نافذة محدودة للهروب. الجهد المطلوب يتناسب مع وتيرتك أنت خلال الدقائق الثلاث السابقة بدلًا من رقم ثابت يختاره المصمم، لذا فهو جهد حقيقي عند أي سرعة جري ولا يكون مستحيلًا أبدًا. يمكن إيقاف المطاردات تمامًا مع الحفاظ على القصة. تسعة شخصيات تُؤدى بأصوات عبر تخليق الكلام على الجهاز، ويذكر ملف README أن الحملتين تحتويان على 492 سطرًا من الحوار. لا يُفتح قاموس من أربعين مدخلًا إلا بعد أن تكون شخصية قد ذكرت المدخل فعليًا، لذا فهو يسجل ما قيل لك بدلًا من أن يكون ويكي للقراءة المسبقة. يمكن تفعيل تذكيرات المعالج الاختيارية ورسائل "ضجيج الإشارة" الاختيارية بين الجريات، مع عدم إطلاق الأخيرة أبدًا أثناء الليل. التتبع والمقاييس يستمر تتبع GPS مع إطفاء الشاشة ويتضمن الإيقاف التلقائي. تعرض واجهة HUD المباشرة المسافة والوتيرة والوقت المنقضي وحلقة الهدف وشريط المطاردة. تُحسب السعرات الحرارية من معادلات ACSM الأيضية وكتلة جسمك. تُرسم المسارات كخط نيون من بيانات GPS المخزنة ويمكن إعادة تشغيلها بالوتيرة التي ركضت بها فعليًا. يحذف التطبيق الخرائط عمدًا لأن بلاطات الخرائط تتطلب شبكة. التقدم يمكن الرجوع في الملخصات الأسبوعية والشهرية إلى أول جري لك. يعرض السجل طويل المدى المسافة لكل شهر بالإضافة إلى تقويم نقطي حيث يُضاء كل شهر حسب المسافة التي ركضتها. تمتد ستون إنجازًا عبر ست فئات وأربع مستويات، ويُعاد حساب التقدم من سجل الجري بدلًا من تخزينه كعدادات. تستخدم السلاسل التزامًا أسبوعيًا تحدده بنفسك (دقائق أو كيلومترات أو مهام)، والأسبوع الذي لا يزال جاريًا لا يكسر السلسلة أبدًا. ملكية البيانات الإعدادات ← البيانات تصدّر الملف الشخصي وتقدم الحملة والإنجازات والقاموس وكل جري مع مسار GPS الخاص به كملف JSON نصي واحد يُسلَّم إلى ورقة المشاركة في النظام. الاستيراد إما يستبدل الجهاز (استعادة نظيفة) أو يدمج، مضيفًا فقط ما هو مفقود حتى لا تستطيع نسخة احتياطية قديمة إعادة قفل مهمة. لا يُستخدم إذن تخزين في أي من الاتجاهين. يمكن تصدير الجريات الفردية كمسارات GPX 1.1 لتطبيقات مثل OsmAnd أو Strava أو Komoot. الصوت تنخفض الموسيقى من مشغل آخر أثناء الإرسال وتُستأنف إذا أساء المشغل التصرف. يتوفر خلفية سنث محيطة اختيارية عندما لا تجلب موسيقى. يمكن ضبط معدل الكلام ومستوى المؤثرات، ويمكن كتم صوت القصة. الخصوصية والأذونات ملف README صريح بشكل غير معتاد هنا. لا يوجد إذن INTERNET ولا حسابات ولا إعلانات ولا تحليلات ولا خدمات Google Play؛ وتستبعد وحدة التطبيق مجموعة com.google.android.gms وتفرض AOSP LocationManager. يستخدم التتبع مع إطفاء الشاشة خدمة أمامية بدلًا من ACCESS_BACKGROUND_LOCATION، والإشعار المستمر هو الإشعار الوحيد الذي يعرضه التطبيق. يذكر README أيضًا أن android:allowBackup متروك على الوضع الافتراضي في أندرويد وهو true، لذا قد ينسخ وكيل النسخ الاحتياطي في النظام سجل الجري إلى حساب Google الخاص بالمستخدم إذا كان النسخ الاحتياطي للجهاز مفعّلًا — التطبيق نفسه لا يفعل ذلك أبدًا. يصل إذنان بشكل غير مباشر: ACCESS_NETWORK_STATE عبر ExoPlayer/just_audio، وإذن مستقبل ديناميكي معرّف ذاتيًا من share_plus. ملاحظات تقنية مبني بـ Flutter 3.44.8 / Dart 3.12، أندرويد أولًا مع وجود هيكل iOS. يتطلب البناء JDK 17. الحاجة إلى NDK لأن path_provider_android يسحب package:jni. يأخذ محرك الجري مصدر الموقع والراوي والساعة عبر الحقن، ما يسمح باختبار مهام كاملة مقابل GPS اصطناعي في أجزاء من الثانية؛ ويذكر README وجود 228 اختبارًا وflutter analyze نظيف. تُولَّد المؤثرات الصوتية وأيقونات المشغل ولقطات README بواسطة سكربتات في tool/، وأداة اللقطات تشغّل الودجات الحقيقية ببيانات مزروعة. حزم المهام هي ملفات JSON فردية تُسقط في دليل مستندات التطبيق تحت sprawlrun/mission_packs/ وتُعاد تحميلها من الإعدادات، دون حاجة لإعادة البناء. كود التطبيق بترخيص MIT؛ والخطوط المضمنة (Orbitron وRajdhani وShare Tech Mono) بترخيص SIL OFL 1.1.