Skip to content

Games104游戏引擎

  • 游戏引擎分层
    • image.png|195
  • 工具层
    • 编辑器,供开发者、美术等使用
    • 对外接口
  • 功能层
    • 控制游戏时间的推荐,进行逻辑和渲染更新(每一帧)
    • 游戏生命周期控制
  • 资源层
    • 导入资源,并将不同格式(软件)的资源转化为通用高效的引擎资产
    • 除了资产文件外,引擎还生成了文件用于存储资产之间的关系,以及游戏资产的 id
    • 负责资源的生命周期的管理,加载与释放
  • 核心层
    • 数学库(强调效率)
    • 为上层提供基础服务
    • 各种数据结构(类似 STL)
    • 内存管理、资源分配
  • 平台层
    • 适配不同操作系统、设备
    • 让上层写代码时可以无视平台的差异(如文件路径、图形 api)

渲染

  • 可渲染物体组成:
    • 点:位置、法线、uv 等
    • 面:三角形顶点序号组成
    • 材质贴图
  • 一个物体可能会使用不同的材质,可以据此进行嗯个位 submesh,每个子部分独立进行处理
    • image.png|600
  • 为了避免同一模型重复存储,数据只存储一根,每个模型仅存储一个指向对应数据的 id
    • 数据和实例分离
  • 为了提高渲染效率,可以按照材质排序,顺序渲染使用相同材质的物体,减少 IO 消耗
  • 可见性裁剪
    • 使用包围盒等判断,减少视野之外的不必要的渲染开销
    • image.png|600
    • 进行区域划分,只处理周边区域(也可以依据区域进行数据加载释放)
  • 纹理压缩
    • 游戏引擎需要可以随机访问,因此 jpeg 等压缩算法并不适用