黑神话?黑科技?两个都要!

2024-08-29 18:58:26 浏览数 (3)

01.引言

8月20日,《黑神话:悟空》这款由腾讯参投的国产首款 3A 游戏正式上线。上线当天短短数小时内便吸引了大量玩家,同时在线人数迅速攀升至 134 万。截至小编撰稿时,即 8 月 26 日 20:45,Steam 平台数据显示,同时在线人数已达到 178.9 万人次,今日累计在线人数达 213 万人次。该游戏超越多款国际大作,荣登销量榜首。

作为爱玩游戏的程序员小编,也是第一时间冲上去一顿输出!!!

小编被这游戏中先进的图形渲染技术、精细的动作设计、传统文化与现代游戏玩法深深折服。不愧为“中国第一款3A游戏”!

02.“3A游戏”背后的核心支柱:程序员

当沉浸在《黑神话:悟空》并在微信群内秀大招冲关时,被身边的朋友问道,同样是程序员,能否科普一下 3A 和开发流程?话不多说,上文章!

什么是"3A游戏"?我在"腾讯元宝 APP"上尝试询问,发现元宝给出的答案是:高成本、高体量、高质量!并且给出来源,这个回答惊讶到小编。换句话说,这是一款开发成本高、开发周期长、制作精良的游戏。

作为腾讯前同事的游戏科学 CEO 冯骥在接受外部采访时透露:《黑神话》的开发周期前后大约用了 7 年时间,期间研发投入巨大,而且在游戏画面、关卡设计、音效配音、产品质量等方面提出了极高要求。更重要的是,开发团队应具备良好的研发协作流程、过硬的技术水平、严谨的游戏程序开发设计,以及高效的工具辅助提升研发效率和代码质量

关于这款游戏的制作、原图关卡设计和文化相关小编就不聊了,今天聊聊另一个话题:3A 游戏背后的开发语言和程序员!

话说,你知道《黑神话·悟空》这款游戏是用什么编程语言开发的吗?

