docs: translate Aha's Help and Stella Jump to Thai and update English README
This commit is contained in:
1 parent
72f310a68d
commit
499fcecee5
2 files changed
+80
-36
No files matched your search
+52
-8
@@ -1,9 +1,9 @@
|
||||
# 🚂 GaC hkrpg GO
|
||||
# 🚂 GaCy GO
|
||||
|
||||
<div align="center">
|
||||
|
||||
**Modern, High-Performance Honkai: Star Rail Game Server Emulator in Go**
|
||||
Ported from `GaC-hkrpg-ps` with protocol references from `PearlSR` & `Currency-War-SR`.
|
||||
Ported from [`GaC-hkrpg-ps`](https://github.com/CAtlas0784/GaC-hkrpg-rust) with protocol references from `PearlSR` & `Currency-War-SR`.
|
||||
|
||||
[English](README_EN.md) | [ภาษาไทย](../README.md)
|
||||
|
||||
@@ -15,22 +15,64 @@ Ported from `GaC-hkrpg-ps` with protocol references from `PearlSR` & `Currency-W
|
||||
|
||||
<div align="center">
|
||||
|
||||
[Documentation](./) • [Getting Started](#-getting-started-on-windows) • [Configuration](#-configuration--anti-hardcoding-policy-agentsmd) • [Credits & Acknowledgments](#-credits--acknowledgments)
|
||||
[Documentation](./) • [Getting Started](#-getting-started-on-windows) • [Features & In-Game Systems](#-features--in-game-systems) • [Configuration](#-configuration--anti-hardcoding-policy-agentsmd) • [Credits & Acknowledgments](#-credits--acknowledgments)
|
||||
|
||||
</div>
|
||||
|
||||
Honkai: Star Rail game server emulator implemented in Go, ported from `GaC-hkrpg-ps` and referencing [PearlSR](https://git.xeondev.com/HonkaiSlopRail/pearl-sr). It includes the Game Server, SDK/Dispatch Server, and REST API for GaC-Srtool.
|
||||
Honkai: Star Rail game server emulator implemented in Go, ported from [`GaC-hkrpg-ps`](https://github.com/CAtlas0784/GaC-hkrpg-rust) and referencing [PearlSR](https://git.xeondev.com/HonkaiSlopRail/pearl-sr). It includes the Game Server, SDK/Dispatch Server, and REST API for GaCy-Srtool.
|
||||
|
||||
The project is currently under active development, targeting Client **4.6.53 OS**. Command tables and recent handlers reference PearlSR commit `005d2c12db4781071f4b5b68e8f364587886a710` (see [protocol update documentation](protocol-update.md)). Schema parity does not imply that every in-game feature is fully operational.
|
||||
|
||||
### 🎮 Currency Wars (CW) — In Development
|
||||
|
||||
- **Autochess Simulation Engine**: Ported from [Currency-War-SR by xaodev](https://gaytea.cod-algieba.ts.net/xaodev/Currency-War-SR), implementing encounter generation following supply nodes, difficulty/selection matrix, and mode/chapter/boss EXP progression while maintaining verified battle paths. Full audit details in [CW xaodev handoff](CW-XAODEV-CLAUDE-HANDOFF.md) and [CW route continuation audit](cw-route-continuation-audit.md).
|
||||
- **Time Simulation (FakeTime)**: In GaC-Srtool, use `/faketime status` to view current game time, `/faketime <Unix seconds>` or `/faketime <RFC3339 datetime>` to set simulated time, and `/faketime off` to restore real-time clock. Persisted in `game_clock.state_file` (override with `GAC_GAME_CLOCK_STATE_FILE`). Affects login and heartbeats without altering OS system clocks or network timeouts.
|
||||
- **Time Simulation (FakeTime)**: In GaCy-Srtool, use `/faketime status` to view current game time, `/faketime <Unix seconds>` or `/faketime <RFC3339 datetime>` to set simulated time, and `/faketime off` to restore real-time clock. Persisted in `game_clock.state_file` (override with `GAC_GAME_CLOCK_STATE_FILE`). Affects login and heartbeats without altering OS system clocks or network timeouts.
|
||||
- **Cyrene Train Login Scene**: Operational via `LoginShow_UP` manifest and bound to animation finish events, rendering the white train, pink-purple sky, petals, and clean logout/re-login transitions. Details in [Login scene notes](login-cyrene-investigation.md).
|
||||
- **Emergency Unstuck via GaC-Srtool**: The **Unstuck** button in the GM Command Console issues `POST /api/client/unstuck`, executing `UIManager.ClearWaitNetPacketFullScreenBlock()` on the next client heartbeat. Safely unfreezes UI blocks without clearing CW saves or fabricating gameplay states.
|
||||
- **Emergency Unstuck via GaCy-Srtool**: The **Unstuck** button in the GM Command Console issues `POST /api/client/unstuck`, executing `UIManager.ClearWaitNetPacketFullScreenBlock()` on the next client heartbeat. Safely unfreezes UI blocks without clearing CW saves or fabricating gameplay states.
|
||||
- **Roster & Star Merging**: Automatic 3-copy star promotion for duplicate avatars, equipment binding and tracking from Preparation screen, and protagonist spotlight selection policies.
|
||||
|
||||
#### CW Preparation Commands
|
||||
- `/cw status`: Display saved round, gold, HP, and player level.
|
||||
- `/cw gold <amount>`: Set CW currency (e.g. `/cw gold 1000`).
|
||||
- `/cw hp <amount>`: Set current HP within maximum stage allowance.
|
||||
- `/cw exp <gain>`: Add EXP and apply captured level/capacity/shop-weight rules.
|
||||
- `/cw list role`: List captured RoleID, AvatarID, and supported star ratings.
|
||||
- `/cw role <RoleID> <star> [count]`: Add bench roles with automatic star merges; a full bench cancels the entire transaction.
|
||||
- `/cw list equip`: List captured equipment IDs.
|
||||
- `/cw equip <ItemID> [count]`: Add equipment into the CW inventory bag.
|
||||
- `/cw list orb|consumable|forge`: List captured reward and forge IDs.
|
||||
- `/cw orb|consumable|forge <ItemID> [count]`: Grant those items during Preparation.
|
||||
- `/cw help`: Display full command syntax.
|
||||
|
||||
---
|
||||
|
||||
### ✨ Features & In-Game Systems
|
||||
|
||||
#### Aha's Help
|
||||
|
||||
GaCy-Srtool's Persistent settings include an independent Aha's Help selector. Levels come from `resources/AhaHelpConfig.json`, based on the supplied buff table. `GET /api/aha-help` returns available levels; `POST /api/aha-help` accepts `{"level":1}`, zero to disable, or null to use the existing FreeSR invasion-support setting. The setting is stored atomically in `persistent.aha_help_level`, preserving CW and EX state.
|
||||
|
||||
The selected buff applies at the start of the next battle containing an actual Corruption buff from `BattleRules.json`'s invasion mapping. This includes srtool custom battles with imported Corruption buffs. Official challenges continue to resolve their Corruption from `StageInvasionConfig.json`; reusing a stage ID alone does not inject Corruption into a custom battle. The selected level replaces other Aha support levels; explicit zero removes support for that Corruption battle. Null follows FreeSR's `enable_invasion_support`; the web selector shows whether that legacy switch is enabled. This setting is separate from Aha Global and does not change an ongoing battle. `AHA_HELP` in `server_debug.log` records the corruption and support IDs sent. The table's `BuffLevel` selects the distinct buff ID; the existing protocol buff-level encoding is retained. Progress thresholds are metadata, not an invented dynamic key. Client behavior and animations still require gameplay verification.
|
||||
|
||||
#### Stella Jump, Event Previews & Featured Gacha
|
||||
|
||||
`resources/StellaJumpConfig.json` contains the 16 ChenLing GameBoy cases captured from the current Client. The sandbox exposes each case's challenge packs and saves actual best times/completions under `persistent.stella_jump`. Opening a menu is read-only. Cheats have separate saved flags; their obfuscated request/response names remain tied to the checked-in command revision and require Client verification.
|
||||
|
||||
`resources/ActivityPreviewPolicy.json` selects event-panel prefabs from `PreviewGameplayCatalog.json`. Additional previews are currently withheld: Client logs showed missing reward assets and invalid item lookups in ActiveActivity. Re-enable individual panels only after validating their installed assets, module identity and reward dependencies. Event-specific battles and reward claims remain incomplete.
|
||||
|
||||
Featured gacha candidates come from captured character-banner prefab rows. The current capture has two candidates, but the installed Client could not load the Seele prefab and left the UI transition incomplete. Runtime `AssetMgr.Exists` checks confirmed Standard and Beginner assets, but none of the four captured limited assets. `GachaSandboxPolicy.json` currently exposes only the verified Standard panel for browsing; draws return `RET_GACHA_NOT_SUPPORT` until usable featured assets are verified. An empty verified list rejects entry as well. A table row alone is insufficient evidence of an installed asset; verify the Client bundle before adding a path to that list. The grant implementation returns the pictured character and configured duplicate Eidolon material, preserving rank/EX/Traces; it is not yet verified in the Client. An avatar absent from the imported roster is rejected. The sandbox policy uses free draws and does not reproduce official rates or conversion rules.
|
||||
|
||||
Runtime table captures and current verification limits are recorded in [docs/offline-gameplay-continuation.md](offline-gameplay-continuation.md). Compiling these handlers does not confirm the corresponding Client screens or gameplay.
|
||||
|
||||
#### Freecam & FaceCam Controls
|
||||
|
||||
- `Tab`: Toggle Freecam / FaceCam; Arrow keys: Move camera; Hold Right Mouse Button and move mouse to rotate orientation.
|
||||
- `Page Up` / `Page Down`: Raise / lower elevation; `+` / `-`: Increase / decrease camera speed.
|
||||
- FaceCam aligns the viewport with the active character's animated head direction and follows transformed battle characters (e.g., Khaslana). Scroll wheel adjusts zoom distance.
|
||||
- While Freecam is active in battle, UI click interception is safely suspended via `InControlInputModule.allowMouseInput` and temporary mouse bindings in memory, while keyboard skill activation remains functional.
|
||||
|
||||
---
|
||||
|
||||
### 🚀 Getting Started on Windows
|
||||
|
||||
#### Requirements
|
||||
@@ -53,6 +95,8 @@ The project is currently under active development, targeting Client **4.6.53 OS*
|
||||
|
||||
SDK and Game servers launch in separate visible console windows displaying live logs. The interactive launcher menu closes automatically after 5 seconds while server processes remain running. Use `run.bat stop` or close console windows to terminate.
|
||||
|
||||
---
|
||||
|
||||
### ⚙️ Configuration & Anti-Hardcoding Policy (`AGENTS.md`)
|
||||
|
||||
`AGENTS.md` strictly prohibits hardcoding machine-specific paths, usernames, IP addresses, ports, or game deployment URLs directly into source code or startup scripts.
|
||||
@@ -80,7 +124,7 @@ Priority Order: **Environment Variables > `server.local.json` > `server.json`**
|
||||
|
||||
### 💖 Credits & Acknowledgments
|
||||
|
||||
`GaC-hkrpg-go` is built upon the collective research, tools, and pioneering reverse-engineering efforts of the open-source and Star Rail research communities. We extend our sincere gratitude and recognition to the following projects and authors:
|
||||
`GaCy GO` is built upon the collective research, tools, and pioneering reverse-engineering efforts of the open-source and Star Rail research communities. We extend our sincere gratitude and recognition to the following projects and authors:
|
||||
|
||||
<details open>
|
||||
<summary><b>🏛️ Server Architecture & Protocol</b></summary>
|
||||
@@ -111,7 +155,7 @@ Priority Order: **Environment Variables > `server.local.json` > `server.json`**
|
||||
- Core simulation engine for Currency Wars (Grid Fight autochess) 4.6.53.
|
||||
- Role/traits matrix, post-supply encounter generation logic, difficulty scaling, and EXP progression rules (`internal/common/currency_wars_xaodev.go`, `internal/gameserver/currency_wars_xaodev.go`, `resources/CurrencyWarsXaodev.json`).
|
||||
|
||||
- **minatoSR**:
|
||||
- **minatoSR ([haltinggoalies/minatoSR](https://github.com/haltinggoalies/minatoSR))**:
|
||||
- NPC placement coordinates and stage overrides for all 40 nodes of Challenge Peak / Anomaly Arbitration (AA) in `resources/ChallengePeakSceneOverrides.json`.
|
||||
|
||||
</details>
|
||||
|
||||
Reference in new issue
Block a user