Files
Escape-penacony-standalone/README.md
T

117 lines
10 KiB
Markdown

# Escape Penacony Standalone 📱✨
## ppSR All-in-One Server & Map Teleporter - Native Android Application
**Escape Penacony Standalone** เป็นแอปพลิเคชัน Android แบบ All-in-One ที่รวมทั้ง **ตัวรันเซิร์ฟเวอร์จำลอง ppSR (Embedded Python 3.14)**, **ตัวอัปเดตเซิร์ฟเวอร์ตรงจากต้นทาง AFN**, **ระบบวาร์ปแผนที่ 85 ฉาก**, และ **เครื่องมือปรับแต่งเซิร์ฟเวอร์** ไว้ในแอปเดียวจบ **โดยไม่ต้องใช้สิทธิ์ Root, ไม่ต้องใช้ Shizuku และไม่ต้องติดตั้งแอป com.afn.ppSR แยกต่างหาก**
- **Application ID / Package**: `com.catlas.escapepenacony`
- **เวอร์ชันล่าสุด (Current Version)**: `v1.1.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:** รันเป็นบริการเบื้องหลังพร้อมแจ้งเตือนสถานะ (`specialUse` Service) ไม่ถูก Android ฆ่าโปรเซสเมื่อสลับไปเปิดแอปเกม
- **Network Ports:**
- Dispatch Server (HTTP / Flask): `127.0.0.1:21000`
- Gameserver Forward (KCP Packet): `127.0.0.1:23301`
- **Live Terminal Console:** หน้าจอแสดงผล Log การทำงานของเซิร์ฟเวอร์แบบเรียลไทม์ พร้อมปุ่มคัดลอก (Copy) และล้างหน้าจอ (Clear)
### 2. 🛠️ เครื่องมือปรับแต่งและปุ่มต่างๆ ของเซิร์ฟเวอร์ (Server Tools)
- **🔑 Set Password / Key:** มีหน้าต่างกำหนดรหัสผ่านเซิร์ฟเวอร์ (`key`) ใน `persistent.json`
- **👤 Edit Trailblazer:** ปรับแต่งเพศตัวเอก (หญิง Stelle / ชาย Caelus) และ Path (ทำลายล้าง, อนุรักษ์, ประสาน, ลบล้าง, ปิติสุข) รวมถึง March 7th ได้ทันที
- **⚡ 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"** ให้กดตรวจหาและดาวน์โหลดติดตั้ง APK เวอร์ชันใหม่ได้ทันทีจากในแอป
- **⚙️ ppSR Server Core Updater (อัปเดตไฟล์เซิร์ฟเวอร์):**
- ซิงค์ตรงกับ File Garden (`VERSIONS` & `build.zip`)
- ตรวจสอบเวอร์ชันที่ติดตั้งเทียบกับเวอร์ชันล่าสุดอย่างแม่นยำ (แสดงสถานะ "You are using the latest version" เมื่อเวอร์ชันตรงกัน)
- ระบบติดตั้งแบบ Staging ป้องกัน Zip Slip และสำรองไฟล์คอนฟิกผู้ใช้ (`persistent.json`, `config.json`) ให้อัตโนมัติ เซฟไม่หาย 100%
- เมนู **Select Version Archive** เลือกติดตั้งเวอร์ชันเก่าหรือใหม่ย้อนหลังได้อิสระ
### 4. 🗺️ ตัวเลือกโลกและวาร์ปแผนที่ (Escape Penacony Teleporter)
- ครอบคลุม **8 ดวงดาว 85 ฉาก/แผนที่** จาก `scenes.json` (Astral Express, Space Station, Jarilo-VI, Xianzhou Luofu, Penacony ฯลฯ)
- **ระบบค้นหาและฟิลเตอร์:** ค้นหาชื่อฉากหรือ 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)** ได้ทันที
---
## 🏗️ โครงสร้างโปรเจกต์ (Project Structure)
```text
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:
```bash
# ทดสอบ 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.1.0.apk`
---
## 📄 License
This tool is for educational, research, and offline testing purposes only. All game data rights belong to their respective creators and owners.