0x00 前言
此手册适用于 rAthena 和 Pandas(相当于 rAthena_CN)。
下文围绕 Pandas 进行讲解,套用到 rAthena 也是一样的道理。
0x10 查看工程版本
由于 Pandas 是用 C++ 写的,因此它对 VC 版本是有要求的(因为依赖的 C++ 运行库不一样),版本不对非但编译不成功,还会报各种莫名其妙的错误。
又因为 Pandas 是 VS 工程(根目录下有 *.sln
工程文件),要想知道它是用哪个 VC 编译的,只需要用文本打开 rAthena.sln
文件,即可在文件开头找到一段版本说明:
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.1.32328.378
MinimumVisualStudioVersion = 12.0.40629.0
结合《VisualStudio 版本详解》可知,Visual Studio Version 17 即 Visual Studio 2022。
以后如果 Pandas 更换了 VS 版本,可以用同样的方法查找版本。
0x20 环境安装
0x21 安装 VS
Visual Studio 2022 去官网下载社区版 Community 即可。
安装时选择 使用 C++ 的桌面开发
,右边会默认勾选要安装的组件,一般默认就可以,但是这两项:
- MSVC v143 - VS 2022 C++ x64/x86 生成工具
- Windows 11 SDK (10.0.22000.0)
如果没有勾选的话,必须手动勾选一下,不然编译 Pandas 时会失败。
0x22 配置 CL 环境变量
安装 VS 之后,需要手动添加/修改系统坏境变量:
- 键:
CL
- 值:
-FI"S:\04_work\VS2022_Community\IDE\VC\Tools\MSVC\14.33.31629\include\stdint.h"
【值】根据 VS 实际的安装位置修改(VC 每次升级后此目录都会变化),CL 主要是给 boost 安装时调用的
boost 可以从
%ProgramFiles(x86)%\Microsoft Visual Studio\Installer
找到 VS 的安装目录,但是却无法定位到 CL …
0x23 安装 boost
- 切换目录到 Pandas
/3rdparty/boost
- 执行脚本
./bootstrap.bat
即可编译并安装 boost
注意 Pandas 的 bootstrap.bat
不是原版的,它被修改过以下内容:
- 仅筛选必要组件编译:
--with-regex --with-filesystem --with-locale --with-date_time
- 自动执行:
./b2.exe
构件组件
bootstrap.bat 被修改内容
... ...
REM ========== Pandas Requires Components ==========
ECHO libraries = --with-regex --with-filesystem --with-locale --with-date_time ; >> project-config.jam
ECHO. >> project-config.jam
REM ================================================
... ...
REM ======== Auto use b2 to build libraries ========
ECHO.
ECHO Start Building Components...
cmd /c b2 link=static runtime-link=static define="_ITERATOR_DEBUG_LEVEL=0"
ECHO The requires components was building finish, please check it.
ECHO.
REM ================================================
... ...
0x30 编译 Pandas
前面准备工作都完成后,编译 Pandas 就很简单了:
- 双击 Pandas
/rAthena.sln
使用 VS 打开工程 - 【解决方案配置】选择
x64
,至于选择 Debug 还是 Release 看需要即可 - 右击【解决方案 ‘rAthena’】,选择 “重新生成解决方案”
- 如无意外即可顺利编译成功
0x40 创建数据库
部署后使用 Pandas/sql-files
目录下的 SQL 脚本初始化数据库即可。
如果希望地图服务器加载 item_db、mob_db 等 txt/yml 文件数据,则初始化数据库时只需要导入以下 4 张表,其他表无需导入:
- main.sql
- web.sql
- roulette_default_data.sql
- logs.sql
相反,如果希望从数据库读取 item_db、mob_db 等数据,则按照 Pandas/sql-files/README.md
的指引按需导入其他 SQL 脚本即可。
留意 Pandas 的 Releases,当升级版本时需要对应更新部分数据库脚本
0x50 修改配置
0x51 数据库配置
必须修改 Pandas/conf/inter_athena.conf
中的数据库配置,根据实际开发环境的 Mysql 参数配置即可:
// 登录服务器专用
// MySQL 主数据库的连接配置信息
login_server_ip: 127.0.0.1
login_server_port: 3306
login_server_pw: ragnarok
login_server_db: ragnarok
// 登录服务器专用
// IP 封禁数据库的连接配置信息
ipban_db_ip: 127.0.0.1
ipban_db_port: 3306
ipban_db_pw: ragnarok
ipban_db_db: ragnarok
// 角色服务器专用
// MySQL 主数据库的连接配置信息
char_server_ip: 127.0.0.1
char_server_port: 3306
char_server_pw: ragnarok
char_server_db: ragnarok
// 地图服务器专用
// MySQL 主数据库的连接配置信息
map_server_ip: 127.0.0.1
map_server_port: 3306
map_server_pw: ragnarok
map_server_db: ragnarok
// WEB 接口服务器专用
// MySQL 主数据库的连接配置信息
web_server_ip: 127.0.0.1
web_server_port: 3306
web_server_id: ragnarok
web_server_pw: ragnarok
web_server_db: ragnarok
// 登录、地图服务器共用
// MySQL 日志数据库的连接配置信息
log_db_ip: 127.0.0.1
log_db_port: 3306
log_db_id: ragnarok
log_db_pw: ragnarok
log_db_db: ragnarok
0x52 登录服务器配置
修改 Pandas/conf/login_athena.conf
:
去掉以下注释,避免开发环境多网卡时自动取了其他 IP 地址:
bind_ip: 127.0.0.1
0x53 角色服务器配置
修改 Pandas/conf/char_athena.conf
:
去掉以下注释,避免开发环境多网卡时自动取了其他 IP 地址:
login_ip: 127.0.0.1
bind_ip: 127.0.0.1
char_ip: 127.0.0.1
0x54 地图服务器配置
修改 Pandas/conf/map_athena.conf
:
去掉以下注释,避免开发环境多网卡时自动取了其他 IP 地址:
char_ip: 127.0.0.1
bind_ip: 127.0.0.1
map_ip: 127.0.0.1
0x60 启动程序
依次右击以下几个服务 ->
调试,依次启动即可:
- 登录服务器: login-server
- 角色服务器: char-server
- 地图服务器: map-server
- WEB 服务器: web-server(可选)
至此开发环境搭建完成。
0x70 FQA
展开
0x71 编译: MSB8036 找不到 Windows SDK 版本 10.0
VS 2017 之前的版本,即使安装了 WDK 依然会报这个错,其实根因不是这个问题,最好还是按照 rAthena.sln
要求的版本编译。
0x72 编译: LNK1104 无法打开文件 opencv_world3416d.lib
这个问题应该只有我遇到过,因为之前搞过视觉 AI,忘记什么时候加的 opencv 的库。
结果在编译 Pandas 的时候一直报错找不到 opencv_world3416d.lib
。
后来才发现在 链接器 ->
输入 ->
附加依赖项 里面继承了 opencv_world3416d.lib
。
问题是没有办法在 VS 编辑移除,而且翻遍了注册表也没找到这个继承的配置位置。
最开始的解决方案是参考这篇文章的做法:
- 在 opencv 的官网 下载对应的版本 OpenCV – 3.4.16
- 解压后把
build/x64/vc14/lib/opencv_world3416d.lib
拷贝到 Pandas/3rdparty/opencv/opencv_world3416d.lib
- 在 链接器
->
常规->
附加库目录 添加$(SolutionDir)3rdparty\opencv
即可
后来找到这篇文章,发现继承的库文件写死在 %AppData%/../Local/Microsoft/MSBuild/v4.0/Microsoft.Cpp.x64.user.props
这个文件中:
用文本编辑器移除无用的库,就可以不依赖 opencv_world3416d.lib
正常编译了。
opencv 只是一个特例,当遇到类似的继承库的问题时,可以参考前面的方法解决