Skip to content
mercury233 edited this page Apr 3, 2022 · 1 revision

准备工作

下载

  • YGOPro发行版

    用以获取卡片数据库和卡图,其中数据库是必备的

  • Visual Studio

    VS2015及以上版本理论上可以用,安装时选中使用 C++ 的桌面开发

  • DirectX SDK

  • git for windows

    并且拥有github账号和SSH的key

  • premake5

    项目有两种描述文件premake和cmake,但cmake近期无人维护

依赖库

依赖库的安装目前在windows上没有成熟的解决方案,所以建议手工下载源代码并静态编译

  • libevent-2.0.22

    只有这个版本被测试过,新的版本可能可以用

  • FreeType-2.11.1

    只有这个版本被测试过,暂时不建议使用新的版本

  • Irrlicht-1.8.5

    只有这个版本被测试过,而且需要打中文支持的补丁才能用

  • Lua-5.4

    不支持5.2及更早的版本

  • SQLite3

  • irrKlang

    非开源,下载32位版,可在premake5.lua中修改USE_IRRKLANG来禁用,结果就是没有声音

下载代码库

使用git clone即可,clone时加--recursive来同时克隆子模块,或者完成后运行git submodule update --init

clone完成后需要分别进入ocgcorescript两个子模块文件夹checkout到master分支

具体命令:

git clone [email protected]:Fluorohydride/ygopro.git
cd ygopro
git submodule update --init
cd ocgcore/
git checkout master 
cd ..
cd script/
git checkout master 
cd ..

安装依赖库

  • 将下载的libevent解压到项目文件夹,重命名为event

  • 将下载的freetype解压到项目文件夹,重命名为freetype

  • 将下载的irrlicht解压到项目文件夹,重命名为irrlicht

  • 将下载的irrKlang解压到项目文件夹,重命名为irrKlang

  • 将下载的lua解压到项目文件夹,重命名为lua

  • 将下载的sqlite解压到项目文件夹,重命名为sqlite3注意有个3

  • 将premake文件夹内所有文件夹复制到项目文件夹,其中包含了各个依赖库的premake描述文件,可以自行修改完善

为irrlicht打中文补丁

原版irrlicht不支持中文复制粘贴,不支持输入法,需要打补丁,进入irrlicht文件夹运行

patch -p1 < irrlicht.patch

也可以直接使用修改好的版本

生成项目文件并编译

安装premake5.exe并添加到PATH,或者直接放到项目文件夹,然后运行

premake5 vs2022

就可以用VS打开build文件夹里的YGOPro.sln解决方案并编译了

此时目录结构省略多余文件后应该看起来是这样:

├─bin
├─build
├─cmake
├─event
│  └─include
├─freetype
│  ├─include
│  └─src
├─gframe
├─irrKlang
│  ├─bin
│  ├─include
│  └─lib
├─irrlicht
│  ├─include
│  └─source
│      └─Irrlicht
├─lua
│  └─src
├─ocgcore
├─premake
├─script
├─sound
├─sqlite3
└─textures

调试运行

从发行版里把cards.cdbpics文件夹和deck文件夹和replay文件夹复制到项目根目录

把irrklang的3个dll从irrklang\bin\win32-visualStudio复制到项目根目录

然后将bin\releasebin\debug里生成的ygopro.exe复制到项目根目录即可运行

也可以在VS中指定工作目录为你正在使用的YGOPro目录以便直接调试

使用irrKlang pro

irrKlang是商业软件,但其所有功能都是免费的,只是免费版发布的时候必须带dll不能静态编译,所以没必要使用它的pro版

如果一定要用pro版,购买后可以把plugins里的ikpMP3一起编译了,具体过程略

但在VS中调试时要用免费版的lib,pro版的lib不支持调试