Skip to content

Latest commit

 

History

History
132 lines (102 loc) · 7.22 KB

Setup.md

File metadata and controls

132 lines (102 loc) · 7.22 KB

工具配置

回到目录 | 工具配置 | 脚本说明 | 快速入门 | 插件基础 | Papyrus调用 | 事件响应 | 内存补丁 | 函数Hook

前置

本教程会使用CMake管理插件项目,并用Visual Studio 2022进行开发和编译.

Steamless使用方法: 运行Steamless.exe并解包SkyrimSE.exe. 运行完成后将SkyrimSE.exe更名为SkyrimSE.Old.exe, 并将SkyrimSE.unpacked.exe更名为SkyrimSE.exe即可解除Steam的反Debug保护.


工具

  • CMake

使用CMake保持外部编译的规范, 有助于管理插件项目和解决方案. 下载CMake后依说明安装.

  • Git

Git用于拉取/更新库. 下载Git后依说明安装.

  • vcpkg

vcpkg用于获取和管理依赖项. 如果本地已安装vcpkg, 则在系统环境变量添加变量VCPKG_ROOT并为其赋值本地vcpkg的安装目录.
如果本地未安装vcpkg, 教程示例项目会自动安装vcpkg.

  • Visual Studio

本教程使用的IDE为VS2022. 下载Microsoft Visual Studio 2022预览版后依说明安装.
必需组件: 使用C++的桌面开发
VSCXX


游戏

  • 确认游戏本体可以正常运行;
  • 确认游戏可以从SKSE正常运行;
  • 移除/禁用ENB和ReShade插件(会减缓启动速度, 妨碍调试);

可选: 使用BethINI工具或者手动配置游戏SkyrimPrefs.ini文件:

[Display]
bBorderLess=0
bFullScreen=0
iSize H=768
iSize W=1366
iVSyncPresentInterval=1

其中分辨率无需设置为1366x768, 这里只为使用一个比全屏幕分辨率低的窗口模式, 方便切出游戏和调试.


示例项目

Maxsu的快速入门指南(未更新)

  • CommonLibSSE

简称CLib, CommonLib, 是代替SKSE的插件开发库, 内容极为丰富, 实用性高, 并且社区一直进行维护和更新.
当前社区主流的有Ryan开发的CommonLibSSE(原作者), po3更新的CommonLibSSE(维护者), maxsu更新的CommonLibSSE(维护者).
除Ryan的CLib库外, 其他提到的库都支持NG构建. NG则是Next-Generation的缩写, 由CharmedBaryon在po3的CLib库基础上升级出的可同时支持AE/SE/VR版的多目标运行环境.

  • BOOTSTRAP

首次设立工作项目需要以管理员权限打开PowerShell, 重定向至合适的工作目录, 运行以下命令:

git clone https://github.com/gottyduke/SKSEPlugins
Set-ExecutionPolicy Bypass -Scope Process
cd .\SKSEPlugins
.\!Rebuild -Bootstrap

win_terminal.png
在此过程中根据提示完善工程项目相关信息.
运行完成后重启PowerShell或常用的命令行终端.

Bypass执行策略仅应用于当前终端, 不必担心电脑安全.

  • 新建项目

命令!MakeNew <项目名称> [-install: mod名称] [-message: 项目说明] [-vcpkg: 额外依赖项]用于快速新建符合此工作项目规格的插件项目. 打开PowerShell或常用的命令行终端, 重定向SKSEPlugins目录内. 运行以下命令:

.\!MakeNew MyNewPlugin -install "My New Mod" -message "Demo Plugin :)"

这样便新建了一个插件项目MyNewPlugin, 该项目的mod名称为My New Mod, 简易说明为Demo Plugin :).

!MakeNew命令生成的插件项目非常基础, 若有第三方库依赖, 需要对CMakeLists.txtvcpkg.json进行进一步的修改.
插件项目名称指整个项目及生成的dll文件的名称. mod名称指使用生成后控制工具时生成的mod名字.

  • 生成方案

命令!Rebuild <运行环境> [自定义CLib]用于重新生成整个解决方案.
打开PowerShell或常用的命令行终端, 重定向SKSEPlugins目录内. 运行以下命令:

.\!Rebuild All

这样便生成了一个解决方案, 该方案的运行环境支持AE版+SE版+VR版, 使用的CommonLibCharmedBaryon的默认CLib-NG.

生成一个全版本支持+自定义CLib的解决方案, 同时启用DKUtil的测试工具:
.\!Rebuild -C -DBG DKUtil
Report.png

  • 添加/删除文件

在VS内正常右键新建文件即可, 新文件将会立即可用. 第一次编译后检测到的新文件会自动转移至该项目的根目录, 并在第二次编译后自动更新项目文件, 此时按照VS提示重新加载项目即可. 这两次编译并不需要立即接连执行, 对文件做出的所有更改在转移前, 两次编译之间, 编译后, 重新加载后都会保留.

!Update脚本目前支持自动添加至CMake源文件表的文件类别为: *.c *.cpp *.cxx *.h *.hpp *.hxx QuickAdd

  • 运行环境代码分离

使用REL::Module::IsAE() ::IsSE() ::IsVR()来判断当前加载插件的运行环境是哪一个版本.

if (REL::Module::IsAE()) {
    // AE code
} else if (REL::Module::IsSE()) {
    // SE code
} else {
    // VR code
}
  • 自定义CLib

!Rebuild命令生成时使用CharmedBaryon的默认CLib-NG. 若要使用自定义CommonLib, 在BOOTSTRAP步骤中设置合适的自定义CommonLib环境并在!Rebuild命令启用参数-C-Custom以启用自定义CommonLib.


回到目录 | 工具配置 | 脚本说明 | 快速入门 | 插件基础 | Papyrus调用 | 事件响应 | 内存补丁 | 函数Hook