当前位置: 首页 > article >正文

怎么给《Cyberpunk 2077》制作功能性MOD

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,把它放在插件相同的目录下即可。

年后继续...


http://www.kler.cn/a/231455.html

相关文章:

  • LLM评测指标与评测方法
  • 探索Python PDF处理的奥秘:pdfrw库揭秘
  • 博客园-awescnb插件-geek皮肤优化-样式优化
  • 初级数据结构——栈与队列的互相实现
  • Spring Cloud Alibaba [Gateway]网关。
  • 天童美语:下元节将至
  • 装箱问题(洛谷)
  • 用爬虫自建行业知识库
  • 三、设计模式相关理论总结
  • Leetcode刷题笔记题解(C++):64. 最小路径和
  • TI毫米波雷达开发——High Accuracy Demo 串口数据接收及TLV协议解析 matlab 源码
  • JAVA的学习Day1
  • uniapp /微信小程序 使用map组件实现手绘地图方案
  • LeetCode 刷题【Java常用API与数据结构总结】(持续更新……)
  • 92.使用数组形式的责任链模式实现项目配置初始化
  • 深度学习(14)--x.view()详解
  • Kubernetes 是什么?
  • 【算法题】95. 不同的二叉搜索树 II
  • ChatPromptTemplate和AI Message的用法
  • C语言第二十弹---指针(四)
  • vue3-内置组件-KeepAlive
  • Android:IntentActivity,Service,BroadcastReceiver
  • FANUC机器人外部远程启动的相关参数设置示例
  • docker proxy 【docker 代理】
  • ChatGPT实战100例 - (14) 打造AI编程助手 Code Copilot
  • 相机图像质量研究(8)常见问题总结:光学结构对成像的影响--工厂调焦