Games104现代游戏引擎入门-lecture13游戏引擎的引擎工具链基础
- 1 工具链是什么?
- 2 工具链的GUI
-
- 1 Immediate Mode
- 2 Retained Mode
- 3 Design Pattern
-
- 1 MVC 模式
- 2 MVP
- 3 MVVM
- 3 加载数据-序列化
- 4 如何加载数据
- 5 如何让工具链更鲁棒?
-
- Command系统:所有用户的操作都可以原子化。
- 6 如何制作工具链?
-
- 1 Schema:核心工具链
- 7 所看即所得
- 8 插件
- 9 参考文献
- 10 视频
1 工具链是什么?
DCC: 这个就在ACP这一层。
工具链是调和不同层次的人际关系,调和不同用户的习惯。
2 工具链的GUI
1 Immediate Mode
扩展性差!
2 Retained Mode
大多数人使用这种模式。
3 Design Pattern
1 MVC 模式
MVC:1987 数据之间的逻辑, 数据流清晰,底层model单向的到view,不能从view 到model。model的修改只能通过controller来做。将View和model分离的架构。
2 MVP
所有的复杂性都放在了Presenter,这个得听懂view必须理解的语言model的语言。
3 MVVM
目前推荐这种模式。
View不需要写逻辑,不需要知道别人的事情。 viewmodel程序员需要写,
model和view完全分开了。
缺点:对环境要求高,维护困难。
3 加载数据-序列化
序列化:将数据转换为可传输的二进制块。 反序列化:成为可以在内存中处理的数据。 是network一个非常重要的部分。
text,易懂,可打开。 .obj格式 XML:容器,废话太多。 Json:处理快,piccolo就是用的Json格式。
二进制是最快的,小很多。
资产引用:
所有文件都是相关的。
数据可以 继承。
4 如何加载数据
解析: 高位在哪里,前面还是后面。 向下兼容。版本兼容,非常重要。
建议 的做法:
大量的模块维护,数据格式有上百种,如何保证工具的鲁棒。
5 如何让工具链更鲁棒?
以下两个问题: undo$redo数据保存在崩溃时。
Command系统:所有用户的操作都可以原子化。
这种结构应该早点完成。以后加会很麻烦。
UID逐渐积累,确保顺序
6 如何制作工具链?
找出共性。
1 Schema:核心工具链
继承关系:像高级语言一样。
数据引用 两种方式: 一种是用xml,json等待直接定义shema。
另一种是定义了一个c 类,
第一种方法很容易理解, 将数据实现与工程完全分离。但她需要代码生成器。 但是版本不兼容。 第二种方法:方法可以直接包裹,版本不兼容。
磁盘上有一个, 一种是运行,内存是二进制。 一是用户使用。
基于弧度的代码。用户应该理解工具。
7 所看即所得
独立工具: 游戏中的工具:
非常简单,edit将数据与游戏数据混合。
8 插件
9 参考文献
软件架构
10 视频
https://www.bilibili.com/video/BV11T411G7qB/?spm_id_from=333.788&vd_source=5c9c50b5a07b211beafdf65d7cc7f8c8