首页
/ Go游戏服务器开发指南:三国SLG服务器Demo使用手册

Go游戏服务器开发指南:三国SLG服务器Demo使用手册

2026-04-16 09:02:12作者:尤峻淳Whitney

核心功能概述

本项目是一个基于Go语言开发的三国策略游戏服务器Demo,采用微服务架构设计,实现了策略游戏核心功能模块。服务器提供完整的游戏逻辑处理能力,包括玩家账号管理、部队配置、城池建设、联盟系统、战斗系统等核心玩法。

游戏主界面

核心功能模块

  • 账号与登录系统:实现用户注册、登录认证及会话管理,核心代码位于main/loginserver.goserver/loginserver/controller/account.go
  • 游戏世界管理:处理城池建设、资源生产和地图交互,对应server/slgserver/controller/city.goserver/slgserver/logic/mgr/role_city_mgr.go
  • 部队与战斗系统:管理武将招募、部队配置和战斗结算,主要逻辑在server/slgserver/controller/army.goserver/slgserver/logic/war/army_war.go
  • 社交与联盟:支持玩家聊天、联盟创建和管理,实现代码位于server/chatserver/server/slgserver/controller/coalition.go

环境准备

基础依赖安装

在开始前,请确保系统已安装以下依赖:

# 安装Go环境 (推荐1.16+)
sudo apt update && sudo apt install golang -y

# 安装MySQL数据库
sudo apt install mysql-server -y

# 验证安装
go version
mysql --version

[!NOTE] Windows用户可直接从官网下载安装程序,推荐使用Chocolatey包管理器简化安装流程。

项目获取与环境校验

# 克隆项目代码
git clone https://gitcode.com/gh_mirrors/sl/slgserver
cd slgserver

# 安装Go依赖
go mod download

# 验证Go环境
go env | grep GOPATH

数据库环境准备

# 登录MySQL
mysql -u root -p

# 创建数据库
CREATE DATABASE slgdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
exit

# 执行数据库初始化脚本
mysql -u root -p slgdb < data/conf/db.sql

服务架构与快速启动

微服务架构解析

本项目采用微服务架构设计,包含五个核心服务,各服务间通过网络通信协同工作:

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  登录服务   │     │  网关服务   │     │ 游戏逻辑服务 │
│ loginserver │────>│ gateserver  │────>│  slgserver  │
└─────────────┘     └─────────────┘     └─────────────┘
        │                   │                    ▲
        │                   │                    │
        ▼                   ▼                    │
┌─────────────┐     ┌─────────────┐             │
│  HTTP服务   │     │ 聊天服务    │─────────────┘
│ httpserver  │     │ chatserver  │
└─────────────┘     └─────────────┘
  • 登录服务 (main/loginserver.go):处理用户认证与会话管理
  • 网关服务 (main/gateserver.go):负责客户端连接与消息路由
  • 游戏逻辑服务 (main/slgserver.go):核心游戏玩法实现
  • HTTP服务 (main/httpserver.go):提供RESTful API接口
  • 聊天服务 (main/chatserver.go):处理玩家间实时通信

快速启动流程

Windows环境

# 复制配置文件
shell\copydata.bat

# 启动所有服务
shell\run.bat

Linux环境

# 手动复制配置文件
mkdir -p bin
cp -r data bin/

# 编译所有服务
go build -o bin/loginserver main/loginserver.go
go build -o bin/gateserver main/gateserver.go
go build -o bin/slgserver main/slgserver.go
go build -o bin/httpserver main/httpserver.go
go build -o bin/chatserver main/chatserver.go

# 启动服务(推荐使用screen或tmux)
cd bin
./loginserver &
./gateserver &
./slgserver &
./httpserver &
./chatserver &

[!NOTE] 服务启动顺序建议:loginserver → gateserver → slgserver → httpserver → chatserver

服务状态验证

# 检查服务是否正常运行
ps aux | grep -E 'login|gate|slg|http|chat'server

# 检查端口监听情况
netstat -tulpn | grep -E ':8080|:8081|:8082|:8083|:8084'

正常启动后,你将看到五个服务进程和对应的端口监听。

配置详解

核心配置文件

项目主要配置文件为data/conf/env.ini,采用INI格式,包含数据库连接、服务端口等关键配置。

必改项

[database]
# 数据库连接信息(必须修改)
username = root
password = your_password  # 替换为你的MySQL密码
database = slgdb
host = 127.0.0.1
port = 3306

推荐项

[server]
# 服务端口配置(根据需要调整)
loginserver_port = 8080
gateserver_port = 8081
slgserver_port = 8082
httpserver_port = 8083
chatserver_port = 8084

[log]
# 日志级别,开发环境建议设为debug
level = debug

高级项

