Cyberpunk的官方mod支持【REDmod】:https://www.cyberpunk.net/zh-cn/modding-support。官网有三个视频教程,其中第二集演示了脚本的替换,比较合程序员的胃口。
REDmod 是《赛博朋克 2077》的免费 DLC(须购买游戏之后才能下载),集成了在游戏中安装和读取游戏模组的功能,同时提供专门为《赛博朋克 2077》创建游戏模组的全新官方修改工具。您可以单独使用 REDmod 游戏模组工具(在命令行中),或者将其集成在 WolvenKit 游戏模组编辑器中(能够获得最佳体验,便于操作,推荐使用)。WolvenKit 可以从这里下载,启动时会自动检测 REDmod 是否已经安装。
WolvenKit is an open-source modding tool for Cyberpunk 2077 and The Witcher 3: Wild Hunt. Our vision is to develop a standalone software which can read and write all REDengine file formats, simplify and accelerate modding workflows, and help you create great mods for great games.
REDmod可以做贴图(texture)、骨骼动画(animation)和文件级别脚本的替换。功能性MOD自然要做脚本替换。但是,2052个脚本文件,该从哪里下手?😓
还有一个问题:文件级别的脚本替换,颗粒度太粗,容易引起MOD之间的冲突(e.g. 两个MOD都修改了同一个脚本文件)。于是就有了函数级别的脚本替换,redscript登场!redscript是开源的。两分钟看懂redscript的语法;“How to create a hook” 这一篇里有个实战演练:当NPC被子弹击中时增加一个ragdoll效果——思路很棒!遗憾的是,修改的脚本里用到的都是现有脚本接口和功能。怎么在脚本里扩展调用native接口呢?
逛一逛Discord社区。真心诚意的发问,换来一个大发慈悲的回答:
red4ext登场啦!官方介绍:RED4ext is currently only a plugin manager for plugins that extend REDengine 4. It takes care of loading the plugins for the specified game's version.
对于开发者来说,真正要打交道的是RED4ext.SDK。RED4ext.SDK is a library that can be used to extend REDengine 4. The library provides the following features:
- Interacting with the game's scripting VM (e.g. calling functions or accessing class properties);
- Creating new native classes or functions;
- Reversed game's structures;
可以使用Visual Studio 2022来开发插件:x86-64架构,__fastcall函数调用规范;本质上就是一个DLL。这里有个演示项目。用C++来开发吧,可以导出一个函数或类给脚本使用。开发好的插件须放在<game_directory>/red4ext/plugins目录或子目录下;如果你的插件依赖其他DLL,把它放在插件相同的目录下即可。
年后继续...