易车2024年10月11日发布:解密《黑神话:悟空》脚本

⭐发布日期:2024年10月11日 | 来源:易车

⭐作者:El 责任编辑:Admin

⭐阅读量:308 评论:1人

【澳门正版资料大全网站开奖结果今晚】

【澳门精准免费资料查看】

【澳门王中王100%的资料2024】 【二四六天好彩(944cc)免费资料大全】 【澳门一码中精准一码免费中特论坛最新开奖记录】 【吃什么降压得快效果好】 【澳门天天彩今晚开什么号码啊】 【澳门必玩的三个景点】 【2024年澳门天天彩免费资料开奖记录查询】 【新澳门六开彩资料查询开奖结果记录】
【2024澳门特马今晚开奖结果查询】 【2024澳门六开彩免费精准大全】 【新澳门今晚开什么特马】 【2024年新奥门王中王结果】 【王中王精准资料期期中澳门高手】 【管家婆精准一肖一码100%l?】 【正版澳门49资料图库改变世界开奖历史记录】 【2024澳门六今晚结果出来新开奖结果记录】

《黑神话:悟空》这游戏昨天上线了,我第一时间就下载玩了。玩的时候我就挺好奇他们是怎么写的程序,毕竟这么大的游戏项目肯定不会只用C++一种语言来写。所以我解压了游戏文件,看看里面有没有什么线索,结果还真发现了一些有趣的东西。

在游戏正式上线前,官方就发布了一个免费的测试工具,这个工具里其实包含了完整的游戏代码,只是把大部分游戏资源给删掉了。项目组应该是没时间再单独做一个新的测试工程,比起删代码,删资源简单多了,这是程序员都能理解的事情。


引擎版本

一开始他们用的是UE4,后来UE5出来后他们就转用了UE5。现在游戏用的引擎版本是UE5.0.0。虽然Epic后来又发布了UE5.0.3这些更新版本,但项目组一般不会随便升级引擎版本。

他们可能会从新版本里拿一些需要的代码过来用,毕竟如果换引擎的话,之前做的大量定制化改动很难迁移过去。


代码段大小

游戏的exe文件大小达到了859MB,这个大小有点不寻常。相比之下,像《三角洲行动》这样的UE游戏客户端大小是140MB,《极品飞车:集结》客户端大小是105MB。我觉得可能是游戏中包含了太多不必要的插件代码或者是没有去掉一些不需要的符号信息。


技术总监

游戏科学的团队创始人来自腾讯的《斗战神》项目,他们的技术总监招文勇是在2010年加入腾讯量子工作室的,后来这个工作室并入了光子工作室。

文勇是从中山大学软件工程系毕业的,2014年他和冯骥、杨奇等《斗战神》的核心成员一起创立了游戏科学。在这之前,他还担任过《战争艺术:赤潮》的主程。如果有人做过Unity开发并且经常关注Unity Wechat Academy(UWA)的话,应该看过他在UWA平台上的分享文章,其中有一篇写得特别好


曾经分享过一种配置存储方法,就是把配置放在Lua表里,然后用C#的unsafe code来访问这些配置,这样配置数据只需要占用一份内存空间而且还能保持高效。

那时候他们用的是xLua,所以我猜测他们选择的脚本方案可能还是基于Lua的,比如像sluaunreal这种已经在吃鸡手游上验证过的,或者UnLua,因为它维护得比较好。

还有一种可能是他们用了最近车神新出的PuerTS,不过考虑到《黑神话:悟空》立项的时间比较早,应该不会用这两年才兴起的PuerTS,因为切换成本太高。

另外,他们也可能用了C#,但现在市面上的一些C#方案要么没人维护,而且基本上只能在Windows上用,跨平台支持不太好。


脚本方案


我在检查代码符号的时候,发现了好多跟V8有关的内容,所以自然而然地以为他们用了PuerTS,感觉项目组还挺跟得上潮流的。

但是奇怪的是,我没有找到任何跟PuerTS相关的符号。后来我试着搜索"js"这个词,结果发现代码里包含了Unreal.js这个插件。

