Games104第2节记录
三月 22, 2022
如何构建游戏世界
如何让游戏世界活起来
将物体变成GO( Game Object)
动态物体
静态物体
环境
天空,地形,植被
其他物体
空气墙,规则
如何去描述虚拟世界的物体
将物体的属性和行为封装在一起,成为一个对象。
假如但有两个功能时我怎么处理
Component
每一个Component类都需要一个tick()函数
多功能物体我们用组合方法来解决。
怎么让游戏动起来
进行单个系统进行tick()。
一个一个系统进行tick,而不是一个物体一个物体进行tick,这样的架构会更高效
如何在游戏引爆炸弹
事件
如果写在一个爆炸类里用switch判断,随着系统的复杂类会越来越大。变得不可调试。爆炸类只需要将这给消息传给其他组件让其他类添加相关方法。
如何管理Game Object
Scene Management
每一个物体都需要一个特别的UID
每个物体都需要一个位置
简单的空间分割
不需要划分
物体较少的情况下直接遍历
优点:特别简单,无脑
缺点:但物体多就效率低
进行网格划分
对格子进行编号,发生事件找邻近格子的部分物体
优点:对比上一种方法能减轻弊端
缺点:对于空间不均匀不适用
四叉树
对目标块不断的划分。
空间数据管理
最常用的是BVH方法。
小结
一切都是对象
游戏对象可以用基于组件的方式来描述
游戏对象的状态会在tick循环中更新
游戏对象是通过有效的策略在场景中管理的
物体tick的先后顺序
多线程通信问题,当你访问其他线程时先通过一个邮局,然后由邮局统一相互发送消息。保证时序一定一致。比如你的精彩时刻是记录玩家的输入,如果是多核执行可能导致结果不一样。
查看评论