126 lines
8.7 KiB
Markdown
126 lines
8.7 KiB
Markdown
# 📱 GaCy Android
|
|||
|
|
|
||
|
|
<div align="center">
|
||
|
|
|
||
|
|
**Modern, High-Performance Mobile Companion & Server Manager for the GaCy Ecosystem**
|
||
|
|
Built with **Kotlin**, **Jetpack Compose**, and **Material Design 3**.
|
||
|
|
|
||
|
|
[-3DDC84?style=flat&logo=android)](https://developer.android.com/)
|
||
|
|
[](https://kotlinlang.org/)
|
||
|
|
[](https://developer.android.com/jetpack/compose)
|
||
|
|
[](https://developer.android.com/ndk)
|
||
|
|
[](https://opensource.org/licenses/MIT)
|
||
|
|
|
||
|
|
[English](#-english) | [ภาษาไทย](#-ภาษาไทย)
|
||
|
|
|
||
|
|
</div>
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🇹🇭 ภาษาไทย
|
||
|
|
|
||
|
|
### ✨ ฟีเจอร์หลัก (Key Features)
|
||
|
|
|
||
|
|
* **🎮 ระบบจัดการเซิร์ฟเวอร์แบบ Dual-Mode (Local & Remote Server Management):**
|
||
|
|
* **โหมด Local Embedded:** รันเซิร์ฟเวอร์จำลองภายในอุปกรณ์ Android โดยตรงผ่าน Android Foreground Service (`specialUse`) ไม่ถูกระบบฆ่าขณะสลับไปเล่นเกม
|
||
|
|
* **โหมด Remote Host:** เชื่อมต่อและควบคุมเซิร์ฟเวอร์ GaCy-GO บน PC ผ่าน Wi-Fi/LAN พร้อมระบบทดสอบค่าความหน่วง (Ping Latency Test)
|
||
|
|
* **Live Terminal Console:** หน้าต่างแสดงผล Log การทำงานของเซิร์ฟเวอร์แบบ Real-time พร้อมปุ่มคัดลอก (Copy) และล้างหน้าจอ (Clear)
|
||
|
|
* **🗺️ ระบบวาร์ปแผนที่ 8 โลก 86 ฉาก (Escape Penacony Teleport Engine):**
|
||
|
|
* ครอบคลุม **8 ดวงดาว 86+ ฉาก** จากฐานข้อมูล `scenes.json` (Astral Express, Herta Space Station, Jarilo-VI, Xianzhou Luofu, Penacony, และแมพเบต้าล่าสุดอย่าง Amphoreus / Planarcadia Beta `20572`)
|
||
|
|
* ระบบตัวกรองอัจฉริยะ: ⚔️ **Combat Ready** (มีเสา Calyx สำหรับต่อสู้), 🗺️ **Safe Explore** (เดินเล่นปลอดภัย), 🧪 **Beta Exclusive** (ฉากพิเศษสำหรับเบต้า)
|
||
|
|
* ค้นหาฉากได้รวดเร็วทั้งภาษาไทย ภาษาอังกฤษ ภาษาจีน หรือกรอก Plane ID
|
||
|
|
* **Custom Coordinates Teleport:** กรอกพิกัด Plane ID, X, Y, Z, Map Layer เองได้อิสระ
|
||
|
|
* ระบบบันทึกไฟล์คอนฟิก `persistent.json` แบบ **Atomic Operation** ปลอดภัย 100% ไม่สร้างความเสียหายแก่ข้อมูลตัวละคร
|
||
|
|
* **⚡ คอนโซลคำสั่ง GM บนมือถือ & เชื่อมต่อ GaCy SRTool:**
|
||
|
|
* **Emergency Unstuck:** ปุ่มปลดบล็อกตัวละครเร่งด่วนผ่าน Heartbeat API (`/api/client/unstuck`) กู้คืนอาการเกมค้าง
|
||
|
|
* **Mobile GM Command Prompt:** พิมพ์และส่งคำสั่ง GM (`/give`, `/avatar`, `/faketime`) ตรงไปยังเซิร์ฟเวอร์ พร้อมปุ่มคีย์ลัดคำสั่งยอดฮิต
|
||
|
|
* **GaCy SRTool Web Integration:** ปุ่มลัดเปิดหน้าจัดการกระเป๋า ตัวละคร และสร้าง Relic ผ่าน [GaCy SRTool Web](https://gacy-srtool.vercel.app/)
|
||
|
|
* **🛠️ เครื่องมือปรับแต่งตัวละครและเซิร์ฟเวอร์ (Character & Server Configurator):**
|
||
|
|
* **🔑 Server Key / Password:** ตั้งรหัสผ่านเซิร์ฟเวอร์เพื่อความปลอดภัย
|
||
|
|
* **👤 Trailblazer Configurator:** สลับเพศผู้บุกเบิก (Stelle หญิง / Caelus ชาย) และเลือก Path (ทำลายล้าง, อนุรักษ์, ประสาน, ลบล้าง, ปิติสุข) ได้ทันที
|
||
|
|
* **⭐ 3 EX Eidolon (Rank) Manager:** สลับเปิด/ปิดสกิลพิเศษ 3 EX สำหรับตัวละครยอดนิยม (JingYuan [1204], DanHeng IL [1213], Acheron [1308])
|
||
|
|
* **⚡ Send Hotfix (Online/Offline Toggle):** เปิดสำหรับดาวน์โหลด Assets ออนไลน์จาก Hoyoverse หรือปิดเพื่อเล่นแบบออฟไลน์ 100% แก้ปัญหาหน้าจอดำ
|
||
|
|
* **🎨 หน้าต่าง Cyberpunk Dark สวยงาม ลื่นไหล:**
|
||
|
|
* ออกแบบด้วย **Material Design 3** สีสันเข้าชุดกับ G-Launcher Desktop และ GaCy-GO
|
||
|
|
* รองรับ 3 ภาษาภายในตัว: **ภาษาไทย (TH)**, **English (EN)**, และ **简体中文 (ZH)**
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 🏗️ สถาปัตยกรรมระบบ (Architecture)
|
||
|
|
|
||
|
|
```mermaid
|
||
|
|
graph TD
|
||
|
|
subgraph AppLayer [UI Layer: Jetpack Compose]
|
||
|
|
MainUI[MainScreen & Navigation]
|
||
|
|
ServerTab[ServerScreen & Live Terminal]
|
||
|
|
TeleportTab[TeleportScreen & 86 Scenes]
|
||
|
|
SRToolTab[SRToolScreen & GM Console]
|
||
|
|
SettingsTab[SettingsScreen & Network Config]
|
||
|
|
MainUI --> ServerTab
|
||
|
|
MainUI --> TeleportTab
|
||
|
|
MainUI --> SRToolTab
|
||
|
|
MainUI --> SettingsTab
|
||
|
|
end
|
||
|
|
|
||
|
|
subgraph ServiceLayer [Background Services]
|
||
|
|
ServerFGS[ServerService - Foreground Service]
|
||
|
|
LogStream[LogBuffer - Circular StateFlow]
|
||
|
|
ServerFGS --> LogStream
|
||
|
|
LogStream --> ServerTab
|
||
|
|
end
|
||
|
|
|
||
|
|
subgraph DataRepositories [Data & Repository Layer]
|
||
|
|
SceneRepo[SceneRepository - scenes.json Cache]
|
||
|
|
PersistRepo[PersistentRepository - persistent.json]
|
||
|
|
ApiRepo[GaCyApiRepository - OkHttp Client]
|
||
|
|
PrefsRepo[PreferencesRepository - SharedPreferences]
|
||
|
|
end
|
||
|
|
|
||
|
|
subgraph GameEcosystem [GaCy Ecosystem & Storage]
|
||
|
|
GameServer[GaCy-GO Server / Remote PC]
|
||
|
|
PersistentData[persistent.json / misc Configs]
|
||
|
|
SRToolWeb[GaCy SRTool Web Application]
|
||
|
|
StarRailClient[Star Rail Game Client Android]
|
||
|
|
end
|
||
|
|
|
||
|
|
ServerTab --> PersistRepo
|
||
|
|
ServerTab --> ServerFGS
|
||
|
|
TeleportTab --> SceneRepo
|
||
|
|
TeleportTab --> PersistRepo
|
||
|
|
SRToolTab --> ApiRepo
|
||
|
|
SettingsTab --> PrefsRepo
|
||
|
|
|
||
|
|
PersistRepo --> PersistentData
|
||
|
|
ApiRepo --> GameServer
|
||
|
|
SRToolTab -.-> SRToolWeb
|
||
|
|
StarRailClient -.-> GameServer
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🚀 วิธีการคอมไพล์และเปิดโปรเจกต์ (Build & Run)
|
||
|
|
|
||
|
|
### ความต้องการของระบบ (Requirements)
|
||
|
|
* **Android Studio** (Ladybug / Koala หรือใหม่กว่า)
|
||
|
|
* **Java Development Kit (JDK)**: JDK 17 หรือ 21
|
||
|
|
* **Android SDK**: Compile SDK 35 (Android 15), Min SDK 26 (Android 8.0)
|
||
|
|
|
||
|
|
### 1. เปิดด้วย Android Studio
|
||
|
|
1. เปิดโปรแกรม **Android Studio**
|
||
|
|
2. เลือก **Open** แล้วนำทางไปยังโฟลเดอร์ `GaCy Android`
|
||
|
|
3. รอระบบ Gradle ซิงค์ไลบรารีทั้งหมดให้เสร็จสิ้น
|
||
|
|
|
||
|
|
### 2. คอมไพล์ผ่าน Command Line
|
||
|
|
```powershell
|
||
|
|
# คอมไพล์ไฟล์ APK โหมด Debug
|
||
|
|
.\gradlew.bat assembleDebug
|
||
|
|
|
||
|
|
# ไฟล์ APK จะถูกสร้างไว้ที่:
|
||
|
|
# app/build/outputs/apk/debug/app-debug.apk
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📜 กฎของโปรเจกต์ (Repository Rules)
|
||
|
|
* **ห้าม Hardcode ค่าเฉพาะเครื่อง:** ค่า IP, Port, และการตั้งค่าต่างๆ ต้องอ่านและบันทึกผ่าน `PreferencesRepository` หรือ `PersistentRepository`
|
||
|
|
* **ระบบจัดการไฟล์แบบ Atomic:** การแก้ไขไฟล์ `persistent.json` ต้องเขียนลงไฟล์ `.tmp` ก่อนสลับชื่อ เพื่อป้องกันข้อมูลตัวละครหรือเซฟเสียหาย
|