用OpenMir2搭一台能跑的传奇服务器,实测3小时足够走完从装环境到进游戏的全流程。这个开源项目用C#重写了服务端逻辑,兼容1.76客户端,把步骤拆开看每一步都有明确的操作命令和验证方法。
**一、环境准备(约20分钟)**
先把工具装齐。Visual Studio 2022 Community版用来编译代码,.NET Core SDK 6.0或更高版本是运行环境。MySQL 8.0存游戏数据,Git用来拉源码。装完MySQL把服务启动起来,Windows用户在服务列表确认MySQL状态是“正在运行”。
打开命令行执行克隆命令:
```
git clone https://gitcode.com/gh_mirrors/op/OpenMir2
cd OpenMir2
```
进到项目目录,用VS打开OpenMir2.sln,VS会自动还原NuGet包。如果用命令行,执行`dotnet restore OpenMir2.sln`。首次编译推荐用Debug配置方便排查问题,生产环境再切Release。
**二、数据库初始化(约30分钟)**
OpenMir2的数据库脚本在项目根目录的sql文件夹下。按顺序执行三个文件,顺序错了表结构建不起来。
登录MySQL:
```
mysql -u root -p
```
创建数据库并切进去:
```
CREATE DATABASE mir2;
USE mir2;
```
依次执行:
```
source sql/mir2_db.sql;
source sql/mir2_account.sql;
source sql/mir2_data.sql;
```
第一个建表结构,第二个写账号系统基础数据,第三个导入怪物、物品这些游戏基础数据。
建完数据库修改连接配置。打开`src/DBSrv/appsettings.json`,把ConnectionStrings里的server、port、database、uid、pwd改成自己的MySQL信息。如果MySQL装在其他机器上,server那里写IP地址。
**三、编译项目(约20分钟)**
在VS里选Release配置,然后生成解决方案。或者用命令行:
```
dotnet build OpenMir2.sln -c Release
```
编译成功后,每个服务模块的可执行文件会出现在各自项目的`bin/Release/net6.0/`目录下。主要检查DBSrv、LoginSrv、GameSrv、GameGate、SelGate、LoginGate这六个服务,缺哪个说明那个项目编译失败了。
**四、按顺序启动服务(约30分钟)**
启动顺序卡得很死,必须按下面这个顺序来,前面没起来后面的连不上。
1. DBSrv(数据库服务)——所有读写玩家数据的操作都靠它
2. LoginSrv(登录服务)——管账号注册和登录验证
3. GameSrv(游戏逻辑服务)——核心引擎,处理移动、战斗、技能
4. GameGate(游戏网关)——玩家操作数据先进这里再转发给GameSrv
5. SelGate(角色网关)——创建角色、删除角色、查角色列表
6. LoginGate(登录网关)——把登录请求转发给LoginSrv处理
每个服务单独开一个命令行窗口,切到对应目录运行可执行文件。比如启动DBSrv,进`src/DBSrv/bin/Release/net6.0/`双击DBSrv.exe或者命令行里敲文件名。服务启动成功之后窗口会一直显示运行日志,不要关。
用`netstat -tlnp | grep -E "7000|7001|7002"`检查各服务端口是否正常监听。
**五、客户端连接测试(约30分钟)**
服务都跑起来之后需要配套的客户端才能进游戏。OpenMir2的客户端源码在mirbeta/MirClient仓库用Delphi编译。不想自己编译就找一份1.76版本的官方客户端,把登录IP改成127.0.0.1指向本机,端口设置成LoginGate监听的端口。
用默认账号admin/admin登录,能进到角色选择界面说明LoginGate和LoginSrv正常;能创建角色进游戏跑两步说明GameSrv和GameGate也通了。连不上先检查防火墙有没有把7000-7005这些端口拦住,再确认六个服务是不是都在运行状态。
**六、个性化配置(约20分钟)**
游戏参数都在配置文件里调。经验倍率改`src/GameSrv/appsettings.json`里的ExpRate,默认1.0,改成5就是5倍经验。物品掉落概率改`src/GameSrv/Data/ItemDrop.ini`。地图配置在`src/GameSrv/Maps/`目录下调整怪物刷新频率。改完配置需要重启对应服务才生效。
**七、常见问题排查**
服务启动失败先检查数据库连接配置,确认用户名密码和数据库名对不对。端口被占用了用netstat看哪个进程占着3306或者游戏服务端口,改配置换端口。客户端连不上服务器确认LoginGate和GameGate这两个网关服务有没有正常启动,再检查客户端配置文件里的IP和端口是不是和服务端对得上。
OpenMir2传奇服务器3小时搭建实战操作与配置详解
来源:
作者:
点击:

