传奇手游从零架设教程:战神三端服务端配置与安卓APK打包步骤

来源: 作者: 点击:
只做内部学习、已授权源码测试时,按“选引擎—布服务器—建库—改IP端口—起网关—打安卓包—联调”走。不同引擎目录名会变,但整体链路一样:服务端负责账号、角色、地图、怪物、物品;手机端只改连接地址和签名;网络层把登录、角色、游戏、数据库端口放开。

一、服务器与系统基础

小范围测试用4核8G Windows Server 2012/2019最省事,战神、GOM三端、GEE三端、996三端、XO三端都能跑;LEG轻量端2核4G可带几百人,HERO、GOM重脚本端建议8G以上。 云主机买按量或月付,先不买年付。系统装完做四件事:

1. 关Windows Defender实时防护,把服务端目录加白,M2、LoginGate、UpdateGate、Key、批处理常被误删。
2. 装运行库:VC++2005到2022的x86+x64、.NET 4.8、DirectX9、MSVBCRT汇总包;用Java中控再装JRE/JDK。
3. 数据库按引擎选:老Blue/Hero/GOM部分用DBC2000建HeroDB;战神、GEE、996、部分三端用MySQL/MariaDB,phpStudy或自行安装,端口3306;少数用SQLite、MongoDB,按包内说明来。
4. 服务端解压到纯英文路径,例如D:\MirServer或D:\mud2.0,别放桌面、中文目录、Program Files,别带空格。

二、拿完整服务端包

一套能跑的手游包至少含:DBServer数据库服务、LoginSrv账号服务、LoginGate登录网关、SelGate/角色网关、RunGate/GameGate游戏网关、M2或Mir200主引擎、MobileGate或手游中控、www热更目录、SQL/DBC初始数据、安卓客户端模板、iOS客户端模板。缺MobileGate又标“三端”的基本是PC端改的,别用。

单机本机测试所有IP写127.0.0.1;给别人外网玩写云主机公网IP或域名。局域网写内网IP,路由器做端口映射。

三、数据库初始化

DBC类引擎:
打开BDE Administrator,新建别名HeroDB,类型STANDARD,PATH指向服务端Mud2\DB或Mir200\Envir\DB;Ctrl+A保存。进游戏后人物、物品、技能读DBF,Item.DB、Magic.DB、Monster.DB别随便换别的版本,字段不对会出空物品、空技能。

MySQL类引擎(战神/GEE/三端常用):
1. 启动MySQL,Navicat连127.0.0.1:3306,新建库,例如mir2、ocenter、logincenter,字符集utf8mb4,导入包内sql;战神类常见建mir2后导入账号、角色、日志相关sql,导入编码选UTF-8,避免中文名乱码。
2. 改服务端数据库配置:DBConfig.ini或各组件ini里写DBHost、DBUser、DBPassword、DBName;本机写localhost,外网分离再写内网地址。
3. 启动前确认MySQL服务常驻,手动建测试账号时密码按引擎加密工具生成,别直接明文插表。

四、全局IP与端口

通用替换位置:
DBServer\DBService.ini、LoginSrv配置、LoginGate\LoginGate.ini、GameGate/MirGate配置、中控logincenter\config\serverlist.json或serverlist.lua、www\project.manifest、www\version.manifest。
常见端口:7000登录网关,7100角色/选择网关,7200游戏网关,7300 DBServer,8080安卓热更/中控,8081 iOS,8000微端,3306数据库,80/443补丁与公告;具体看引擎,不硬抄。
改IP用Notepad++按ANSI另存,别用带BOM的UTF-8改老ini,否则M2读配置乱码。把127.0.0.1批量换公网IP后,再单独检查列表文件、热更manifest、中控json三处是否一致。

安全组与防火墙:云控制台入站放TCP 7000-7500、8080、8081、8000、3306(3306外网不建议直放,只限管理IP);本机防火墙同样加规则。 家用宽带做映射时把7000、7100、7200、7300映射到内网主机,协议TCP。

五、启动顺序

按“数据库—账号—DB—网关—主引擎”起,别全双击:
1. 起MySQL/DBC服务,确认库可连。
2. 起DBServer,看能否加载角色/物品/怪物库,无“DB连接失败”。
3. 起LoginSrv账号服务,负责建号验号。
4. 起LoginGate登录网关,监听7000类端口。
5. 起SelGate/角色网关、RunGate/GameGate游戏网关,看“Connect To Game Server Successfully”之类成功日志。
6. 起M2/Mir200主引擎,加载Map、MonGen、Npc、Shop、脚本;M2界面无红色报错再开门。
7. 起手游中控/MobileGate,加载serverlist和热更目录。若用phpStudy跑公告和热更,确认站点根目录指向www,manifest里IP、端口、版本号、资源包名和客户端一致。

起不来先查三样:M2红色日志、DB连接日志、netstat端口监听。cmd跑netstat -ano | findstr "7000 7100 7200 7300",没LISTENING就是配置没绑或端口被占;占用了改网关端口并同步登录器。

六、安卓客户端改IP与打包

引擎自带APK模板最省事,分两种改法。

改配置文件重签:
1. 用Android Studio或APK工具打开模板,找assets\ServerList.txt、assets\config.txt、assets\config\defServerList.json之一;格式通常是“区名IP
7000”或json数组写ip、loginPort、gamePort、hotupdateUrl。
2. 把127.0.0.1换成公网IP;热更地址写http://IP:8080/project.manifest或引擎规定路径。
3. 改包名,例如com.yourcompany.legendmobile,避免和别包冲突;图标、启动图、权限按需要替换。
4. 生成keystore:keytool -genkey -v -keystore legend.keystore -alias legend -keyalg RSA -keysize 2048 -validity 36500;Android Studio Build APK时选这个签名。keystore和密码单独备份,丢了不能同包名更新。
5. 架构勾ARM64-v8a,老机型补armeabi-v7a;Unity工程另按Player Settings设置Minimum API、Target API、Internet权限。
6. Build APK或AAB;内测发APK,上Google Play发AAB。装手机用adb install -r xxx.apk,看logcat抓Unity/Android崩溃。

Unity自研客户端:
导入服务端给的proto或HTTP登录SDK,Login场景填账号→请求LoginSrv拿token→进ServerList→选区连GameGate。资源按720×1280、1080×2340做适配,触控把烈火、冰咆哮、施毒、拾取做成大按钮。Build Settings切Android,装Android Build Support、SDK、NDK、OpenJDK,Player里写company/product/package, Publishing Settings挂keystore,输出APK测试。

非Unity的老APK模板:反编译改assets比改smali简单;只换服务器列表、重打资源、重签名就能测。若引擎换登录加密,必须用官方登录器生成工具,自己改明文IP会被网关拒绝。

七、iOS与三端同步

iOS不用越狱的分发思路:用引擎给的iOS模板,改Payload内config/json的IP和端口,企业证书或TestFlight签名安装;三端数据互通靠同一套M2+MobileGate,不按端分库。中控serverlist同时写安卓8080、iOS8081、PC7000、微端8000,热更资源用同一份mir2.zip/version清单,避免手机下到PC补丁。

八、版本内容接入

服务端核心目录:
Mir200\Envir\Map:地图参数;Mir200\Envir\MonGen:刷怪;Mir200\Envir\Npc:功能NPC脚本;Mir200\Envir\Shop:商店;Mir200\Envir\MarketDef/MarketSell:行会、寄售;Mud2\DB:物品技能怪物库;www或MobileRes:手机热更素材。
改经验、爆率、装备属性别直接改线上库,先复制测试区。1.76类只放沃玛祖玛赤月重装;微变中变加转生、切割、专属时,NPC脚本、热更前端、数据库物品表三者字段要一致,否则手机端显示“未知装备”。

九、联调测试清单

手机装包后按这个顺序验:
1. 登录界面能拉到区名,说明中控/列表/热更地址通。
2. 建角色进比奇不黑屏,说明网关、M2、地图、素材通。
3. 打怪掉物、捡物、存仓、下线再上角色数据不变,说明DB/MySQL存档通。
4. 放技能无报错、无未知魔法,说明Magic.DB或技能表与客户端版本一致。
5. 行会、组队、沙巴克或攻城地图不卡门,说明网关负载和脚本无死循环。
6. 安卓/iOS/PC同账号同角色互通,说明中控角色库统一。

十、常见故障

连接服务器失败:先netstat看网关端口,再查安全组、本机防火墙、列表IP、中控json三处是否一致;域名解析未生效临时换纯IP。
黑屏进不去:多为手机热更manifest版本号高于服务端、资源包缺失、IP写127.0.0.1。把www里project.manifest、version.manifest、IP、端口、资源MD5重算后重发。
数据库连接失败:MySQL没起、密码错、库名错、DBC路径错。DBC重设HeroDB的PATH到Mud2/DB;MySQL查error.log和DBServer.log。
定时全体掉线:网关端口被别的服务占用、登录器与网关密钥不一致、网关缓存堆积。统一M2/LoginGate/GameGate/登录器密钥,换端口,按“DB—网关—M2”顺序重启。
进游戏不保存等级物品:DB写权限不足、DBC指向错库、MySQL账号只有只读。给游戏库账号增删改权限,确认存档目录可写。
APK装了闪退:包名冲突、未签名、minSdk太高、ARM64缺失、Unity native插件只有32位。用logcat看首次崩溃栈,补对应ABI和权限。
M2启动闪退:内存不够先升4G+;运行库缺补VC/.NET;脚本报错删最近新增NPC或插件回到上一备份。

十一、资源与合规

只用自己开发或已获授权的源码、美术、音效、品牌名;内部测试不开未授权第三方支付、不外发破解登录器、不替换他人加密资源。上架安卓商店准备软著、包名、隐私政策、年龄提示、截图和备案材料;iOS走企业分发或App Store审核,别用不明证书绕过安装限制。 架设过程所有账号、IP、端口、keystore写进内部文档,定期备份Mir200/Envir、数据库sql、www热更包,回滚按“库备份+版本目录备份”两点做,不单备APK。

按上面走,单机架设半小时能进游戏,外网三端测试再把安全组、中控、热更manifest、安卓签名四件事核对一遍即可;后期卡顿优先看M2脚本、网关数量、MySQL慢查询和带宽,不盲目加区。