部署 OpenMir2 传奇游戏服务器:从克隆到第一个玩家登录的完整路径
部署 OpenMir2 传奇游戏服务器从克隆到第一个玩家登录的完整路径【免费下载链接】OpenMir2Legend of Mir 2 Game server项目地址: https://gitcode.com/gh_mirrors/op/OpenMir2OpenMir2 是一个用 C# 编写的传奇 2 游戏服务器支持在线多人互动。读完本文你能在本地把 6 个服务依次拉起、接上客户端完成登录和选角。只需要一台能跑 .NET 8 和 MySQL 5.7 的机器。 先跑起来按顺序部署 OpenMir2 六个服务你要准备什么.NET SDK8.0global.json声明 8.0rollForward允许更高版本MySQL5.7Git传奇 1.76 客户端配套 MirClient 工程传奇服务端基础资源文件地图、物品、怪物数据见 README 指向的资源仓库建议 4 核 8G 以上的机器依次做什么git clone https://gitcode.com/gh_mirrors/op/OpenMir2 cd OpenMir2 dotnet restore三个 SQL 脚本分别对应三个库先建库再导入这里别跳步mysql -uroot -p -e CREATE DATABASE mir2_account DEFAULT CHARSET utf8mb4; CREATE DATABASE mir2_db DEFAULT CHARSET utf8mb4; CREATE DATABASE mir2_data DEFAULT CHARSET utf8mb4; mysql -uroot -p mir2_account sql/mir2_account.sql mysql -uroot -p mir2_db sql/mir2_db.sql mysql -uroot -p mir2_data sql/mir2_data.sql每个服务首次启动会在运行目录生成.conf配置文件如dbsvr.conf按提示把数据库账号密码和端口改成你的环境。然后编译并按下面顺序各开一个终端启动dotnet build OpenMir2.sln dotnet run --project src/DBSrvDBSvr数据库服务负责数据存取LoginSvr账号登录服务注册、登录、服务器选择GameSvr游戏引擎跑在 M2Server 之上处理移动、攻击、法术GameGate游戏网关玩家数据包经这里转发给引擎SelGate角色网关查询、创建、删除角色LoginGate登录网关把登录请求转发给 LoginSvr这个顺序不能乱从第 2 个服务开始每个服务启动时都要连接前面已经起好的服务拿地址和端口倒过来直接报连接失败最后两个网关是客户端入口不起就完全连不上。看到什么算成功六个服务控制台都没有 Fatal 报错客户端打开后进入账号登录界面输入sql/mir2_account.sql里自带的账号如 ergou能进入选角界面。 它是怎么工作的一次登录的数据流玩家输入账号密码后请求先落到LoginGatesrc/LoginGate/它只做一件事把登录包原样转发给 LoginSvr。LoginSvrsrc/LoginSrv/拿账号去 mir2_account 库的 account 表验证密码通过后返回服务器列表给客户端。选角色阶段走SelGatesrc/SelGate/它负责角色的查询、创建、删除底层统一交给 DBSvr 落库它没起来客户端登录后就拿不到角色列表。进入游戏后客户端改走GameGatesrc/GameGate/建立长连接此后玩家每个动作的数据包都由它转发给GameSrvsrc/GameSrv/核心引擎在src/M2Server/。GameSrv 维护整个世界状态角色移动、攻击、法术、怪物 AI、地图刷新都在这里算。DBSvrsrc/DBSrv/是最后也是唯一的读写出口角色、物品、拍卖行数据由它统一存取StoreageType支持 MySQL 等多种后端。仓库里还有一个src/WebApi/提供 REST 接口查询玩家、行会、市场等数据做后台管理可以基于它扩展。 调好它传奇游戏服务器性能调优三条线数据库线DBSvr 的dbsvr.confConnctionString→ 追加Min Pool Size10;Max Pool Size100→ 控制 MySQL 连接池大小过小高并发时排队、过大耗尽连接。PushMarketInterval→ 从默认 30000 调大 → 拉长拍卖行数据同步间隔降低 DBSvr 写库频率。网络线网关配置DynamicIpMode→ 服务器在公网或 NAT 后时设为 1 → 网关把公网地址下发给客户端否则外部玩家连不上。GatePortLoginGate 默认 7000 起递增→ 开多个网关实例时保持连续且不冲突 → 多网关分担连接端口打架会直接拒绝连接。引擎线GameSrv 及各服务appsettings.jsonDefaultLogging:LogLevel→ 从 Debug 改成 Information → 日志量直接减半少写盘。EnableMakingIDLoginSrv 配置→ 开服稳定后设为 false → 关闭注册入口防止批量注册小号。Serilog: { MinimumLevel: { Default: Information, Override: { Microsoft: Warning } } }高密度刷怪场景如下图最能暴露配置问题建议用它做压测基准✏️ 改它最常动的三个地方加一张地图。地图常量、坐标点和寻路在src/M2Server/Maps/MapConst.cs、MapPoint.cs、AutoPath/地图的.map阻挡数据放资源目录路径由dbsvr.conf的MapFile指向。改完重启 GameSvr把角色传送进新地图能正常走路就算通过。加或改一只怪物。每种怪对应src/M2Server/Monster/Monsters/下的一个类如CowMonster.cs属性结构定义在src/OpenMir2/Data/MonsterInfo.cs。改完攻击方式或移动逻辑后在地图上刷出一只观察它的行为是否与预期一致。改物品数值。物品代码与doc/物品代码表.xlsx一一对应物品系统逻辑在src/M2Server/Items/GameItemSystem.cs。改完某个代码的数值字段重进游戏查看该物品属性。不想动引擎的话聊天系统模块、脚本引擎 这类插件化模块都在src/Modules/可以直接扩展玩法。 出了问题怎么办症状先查什么大概率原因客户端连不上服务器六个服务是否全起ss -lntp看 5500、7000 端口是否监听LoginGate 或 GameGate 没启动或端口被防火墙拦了账号界面正常角色列表不加载SelGate、DBSvr 是否在跑DBSvr 连接串是否正确SelGate 没起或 mir2_db 连接失败DBSvr 启动即报数据库错误MySQL 是否运行三个库是否建好sql/导入顺序或连接串密码不对编译失败dotnet --list-sdks看版本重跑dotnet restore缺 .NET 8 SDK或 NuGet 包没还原在线多了明显卡CPU、内存占用日志文件增长速度日志级别还是 Debug写盘太频繁 长期维护日志走 Serilog各服务运行目录下的appsettings.json已配好控制台输出和 Seq 远程收集默认http://localhost:5341仓库根目录另有 NLog 配置nlog.config日志轮转策略按部署环境自行加。备份用mysqldump对 mir2_account、mir2_db、mir2_data 三库做每日全量导出.conf配置和资源文件一并纳入版本管理。监控盯住在线人数、玩家操作延迟和数据库连接池占用率三项即可每个服务的控制台本身就是实时状态面板。在 Issue 反馈 bug 与需求用 Pull Request 参与开发看 CHANGELOG.md 跟进更新能登录进选角界面本文目标就达成了。下一步动作打开sql/目录先把三个库建出来再按六步顺序走一遍。【免费下载链接】OpenMir2Legend of Mir 2 Game server项目地址: https://gitcode.com/gh_mirrors/op/OpenMir2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

