c0d3n4m 发表于 2022-9-22 18:40

【GAMES104】14.引擎工具链高级概念与应用

游戏制作一览

Genres 体裁
世界编辑器

世界编辑器窗口一览



[*]Viewport窗口

[*]编辑器代码不要发布出去,之前项目就有出现过这样的乌龙,很尴尬。
[*]所有东西都是可编辑的

[*]对象窗口(根据用户方便,组织场景中的不同对象)

[*]组或者目录形式:

[*]Layer
[*]Levels

[*]Tree view:Outliner(Unity 的Hierarchy)

[*]对象属性窗口(Unity的Inspector)
[*]文件浏览器(Unity的Project)
鼠标选取



[*]Ray Casting(比较耗性能,没有缓存)
[*]RTT(需要额外绘制一个高亮RTT)




鼠标选取


[*]对象移动编辑
地形编辑器



[*]高度图
[*]纹理图
[*]植被:树实例、装饰物分布图
[*]刷地形
[*]刷植被

[*]环境编辑器

[*]光源
[*]天空
[*]道路
[*]河流
[*]。。。
[*]规则系统

[*]描述一些比如树的生长规则、河流的生长规则,然后用程序化生成
[*]挑战:程序化生成后,如何进行局部修改不影响全局
[*]加条路,本来的树直接给干掉了


编辑器插件架构


[*]Covered
[*]Distributed
[*]Pipeline
[*]Onion rings




版本控制
版本号的必要性设计叙事工具

现在很多游戏有点像交互电影了
TimeLine



线性叙事



反射和游戏逻辑

Java反射


使用反射生成代码


抽象语法树





Picoloo使用Clang
从抽象语法树生成Schema

[*]解析类名、字段名、字段类型等
[*]在内存中构建一个临时的Schema
实际使用的时候,通过添加Tag实现精准反射


通过添加宏定义来实现反射控制


反射访问器


代码渲染

[*]自动化生成代码
协同编辑

合并冲突

[*]资产分割

[*]分层(地形层、植被层、房屋层)
[*]分割世界(地图分块)

[*]一个对象一个文件(预制)

[*]小文件多,操作系统不友好

[*]实时编辑

[*]怎么解决Undo/redo?
[*]怎么解决Operation merge
[*]加锁(不能同时操作同一个对象)

作业


[*]PA04:Tool Chains.pdf
[*]理解反射tag
[*]使用反射系统收集文件信息
[*]展示这些文件信息
[*]写文档
页: [1]
查看完整版本: 【GAMES104】14.引擎工具链高级概念与应用