GAMES104-引擎架构分层

本文介绍了游戏引擎分层设计的概念及重要性,包括资源处理、功能实现、核心数学库、平台适配及工具层的构建思路。从资源的统一管理到多线程的设计,再到数学库的性能优化等方面进行了详细的阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为啥要分层?
1.太复杂了
2.为了上层开发者不必了解底层
3.底层复用,减少不必要的代码修改


工具层
最浅显的显示界面
功能层
动画、物理
资源层
3DMax、mp3、png
核心层(核心代码)
代码库支持
平台层
安卓、ios、各种设备
还有特殊层:第三方库层(物理、声音等)


例子:如果自己做个播动画的引擎怎么做呢?

1.处理资源
可能有的不同类型的资源:XML+PSD+MAX+MAYA
需要化为 Asset(资产) 转为引擎定制的资源格式
还需要生成一个 GUID(唯一识别号) 文件,处理资源的依赖(数据之间的关联)
(不能以全路径做关联,否则资源变化很麻烦)
Handle系统
核心点:管理每个资源的生命周期
2.功能层
Tick
while(true)
===>TickLogic()
===>TickRender()
表现绘制和逻辑区分开
功能层比较复杂,区分是否和游戏逻辑有关系
多线程
最初:单线程
基础多线程:Logic和Render两个线程,额外线程做加载
当前商业引擎:物理、动画等逻辑做并行运算
未来的:抽象Job概念,自动分配多核
注意逻辑有先后依赖关系,多线程需要保证不会乱
3.核心层
数学库,线性代数,矩阵向量
数学库特别敏感性能,不需要绝对准确,保证效率就行
SIMD、一条指令把四个运算全都算完,方便向量运算
数据结构,C++标准容器扩容会倍数,会有内存碎片
需要进行内存管理
优化CPU访问:数据尽可能紧凑、按顺序访问、读写尽可能一起
4.平台层
虚函数封装API,不影响上层写逻辑的人
比较难,看水平
平台渲染显卡不同、平台硬件架构不同
5.工具层
关卡编辑器、逻辑编辑器、材质编辑器、动画编辑器、UI编辑器
生产力的关键,使用体验作为关键
DCC(Digital Content Creation),兼容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值