USB 3.1 Gen 2调试实战:协议触发解码软件怎么用?

USB 3.1 Gen 2调试实战:协议触发解码软件怎么用?

USB 3.1 Gen 2的调试难度,做硬件和嵌入式的人应该都有体会。信号速率到了10Gbps之后,光看示波器波形已经很难判断协议层发生了什么,而USB协议分析仪配合触发解码软件,基本是定位这类问题的标配。这篇博客就围绕USB 3.1 Gen 2协议触…

2026/11/6 17:14:03 阅读更多 →
低功耗智能传感器无线平台设计:从硬件到云端的完整方案

低功耗智能传感器无线平台设计:从硬件到云端的完整方案

干物联网采集这行,最怕听到的不是“传感器坏了”,而是“电池没电了”。尤其是部署在园区、农田、仓库里的温湿度、烟感、水浸这些节点,动辄上百个,一个节点要换一次电池就够运维跑一整天。我自己做过一个园区环境监测项目&#xf…

2026/10/21 4:24:17 阅读更多 →
ESP32 首次点亮失败?从 Arduino 环境搭建到 OTA 固件升级一篇打通

ESP32 首次点亮失败?从 Arduino 环境搭建到 OTA 固件升级一篇打通

ESP32 首次点亮失败?从 Arduino 环境搭建到 OTA 固件升级一篇打通 【免费下载链接】arduino-esp32 Arduino core for the ESP32 family of SoCs 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 Arduino ESP32 是乐鑫官方面向 ESP32 全系芯…

2026/10/23 10:33:28 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/9 14:01:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/9 14:56:39 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/9 1:59:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/9 14:01:10 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/9 7:45:06 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/9 14:01:11 阅读更多 →

日新闻

周新闻

月新闻