首页 GAMES104-Lecture 03 如何构建游戏世界
文章
取消

GAMES104-Lecture 03 如何构建游戏世界

What does a game world consist of?

  • 动态物

  • 静态物

  • 环境:天空、植被、地形

  • 其他物:空气墙、trigger area、navigation mesh

pPOiHUA.jpg

How should we describe these things?

  • 属性

  • 行为

  • 继承

pPOi7Ed.jpg

  • 组件化:解决该继承谁的问题

    • 让开发者好理解好维护

    • 让艺术家好理解好使用

pPOiLCt.jpg

  • 把游戏世界的所有东西抽象成了game object(go)

  • 每个go由各种组件(component)组成

How are these things organized?

  • 每个tick()把每个go的tick()执行一遍

  • 现代引擎中是按系统(或者说是每种component)去tick(),有一个pipeline

pPOib4I.jpg

  • go之间的关系,最原始是hardCode,现代是Events事件机制(观察者模式)

  • Events:发送事件给有关系的go,让go自己处理

pPOioHH.jpg

  • 管理:

    • 不管理:每次发生爆炸,向所有go发送消息,判断爆炸半径

    • 分治:把世界划分成格子,均匀格子、八叉树格子(层级查找)

    • 空间数据管理: 二叉树、八叉树、BVH

pPOiO8P.jpg

  • 很多tick是并行执行的,所以时序很重要,如果让go彼此互相通信,就会产生逻辑混乱,因此引入邮局

pPOiXgf.jpg

  • pretick和posttick就是解决时序问题
本文由作者按照 CC BY 4.0 进行授权