rAthena 开发环境搭建指引手册


0x00 前言

此手册适用于 rAthenaPandas(相当于 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

  1. 切换目录到 Pandas/3rdparty/boost
  2. 执行脚本 ./bootstrap.bat 即可编译并安装 boost

注意 Pandasbootstrap.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 就很简单了:

  1. 双击 Pandas/rAthena.sln 使用 VS 打开工程
  2. 【解决方案配置】选择 x64,至于选择 Debug 还是 Release 看需要即可
  3. 右击【解决方案 ‘rAthena’】,选择 “重新生成解决方案”
  4. 如无意外即可顺利编译成功

0x40 创建数据库

Mysql 可以到官网下载,但建议用 docker 部署。

部署后使用 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 编辑移除,而且翻遍了注册表也没找到这个继承的配置位置。


最开始的解决方案是参考这篇文章的做法:

  1. 在 opencv 的官网 下载对应的版本 OpenCV – 3.4.16
  2. 解压后把 build/x64/vc14/lib/opencv_world3416d.lib 拷贝到 Pandas/3rdparty/opencv/opencv_world3416d.lib
  3. 在 链接器 -> 常规 -> 附加库目录 添加 $(SolutionDir)3rdparty\opencv 即可


后来找到这篇文章,发现继承的库文件写死在 %AppData%/../Local/Microsoft/MSBuild/v4.0/Microsoft.Cpp.x64.user.props 这个文件中:

用文本编辑器移除无用的库,就可以不依赖 opencv_world3416d.lib 正常编译了。

opencv 只是一个特例,当遇到类似的继承库的问题时,可以参考前面的方法解决


文章作者: EXP
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 EXP !
 上一篇
Docker 设置代理指引(Windows 系统) Docker 设置代理指引(Windows 系统)
背景当我们在国内使用 docker 时,因为 GFW 的原因,有时会非常慢甚至连接不上。 一般 docker 命令会遇到以下两种异常情况: error pulling image configuration: unexpected EOF
2022-11-20
下一篇 
从零开始 DIFF Ragnarok 登入器教程 从零开始 DIFF Ragnarok 登入器教程
DIFF 就是对 Ragnarok 登入器进行定制化改造、生成 Patch 的逆向过程。针对 Ragnarok 逆向的工具 Nemo 可以让任何人都能很方便地改造 Ragnarok 登入器 ...
2022-11-19
  目录