Games104现代游戏引擎入门-lecture3如何构建一个游戏世界

Games104现代游戏引擎入门-lecture3如何构建一个游戏世界

  • 1 游戏世界的构成
  • 2 无人机案例
  • 3 游戏世界如何动起来
  • 4 如何探索
  • 5 如何管理GO
  • 6 总结
  • 7 Q&A

1 游戏世界的构成

动态物:
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第1张图片
静态物:
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第2张图片

环境:
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第3张图片
别的物体:
空气墙,
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第4张图片
每个物体都是很game obcjet(GO),这是方法论!
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第5张图片

2 无人机案例

Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第6张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第7张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第8张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第9张图片

缺陷:很多东西其实并没有清晰的父子关系!
解决方案:组件化!
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第10张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第11张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第12张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第13张图片

Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第14张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第15张图片
现代游戏引擎:生产力工具
Uobject:
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第16张图片

游戏世界里每个物体都是go;
每个物体都是通过组件来描述的;
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第17张图片

3 游戏世界如何动起来

写每个object的函数的时候都要加个tick函数
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第18张图片
通常是通过组件来tick的,1
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第19张图片
并行
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第20张图片

4 如何探索

Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第21张图片
下面这种方式不好:
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第22张图片
事件机制来实现,解耦合,只要发出个event;
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第23张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第24张图片
unreal 为啥复杂呢?

现代游戏引擎做一个可扩展的消息系统

5 如何管理GO

Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第25张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第26张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第27张图片

八叉树
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第28张图片
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第29张图片

节约计算资源:
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第30张图片

6 总结

Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第31张图片

物体之间的绑定:
GO tick的时候,有时许关系。go之间的通讯是通过消息机制来进行的。
逻辑悖论:逻辑上会混乱,实际上对游戏的影响是非常大的。
引入一个第三方,邮局,确保时序是严格一致的。
pretick()和posttick是解决时序的问题的!
每个组件,是在当前帧还是上一帧接收到的消息的,这一点一定要注意。
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第32张图片
ECS是什么?
Games104现代游戏引擎入门-lecture3如何构建一个游戏世界_第33张图片

7 Q&A

1.tick过长,如何处理?
计算过于复杂,
可以tick 跳过两帧,5帧–0.2s左右,批处理
2. 透明的东西

  1. 渲染流程和tick流程是如何同步的
    ticke逻辑,会在tick渲染的后面,
    tick渲染的时候,是在做准备,
    ticke逻辑会比tick渲染前面

  2. 空间划分了,动态的怎么办

  3. 组件模式有什么缺点?
    组件模式的效率低,ecs可以解决这个问题
    组件之间也需要通讯机制,这个过程对效率的影响也很大,

  4. 事件机制如何调试

锁定一个GO,把收到的所有消息都显示出来
不停的打log;

  1. 物理和动画冲突了如何处理?

你可能感兴趣的:(游戏引擎,游戏引擎)