diff --git a/README.md b/README.md index 3cdacbb..4834f0a 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ Built with **Kotlin**, **Jetpack Compose**, and **Material Design 3**. [![Target ABI](https://img.shields.io/badge/ABI-arm64--v8a-blue?style=flat)](https://developer.android.com/ndk) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) -[English](#-english) | [ภาษาไทย](#-ภาษาไทย) +[ภาษาไทย](README.md) | [English](README_EN.md) | [简体中文](README_ZH.md) diff --git a/README_EN.md b/README_EN.md new file mode 100644 index 0000000..406d551 --- /dev/null +++ b/README_EN.md @@ -0,0 +1,67 @@ +# GaCy Android + +[ภาษาไทย](README.md) | English | [简体中文](README_ZH.md) + +GaCy Android is an Android companion and local server manager for the +GaC-hkrpg-go project. The +port is in progress: the app starts the Go SDK and game servers in a foreground +service, or connects to an existing server. + +## Current status + +- An ARM64 debug build was tested on a physical phone: the user confirmed game + login, in-game map teleport, and restarting the server after an update. +- The Go SDK, shared-data, game-server and KCP tests passed. These checks do not + establish that every game feature works on Android. +- Character settings from the older ppSR runtime are not yet connected to the + Go runtime. `/give` and `/heal` are not implemented by the Go command API. + +## Features + +- Start, stop and restart the local server; connect to a remote server and + monitor its SDK health. +- View and copy server logs, send GM commands and open the SRTool web app. +- Use the game's own map to teleport. There is no separate teleport page in + the app navigation. +- Submit an Unstuck request. The app reports it as queued only when the server + supplies a request ID; this does not confirm the game has processed it. +- Configure the host and ports and display the actual app version in Settings. + +`/max` updates avatar level, promotion and rank while preserving other save +fields. `/teleport [floor_id]` saves the scene for the next game +connection. Both have automated tests but have not been verified in the game. +`/clear lineup` is rejected because the active team cannot be empty. + +## Build + +Requirements: Android SDK 35, JDK 17 or 21, Go, Python, and a local checkout of +GaC-hkrpg-go. The app requires Android 8.0 (API 26) or newer. Normal debug builds +target ARM64. + +```powershell +python tools/package_go_runtime.py +.\gradlew.bat testDebugUnitTest assembleDebug +``` + +The packaging script uses the current Go source and resources, and seeds +player data from committed defaults. The APK is written to +`app/build/outputs/apk/debug/app-debug.apk` and copied to the project root as +`GaCy-Android--debug.apk`. APK files are ignored by Git. + +For the x86_64 emulator, use `--emulator` when packaging and add +`-PgacyEmulator` to the Gradle command. These test executables are not part of +the normal ARM64 build. + +## Runtime and network configuration + +The Go runtime stores its files under the app's private `files/gacy-go` +directory, separate from old ppSR data. An update preserves player data and +existing hotfix entries, while adding new bundled versions. A completely empty +cached version does not override available bundled hotfix data. + +Set the Host in Settings to the address the game client uses to reach the +phone. Use `127.0.0.1` when both run on the same device. Configure the SDK and +game ports as needed; changes apply after restarting the server. Redirecting +the game client's dispatch traffic remains a separate setup step. The Settings +connection test checks the values currently entered; remote monitoring reports +an error after three consecutive failed SDK health checks. diff --git a/README_ZH.md b/README_ZH.md new file mode 100644 index 0000000..1cac78d --- /dev/null +++ b/README_ZH.md @@ -0,0 +1,57 @@ +# GaCy Android + +[ภาษาไทย](README.md) | [English](README_EN.md) | 简体中文 + +GaCy Android 是 GaC-hkrpg-go +的 Android 辅助应用和本地服务器管理器。移植仍在进行中:应用可通过前台服务启动 +Go SDK 和游戏服务器,也可连接已有的远程服务器。 + +## 当前状态 + +- 已在实体手机上测试 ARM64 调试版:用户确认可以登录游戏、使用游戏内地图传送, + 以及在更新后重新启动服务器。 +- Go SDK、共享数据、游戏服务器和 KCP 测试已通过;这不代表所有游戏功能均已在 + Android 客户端验证。 +- 旧版 ppSR 的角色设置尚未接入 Go 运行时。Go 命令 API 尚不支持 `/give` 和 `/heal`。 + +## 功能 + +- 启动、停止和重启本地服务器;连接远程服务器并监控 SDK 健康状态。 +- 查看和复制服务器日志、发送 GM 命令,以及打开 SRTool 网页。 +- 使用游戏内地图传送;应用导航中没有单独的传送页面。 +- 提交 Unstuck 请求。只有服务器返回请求 ID 时,应用才显示请求已排队; + 这不表示游戏已经处理成功。 +- 在设置中配置主机和端口,并显示应用的实际版本。 + +`/max` 修改角色等级、晋阶和星魂,同时保留存档的其他字段。 +`/teleport [floor_id]` 保存下次连接时使用的场景。 +两者已通过自动测试,但尚未在游戏内验证。由于当前队伍不能为空, +`/clear lineup` 会被拒绝。 + +## 构建 + +需要 Android SDK 35、JDK 17 或 21、Go、Python,以及本地 GaC-hkrpg-go 源码。 +应用最低支持 Android 8.0(API 26);普通调试版本面向 ARM64。 + +```powershell +python tools/package_go_runtime.py +.\gradlew.bat testDebugUnitTest assembleDebug +``` + +打包脚本使用当前 Go 源码和资源,并从已提交的默认文件初始化玩家数据。 +APK 输出至 `app/build/outputs/apk/debug/app-debug.apk`,同时复制到项目根目录, +文件名为 `GaCy-Android--debug.apk`。APK 已被 Git 忽略。 + +如果使用 x86_64 模拟器,请在打包时添加 `--emulator`,并在 Gradle 命令中添加 +`-PgacyEmulator`。模拟器测试程序不包含在普通 ARM64 构建中。 + +## 运行时与网络配置 + +Go 运行时数据保存在应用私有目录 `files/gacy-go`,与旧版 ppSR 数据分开。 +更新时保留玩家数据和已有 hotfix 条目,同时加入新版本。若之前查询失败留下完全为空的 +缓存条目,SDK 会优先使用可用的内置 hotfix 数据。 + +在设置中将 Host 填为游戏客户端连接手机所使用的地址;两者在同一台设备上运行时可使用 +`127.0.0.1`。按需配置 SDK 和游戏端口,修改后重启服务器生效。游戏客户端的 dispatch +流量重定向仍需单独设置。连接测试使用当前输入的值;远程模式在 SDK 健康检查连续三次 +失败后报告错误。