main
ppSR & Escape Penacony 📱✨
Native Android All-in-One Server & Map Teleporter
ppSR & Escape Penacony เป็นแอปพลิเคชัน Android แบบ All-in-One ที่รวมทั้ง ตัวรันเซิร์ฟเวอร์จำลอง ppSR (Embedded Python 3.14), ตัวอัปเดตเซิร์ฟเวอร์ตรงจากต้นทาง AFN, ระบบวาร์ปแผนที่ 86 ฉาก, และ เครื่องมือปรับแต่งเซิร์ฟเวอร์ ไว้ในแอปเดียวจบ โดยไม่ต้องใช้สิทธิ์ Root, ไม่ต้องใช้ Shizuku และไม่ต้องติดตั้งแอป com.afn.ppSR แยกต่างหาก
- Application ID / Package:
com.catlas.escapepenacony - เวอร์ชันล่าสุด (Current Version):
v1.2.1 - สถาปัตยกรรม (Architecture): Native Android (Kotlin + Jetpack Compose + Material Design 3 + Embedded Chaquopy Python 3.14)
- Target ABI:
arm64-v8a(Android 8.0+ / API 26+)
🌟 ฟีเจอร์หลัก (Key Features)
1. 🚀 Embedded Python 3.14 Server Runtime (รันเซิร์ฟเวอร์ในตัวเอง 100%)
- ไม่ต้องลงแอป ppSR เพิ่ม: ฝัง Chaquopy Python 3.14 Native Runtime ในตัวแอป พร้อมไลบรารี CPython
libpython3.14.soและlibchaquopy_java.so - 📦 Pre-bundled Python Dependencies (100% Offline): บรรจุแพ็กเกจ Python ทั้ง 19 ตัว (
requests,werkzeug,flask,marshmallow,dataclasses-json,protobuf,urllib3,certifi,idna,charset-normalizer,jinja2,click,blinker, ฯลฯ) ฝังไว้ในแอปตั้งแต่ติดตั้ง หมดปัญหาNo module named 'requests'หรือwerkzeugโดยไม่ต้องต่อเน็ตดาวน์โหลด wheel จาก PyPI - Foreground Service: รันเป็นบริการเบื้องหลังพร้อมแจ้งเตือนสถานะ (
specialUseService) ไม่ถูก Android ฆ่าโปรเซสเมื่อสลับไปเปิดแอปเกม - Network Ports:
- Dispatch Server (HTTP / Flask):
127.0.0.1:21000 - Gameserver Forward (KCP Packet):
127.0.0.1:23301
- Dispatch Server (HTTP / Flask):
- Live Terminal Console: หน้าจอแสดงผล Log การทำงานของเซิร์ฟเวอร์แบบเรียลไทม์ พร้อมปุ่มคัดลอก (Copy) และล้างหน้าจอ (Clear)
2. 🛠️ เครื่องมือปรับแต่งและปุ่มต่างๆ ของเซิร์ฟเวอร์ (Server Tools)
- 🔑 Set Password / Key: มีหน้าต่างกำหนดรหัสผ่านเซิร์ฟเวอร์ (
key) ในpersistent.json - 👤 Edit Trailblazer: ปรับแต่งเพศตัวเอก (หญิง Stelle / ชาย Caelus) และ Path (ทำลายล้าง, อนุรักษ์, ประสาน, ลบล้าง, ปิติสุข) รวมถึง March 7th ได้ทันที
- ⭐ EX Eidolon (3 EX Rank) Manager: เปิด/ปิดการทำงานของระบบ 3 EX Eidolon ปลดล็อกสกิลพิเศษสำหรับตัวละครยอดฮิต (JingYuan [1204], DanHeng IL [1213], Acheron [1308]) ได้สะดวกจากหน้าจอมือถือ พร้อมปุ่ม Enable/Disable All
- ⚡ Send Hotfix (Online / Offline Toggle): สลับโหมด
send_hotfixในคลิกเดียว:- เปิด (True): สำหรับต่อเน็ตดึง Assets จาก Hoyoverse
- ปิด (False): สำหรับเล่นแบบออฟไลน์ 100% (ช่วยแก้ปัญหาเปิดเกมแล้วจอดำ)
- 📁 Misc Files Explorer & Editor: ตัวจัดการไฟล์ในโฟลเดอร์
misc/ในตัว สามารถเปิดดูและแก้ไขไฟล์คอนฟิกต่างๆ เช่นconfig.json,hotfix.json,freesr-data.json,persistent.jsonได้สดๆ ภายในแอป
3. 🔄 ระบบอัปเดตคู่ (Dual Update System)
- 📱 App Updater (อัปเดตตัวแอป APK):
- ตรวจสอบเวอร์ชันล่าสุดของแอปผ่าน GitHub Releases อัตโนมัติในพื้นหลังเมื่อเปิดแอป
- มีปุ่ม "Check App Update" พร้อมปุ่มเลือก Channel Selector สลับระหว่าง:
- 🟢 Latest (Stable): รับเวอร์ชันเสถียร
- 🟡 Pre-release (Beta): รับเวอร์ชันทดสอบล่วงหน้า
- ดาวน์โหลดและติดตั้งไฟล์ APK อัปเดตได้ทันทีจากในแอป
- ⚙️ ppSR Server Core Updater (อัปเดตไฟล์เซิร์ฟเวอร์):
- ซิงค์ตรงกับ File Garden (
VERSIONS&build.zip) - ตรวจสอบเวอร์ชันที่ติดตั้งเทียบกับเวอร์ชันล่าสุดอย่างแม่นยำ (แสดงสถานะ "You are using the latest version" เมื่อเวอร์ชันตรงกัน)
- ระบบติดตั้งแบบ Staging ป้องกัน Zip Slip และสำรองไฟล์คอนฟิกผู้ใช้ (
persistent.json,config.json) โดยใช้วิธี Smart Schema Merge ไม่เขียนทับบล็อกข้อมูลตัวละคร (avatar) ข้อมูลไม่หายและไม่เกิดบั๊ก - เมนู Select Version Archive เลือกติดตั้งเวอร์ชันเก่าหรือใหม่ย้อนหลังได้อิสระ
- ซิงค์ตรงกับ File Garden (
4. 🗺️ ตัวเลือกโลกและวาร์ปแผนที่ (Escape Penacony Teleporter)
- ครอบคลุม 8 ดวงดาว 86 ฉาก/แผนที่ จาก
scenes.json(Astral Express, Space Station, Jarilo-VI, Xianzhou Luofu, Penacony, Amphoreus / Planarcadia ฯลฯ) - รองรับแมพ Beta ล่าสุด: เพิ่มฉาก Moment of Joy (Planarcadia Beta) [Plane ID: 20572] พร้อมระบบ Scene Cache Auto-Bust
- ระบบค้นหาและฟิลเตอร์: ค้นหาชื่อฉากหรือ Plane ID และแยกแท็กชัดเจน:
- ⚔️ Combat Ready: มีเสา Calyx สำหรับต่อสู้
- 🗺️ Safe Explore: เสา Calyx ซ่อนที่ความลึก Y=-999999 ปลอดภัยจากการแครช
- 🧪 Beta Exclusive: ฉากพิเศษสำหรับไคลเอนต์เบต้า
- Custom Coordinates: กรอก Plane ID, X, Y, Z และ Map Layer ที่กำหนดเองได้อิสระ
- Smart Teleport Flow: หากเซิร์ฟเวอร์กำลังทำงาน ระบบจะหยุดชั่วคราว
\rightarrowเขียนไฟล์persistent.json(UTF-8 No BOM)\rightarrowรีสตาร์ตเซิร์ฟเวอร์ให้ใหม่อัตโนมัติ - รองรับ 3 ภาษา: สลับระหว่าง ภาษาไทย (TH), English (EN), และ 简体中文 (ZH) ได้ทันที
5. 🛡️ ระบบป้องกันการแครชและซ่อมแซมตัวเอง (Self-Healing & Crash Guard)
- SafeDict Runtime: ห่อหุ้ม
Manager.persistentด้วยSafeDictคืนค่า Fallback Schema มาตรฐานทันทีหากตรวจพบคีย์ขาดหาย ป้องกันKeyError: 'avatar'(Error 1001_1 / 1001_3) ไม่ให้เซิร์ฟเวอร์หลุด - Router Packet Isolation: ดักจับ Unhandled Exception ใน Handler เพื่อไม่ให้คำขอเดี่ยวของเกมล่ม Thread
read_loop - Persistent Auto-Healing: ซ่อมแซมและตรวจสอบความสมบูรณ์ของ
persistent.jsonอัตโนมัติทันทีที่เปิดแอป และก่อนเริ่มเซิร์ฟเวอร์ - Werkzeug Android Patch: แก้ปัญหา
importlib.metadata.PackageNotFoundErrorบน Android WSGI Dispatch Server
🏗️ โครงสร้างโปรเจกต์ (Project Structure)
Escape-penacony-standalone/
├── app/
│ ├── build.gradle.kts
│ ├── libs/
│ │ └── chaquopy_java.jar # Chaquopy Java API Runtime
│ └── src/
│ ├── main/
│ │ ├── AndroidManifest.xml # Foreground Service & Permissions
│ │ ├── assets/
│ │ │ ├── scenes.json # ฐานข้อมูลแผนที่ 8 โลก 85 แมพ
│ │ │ └── chaquopy/ # Chaquopy stdlib, bootstrap & app.imy
│ │ ├── jniLibs/arm64-v8a/ # Native libraries (libpython3.14.so ฯลฯ)
│ │ ├── python/ # Python scripts (run_ppsr.py, loader.py)
│ │ └── java/com/catlas/escapepenacony/
│ │ ├── MainActivity.kt # Main Activity & Permission requests
│ │ ├── service/
│ │ │ └── ServerService.kt # Foreground Service จัดการ Python lifecycle
│ │ ├── data/
│ │ │ ├── PersistentRepository.kt # จัดการ persistent.json & misc files
│ │ │ ├── UpdateRepository.kt # ดาวน์โหลดและติดตั้ง build.zip จาก AFN
│ │ │ └── SceneRepository.kt # โหลดและแปลงพิกัดฉากจาก scenes.json
│ │ ├── model/
│ │ │ ├── SceneModels.kt # โมเดลข้อมูล Planet & Scene
│ │ │ └── PersistentConfig.kt # โครงสร้าง Config พิกัด
│ │ └── ui/
│ │ ├── MainScreen.kt # Compose UI หน้าจอหลัก 3 แท็บ
│ │ ├── Components.kt # Reusable UI widgets
│ │ └── theme/ # Cyberpunk Dark Theme
│ └── test/java/com/catlas/escapepenacony/
│ └── UpdateAndSceneTest.kt # Automated Unit Tests
├── gradle/
│ └── libs.versions.toml
├── build.gradle.kts
└── settings.gradle.kts
🛠️ วิธีการบิลด์ (How to Build)
คอมไพล์ผ่าน Command Line:
# ทดสอบ Unit Tests ทั้งหมด
./gradlew test
# สร้างไฟล์ Debug APK
./gradlew assembleDebug
# สร้างไฟล์ Release APK
./gradlew assembleRelease
ไฟล์ APK ที่บิลด์เสร็จแล้วจะอยู่ที่:
app/build/outputs/apk/release/app-release.apk- หรือตัวสำเนาที่ root โฟลเดอร์:
Escape-penacony-standalone-v1.2.1.apk
📜 บันทึกการเปลี่ยนแปลง (Changelog)
v1.2.1 (Build 9)
- App Updater Crash Fix: แก้ไขปัญหาแอปปิดตัวลงกะทันหัน (Force Close/Crash) ขณะกดอัปเดตแอป:
- เพิ่มสิทธิ์
REQUEST_INSTALL_PACKAGESในAndroidManifest.xmlให้สอดคล้องกับมาตรการความปลอดภัยบน Android 8.0 - 15 - ขยายการกำหนดค่า
FileProvider(file_paths.xml) รองรับ Storage Path ทั้ง internal files, cache, external storage ครอบคลุมมือถือทุกรุ่น - ปรับปรุง
AppUpdateManagerให้รองรับ HTTP Redirects แบบ Multi-hop (เช่น GitHub Assets CDN) และตรวจสอบความสมบูรณ์ของไฟล์ APK ก่อนติดตั้ง - ครอบ Intent Launch ด้วย Error Handling แบบปลอดภัย พร้อมแจ้งเตือนผู้ใช้หากยังไม่ได้เปิดสิทธิ์ Unknown Sources แทนการหยุดทำงานของแอป
- เพิ่มสิทธิ์
- Scrollable Changelog: ปรับกล่องข้อความบันทึกการเปลี่ยนแปลงในหน้าต่างอัปเดตให้สามารถเลื่อนอ่าน (Vertical Scroll) ได้อย่างอิสระ ไม่ถูกตัดบรรทัด
- Release Title Display: แสดงหัวข้อการอัปเดต (Release Title) ชัดเจนทั้งในหน้าต่างแจ้งเตือนและแผง Updater Tab
v1.2.0 (Build 8)
- New Feature - EX Eidolon (3 EX Rank) Manager: เพิ่ม UI หน้าต่างปรับแต่งและเปิด/ปิดระบบ 3 EX Eidolon สำหรับตัวละครพิเศษ:
- JingYuan (จิ่งหยวน) [Avatar ID: 1204]
- DanHeng IL (จ้าวยลจันทรา) [Avatar ID: 1213]
- Acheron (อาเคอรอน) [Avatar ID: 1308]
- SafeDict & Auto-Heal Protection: อัปเดตโครงสร้าง Default Persistent และ SafeDict ใน Python Runtime รองรับคีย์
ex_rankครบถ้วน หมดกังวลเรื่อง KeyError - UI Quick Tools Refactor: ปรับปรุงแผงควบคุม Server Tools เป็นรูปแบบ 2x2 Grid (Password, Trailblazer, EX Eidolon, Misc Files)
- Smart Update Persistence: ปรับระบบผสานข้อมูลตอนอัปเดตเซิร์ฟเวอร์ ให้คงการตั้งค่า
ex_rankของผู้ใช้ไว้อย่างปลอดภัย
v1.1.4 (Build 7)
- Critical Fix: แก้ปัญหา Error 1001_1 และ 1001_3 (
KeyError: 'avatar') ในGetBasicInfoCsReqที่ทำให้ Threadread_loopเซิร์ฟเวอร์ปิดตัวลง - SafeDict Runtime: ห่อหุ้ม
Manager.persistentด้วยSafeDictคืนค่า Fallback Schema อัตโนมัติ ป้องกันKeyErrorสำหรับทุกคีย์ข้อมูลตัวละคร - Router Crash Guard: ดักจับ Unhandled Exceptions ใน Packet Handler ไม่ให้เซิร์ฟเวอร์หลักล่ม
- Auto-Heal Persistent Storage: ตรวจสอบและซ่อมแซมไฟล์
persistent.jsonอัตโนมัติเมื่อเปิดแอปและก่อนสตาร์ทเซิร์ฟเวอร์ - Smart Update Migration: ผสานคอนฟิกเดิมของผู้ใช้เข้ากับแม่แบบโครงสร้างที่สมบูรณ์ ป้องกันข้อมูลตัวละครสูญหายตอนอัปเดตเซิร์ฟเวอร์
- New Beta Scene: เพิ่มฉาก "Moment of Joy (Planarcadia Beta)" [Plane ID: 20572] พร้อมระบบ Auto Cache-Bust
- App Update Channel Selector: เพิ่มตัวเลือกรับอัปเดตแอปช่องทาง Latest (Stable) หรือ Pre-release (Beta)
📄 License
This tool is for educational, research, and offline testing purposes only. All game data rights belong to their respective creators and owners.
Languages
Kotlin
89.6%
Python
10.4%