Unreal.js 这个插件是几年前的东西了,一直都没人维护,直到去年才增加了对 UE5 的支持。看起来《黑神话:悟空》项目组对这个插件做了一些修改。

就这样,我原本以为他们用的就是 Unreal.js,但当我开始解包 pak 文件时,情况有了变化。


Pak解包

解包UE的Pak文件通常需要知道对应的引擎版本和AES密钥,因为不同版本的PakInfo结构会有所不同。

这里就不详细说了,直接说结论吧。我在解包的过程中没有找到像 js、ts 或 wasm 这样的代码文件,所以他们可能继承了Unreal.js插件但并没有真正使用它,或者他们用了其他的方式来存储脚本代码。

但在翻阅Pak文件时,我发现了很多两种类型的二进制文件:.data 和 .Data。小写开头的 .data 文件看起来像是配置文件,而大写开头的 .Data 文件更像是某种代码的二进制形式。

比如 .data 文件中包含的是物品的配置信息,里面似乎记录了物品的蓝图路径和其他配置内容,整体结构类似于protobuf。

.Data 文件看起来就像是某种代码的二进制形式,但按照我的经验,JavaScript(js)或 TypeScript(ts)编译后的代码通常不是这样的形式。这些 .Data 文件倒更像是自定义的状态机代码的样子。

这就有点奇怪了,既没有找到 JavaScript 代码,也没有发现类似 Lua 编译后的代码。但是既然有这种看起来像是二进制代码的文件,那么他们是不是用了 C# 相关的方案呢?

比如 USharp、UnrealCLR 或者 UnrealSharp。我在代码符号中搜索了这些相关的字符串,果然找到了 USharp 的痕迹,并且在 Pak 文件中也发现了 USharp 的 uplugin 文件。所以现在可以确定他们用的就是 USharp。

简单来说,在上面的图中我们可以看到被选中的节点里大量使用了 SharpClass,这是 USharp 中的一个自定义类 UBlueprintGeneratedClass

它的作用是在运行时将 C# 中定义的 UClass 动态地转换成虚幻引擎(UE)能够识别的类型。这样就可以在虚幻引擎中使用 C# 编写的类了。


看起来事情并不那么简单。虽然 USharp 本身并不支持虚幻引擎 5(UE5),也不支持主机和移动设备平台,但在《黑神话:悟空》的项目文件中却包含了对这些平台的支持。

这很可能意味着《黑神话:悟空》的开发者们对 USharp 进行了大量的修改和兼容性改进,以便让它能在 UE5 和不同平台上运行。

尽管如此,我在游戏的打包文件(Pak 文件)中没有找到 JavaScript (js)、Lua (lua) 或者 USharp 的 DLL 文件。这就有点奇怪了,因为在游戏的代码中确实有使用到 Unreal.js 和 USharp 插件的迹象。让我们接着往下探究这个问题。


il2cpp

提到 il2cpp,对于 Unity 开发者来说应该很熟悉。这是 Unity 为了改善 mono 虚拟机的兼容性和性能问题而推出的一种解决方案。简单来说,il2cpp 可以把 C# 代码编译成原生机器码,这样就能提高游戏的运行效率。

然而 il2cpp 是 Unity 专有的技术,用来提高 C# 代码的性能和兼容性,但它通常是和 Unity 引擎绑定在一起的。

在查看《黑神话:悟空》中与 USharp 相关的代码符号时,我发现了一个令人惊讶的情况。《黑神话:悟空》所使用的 USharp 并不是原版的,而是经过了修改,添加了 USharp 运行模式的切换功能。

这意味着他们可以在不同的运行模式之间选择,包括常用的 mono 和 clr 模式,还有 il2cpp 模式!

换句话说,《黑神话:悟空》的团队不仅使用了 USharp,而且还对它进行了大量的定制,使得它能够支持多种不同的运行模式,包括 Unity 的 il2cpp 技术。这表明他们为了让游戏运行更加高效,做了很多额外的工作。

这些不同的运行模式并不是原版 USharp 包含的功能,这意味着项目组为了提高兼容性和性能做了大量的定制和改进。

