Skip to content

Commit

Permalink
makefile编译客户端协议、生成服务器配置表 && docker镜像构建
Browse files Browse the repository at this point in the history
  • Loading branch information
flswld committed Jan 19, 2023
1 parent 2983c16 commit cda96a8
Show file tree
Hide file tree
Showing 16 changed files with 201 additions and 98 deletions.
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ bin

# Game protocol protobuf generate file
protocol/proto
protocol/proto_hk4e/proto
gate/client_proto/proto
gate/client_proto/client_proto_gen.go

Expand Down
68 changes: 61 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,21 +1,65 @@
CUR_DIR=$(shell pwd)

VERSION=1.0.0

# 清理
.PHONY: clean
clean:
rm -rf ./bin
rm -rf ./protocol/proto
rm -rf ./gate/client_proto/client_proto_gen.go
rm -rf ./gdconf/game_data_config/csv/*.csv

# 构建服务器二进制文件
.PHONY: build
build:
mkdir -p bin/ && CGO_ENABLED=0 go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./cmd/...
mkdir -p bin && CGO_ENABLED=0 go build -ldflags "-X main.Version=$(VERSION)" -o ./bin/ ./cmd/...

# 清理镜像
.PHONY: docker_clean
docker_clean:
rm -rf ./docker/node/bin/*
rm -rf ./docker/dispatch/bin/*
rm -rf ./docker/gate/bin/*
rm -rf ./docker/fight/bin/*
rm -rf ./docker/pathfinding/bin/*
rm -rf ./docker/gs/bin/*
rm -rf ./docker/gm/bin/*
docker rmi flswld/node:$(VERSION)
docker rmi flswld/dispatch:$(VERSION)
docker rmi flswld/gate:$(VERSION)
docker rmi flswld/fight:$(VERSION)
docker rmi flswld/pathfinding:$(VERSION)
docker rmi flswld/gs:$(VERSION)
docker rmi flswld/gm:$(VERSION)

# 构建镜像
.PHONY: docker_build
docker_build:
mkdir -p ./docker/node/bin && cp -rf ./bin/node ./cmd/node/* ./docker/node/bin/
mkdir -p ./docker/dispatch/bin && cp -rf ./bin/dispatch ./cmd/dispatch/* ./docker/dispatch/bin/
mkdir -p ./docker/gate/bin && cp -rf ./bin/gate ./cmd/gate/* ./docker/gate/bin/
mkdir -p ./docker/fight/bin && cp -rf ./bin/fight ./cmd/fight/* ./docker/fight/bin/
mkdir -p ./docker/pathfinding/bin && cp -rf ./bin/pathfinding ./cmd/pathfinding/* ./docker/pathfinding/bin/
mkdir -p ./docker/gs/bin && cp -rf ./bin/gs ./cmd/gs/* ./docker/gs/bin/
mkdir -p ./docker/gm/bin && cp -rf ./bin/gm ./cmd/gm/* ./docker/gm/bin/
docker build -t flswld/node:$(VERSION) ./docker/node
docker build -t flswld/dispatch:$(VERSION) ./docker/dispatch
docker build -t flswld/gate:$(VERSION) ./docker/gate
docker build -t flswld/fight:$(VERSION) ./docker/fight
docker build -t flswld/pathfinding:$(VERSION) ./docker/pathfinding
docker build -t flswld/gs:$(VERSION) ./docker/gs
docker build -t flswld/gm:$(VERSION) ./docker/gm

# 安装natsrpc生成工具
.PHONY: dev_tool
dev_tool:
# 安装natsrpc生成工具
go install github.com/golang/protobuf/[email protected]
go install github.com/byebyebruce/natsrpc/cmd/protoc-gen-natsrpc@develop

test:
go test ./...

# 生成natsrpc协议代码
.PHONY: gen_natsrpc
gen_natsrpc:
# 生成natsrpc协议代码
protoc \
--proto_path=gs/api \
--go_out=paths=source_relative:gs/api \
Expand All @@ -27,9 +71,9 @@ gen_natsrpc:
--natsrpc_out=paths=source_relative:node/api \
node/api/*.proto

# 生成客户端协议代码
.PHONY: gen_proto
gen_proto:
# 生成客户端协议代码
cd protocol/proto_hk4e && \
rm -rf ./proto && mkdir -p proto && \
protoc --proto_path=./ --go_out=paths=source_relative:./proto ./*.proto && \
Expand All @@ -41,3 +85,13 @@ gen_proto:
mv ./proto/server_only/* ./proto/ && rm -rf ./proto/server_only && \
rm -rf ../proto && mkdir -p ../proto && mv ./proto/* ../proto/ && rm -rf ./proto && \
cd ../../

# 生成服务器配置表
.PHONY: gen_csv
gen_csv:
cd gdconf && go test -v -run TestGenGdCsv .

# 生成客户端协议代理功能所需的代码
.PHONY: gen_client_proto
gen_client_proto:
cd gate/client_proto && go test -v -run TestClientProtoGen .
25 changes: 13 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
# hk4e

hk4e game server
#### hk4e game server

## 开发快速上手
## 编译和运行环境

* Go >= 1.18
* Protoc >= 3.21
* Protoc Gen Go >= 1.28

> 1. 首次需要安装工具 `make dev_tool`
> 2. 生成协议 `make gen_natsrpc && make gen_proto`
> 3. 生成配置表 `make gen_csv`
## 快速运行

Expand All @@ -17,15 +20,15 @@ hk4e game server
* nats-server
* redis

#### 启动顺序
#### 服务器组件

> 1. 启动节点服务器(仅单节点 有状态) `cd cmd/node && go run .`
> 2. 启动http登录服务器(可多节点 无状态) `cd cmd/dispatch && go run .`
> 3. 启动网关服务器(可多节点 有状态) `cd cmd/gate && go run .`
> 4. 启动战斗服务器(可多节点 有状态 非必要) `cd cmd/fight && go run .`
> 5. 启动寻路服务器(可多节点 无状态 非必要) `cd cmd/pathfinding && go run .`
> 6. 启动游戏服务器(可多节点 有状态) `cd cmd/gs && go run .`
> 7. 启动游戏管理服务器(仅单节点 无状态) `cd cmd/gm && go run .`
* node 节点服务器 (仅单节点 有状态)
* dispatch 登录服务器 (可多节点 无状态)
* gate 网关服务器 (可多节点 有状态)
* fight 战斗服务器 (可多节点 有状态 非必要)
* pathfinding 寻路服务器 (可多节点 无状态 非必要)
* gs 游戏服务器 (可多节点 有状态)
* gm 游戏管理服务器 (仅单节点 无状态)

#### 其它

Expand All @@ -34,5 +37,3 @@ hk4e game server
```shell
GOLANG_PROTOBUF_REGISTRATION_CONFLICT=ignore
```

* 运行gdconf/game_data_config_test.go文件中的TestGenGdCsv方法 生成服务器配置表
4 changes: 2 additions & 2 deletions cmd/gate/application.toml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
[hk4e]
kcp_addr = "127.0.0.1" # 该地址只用来注册到节点服务器 并非网关本地监听地址 本地监听为0.0.0.0
kcp_port = 22103
kcp_port = 22222
client_proto_proxy_enable = false
version = "320"
gate_tcp_mq_addr = "127.0.0.1"
gate_tcp_mq_port = 9999
gate_tcp_mq_port = 33333

[logger]
level = "DEBUG"
Expand Down
1 change: 0 additions & 1 deletion cmd/gs/application.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
[hk4e]
client_proto_proxy_enable = false
resource_path = "./GameDataConfigTable"
game_data_config_path = "./game_data_config"
gacha_history_server = "https://hk4e.flswld.com/api/v1"

Expand Down
1 change: 0 additions & 1 deletion common/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,6 @@ type Redis struct {
type Hk4e struct {
KcpPort int32 `toml:"kcp_port"` // 该地址只用来注册到节点服务器 并非网关本地监听地址 本地监听为0.0.0.0
KcpAddr string `toml:"kcp_addr"`
ResourcePath string `toml:"resource_path"`
GameDataConfigPath string `toml:"game_data_config_path"`
GachaHistoryServer string `toml:"gacha_history_server"`
ClientProtoProxyEnable bool `toml:"client_proto_proxy_enable"`
Expand Down
9 changes: 9 additions & 0 deletions docker/dispatch/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM ubuntu:18.04

EXPOSE 8080/tcp

WORKDIR /dispatch
COPY ./bin/dispatch ./dispatch
RUN chmod +x ./dispatch

ENTRYPOINT ["./dispatch"]
7 changes: 7 additions & 0 deletions docker/fight/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM ubuntu:18.04

WORKDIR /fight
COPY ./bin/fight ./fight
RUN chmod +x ./fight

ENTRYPOINT ["./fight"]
10 changes: 10 additions & 0 deletions docker/gate/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
FROM ubuntu:18.04

EXPOSE 22222/udp
EXPOSE 33333/tcp

WORKDIR /gate
COPY ./bin/gate ./gate
RUN chmod +x ./gate

ENTRYPOINT ["./gate"]
9 changes: 9 additions & 0 deletions docker/gm/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
FROM ubuntu:18.04

EXPOSE 9001/tcp

WORKDIR /gm
COPY ./bin/gm ./gm
RUN chmod +x ./gm

ENTRYPOINT ["./gm"]
7 changes: 7 additions & 0 deletions docker/gs/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM ubuntu:18.04

WORKDIR /gs
COPY ./bin/gs ./gs
RUN chmod +x ./gs

ENTRYPOINT ["./gs"]
7 changes: 7 additions & 0 deletions docker/node/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM ubuntu:18.04

WORKDIR /node
COPY ./bin/node ./node
RUN chmod +x ./node

ENTRYPOINT ["./node"]
7 changes: 7 additions & 0 deletions docker/pathfinding/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM ubuntu:18.04

WORKDIR /pathfinding
COPY ./bin/pathfinding ./pathfinding
RUN chmod +x ./pathfinding

ENTRYPOINT ["./pathfinding"]
10 changes: 4 additions & 6 deletions gate/client_proto/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@

## 使用方法

> 1. 在此目录下建立bin目录和proto目录
> 1. 在此目录下建立proto目录
> 2. 将对应版本的proto协议文件复制到proto目录下并编译成pb.go
> 3. 将client_proto_gen_test.go的TestClientProtoGen方法添加运行配置
> 4. 将运行配置输出目录和工作目录都设置为bin目录
> 5. 运行并生成client_proto_gen.go
> 6. 将client_cmd.csv放入gate和gs和fight服务器的运行目录下
> 7. 将gate和gs和fight服务器的配置文件中开启client_proto_proxy_enable客户端协议代理功能
> 3. make gen_client_proto
> 4. 将client_cmd.csv放入gate和gs和fight服务器的运行目录下
> 5. 将gate和gs和fight服务器的配置文件中开启client_proto_proxy_enable客户端协议代理功能
4 changes: 2 additions & 2 deletions gate/client_proto/client_proto_gen_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
)

func TestClientProtoGen(t *testing.T) {
dir, err := os.ReadDir("../proto")
dir, err := os.ReadDir("./proto")
if err != nil {
panic(err)
}
Expand Down Expand Up @@ -39,7 +39,7 @@ func TestClientProtoGen(t *testing.T) {
fileData += "\t}\n"
fileData += "}\n"

err = os.WriteFile("../client_proto_gen.go", []byte(fileData), 0644)
err = os.WriteFile("./client_proto_gen.go", []byte(fileData), 0644)
if err != nil {
panic(err)
}
Expand Down
Loading

0 comments on commit cda96a8

Please sign in to comment.