程序员老鬼

《黑神话:悟空》用的是什么编程语言写的?

嗨,大家好,我是老鬼。

最近《黑神话:悟空》终于正式发布了,这款备受期待的国产游戏一上线就引发了热议。大家在欣赏精美画面的同时,也有不少技术宅对它背后的技术实现进行了深入的分析。

Image

尤其是有网友“拆包”后,发现了许多有趣的技术细节。作为一个程序员,我看了这些讨论后,感觉这款游戏不仅仅是视觉上的震撼,技术上也是相当有料的。

Image

首先,大家都知道《黑神话:悟空》使用的是Unreal Engine 5,也就是我们熟知的UE5.0.0。这款引擎以其强大的渲染能力和高度的自由度成为了许多大型游戏的首选。然而,光靠C++并不能完全满足一款如此复杂的游戏需求。

Image

于是,有网友对游戏的安装包进行了详细的拆解,结果发现了一些出乎意料的技术选项。

在网友的分析中,最初注意到的是游戏中存在大量与V8相关的字段。V8是Google的JavaScript引擎,这让人联想到开发团队可能使用了PuerTS,这个工具可以将TypeScript与Unreal Engine完美结合。然而,当进一步查找相关符号时,网友们惊讶地发现PuerTS的痕迹并不存在。取而代之的是Unreal.js插件的符号,这个插件也能让开发者在Unreal Engine中使用JavaScript。

Image

这时事情变得更加有趣了。在进一步的拆解中,网友发现了大量“.data”和“.Data”二进制文件。它们看起来像是配置文件,但深入分析后发现它们并不像普通的配置文件或脚本代码,甚至连常见的luac字节码都没有。这些文件更像是某种二进制代码,这让大家开始猜测游戏是不是用了C#。

果然,继续深挖后,网友们找到了与USharp相关的符号。USharp是一个能将C#集成进Unreal Engine的插件,这个发现让人很兴奋,但也带来了更多疑问。因为USharp本身并不支持UE5,更不支持主机和移动端。这就意味着开发团队可能对USharp进行了大量的魔改,以便让它能够适配不同的平台。

Image

通过这些分析,大家猜测《黑神话:悟空》的开发团队可能自行实现了Mono/CLR/IL2CPP运行模式,甚至支持了PC、Mac、Linux、Android、iOS、PS5、Xbox等多平台。这种大规模的魔改和优化绝非易事,但为了实现全平台支持,这种努力是值得的。

此外,网友们还发现,虽然Unreal.js被集成进了游戏中,但实际上并没有被真正使用。这可能只是开发团队在某些特定功能上的备用选择。另外,游戏中还自研了一种状态机/行为树系统,采用了protobuf格式的二进制数据来做配置表,这些都显示了开发团队在实现灵活性和高效性上的独到用心。

其实通过游戏科学的招聘信息,你也能大概猜测他们用到的技术,这也是一种取巧的猜测方案😂

Image

当然,这种复杂的技术实现也引发了不少网友的热议。有网友表示:“《黑神话:悟空》真的是不简单,背后用了这么多不同的技术,尤其是这种魔改和自研的部分,真是让人刮目相看。”

另一个网友则幽默地评论道:“看来开发团队不仅仅是搞艺术的,还兼任了技术宅,这得有多深的技术积累才能搞出这么复杂的方案啊!”

听到这些评价,我觉得大家对于《黑神话:悟空》的技术实现确实有了更多的敬佩之情。作为一款国产大作,它不仅在画面上达到了国际水准,在技术实现上更是显示了强大的创新能力。开发团队在整合多种复杂技术的同时,还做了大量的优化和魔改,确保游戏能够在多个平台上顺畅运行。这种对技术细节的深耕,无疑是《黑神话:悟空》能够成功的重要原因之一。

如果你是程序员,这些技术细节可能会让你感到兴奋和好奇;如果你是玩家,你可能会更加期待这款游戏的内容和体验。不管怎样,这种对技术的执着追求,正是推动游戏行业不断前进的力量。

你们怎么看待《黑神话:悟空》在技术上的这些努力?是否也曾被某款游戏的技术实现深深折服?欢迎大家在评论区分享你的看法,一起来聊聊这些游戏背后的技术魔法吧!

最后,发一个福利!
我们搞了一个专门聊副业的社群:何老师陪你做副业,这个社群不干别的,就只聊如何不影响主业的情况下,发展副业,培养赚钱能力。