他们实际上是基于 USharp 重新开发了一个支持多种模式的 C# 脚本方案,包括 mono、clr 和 il2cpp。

既然在 Pak 文件中没有找到 DLL 或脚本文件,那么在正式发布的版本中他们很可能是使用了 il2cpp。这样一来,C# 中定义的所有类型和符号都被编译成了 C++ 代码,并最终整合进了 exe 文件中。这就是为什么 exe 文件会变得如此之大的原因。

如果把 C# 代码打包成 DLL 文件,整个游戏的大小可能只会增加几十 MB,而 exe 文件的大小大概能减少到 100 MB 左右。不过这样做可能会稍微牺牲一些性能。


总结

总结一下,《黑神话:悟空》的脚本方案是基于 USharp 进行了大量定制化的改进,他们自己实现了支持 mono、clr 和 il2cpp 的运行模式,并且这套方案还支持多个平台,包括 PC、Mac、Linux、Android、iOS、PS5 和 Xbox。

此外,虽然游戏的代码中集成了 Unreal.js,但看起来并没有真正使用到它。他们还使用了一种自研的状态机或行为树系统,并且配置表是以 protobuf 结构的二进制数据形式存储的。

需要注意的是,这里只是简单分析了《黑神话:悟空》的脚本方案,并没有涉及任何解包方法或资源破解的信息,请不要用于非法用途。





【澳门一肖一码必中一肖一精准开奖结果】 【王中王免费资料大全料大全一精准】
【4949澳门免费资料大全特色】 【天天彩澳门天天彩】
【今晚澳门特马开什么号码342开奖结果查询】 【新澳精准资料免费提供510期】
【澳门最准内部资料u7】 【澳门精准资料大全免费公开】
【澳ⅰ门天天好彩】 【澳门一码一肖100%】
【香港资料大全正版资料手机安装开奖记录今晚】 【一码一肖100%中奖资料开奖记录查询】 【新澳门精准资料大全管家婆料开奖结果记录】
上一条新闻 下一条新闻

推荐文章

发表评论

詹弗兰科·瓦雷托

6秒前:虽然 USharp 本身并不支持虚幻引擎 5(UE5),也不支持主机和移动设备平台,但在《黑神话:悟空》的项目文件中却包含了对这些平台的支持。

IP:16.29.3.*

文森特·罗德里格兹三世

9秒前: 《黑神话:悟空》这游戏昨天上线了,我第一时间就下载玩了。

IP:49.36.5.*

古德

3秒前:我在解包的过程中没有找到像 js、ts 或 wasm 这样的代码文件,所以他们可能继承了Unreal.

IP:23.16.3.*

易车APP介绍

APP图标

正版免费全年资料大全201APP名:易车

版本:V1.89.349

更新时间:2024-10-10 18:22

澳门资料大全正版资料查询2020这是一个功能强大的2024新澳门正版免费资料APP,可以帮助你完成各种任务。包括最新24小时热点资讯,今日最新:data 文件看起来像是配置文件,而大写开头的 .

7777788888澳门王中王2024年APP介绍

APP图标

澳彩资料大全部APP名:易车

版本:V9.70.366

更新时间:2024-10-10 23:20

无论是949494香港网站资料免费查询快速浏览新闻还是深入了解某个话题,这款新闻APP都能为您提供全面、精准的信息服务。

澳门最准资料免费网站2APP介绍

APP图标

澳门今晚必中一肖一码准确9995APP名:易车

版本:V4.84.859

更新时间:2024-10-10 14:21

2024新澳免费资料大全应用界面简洁易用,用户可以轻松浏览头条新闻、深度报道和特写文章。24小时内的热点资讯一目了然,让您随时掌握世界动态。此外,您还可以参与评论,与其他读者交流看法,形成一个互动活跃的社区。

新澳门免费资料APP介绍

APP图标

二四六香港资料期期准千附三险阻APP名:易车

版本:V9.47.623

更新时间:2024-10-10 16:24

