您的位置:首页 > 财经 > 金融 > GAMES104:14 引擎工具链高级概念与应用-学习笔记

GAMES104:14 引擎工具链高级概念与应用-学习笔记

2024/11/16 10:30:07 来源:https://blog.csdn.net/yx314636922/article/details/142145463  浏览:    关键词:GAMES104:14 引擎工具链高级概念与应用-学习笔记

文章目录

  • 一,世界编辑器
  • 二,编辑器插件架构
  • 三,设计叙事工具
  • 四,Reflection和Gameplay
  • 五,协同编辑
  • QA


一,世界编辑器

其实是一个平台(hub),集合了所有能够制作地形世界的逻辑
在这里插入图片描述

  • editor viewport:可以说是游戏引擎的特殊视角,会有部分editor only的代码(不小心开放就会变成外挂入口)
  • Editable Object:人、物、房、云等都是可编辑对象
  • Object管理:场景对象结构(一般是树)、layer、搜索等功能
  • 属性面板
  • Content Browser:资源管理浏览器
  • 鼠标选取:用到Ray Casting,用包围盒或者用ObjectID Buffer区分物体(粒子或透明物体需要特殊处理)
  • transform、快捷键、高亮等交互
  • Height Brush:地形刷,需要设计smoothing或让艺术家自定义笔刷
  • 环境规则:比如路上不能有树,把结果保存为图,再进行程序化生成或刷子效果(甚至可以控制风格)
    在这里插入图片描述

二,编辑器插件架构

插件需要同时考虑引擎系统和对象2个维度,如图,支持矩阵性数据访问
在这里插入图片描述

  • 插件的4种组合方式:
    在这里插入图片描述
    在这里插入图片描述
  • 版本控制:引擎接口修改后可能会导致插件功能失效,这就需要引擎端设计接口时就考虑到这些问题,老师认为没有10年引擎经验可以不用考虑这些问题,同时老师不认为程序员写了5-10年代码就应该做管理,没有10-20年沉淀很难理解其中复杂度和丰富度,架构师也是程序员的终极归宿。

三,设计叙事工具

游戏做的越来越像电影,Storytelling就变得很重要,下图的时间线在ue里叫Sequencer,相当于电影导演的统筹安排,游戏中一些过场动画就是这样做的。这个过程中涉及到很多工具的实现
在这里插入图片描述

四,Reflection和Gameplay

  • 游戏玩法不断更新就需要不断提供新的工具、接口,现代引擎中可视化编程可以部分处理这种可拓展性,比如ue的蓝图;

  • 但是在增加逻辑后,接口、工具都需要有相应的更新,工作量是非常大的,那就需要用到反射Reflection(高级语言基本都支持,如java和c#)。「反射允许程序在运行时检查、修改和操作其自身的结构和行为」即引擎实现功能后,通过反射告诉工具有哪些开放类和接口可以访问,这时在蓝图中创建对象时,其接口参数全部可以展现

  • c++中如何实现反射?
    c++在编译时会翻译成抽象语法树(Abstract Syntax Tree,AST),比如类就会被翻译成一个树状结构表,在这个表里就比较容易提取接口和参数。课程小引擎用的是Clang,其中还涉及部分代码生成的内容

五,协同编辑

协同编辑是引擎发展方向,但大量数据、不同版本如何协作?

  • 冲突:用类似git的方式管理merge冲突;
  • 避免冲突:分层分配、分块分配、One File Per Actor
  • 在线同步操作:类似在线文档,需要同步,并解决Undo、Redo、Merge,比如用资源锁,或下述方法
    ,

QA

  • 反射会不会影响运行效率:Runtime基本不会,但在编辑工具里频繁调用会有消耗
  • 现代游戏开发中,DCC工具和引擎的分工是什么:DCC很多有渲染系统,引擎也想把DCC功能加入引擎里,两边都在大量融合

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com