GAMES104--2rd

Games104---2nd

游戏引擎分层

我们接触到的第一层Editor(工具层)
然后就是Rendering, Physics,Animation, Script, HUD(function)
然后资源管理,psd, max, maya, mp3, xml, mpeg
然后是核心层(瑞士军刀)
然后是平台层

PC, Mac, Consoles, InputDevice, PublishingPlatforms
还有第三方层
5+1层。

First task -- 做一个会动的角色

将资源文件变成asset

第三方文件会有很多无效文件,我们importing 资源的时候,需要转化为我们的资产asset,最好能压缩一下。
不同资源直接需要进行相互关联,比如模型和贴图(xml)
给每个资产设定一个唯一识别号guid---global unique id

Runtime Asset Manager

各种文件相互关联,需要一个Manager管理各种资源的生命周期。GC

Function 层

Tick运行时不断跑的函数

ticklogic & tickRender

多线程

将任务拆成原子任务,小的不能再小的,然后分配给多核。

动画

将动画的运算放进ticklogic
然后渲染的时候tickrender

核心层

数学库

数学为效率服务
example - 卡马克快速平方根
SIMD加速线性代数运算

数据结构

链表,二叉树。。。
为了避免内存碎片全部重做,

内存管理

  • Memory Pool/Allocator
  • Reduce cache miss
  • Memory alignment

可能还有网络

平台层

RHI

把各个图形API的函数重新分装一遍

硬件架构

手机的大小核
各种协处理器。。。

工具层

蓝图,材质,UI编辑器。
材质编辑器保证DCC软件和引擎里看上去是一样的
不一定用C++

DCC

Asset Conditioning Pipline
各种格式的导入导出。

为什么要分层

减少耦合,加强封装,增加可读性。
底层最好不要动,但上层可以动。减少代码改动。

写代码之前,想想自己的代码在哪一层
底层不允许调用上层

Mini Engine---Pilot Engine来了

引擎分层

  • Editor (Tool)
  • Runtime (4层)

有多线程ECS!!!

posted @ 2022-03-28 21:14  LRD  阅读(60)  评论(0)    收藏  举报