大家好。
我决定在这里发布我为 Source 2 游戏编写的 SDK 生成器。之前我做过一个相当简单的转储工具,但后来决定编写一个功能完整的生成器。
你可能会问:“既然有 Neverlose 的 source2gen,为什么还需要这个生成器?”这是个合理的问题,下面是我的解释:
1. 目前,原始仓库以及 Neverlose 账号本身都已被删除。当然,现在还有一些 Fork,但它们可能已经停止更新。
2. 有一段时间 source2gen 完全无法工作,这也是我产生编写自己转储工具想法的原因。
3. source2gen 的 IDA 发射器会生成一个包含结构体的单一文件,其中存在错误,导致部分类型无法导入。我的版本已经修复了这些问题。
4. 我计划持续更新这个生成器,因此它应该能够长期维护。
下面介绍一下生成器的工作方式。它的运行原理与 source2gen 没有区别:打开控制台,必要时输入所需参数即可。无需打开游戏进程,只需要安装对应的游戏。
目前有三种发射器:
- 标准 C++ 代码
- IDA C++
- IDA C
标准 C++ 发射器会为每个结构体生成独立文件,并放入以模块命名的对应文件夹中。三者的主要区别在于:
- IDA C++ 使用标准的 C++ 继承方式;
- IDA C 则将基类作为派生类的第一个成员进行声明。
再单独说一下 C++ 发射器:所有原子类型及其特化版本(如果它们的大小与基础类型不同)都会输出到单独的 types.hpp 文件中。你也可以将该文件全部注释掉,并在其中引入自己的类型,这样就能得到完全可用的结构体。需要注意的是,大小、名称和参数必须保持一致。
如果有需要,你也可以编写自己的发射器。项目中的结构体收集和代码生成是分离的,因此可以直接使用收集器来制作自己的生成器,例如用于 Rust 的发射器,或者其他用途。
目前支持三款游戏:
- CS2
- Dota
- Deadlock
基本上,这就是关于这个项目的全部介绍。我尽量让代码保持高质量,并附有完善的文档。
12游戏吧 » Shade Generator v1.0.0(CS2、Dota、Deadlock)SDK工具源码