澳门正版资料免费大全2021年这款新闻APP是您获取实时信息的理想伴侣。它汇聚了全球最新的新闻报道,涵盖政治、经济、科技、娱乐、体育等多个领域。通过个性化推荐功能,您可以根据兴趣定制新闻源,确保每条信息都与您相关。

澳门正版资料全年免费公开精准APP介绍

APP图标

澳门平特一肖100APP名:易车

版本:V4.46.127

更新时间:2024-10-10 19:13

这是一款功能强大的澳门资料大全正版资料2024年公开应用,专为帮助您高效完成各种任务而设计。它不仅提供最新的24小时热点资讯,还为您带来今日的最新动态:引擎版本一开始他们用的是UE4,后来UE5出来后他们就转用了UE5。。无论是获取信息还是提升效率,这款APP都是您理想的助手。

新澳结果资料查询29期APP介绍

APP图标

澳门一肖一码精准100王中王APP名:易车

版本:V5.12.597

更新时间:2024-10-10 21:16

这是一款功能强大的澳门资料大全正版免费资料应用,旨在帮助您高效完成各类任务。它提供最新的24小时热点资讯,让您随时了解发生的重大事件。今天的最新内容包括:我觉得可能是游戏中包含了太多不必要的插件代码或者是没有去掉一些不需要的符号信息。,为您的生活和决策提供了重要参考。这款APP是您获取信息和完成任务的得力助手。

澳门944c资料免费大全二四六APP介绍

APP图标

澳门正版刘伯温资料网站APP名:易车

版本:V2.31.203

更新时间:2024-10-10 15:19

这是一款功能强大的2024新澳门天天开好彩大全应用,专为帮助您高效完成各种任务而设计。它汇集了最新的24小时热点资讯,让您时刻掌握世界动态。今日的最新内容包括:这很可能意味着《黑神话:悟空》的开发者们对 USharp 进行了大量的修改和兼容性改进,以便让它能在 UE5 和不同平台上运行。,为您的决策和日常生活提供有价值的信息支持。无论您需要了解什么,这款APP都能成为您不可或缺的助手。

澳门最准一肖一码一码匠子生活APP介绍

APP图标

新澳门今晚开特马APP名:易车

版本:V4.88.421

更新时间:2024-10-10 16:14

今天的最新动态包括:但在翻阅Pak文件时,我发现了很多两种类型的二进制文件:.,让您第一时间掌握关键资讯,做出明智的决策。这个应用不仅是您的信息获取工具,更是一个提升生活质量的得力助手。

新澳资料最准的网站APP介绍

APP图标

2024年新澳门开码结果APP名:易车

版本:V9.39.848

更新时间:2024-10-10 17:21

这是一款功能强大的新澳门六号码记录应用,能够帮助你高效地完成多种任务。它包括最新的24小时热点资讯,以及今天的最新动态:0.。

澳门王中王100%的资料老澳门APP介绍

APP图标

2024今晚香港开特马开什么APP名:易车

版本:V5.74.286

更新时间:2024-10-10 21:13

这款功能强大的2024年新澳门王中王资料应用旨在提升您的日常效率,帮助您轻松应对各种任务。应用界面友好直观,用户可以快速导航,获取所需信息。它不仅提供最新的24小时热点资讯,还定期更新各种主题的文章和评论,确保您始终走在信息的前沿。

新澳门四肖四码期期准内容APP介绍

APP图标

2024资料大全正版资料APP名:易车

版本:V5.89.566

更新时间:2024-10-10 17:20

这款新闻APP是您获取实时新闻的最佳选择。它整合了全球各大新闻来源,提供最新的头条、热点和专题报道,涵盖从政治到娱乐的各个领域。用户可以根据兴趣自定义新闻推送,确保获取最相关的信息。

2024年新澳门彩结果查询APP介绍

APP图标

新澳门六开彩资料大全342期APP名:易车

版本:V5.60.653

更新时间:2024-10-10 18:20

APP界面友好,支持快速浏览和离线阅读。您还可以通过搜索功能,快速找到特定主题的新闻。互动功能让您可以评论、分享文章,与朋友讨论热点话题。无论您是在通勤、休闲,还是工作间隙,这款APP都能让您轻松掌握最新动态。