[performance]
# 性能相关配置
max_connections = 10000  # 最大连接数
worker_num = 8            # 工作协程数
cache_size = 1024         # 缓存大小(MB)

游戏数据配置

游戏基础数据存储在data/conf/json/目录下,包括:

  • 武将配置:data/conf/json/general/general.json
  • 技能配置:data/conf/json/skill/skill_outline.json
  • 建筑配置:data/conf/json/facility/facility.json

这些JSON文件定义了游戏中的基础数据,可根据需求进行调整。例如修改武将属性:

{
  "id": 1,
  "name": "朱儁",
  "cost": 35,
  "force": 87,
  "defense": 90,
  "strategy": 89,
  "speed": 88,
  "camp": "汉"
}

功能模块详解

账号管理

账号系统由登录服务和HTTP服务共同实现:

  • 注册流程:客户端通过HTTP POST请求/api/account/register注册账号
  • 登录流程:验证成功后,登录服务器生成会话令牌并返回给客户端
  • 代码实现server/loginserver/controller/account.goserver/httpserver/controller/account.go

城池与资源系统

城池是玩家的核心基地,负责资源生产和部队训练:

城池设施界面

  • 城池建设:玩家可升级各种设施提升资源产量和部队能力
  • 资源类型:游戏中有木材、铁矿、石料、粮食四种基础资源
  • 核心代码server/slgserver/controller/city.goserver/slgserver/logic/mgr/role_res_mgr.go

武将与部队系统

武将是战斗的核心单位,玩家可通过抽卡获取并组建部队:

武将列表

  • 武将属性:武力、防御、谋略、速度等影响战斗表现
  • 部队配置:每个部队由1名主将和2名副将组成,总cost不超过上限
  • 核心代码server/slgserver/controller/general.goserver/slgserver/logic/army/army_logic.go

战斗系统

游戏采用回合制战斗机制,根据武将属性和技能计算战斗结果:

战报界面

  • 战斗流程:部队出征→遭遇敌人→回合制战斗→生成战报
  • 战斗公式:伤害计算考虑武将属性、技能效果和兵种克制
  • 核心代码server/slgserver/logic/war/army_war.goserver/slgserver/model/war_report.go

联盟系统

玩家可创建或加入联盟,与其他玩家协作:

联盟界面

  • 联盟功能:联盟聊天、共同发展、联盟战争
  • 核心代码server/slgserver/controller/coalition.goserver/slgserver/logic/union/union_logic.go

聊天系统

支持世界聊天和联盟聊天两种模式:

聊天界面

  • 聊天服务:独立的聊天服务器处理消息分发
  • 核心代码server/chatserver/controller/chat.goserver/chatserver/logic/group.go

常见问题排查

服务启动失败

  1. 数据库连接失败

    • 检查env.ini中的数据库配置是否正确
    • 确认MySQL服务是否正常运行:systemctl status mysql
    • 验证数据库用户权限:mysql -u username -p -h host
  2. 端口被占用

    • 查找占用端口的进程:lsof -i :8080
    • 结束占用进程:kill -9 PID
    • 或修改配置文件中的端口号

客户端连接问题

  1. 无法连接服务器

    • 检查网关服务是否正常运行
    • 验证防火墙设置:ufw allow 8081
    • 确认客户端IP和端口配置正确
  2. 登录失败

    • 检查账号密码是否正确
    • 查看登录服务器日志:log/loginserver.log
    • 确认数据库中是否存在该用户记录

性能优化建议

  1. 数据库优化

    • 为频繁查询的字段添加索引
    • 考虑使用数据库连接池
    • 定期备份数据库
  2. 服务器性能

    • 根据服务器配置调整env.ini中的worker_num参数
    • 监控系统资源使用:tophtop
    • 考虑使用Redis缓存热点数据

扩展指南

功能扩展

要添加新功能,建议遵循以下步骤:

  1. 定义协议:在对应服务的proto目录下添加协议定义
  2. 实现控制器:在controller目录添加请求处理逻辑
  3. 实现业务逻辑:在logic目录实现核心功能
  4. 更新配置:如需新配置项,更新env.ini并添加解析代码

Docker部署

项目提供Docker配置文件,可通过Docker Compose快速部署:

# 构建镜像
docker-compose build

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

二次开发建议

  1. 代码规范

    • 遵循Go语言规范:go fmt
    • 添加详细注释,特别是公共接口
    • 使用一致的命名风格
  2. 测试策略

    • 为核心逻辑编写单元测试
    • 使用Postman测试HTTP接口
    • 进行压力测试,确保服务稳定性
  3. 版本控制

    • 遵循语义化版本控制
    • 重要更新前创建分支
    • 提交前运行代码检查工具
登录后查看全文
热门项目推荐
相关项目推荐