15.游戏引擎的Gameplay玩法系统基础 | GAMES104-现代游戏引擎

AI课代表的笔记:这个视频是关于现代游戏引擎中的玩法系统的基础知识。视频中讲解了游戏引擎中的三个重要系统:游戏逻辑、控制和相机系统。玩法系统涉及到游戏中的各个系统的交互,包括动画、声音效果、输入设备、游戏对象之间的通信等。视频还提到了可视化脚本系统的重要性,以及如何通过事件和回调函数来实现游戏中的交互和逻辑控制。视频强调了玩法系统的重要性和复杂性,以及在设计和开发游戏引擎时需要考虑的各种因素。
00:00 📝课程作业提交和引擎介绍:本章节主要内容包括:课程作业的提交时间统一到8月31号,作业难度可以根据个人能力选择;作业提交失败可能是因为没有点击提交按钮;课程团队会帮助解决作业提交问题;介绍了皮克勒引擎的脚本系统和使用CMake的原因;解释了每次重新编译的原因和引擎开发中的复杂性;介绍了玩法系统的基础和著名的3C系统;下一节课将介绍AI系统。
09:42 🎨玩法系统的重要性和挑战:这个视频的章节讲述了玩法系统的重要性和挑战。玩法系统需要与游戏中的各个系统进行交互,如动画系统、特效系统、音效系统、UI系统和渲染系统等。玩法系统的开发需要与各个团队密切合作,并支持快速迭代。游戏引擎中的事件消息机制是实现玩法系统的关键。通过发布和订阅模式,游戏中的各个对象可以进行有效的通信和互动。玩法系统的设计要求具备扩展性、快速迭代和丰富的游戏体验。
19:22 💻publishing subscriber模型和回调函数:在publishing subscriber模型中,callback是一个重要的组件,用于处理消息的动作。消息要素包括消息定义和处理函数。消息通过dispatcher发送到不同的接收者。事件的定义需要考虑类型和数据结构。设计师可以定义各种event类型,以适应不同的需求。回调函数需要提前注册,但注册和执行的时间间隔可能导致问题。引入强引用和弱引用等概念可以解决对象生命周期的问题。
29:07 🔗游戏引擎中的强引用和弱引用:本章节介绍了游戏引擎中的强引用和弱引用的概念。强引用(strong reference)表示对对象具有控制权,只有房间不销毁,房间内的物体才不会被销毁。而弱引用(weak reference)相对没有那么强大,当删除引用时,需要判断对象是否已被删除。在游戏中,强引用和弱引用都非常有用,但必须正确使用。此外,还介绍了callback函数和物体引用关系以及消息分配系统的问题,并提出了采用event queue和ring buffer来优化内存管理的方法。
38:50 🔧事件处理的重要性和问题:在游戏开发中,事件处理是一个重要的环节。为了提高游戏逻辑的稳定性,我们可以将不同类型的事件进行分类管理,例如网络事件、战斗事件和动画事件等。这样可以避免处理过多的事件和频繁的回调,提高引擎的效率和调试的便捷性。此外,事件处理还存在一些问题,如消息执行顺序无法保证和事件的延迟等,需要注意规避。在现代游戏引擎中,事件处理机制是游戏玩法系统的基础,开发者需要理解和掌握不同的处理方式,以提高游戏的开发效率和品质。
48:33 📜脚本语言在游戏引擎中的应用:脚本语言适合设计师定义游戏玩法,但改代码很痛苦。脚本语言简单,更新方便,适合运行在虚拟机上,不会crash引擎。脚本语言在复杂网络游戏的服务器端应用广泛,可以重新启动服务,不会crash整个引擎。脚本语言通过编译器编译成bytecode,在虚拟机上执行。脚本语言通过GC管理对象,但GC效率慢,影响游戏时间。引擎设计时需考虑对象管理,取决于游戏类型。
58:15 🏗️脚本系统的应用和架构选择:这个章节主要讲述了脚本系统在游戏引擎中的应用和架构选择。作者首先介绍了常见的一种架构,即将脚本作为组件扩展,以实现一些业务逻辑,如AI系统和玩法设计。然后,作者提到了另一种有趣的架构,即将引擎作为SDK库,由脚本控制整个流程。作者强调了脚本系统的重要特性之一是热更新,通过修改函数指针实现。然而,使用脚本语言也存在一些问题,如效率低和类型管理困难。最后,作者提到了选择脚本语言时应考虑的因素,如功能丰富、效率高和面向对象等。
67:59 ⚖️不同脚本语言的优劣比较:Python是一种面向对象的编程语言,具有强大的扩展库,但内存占用大。C#作为一种原生态编译语言,学习成本低且社区支持强大,被越来越多的团队考虑作为扩展语言。Unity依托于C#的可扩展性,性能高且内存占用适中。可视化脚本语言在现代游戏引擎中越来越受欢迎,为非程序背景的开发者提供了编程便利。可视化脚本语言的设计结构包括变量、语句和控制流,通过管角和不同形状或颜色的节点进行数据类型定义和类型转换,使编程变得更简单、方便和可控。
77:39 👁️可视化脚本系统的原理和应用:本章节主要讲述了可视化脚本系统的原理和应用。可视化脚本系统类似于函数的概念,可以方便地将一系列操作打包在一起,并实现清晰的输入和输出。它可以形成一个接口单元,类似于高级语言的类。然而,在大型游戏产品中,可视化脚本系统的merge和debug过程会变得复杂和困难。因此,在工业化应用中,可视化脚本系统需要进一步完善和规范,以提高效率和可追踪性。总的来说,可视化脚本系统是一个适合艺术家和设计师进行快速原型制作的工具,但在商业级应用中仍需面对一些挑战。
87:24 ⚔️角色战斗的控制系统:角色战斗的各种体系对游戏感知有直接影响,如移动细节、与环境互动、音效、物理系统等。控制系统负责将各种输入设备转化为游戏操作,如射击中的瞄准、鼠标移动的吸附效果。反馈也是重要的,如手柄震动、RGB背光等。控制系统需要考虑不同环境下的操作,需要设计师参与定义。游戏与电影的区别在于游戏是主动媒体,需要用户输入和反馈互动。控制系统并不简单,需要解决不同环境和操作的问题。
97:05 🕹️Control和Camera系统介绍:这个章节主要讲述了游戏引擎中的Control和Camera系统。Control系统通过定义用户输入来实现不同行为,包括组合键和按键序列。Control系统决定了游戏的手感和反馈,如PS5手柄的声音和麦克风。Camera系统定义了相机的位置和视角,通过相机的远近、抖动和效果来实现游戏的代入感和画面感。相机系统还包括相机切换和相机管理,以及相机的差值和效果调整。Camera系统是表达游戏主观感受和提升游戏品质的重要系统。
106:48 📡游戏内GO之间的communication:这个章节讲述了游戏内GO之间的communication的统一模式,通过开放scripting系统让设计师和艺术家定制游戏的玩法。不同类型的游戏需要修改引擎和代码,因此每个优秀的作品都有自己的Gameplay系统。未来平台可能会禁止热更,逻辑和表现可以分离但对现代游戏来说越来越密切相关。建议保持脚本和可视化脚本的双重系统,以满足不同需求。
#AI课代表 #看视频不分心 https://kedaibiao.pro 帮你记录好内容~