游戏引擎架构

大纲

  • 导论
  • 支撑系统
  • 渲染引擎
  • 动画
  • 物理
  • 其他

导论

什么是架构?

软件架构是一个系统的草图,软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或对象。在面向对象领域中,组件之间的连接通常用接口来实现。

什么是游戏引擎?

4933701-802f270db60917e7.png
引擎

定义组件最重要的是功能的增加和分解

常见组件的问题

  • 单个组件的功能太多
  • 组件的描述不够清晰

常见的游戏引擎

4933701-c268edc2987711b8.png
unreal
4933701-867a62a292903ba5.png
cocos
4933701-3292b19d6b912f60.png
unity
4933701-8e64e07a91113fe3.png
cryengine

推荐书籍

4933701-22f5e2e1f74a8fd0.png
游戏引擎架构

运行时游戏引擎架构

4933701-f78eee1cd01f0e8b.png
运行时游戏引擎架构

游戏引擎由工具套件和运行时组件两部分构成

  • 目标硬件 Hardware(PC,XBOX360, PS3, etc)
    运行游戏的电脑系统或主机

  • 设备驱动程序
    硬件驱动是比较底层的,由操作系统或硬件开发商提供的软件构成,硬件驱动管理硬件资源,把操作系统与引擎上层跟无数不同的可用的硬件细节操作隔离开来。

  • 操作系统
    在PC上操作系统是一直运行着的,它指挥着多个程序在一台电脑上运行,其中包括你的游戏。这意味着PC游戏不能假设拥有硬件的所有控制权。在游戏主机上,操作系统通常只是一个轻量级的库,链接到游戏的执行档中,游戏一般完整的拥有整个硬件。

  • 第三方SDK和中间件


    4933701-4dc6689a3e945ac3.png
    第三方SDK和中间件
  • 平台独立层


    4933701-7c29af0a86e87e41.png
    平台独立层

游戏引擎需要运行在不同的平台上,绝大多数游戏引擎架构上都是一个平台无关层。这一层建立在硬件层、驱动层、操作系统、第三方软件之上。把引擎的剩余部分和大部分的底层细节隔离开来。通常包含C标准库、操作系统调用、基础API,保证引擎在所有不同的硬件平台上的行为一致性。

  • 核心系统
4933701-449499d7e50ea76e.png
核心系统

断言:是进行错误检查而插入的,用来捕获逻辑错误以及违反程序员本意的代码,断言一般在最终产品生成时会被移走。

内存管理:游戏引擎都实现了自己一套内存分配机制,来确保高速的内存分配以及释放,并减小内存碎片带来的负面影响。

数学库:游戏是天生对数学要求很高,每个游戏引擎至少都有一个数学库。

字符串:字符串的复杂性主要在于编码,同样的内容不同的编码其二进制数据是不同的,在进行本地化(国际化)时不得不面对这个问题。另外,hash string表示将一个字符串转换成一个数值,在服务器验证时经常会用到。

词法分析器:可理解为XML等性能分析工具,如Unreal内置的Profiler。

引擎配置:常用手段是ini文件

  • 资源管理
4933701-fce538142e0f4df9.png
资源管理

每个引擎都有某种形式的资源管理器,它提供一个统一的接口来存取及所有的游戏资源和其它引擎输入数据。

4933701-75e83fd1be160204.png
image.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值