答案主要是C (也用到 C#、Lua 等语言),初期仅有 7 人。

根据游戏科学官网显示,《黑神话》游戏使用的是虚幻引擎(Unreal Engine):这个引擎的底层源码主要使用的就是 C !

除了 Unreal,还有另一个游戏引擎 Unity,这两个引擎都有一个共同点,就是和 “C” 有关系。Unreal 是用 C 开发的,而 Unity 则是基于 C# 开发的(C# 读作 C Sharp)。实际上,Unity 引擎本身也是用 C/C 在内部构建的,但它提供了一个 C# 的封装器。我们熟知的《王者荣耀》就是基于 Unity 开发的。

不论你使用 Unreal 还是 Unity 开发,总是离不开 “C” (C/C 或者 C#)。不管用什么语言开发,背后都是靠程序员支撑的。所以,大学毕业想从事游戏开发的同学,如果想毕业后拿到高薪,就得抓紧学起 “C”。

P.S. 如您是一名程序员,且正在寻找游戏方面的工作机会,不妨私信「腾讯云AI代码助手」投递简历,小编帮您直接内推至您期望的游戏团队。

03.程序员的痛点

在这款《黑神话》3A 游戏的辉煌背后,程序员们扮演着至关重要的角色。他们不仅是游戏世界的创造者,更是技术革新的推动者。然而,面对日益复杂的技术挑战和繁重的工作压力,程序员们面临着诸多痛点。小编每天打交道最多的就是程序员,因此在内部推广 AI 代码助手时,做了一个深入的调研。

(1)在研发各个阶段有什么痛点?

需求阶段:需求变更频繁与需求高效拆分,需求频繁变更给项目带来诸多挑战,导致程序员要不断调整开发计划和工作内容,增加了工作量和压力。同时,新客户需求的涌现亟需清晰的需求澄清与细粒度的需求拆分,增加了程序员的沟通成本和需求拆分要求。

设计阶段:技术债务突显,前期为快速上线功能,前任程序员或会采用一些短视的技术方案,遗留下技术债务,这些技术债务逐渐显现,增加维护成本,程序员要花费大量时间查阅技术资料,设计更优的技术方案。

编码阶段:久债新功紧赶工,面对多轮研发迭代、注释缺失的老旧代码和技术债务,程序员需花费大量时间和精力去理解、Debug 和维护。同时,还要进行新功能的业务代码开发和单元测试代码的编写。重复的代码 CRUD 操作不仅机械地消耗体力和激情,为了赶项目交付进度,加班加点冲刺 Deadline 也增加了心理压力。

运维阶段:维护成本巨大,随着项目发展,代码库会变得庞大且复杂,结构混乱,模块间耦合度高,出现性能瓶颈,动一发而牵全身,代码中也可能存在安全漏洞问题,如SQL注入、跨站脚本攻击(XSS)等,导致Debug难度大,维护成本大。

评审阶段:评审低效难把控,随着开发协同人数的增加,分支 MR/CR 频繁且存在以下问题:

  1. MR 评审描述随意不规范,出现问题难以追溯;
  2. 缺乏上下文信息,代码复杂,评审者难以理解;
  3. 需等待评审人员的时间,导致评审周期较长,造成不必要的浪费。

其他:除此之外基于各个研发阶段可能会衍生出的各种会议、团队成员之间沟通不畅、代码冲突和合并解决、环境部署问题、缺乏有效的持续集成和持续部署(CI/CD)流程、缺陷/安全问题的紧急修复等也存在一定的痛点。

(2)在AIGC时代下程序员是否需要AI代码工具辅助提升编码效率和代码质量?

针对上述程序员痛点,我们在腾讯内部进行了超 1000 份调研,以了解 AIGC 时代下,程序员是否需求AI 代码工具辅助提升效率。调研结果显示,95% 以上的腾讯程序员认为需要 AI 代码工具来提高效率和提升代码质量,并期望 AI 能够实现读、写、审、查及 做everything事情。

04.程序员的救星之腾讯云AI代码助手

为了帮助腾讯程序员解决这些痛点,腾讯云 AI 代码助手提供完整的产品化提效增质解决方案。它基于先进的腾讯混元代码大模型,提供了一系列智能编程辅助功能。为腾讯程序员们提供代码自动补全生成、技术对话、单元测试、代码诊断、智能评审、安全漏洞等产品化提效解决方案能力,旨在提高开发效率,降低错误率,提升代码质量。

X 代表未来,腾讯云 AI 代码助手也将探索并覆盖整个 DevOps 上下游,更好地支撑个人开发者提效(moyu),助力企业研发团队提升效率和质量。

05.腾讯云 AI 代码助手已参与腾讯多款产品和爆款游戏的开发

截至目前,腾讯云 AI 代码助手已广泛应用于腾讯多款产品和爆款游戏的开发中。在日常研发活动中,通过使用腾讯云 AI 代码助手,腾讯程序员能够更好地应对技术挑战。我们采访并跟踪了 100 多名用户进行对比数据分析,结果显示,使用腾讯云 AI 代码助手后,程序员们至少可以减少 3.5 小时的工作时间,按时间换算为效率提升,达 44%(不包含所有研发观点)。

在腾讯,AI 代码助手已经成为程序员的得力助手,帮助他们快速学习和理解新的编程语言或框架,使开发过程更加轻松。该工具已为腾讯程序员们编写了超过三成的代码,覆盖了 80% 以上的程序员,整体效率提升超过 30%。它广泛参与了腾讯云、腾讯健康、企业微信、微信、QQ、腾讯视频、CoDesign 等各类 ToB/ToC 产品的开发。

同时,腾讯云 AI 代码助手不仅精通 "C(C/C 或 C#)" 语言,还非常了解网络游戏的开发需求。它助力开发了王者荣耀、和平精英、DNF-地下城与勇士、英雄联盟、三角洲行动、QQ 飞车、无畏契约等多款腾讯爆款游戏,为游戏团队生成高质量代码,提升编码效率和代码质量,确保游戏代码的健壮性,以及游戏体验的稳定性和流畅性。

除了在腾讯内部大量使用,腾讯云 AI 代码助手已成为国内众多个人开发者和企业开发团队必备的研发基础设施。例如,大型金融客户、消费电子企业以及互联网公司都在使用该工具。未来,我们将逐步拓展至整个 DevOps 全生命周期的游戏研发。感兴趣的用户可以关注【腾讯云 AI 代码助手】以下渠道,获取最新资讯。

我们也基于腾讯内部和外部用户反馈,持续提升产品能力和用户体验,秉持“一切以用户价值为依归,小步快跑,敏捷迭代”的理念,以及腾讯一贯的高品质产品标准,为更多公司内外的程序员服务,帮助他们实现编码效率和代码质量的双提升。同时,我们鼓励用户参与经验分享,助力整个软件产业的繁荣发展。

06.基于 JetBrains Rider IDE 之上腾讯 AI 代码助手驱动的 Unreal 游戏开发

大家都知道,随着国内游戏行业的逐渐成熟和版号的缩紧,游戏厂商积极应对变化,在研发、分发、 运营等全流程都开展了精品化运作,研发人员的编码效率和代码质量的提升成为游戏程序员的必经之路,更是企业管理者认为的头等大事。接下来,小编将为大家奉献一个周末的研究,带你走进《基于JetBrains 系列之Rider IDE之上腾讯AI代码助手驱动的 Unreal / Unity游戏开发》希望你有所收获。

6.1 工具安装

1.Unreal ENGINE 安装

2. JetBrains IDE 系列之 Rider 安装(注意提前设置好 C 开发环境)

3. Rider 上安装腾讯云 AI 代码助手

4. 初始化你的代码仓库,注意游戏代码存储量庞大,建议采用 GitLFS 或 P4 进行存储。

代码语言:javascript复制
MyProject/
│
├── Source/
│   ├── MyProject/
│   │   ├── MyProject.Build.cs
│   │   ├── MyProject.h
│   │   ├── MyProject.cpp
│   │   └── ...(其他源代码文件)
│   │
│   ├── ThirdParty/
│   │   └── ...(第三方库和依赖项)
│   │
│   └── Plugins/
│       └── ...(插件代码)
│
├── Content/
│   ├── Blueprints/
│   │   └── ...(蓝图资源)
│   │
│   ├── Materials/
│   │   └── ...(材质资源)
│   │
│   ├── Models/
│   │   └── ...(3D模型资源)
│   │
│   └── Sounds/
│       └── ...(音频资源)
│
├── Config/
│   ├── DefaultEngine.ini
│   ├── DefaultGame.ini
│   └── ...(其他配置文件)
│
├── Scripts/
│   └── ...(可能包含一些自定义的脚本文件,如Python脚本或Unreal Engine的蓝图脚本)
│
├── Build.cs
│
├── Project.Build.cs
│
└── README.md

在这个结构中:

  • Source/ 目录包含了项目的所有源代码文件,包括你的ARequestPatrolComponent 类。
  • Content/ 目录包含了项目的所有内容资源,如蓝图、材质、模型和音频文件。
  • Config/ 目录包含了项目的配置文件,这些文件通常包含游戏设置和引擎设置。
  • Scripts/ 目录可能包含一些自定义的脚本文件,用于自动化构建过程或其他任务。
  • Build.cs 和 Project.Build.cs 文件用于配置项目的构建过程。README.md 文件通常包含项目的说明和文档。

6.2 腾讯云 AI 代码助手在 Unreal 开发中的强大功能

1. 通过顶层注释一键 Enter,采用 Tab 自动生成样板代码

腾讯云 AI 代码助手非常适合为 Unreal 游戏生成样板代码。无论是设置组件/单行为、创建 UI 代码还是定义游戏逻辑,AI 代码助手通常都能预测我的需求并生成我所需要的代码。

即使在它没有提出正确解决方案的情况下,它通常也会生成一个“足够接近”我所寻找的解决方案,我可以做一些更改使其正常工作。

以下是在 Rider 中,在文件中定义好顶层注释,通过 AI 代码助手一键 Tab 创建和管理巡逻组件时生成的示例。

持续Enter和Tab生成完整的代码示例。

2.选中代码片段进行右键补全注释

也可在对话中采用@workspace /comments 实现注释补全。

通过在对话中生成的代码注释,可以采用对话中对比文件、复制、直接插入代码到原有文件或者直接创建新文件实现对结果的处理。

3.在您的 IDE 内进行与 AI 代码助手沉浸式聊天

腾讯云 AI 代码助手对话就像在您的 IDE 中拥有一个更强大的 ChatGPT 窗口。您无需复制和粘贴代码,可以直接引用代码文件并与 AI 代码助手聊天。它可以帮助您重构代码、设计问题、优化代码、生成注释等任何技术问题,甚至是一般的 Unreal 问题。

腾讯云 AI 代码助手最大的特点是能够自动引用代码库中的现有文件。这在生成相关代码时为 AI 提供了更好的上下文。

a. 需求描述

在以下示例中,小编使用 C 语言,在腾讯云 AI 代码助手的对话和补全功能的帮助下,实现了一个巡逻组件,使角色能够自主巡逻。通过行为树和任务蓝图,可以创建复杂的巡逻逻辑和任务。

巡逻组件的主要功能包括

  • 自主巡逻:角色能够在指定的范围内自主移动,根据预设的路径或目标点进行巡逻。
  • 路径规划和导航:利用 UE5 的导航系统,角色能够智能地避开障碍物,选择最佳路径到达目的地。
  • 行为树和任务蓝图:通过编辑行为树和任务蓝图,可以定义角色的巡逻行为,如遇到障碍物时的反应、何时转向下一个目标等。
  • 动画和速度控制:可以设置角色的动画播放,并根据角色的状态(如发现敌人与否)调整移动速度。

在 Unreal Engine 中,采用腾讯云 AI 代码助手创建一个完整的巡逻组件样板代码涉及定义接口、实现组件以及如何在游戏中使用它。

以下是一个简单的示例,包括接口定义、组件实现和一个示例 Actor 类,它使用这个巡逻组件。

b. 定义巡逻组件接口

首先我们定义一个接口 IPatrollingComponent,它将声明巡逻相关的方法。

根据推荐结果,选择进行全采纳或者按行、按词进行采纳。

不过,补全代码输出几乎与预期完全一致。它创建了正确的字段,甚至使用了 `FTimerHandle`,这是小编在项目中的另一个辅助类,用来包装基于持续时间的事件。这表明它具有小编项目中其他文件的上下文,因为小编未直接在提示中引用任何现有代码。

c. 实现巡逻组件

接下来,我们实现 IPatrollingComponent 接口的具体巡逻组件类 UPatrolling ComponentImpl。

d. 创建一个使用巡逻组件的 Actor 类

最后,我们创建一个Actor类,它将使用我们刚刚创建的巡逻组件。

e. 在Unreal 中操作配置

  1. 准备巡逻点
    1. 在Unreal Editor中,创建一些Actor作为巡逻点。
    2. 你可以使用空Actor或者自定义的巡逻点Actor。
  2. 设置AI控制器
    1. 创建一个继承自AAIController的自定义AI控制器类。
    2. 在AI控制器中实现巡逻逻辑,比如使用MoveToActor函数让AI角色移动到下一个巡逻点。
  3. 配置行为树
    1. 创建一个行为树(Behavior Tree)来定义AI的行为。
    2. 在行为树中添加任务节点,如MoveTo任务,以及选择器(Selector)和 序列器(Sequence)来组织这些任务。
  4. 设置黑板键
    1. 使用黑板(Blackboard)来存储和访问巡逻点信息。
    2. 在AI控制器中设置黑板键,并在行为树中使用这些键。
    3. 将AI控制器分配给AI角色。
  5. 在游戏中测试
    1. 运行游戏并观察AI角色是否按照预期在巡逻点之间移动。

4.结果

这里我们直接看效果

6.3 实际结果:AI 代码助手提高了研发的生产力

1. 高效编码,节省大量时间

通过 demo 实验,体验到的最实际的好处是节省了大量时间。能够更快地编写代码,这种效率让我能够专注于游戏开发的创意方面,而不是陷入重复的编码任务中。在编码时需要一点时间来适应使用腾讯云 AI 代码助手,但是一旦掌握了它,您几乎就可以“预测”它会给您什么建议,并通过 Tab 键完成您的需求交付。

2. 提升代码质量

程序员对自动生成的代码质量有很多担忧,这些担忧大多是合理的。然而,小编本次实验发现,通过单元测试和定位代码缺陷可以极大地提升代码质量。通过一键生成单元测试,生产单元测试用例,并在一定程度上保障了单测覆盖率。

6.4 对程序员使用AI代码助手的建议和技巧分享

基于用户的使用反馈,总结了一些使用心得和使用技巧,希望能帮助到你:

1. 心得思考

AI 代码助手不能代替你的思维和思考。把它当作助手,积极拥抱 AI,利用 AI 强大的知识能力,辅助自身提升核心能力。

2. 探索 AI 代码助手 的建议

不要只将 AI 代码助手用于日常开发任务,也可探索其在更复杂的逻辑和算法、技术面试中的建议

3. 打开或导入相关代码文件,为 AI 提供更多上下文

虽然 AI 代码助手令人印象深刻,但清晰的上下文和打开或导入更多相关的代码文件对其效果大有裨益。这有助于 AI 代码助手生成更准确、更相关的代码片段。

4. 提供有意义的变量和函数名或注释

编写清晰简洁的注释或方法名称,使用有意义的变量和函数名,有助于腾讯云 AI 代码助手更好地理解您的代码意图。例如,如果您有一个名为“foo”或者“calculate”的函数,在函数前添加准确的注释,描述函数的功能和参数。

6.5 使用指令提升沟通效率

腾讯云AI 代码助手技术对话目前提供了2种类型的指令:

  • Agent(@):具有额外的知识、上下文与能力。
  • 斜杠命令(/):常见提示词的快捷方式,例如我们提供了一些简单命令帮助您快速完成解释代码、修复代码等工作。

6.6 分不同会话询问关于不同主题的问题

通过新增对话或采用快捷指令 /clear 重新开启新对话,避免历史对话上下文带来的影响。

小编今天的分享到此结束,大家是不是想小试棍棒~ 可以在 Jetbrains IDE 插件市场搜索「腾讯云AI代码助手」下载免费体验吧!

-End-

0 人点赞