mirror of
https://github.com/FlourishingWorld/hk4e.git
synced 2026-02-04 13:02:26 +08:00
Update README.md
This commit is contained in:
76
README.md
76
README.md
@@ -1,5 +1,8 @@
|
|||||||
# hk4e
|
# hk4e
|
||||||
|
|
||||||
|
[中文](README-CN.md)
|
||||||
|
***
|
||||||
|
|
||||||
## What's this
|
## What's this
|
||||||
|
|
||||||
#### A Genshin Impact game server written in Golang.
|
#### A Genshin Impact game server written in Golang.
|
||||||
@@ -16,13 +19,14 @@
|
|||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
* Native high-availability cluster architecture. Crashes on any node servers won't affect the whole system. So it is highly extendable.
|
* Native high-availability cluster architecture. Crashes on any node servers won't affect the whole system. So it is highly extendable
|
||||||
* Player-level non-statued game server. Non-lock single thread structure. Easy to develope. And fully-featured player data exchanger(`Memory<->Cache<->Database`), say goodbye to Deny synchronization-blocked database access
|
* Player-level non-status game server. Non-lock single thread structure. Easy to develope. And fully-featured player data exchanger(`Memory<->Cache<->Database`), say goodbye to
|
||||||
* 新颖的玩家在线跨服无缝迁移功能
|
* synchronization-blocked database access
|
||||||
* 独创的网关服务器侧客户端协议代理转换功能,拒绝因协议号消息号混淆而带来代码改动的烦恼
|
* Grand new cross-server player migration
|
||||||
* 完整的密钥交换机制实现,安全性++,拒绝一个写死的随机数种子和XOR密钥文件用到天荒地老
|
* Gateway server side client protocol proxy conversion. Never worry about code changes caused by confusions of message number and protocol number
|
||||||
|
* Fully-featured key exchanging strategy with enhanced security, instead of using an existing random seed with an XOR key file all day long
|
||||||
|
|
||||||
## 编译和运行环境
|
## Compile and working environment
|
||||||
|
|
||||||
* Go >= 1.18
|
* Go >= 1.18
|
||||||
* Protoc >= 3.21
|
* Protoc >= 3.21
|
||||||
@@ -30,67 +34,67 @@
|
|||||||
* Docker >= 20.10
|
* Docker >= 20.10
|
||||||
* Docker Compose >= 1.29
|
* Docker Compose >= 1.29
|
||||||
|
|
||||||
#### 本项目未使用CGO构建,理论上Windows、Linux系统都可以编译运行,macOS下没有`unix.Gettid`的实现,需要使用CGO构建
|
#### This project is built without CGO. Both Windows and Linux systems can compile and run it. While you need to use CGO on MacOS since it hasn't impleted `unix.Gettid`
|
||||||
|
|
||||||
## 快速启动
|
## Get start
|
||||||
|
|
||||||
* 首次需要安装工具
|
* Install on first launch
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
make dev_tool
|
make dev_tool
|
||||||
```
|
```
|
||||||
|
|
||||||
* 生成协议
|
* Generate protocol
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
make gen_natsrpc # 生成natsrpc协议
|
make gen_natsrpc # Generate natsrpc protocol
|
||||||
make gen_proto # 生成客户端协议
|
make gen_proto # Generate client protocol
|
||||||
make gen_client_proto # 生成客户端协议代理(非必要 详见gate/client_proto/README.md)
|
make gen_client_proto # Generate client proxy protocol(not very necessary, for further informations: gate/client_proto/README.md)
|
||||||
```
|
```
|
||||||
|
|
||||||
* 构建
|
* Compile
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
make build # 构建服务器二进制文件
|
make build # Compile server to binary file
|
||||||
make docker_config # 复制配置模板等文件
|
make docker_config # Copy files like config templates, etc.
|
||||||
make docker_build # 构建镜像
|
make docker_build # Build a Docker image
|
||||||
```
|
```
|
||||||
|
|
||||||
* 启动
|
* Launch
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
cd docker
|
cd docker
|
||||||
# 启动前请先确保各服务器的配置文件正确(如docker/node/bin/application.toml)
|
# Checkout all configurations before launch(e.g. docker/node/bin/application.toml)
|
||||||
docker-compose up -d # 启动服务器
|
docker-compose up -d # Launch server
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 第三方组件
|
#### Third-party dependencies
|
||||||
|
|
||||||
* mongodb
|
* mongodb
|
||||||
* nats-server
|
* nats-server
|
||||||
* redis
|
* redis
|
||||||
|
|
||||||
#### 服务器组件
|
#### Server components
|
||||||
|
|
||||||
* node 节点服务器 (仅单节点 有状态)
|
* `node` Node server (Single node, with status)
|
||||||
* dispatch 登录服务器 (可多节点 无状态)
|
* `dispatch` Login server (Multi nodes, without status)
|
||||||
* gate 网关服务器 (可多节点 有状态)
|
* `gate` Gateway server (Multi nodes, with status)
|
||||||
* anticheat 反作弊服务器 (可多节点 有状态 尚不完善非必要启动)
|
* `anticheat` Anti-cheat server (Multi nodes, with status **STILL UNDER CONSTRUCTION**)
|
||||||
* pathfinding 寻路服务器 (可多节点 无状态 尚不完善非必要启动)
|
* `pathfinding` Path-finding server (Multi nodes, without status **STILL UNDER CONSTRUCTION**)
|
||||||
* gs 游戏服务器 (可多节点 有状态)
|
* `gs` Game server (Multi nodes, with status)
|
||||||
* gm 游戏管理服务器 (仅单节点 无状态)
|
* `gm` Game menagement server (Single node, without status)
|
||||||
|
|
||||||
#### 其它
|
#### Misc
|
||||||
|
|
||||||
* 独立运行需要配置环境变量
|
* You need to add the following environment variable to run as standalone server
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
GOLANG_PROTOBUF_REGISTRATION_CONFLICT=ignore
|
GOLANG_PROTOBUF_REGISTRATION_CONFLICT=ignore
|
||||||
```
|
```
|
||||||
|
|
||||||
## 代码提交规范
|
## Code submission specifications
|
||||||
|
|
||||||
* 提交前**必须**进行go fmt(GoLand可在commit窗口的设置里勾选,默认是启用的)
|
* You **MUST** run `go fmt` before commit
|
||||||
* 进行全局格式化时,请跳过gdconf目录,这是配置表数据,包含大量的json、lua、txt等文件
|
* Please ignore directory `gdconf` when running global formatting. These are config tables, including lots of `json`, `loa`, `txt` files
|
||||||
* 单行注释的注释符与注释内容之间需要加一个空格(GoLand可在设置Editor/CodeStyle/Go/Other里打开)
|
* Add a `space` between `//` and your comments when writing inline comments
|
||||||
* 导入包时需要将标准库、本地包、第三方包用空行分开(GoLand可在设置Editor/CodeStyle/Go/Imports里打开)
|
* Split standard packages, local packages and third-party packages with linebreaks
|
||||||
|
|||||||
Reference in New Issue
Block a user