Games104现代游戏引擎入门-lecture13游戏引擎的引擎工具链基础
![在这里插入图片描述](https://img-blog.csdnimg.cn/b0285c47ca5d472aa76a29cca0d23fc9.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/38dcb435cc04430c96d2e3b08b3e23d4.png)
1 什么是工具链
![在这里插入图片描述](https://img-blog.csdnimg.cn/4a4c9982221b4e8eb370c3b3eac8793c.png)
DCC: 这个就在ACP这一层。
![在这里插入图片描述](https://img-blog.csdnimg.cn/962a9ca0e39b4f768c30861ed8e5bf86.png) 工具链就是调和不同层次的人的关系,不同使用者的习惯。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e71e48aaa03e48828f3c3865d5ff65d9.png)
2 工具链的GUI
![在这里插入图片描述](https://img-blog.csdnimg.cn/fab689a301db4e3ca92e06116fb33bbd.png)
1 Immediate Mode
![在这里插入图片描述](https://img-blog.csdnimg.cn/4b30c14bf8834ea0af22ca3019a16d0f.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/e10b6ae78bb347d8b4f97512462208fc.png) 拓展性不好!
2 Retained Mode
大部分人用的这个模式。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/576cf796628e4fc38eab7804f58f1bac.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/ea38116864c548e18dcea16d055e9144.png)
3 Design Pattern
1 MVC 模式
MVC:1987 数据之间的逻辑, 把数据流清晰化了,底层的model单向的到view,不能从view 到model。model的修改只能通过controller来做。将View和model分离开的架构。
![在这里插入图片描述](https://img-blog.csdnimg.cn/7e51a1c63b064e0fbe4fabdca7af1101.png)
2 MVP
所有的复杂度放到了Presenter,这个得听懂view的语言,有得听懂model的语言。
![在这里插入图片描述](https://img-blog.csdnimg.cn/dcf8c5706ae84780a8393d3421884bd4.png)
3 MVVM
目前更推荐这个模式。
View不需要写逻辑,不需要知道别人的东西。 viewmodel需要程序员去写,
model和view彻底分离开来了。
![在这里插入图片描述](https://img-blog.csdnimg.cn/01ba48e44f2e446f9ba8326f88b1c183.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/887cc11256434ee78a242cb69ccabaca.png)
缺点:对环境的要求高,而且不好维护。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/836c04e3f42948b18af24dfc763666e2.png)
3 加载数据-序列化
序列化:把数据变成可以传递的二进制块。 反序列化:变成内存中可以处理的数据。 是network非常重要的一块。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/70528f9ea92b405a9548095be9b566e6.png)
![在这里插入图片描述](https://img-blog.csdnimg.cn/56435d19152f493b8697a1c88cf6e708.png)
text,容易懂,都可以打开。 .obj格式 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d762493ae646489e9c9c3981ccc104e2.png) XML:容器,废话太多。 Json:处理快,piccolo就是用的Json格式。
![在这里插入图片描述](https://img-blog.csdnimg.cn/6a095b5168a24961842ada8ddd094d2d.png) 二进制是最快的,小很多。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d575d0919caa4669a007cee5c18163fe.png)
资产引用:
所有的文件都关联在了一起。
![在这里插入图片描述](https://img-blog.csdnimg.cn/ce433500fd6c4dbfa9604531e44e1eda.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/9d87bd19bd774e04a7d937aa6b392add.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/be7259d31a28415c83e50d261cc3a703.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/a9d047fc260b4ac7bca07eb789647a6d.png)
数据可以 继承。
![在这里插入图片描述](https://img-blog.csdnimg.cn/bcbefe7193c945a38fb54c65efa57636.png)
4 如何加载数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/d8ef05ccf574474793ef427cd5ed6b7d.png)
解析: ![在这里插入图片描述](https://img-blog.csdnimg.cn/417bc14639b04df291a5a23aa3489cf3.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/271bc1a264764768bce87e8b9895df38.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/5983a1cbf5114085b0584ff230d0c6db.png) 高位存在哪里,前面还是后面。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fde2f89c392f4e88a8bd4e9e470ea78b.png) 向下兼容。版本的兼容,非常重要的。
![在这里插入图片描述](https://img-blog.csdnimg.cn/c1df876390c544e99a508a9676c13bf7.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/512aa1bb41bf4e399440609775cfdf40.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/92140d05f76b4290a11060ab9984a89f.png) 建议 的做法:
大量的模块维护,数据格式有上百种,如何保证工具的鲁棒。
![在这里插入图片描述](https://img-blog.csdnimg.cn/55244128f6f447ac8a3a5647fcac691e.png)
5 如何让工具链更鲁棒
如下两个问题: undo$redo和崩溃的时候数据的保存。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/f51a9d5bf32346618afe72414d0c82b0.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/cd30e3fcef38496493491417934c255e.png)
Command系统:可以让用户所有的操作都可以原子化。
这个结构要早点做进去。后面加就会很麻烦。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/034c92bc37ae4c2180c239bc5d1a7a7e.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/8bbcf62b8b0d46debfbc38e6f69abc4a.png)
UID是逐渐累积的,保证顺序 ![在这里插入图片描述](https://img-blog.csdnimg.cn/da92babf059443f8a8fb22eb6104dfcf.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/58920af8e6c54bb1b2ee642b7a2cd6ab.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/fe44a17de23f44c4b298ed5ca3099a16.png)
6 如何制作工具链
![在这里插入图片描述](https://img-blog.csdnimg.cn/5123fda69bd846a7ad580a153dbdba75.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/07270dd1bb0c41c087f856288fd0b895.png)
找出共性。
![在这里插入图片描述](https://img-blog.csdnimg.cn/85e97762266041e199c9c1f1376c9267.png)
1 Schema:工具链最核心
![在这里插入图片描述](https://img-blog.csdnimg.cn/2279007255664f199cc2c3184a2971e4.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/633d15d4ca704d53ba2479588a1c6840.png) 需要继承关系:像高级语言一样。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/3dc1f5b5c34b4e7ebf48c8c5fdb1e5a1.png)
数据引用 ![在这里插入图片描述](https://img-blog.csdnimg.cn/62e9d28f09354dbf88e210286089322d.png) 两种方式: 一种是用xml,json等直接定义个shema。
另外一种是:定义了个c++类, ![在这里插入图片描述](https://img-blog.csdnimg.cn/45721a58d0b04f67bd7ea8d99f538a0d.png)
第一种方式非常好理解, 把数据实现和工程彻底剥离开了。但是她需要代码的生成器。 但是版本不兼容。 第二种方式:可以直接将方法包进去,不会出现版本不兼容。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/bee6983cd5984e6d8716ceded608f536.png)
一种是磁盘上的, 一种是运行中的,内存中是二进制的。 一种是给用户使用的。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/523b724616844d45a83efcea13903d02.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/70a4ac42219b4fca87ea94a275a429ce.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/840e1b1d827e46b1bbaaf0dd3679b22f.png)
在代码中是基于弧度的。工具中要让用户理解。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/605eff7c4fa9406e93ccbdbf1b31e02a.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/8131e811314744c8a916399fe7b2dc93.png)
7 所看即所得
![在这里插入图片描述](https://img-blog.csdnimg.cn/daba7450b736447bba12d6396e2c3655.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/b5e8811c747b412da87f39a6694e037b.png)
独立的工具: ![在这里插入图片描述](https://img-blog.csdnimg.cn/1dd87f0359914ae78311f77b948db3fd.png) 游戏中的工具: ![在这里插入图片描述](https://img-blog.csdnimg.cn/b4b712c92d2743c08a42c455fc3b3b05.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2629fbdf08c24eb6917dcf16580f6169.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/a359c2f6b3c9461e9bd0c7adbba9e661.png)
非常简单,edit数据和游戏的数据会混合。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/8ff2daeec62f4659abcb744d06fa8b99.png)
8 插件
![在这里插入图片描述](https://img-blog.csdnimg.cn/ec31006f04ca4e92858b509c8840c942.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/6447849ac37a4dc88af94ff9f1d58361.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/b49bb3da54734a3db3224f65f48abc93.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/d5dcc948864b4c679fb8915f8f734b2b.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2088f3aa9dd44f65b78bd38cffc4178e.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/07d039d1ac3e498b8c21cb1add7690af.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/c9446dbdde7f4019a6edfe56895b8c5b.png)
9 参考文献
![在这里插入图片描述](https://img-blog.csdnimg.cn/1c79f7055f97430fb4b476293b8acd06.png) ![在这里插入图片描述](https://img-blog.csdnimg.cn/2ac3a759f1114948a593466ee9f2ab35.png) 软件架构
10 视频
https://www.bilibili.com/video/BV11T411G7qB/?spm_id_from=333.788&vd_source=5c9c50b5a07b211beafdf65d7cc7f8c8
|