尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

快速部署传奇游戏服务器:OpenMir2 实战指南

快速部署传奇游戏服务器:OpenMir2 实战指南 快速部署传奇游戏服务器OpenMir2 实战指南【免费下载链接】OpenMir2Legend of Mir 2 Game server项目地址: https://gitcode.com/gh_mirrors/op/OpenMir2OpenMir2 是一个用 C# 编写的传奇 2 游戏服务器基于早期 Delphi 版服务端逻辑重写把账号、角色、游戏引擎拆成 6 个独立进程让你能在一台普通机器上跑起一套完整的传奇游戏服务器也适合想学习 MMORPG 后端多人在线角色扮演游戏后端架构的开发者。项目托管在 gitcode支持用 .NET 8 SDK 直接编译运行。第一步把它跑起来 按下面四步走每一步都有验证方法。环境准备安装 .NET 8 SDK仓库的global.json固定了 8.0.0允许向上滚动大版本、MySQL 5.7 以上、Git。验证终端执行dotnet --version输出 8.x 即通过。获取代码执行下面命令拉取仓库并还原依赖。git clone https://gitcode.com/gh_mirrors/op/OpenMir2 cd OpenMir2 dotnet restore验证dotnet build OpenMir2.sln编译通过、无报错。 3.初始化数据sql/ 目录下有三个脚本依次导入 MySQLmir2_db.sql角色表如characters、mir2_account.sql账号表、mir2_data.sql交易、掉落等数据表。验证SHOW TABLES能看到characters、account等表。 4.启动服务6 个服务按依赖顺序启动DBSrv数据库服务→ LoginSrv账号服务→ GameSrv游戏服务→ GameGate游戏网关→ SelGate角色网关→ LoginGate登录网关。每个服务在其目录下执行dotnet run即可例如 src/GameSrv/。验证各进程控制台无异常输出再用客户端连上 LoginGate 的端口能看到登录界面。第二步看懂它怎么工作 跟着登录 → 认证 → 选角 → 进游戏这条主线各服务的分工就清楚了客户端先连LoginGatesrc/LoginGate/它只做转发把登录、注册请求交给LoginSvrsrc/LoginSrv/账号和密码存在mir2_account库。认证通过后进入选角界面此时客户端连SelGatesrc/SelGate/。建角、删角操作由它转给DBSvrsrc/DBSrv/角色数据读写mir2_db库的characters表。点进入游戏后连接切换到GameGatesrc/GameGate/它负责收发包和基础过滤真正处理走路、攻击、施法的是GameSrvsrc/GameSrv/。游戏的核心逻辑不写在 GameSrv 里而在它引用的 src/M2Server/ 工程中Actor/是角色对象Monster/Monsters/是上百种怪物 AIMaps/负责地图与寻路Player/处理玩家行为。GameSrv 的Word/Threads/下还按线程拆分了用户、怪物、商店等处理器。离线时GameSrv 把角色数据交回 DBSvr 落库下次上线再读回来——整条链路闭合。第三步调成你喜欢的样子 ⚙️性能调优各服务配置集中在自己目录的appsettings.json如 src/GameGate/appsettings.json日志统一用 Serilog 输出到控制台可选写到 Seq 日志服务默认地址localhost:5341。常用调节点如下调整项位置说明日志级别各服务appsettings.json的LogLevel生产环境把Debug调回Information减少 IO日志输出同文件Serilog.WriteTo不用 Seq 可删掉对应项只留 Console.NET 版本根目录global.json默认 8.0.0改rollForward可换运行时存储后端src/Storeages/ 各项目换后端后重新编译 DBSrv另外根目录有nlog.config用于部分组件的 NLog 输出需要集中管理日志时一并处理。功能扩展加地图、加怪物地图结构在src/M2Server/Maps/含MapPoint、寻路怪物在src/M2Server/Monster/Monsters/每个怪物一个类继承MonsterObject即可定制 AI。加游戏模块src/Modules/ 下是可插拔模块聊天ChatSystem、交易MarketSystem、GM 指令GameCommand、压测机器人RobotSystem、脚本引擎ScriptEngine都在里面。新模块照ModuleInitializer.cs的模式写注册入口。加管理员指令src/Modules/GameCommand/Commands/每个指令一个文件仿照现有AddGoldCommand等类实现。换存储后端src/Storeages/下已有 MySQL、MongoDB、Sqlite、本地文件四套实现让 DBSrv 引用其中一个即可切换玩家数据的落地方式。出问题时的处理路径 ️现象某个服务启动即退出。原因数据库没起、库表没导、账号密码不对。解法先用客户端工具手动连一遍 MySQL再按上一步顺序重跑 SQL 脚本。现象客户端卡在登录界面。原因6 个服务漏启动或 LoginGate 端口被占用。解法对照启动顺序逐个补起用ss -lntp或netstat查端口占用改冲突服务的端口配置。现象选角界面一个角色都没有。原因mir2_db没导数据或角色不属于该服。解法确认characters表有记录且LoginID与账号库对得上。现象挂机一段时间后再上线装备金币丢了。原因角色数据没落库DBSrv 写库失败。解法检查 DBSrv 引用的存储后端能否正常写看控制台是否有异常堆栈。现象人多的地图明显卡顿。原因同屏怪物过多、处理线程压力大。解法调低刷新密度必要时用 RobotSystem 压测定位瓶颈后再加机器或拆分地图。从登录认证到怪物刷新的完整链路都在 src/ 里源码结构清晰是阅读 C# 游戏服务端的合适材料。遇到问题可在项目仓库提 Issue 或提交 PR 交流。【免费下载链接】OpenMir2Legend of Mir 2 Game server项目地址: https://gitcode.com/gh_mirrors/op/OpenMir2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表