用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
```
进到项目目录,用VS打开OpenMir2.sln,VS会自动还原NuGet包。如果命令行操作,执行`dotnet restore OpenMir2.sln`也行。
**数据库初始化(约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或者命令行里直接敲文件名。服务启动成功之后,窗口会一直显示运行日志,不要关。
**客户端连接测试(约30分钟)**
服务都跑起来之后,需要配套的客户端才能进游戏。OpenMir2的客户端源码在mirbeta/MirClient仓库,用Delphi编译。不想自己编译的话,找一份1.76版本的官方客户端,把登录IP改成127.0.0.1指向本机,端口设置成LoginGate监听的端口。
用默认账号admin/admin登录,能进到角色选择界面就说明LoginGate和LoginSrv正常;能创建角色进游戏跑两步,说明GameSrv和GameGate也通了。如果连不上,先检查防火墙有没有把7000-7005这些端口拦住,再确认六个服务是不是都在运行状态。
**常见问题排查(约20分钟)**
启动时报错连不上数据库,去检查appsettings.json里的连接字符串对不对,MySQL服务有没有启动。端口被占用了就用netstat命令看哪个进程占着3306或者游戏服务端口。客户端连不上服务器,先确认LoginGate和GameGate这两个网关服务有没有正常启动,再检查客户端配置文件里的IP和端口是不是和服务端对得上。
3小时搭建OpenMir2传奇服务器完整实战操作手册
来源:
作者:
点击:

