学习笔记12:引擎工具链高级

World Editor 世界编辑器

建设世界的枢纽,

Editor Viewport 

游戏引擎的一个特殊版本

相互作用的主要窗口设计师与游戏世界
在特殊的“编辑器”模式下,由一个完整的游戏引擎驱动
提供各种特殊的小工具和编辑用可视化器

主要的思想

所以的物体都是object,(即所见即所得)

各个不同种类的物体要有不同的视图来方便区分,防止在寻找项目资源的操作过于复杂。

Content Browser


提供所有资产的直观缩略图。

在不同项目之间共享资产

资产管理从静态文件文件夹到内容“海洋”的演变
 

Mouse Picking 鼠标选取

2种鼠标选取的方法

Ray Casting:这其实是个框架,而不是个方法。符合这个框架的都叫raytracing。这个框架就是从视点发射ray,与物体相交就根据规则反射、折射或吸收。遇到光源或者走太远就停住。一般来说运算量不小。(通常指Whitted-Style Ray Tracing)

优点:
不需要缓存
以在选定的raysCons上支持多个对象

缺点
查询性能不佳
 

RTT:优点:
易于实现范围查询
快速完成查询的能力
缺点:
需要多画一幅画
无法选择受阻碍的对象

Terrain 地形
2种创建地形的方法,第一种较为粗糙但是内存占用小,第二种与之相反。

环境编辑中的规则系统
当我们营造环境时,有各种各样的现实规则:-道路上没有树木。
道路上没有装潢师。道路应该适合地形。
石头通常铺在路边等等,其实就是环境编辑要尽量符合客观。

Editor Plugin Architecture 编辑器插件体系结构
 

网状结构切分:object在类型与系统的切分

Combination of Multiple Plugins 多插件组合

Covered 盖住
只执行新注册的逻辑,跳过原始逻辑。
原编辑覆盖
Distributed 分布式
每个插件将被执行,如果有一个输出,结果将最终合并。最特殊的系统编辑

Pipeline 管道
输入和输出是相互连接的,通常输入和输出是相同的数据类型。
前资产预处理,物理几何
Onion rings 洋葱圈
在流水线的基础上,系统的核心逻辑处于中间,而插入逻辑则注重同时进入和退出的逻辑。
带地形插件的Ex.Road编辑插件
 

One More Thing - Version Control 还有一件事-版本控制
 插件和主机应用程序之间需要某种版本关系,以确保它们能够正常工作。
插件使用与主机应用程序插件相同的版本号,使用插件接口的版本号
这是更多的建议,因为插件接口和软件可能是不同的
 

Design Narrative Tools 设计叙事工具
 

现在的游戏越来越逼近现实了,一个游戏的时间线是整个游戏进行的基础。

游戏中各个角色整体上是一起演出的,但是实际是一个一个完成后在组合在一起的。工具链重要的一点就是让物体在世界轴上动起来。

Reflection and Gameplay 反射和游戏
 

在计算机科学中,反思性编程或反思是指一个过程对自己的结构和行为进行检查、反思和修改的能力。

反射指程序可以访问、检测和修改它本身状态或行为的一种能力。

程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。

您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

如何在C++中实现反射
从代码中收集类型信息

生成代码,为字段和方法提供访问器。

用<string,访问器>映射管理所有访问器

反射是可控的,通过红框里面的关键字来实现各种反射。

反射存取器
Generate reflection accessors using schemas 使用架构生成反射访问器
对于类,我们需要生成类型信息获取器
对于字段,我们需要生成可以访问它们的setter和getter。

对于函数,我们需要生成可以调用tem的调用程序。
 

Collaborative Editing 协同编辑
 

大型项目的瓶颈
很多人都和很多人一起工作资产怎么协同
资产版本管理非常困难
 

各种协同的方法

资产分割-世界分层(2/2)
优点
适当的层数会减少编辑冲突
基于层的逻辑可用连接

缺点
层逻辑可能依赖于另一层。当世界是如此的时候,很难合理地分割层
非常复杂


)资产分割-世界分割(2/2)
Pros 
基于位置的分割使得动态分割变得容易拓展世界
空间分离对操作者来说更直观。
Cons 
难以处理跨多个块的对象
 

还有一种就是每个对象创建一个文件

Pros 
.细粒度场景分割,较少编辑冲突
只需要保存修改过的对象
Cons 
大量的文件需要管理,更多的版本控制负担。
 当将多个OFPA文件嵌入到级别文件时,Cook将减速。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值