GAMES104.王希.01.游戏引擎导论
游戏引擎导论
- Overview of Game Engine
- 王希:不鸣科技
算法 vs 系统
- 写算法 \(\to\) 做系统
- 将算法集成到系统中
- 算法大家都会,但是如何做出一个好的系统
- Game:Miracle of Modern Computer Technology
- 游戏引擎:The Diamond on the Crown
游戏引擎的应用
- 虚拟人(MetaHuman)
- 影视行业(Cinematic & Animation)
- 离线渲染
- 在线,可以在现场调整光照
- 模拟(simulation)
- 战争模拟
- 数字孪生(Digital Town)
- 无人驾驶汽车,90% 的场景都是在虚拟系统中跑的
游戏引擎的历史
- 红白机
- FC(Famicon)
- 魂斗罗、马里奥 ······
- 没有游戏引擎的概念
- 如何在存储限制的条件下做出游戏
- 各种技巧用于减少存储容量
- 游戏引擎之父:John Carmark
- 写游戏的时候很多代码能够重用 \(\to\) 游戏引擎
- Wolfenstein 3D(1992)
- 德军总部 3D
- FPS 游戏始祖
- First-person Shooting game
- 第一人称视角射击游戏
- Doom
- 毁灭战士
- 这个游戏的核心代码变成了游戏引擎,授权给了要另外的公司,做了另一款游戏
ShadowCaster
- 在商业上成功了!
- 算是第一款游戏引擎,但是这个时候更多的知识代码的复用
- Quake
- 经典的射击对战游戏
- Quake 的引擎
- 提供了 3D 的渲染
- 早期的显卡 3D 加速(OpenGL)
- 一部分原因:显卡出现了
- 硬件的发展推动了游戏引擎的进步
- 同时也让游戏引擎系统变得更加复杂
- 现在的游戏引擎如下
游戏引擎
- 游戏大厂一般都有自己的游戏引擎
- EA(Electronic Arts):Frostbite Engine(寒霜引擎)
- 育碧(Ubisoft):
- UBIart Framework
- 雪花莲引擎(Snowdrop Engine)
- 铁砧(Anvil)
- 刺客信条
- V 社(Valve):起源引擎(source)
- 开源免费的引擎:轻量级、2D
- 商业引擎:功能更加完善、系统级别
中间件
- Middlewares
- 物理模拟、声音、渲染、植被场景生成
- 中间件公司寿命都不长hhh,但是在游戏引擎生态中很重要
什么是游戏引擎
- 3 个特点
- Technology Foundation of Matrix
- 黑客帝国
- Productivity Tools of Creation:
- 生产力的工具,能够通过过游戏引擎实现我们的想象
- Art of Complexity
- 复杂性的艺术,复杂的系统
- Technology Foundation of Matrix
组成
- 看得到的
- 渲染系统、动画系统 ······
- 看不到的
- 物理碰撞系统、控制系统、网络同步 ······
- 游戏引擎不仅仅是渲染
游戏引擎的挑战
- 有限的资源、算力、带宽
- 数据传输的延迟
- 实时性
- 对算法复杂性的要求很高
- 帧率
- 引擎不仅仅是算法,而是一个生产力的工具
- 早期游戏引擎:简单的一个软件
- 现在的游戏引擎:很多工具链(实现不同功能)
- 面向设计师、艺术家,不仅仅是程序员
- 对程序员的要求
- 引擎二次开发的能力,可扩展性
- 可协作的能力(团队协作)
- Nvidia Omniverse
- 工具人实锤,服务于设计师
- Update the Engine On the Fly
- 在迭代过程中需要保证现有工程的稳定
如何学习游戏引擎
- 课程不会细究某个技术点,而是向我们展示整个框架
- 让我们知道如何去学习,知道什么知识该去寻找什么资料,知道去哪里寻找
- 方法论的教学
课程内容
- 20 节课
- Basic Elements
- 游戏引擎的架构
- 数据的组织与管理
- 学完之后知道如何下手去看一个游戏引擎的源码
Update()
函数
- Rendering(渲染)
- 模型、材质、shader、纹理
- 光照与阴影
- 渲染管线
- deferred rendering、forward rendering
- 天空、地形
- 半透明与透明材质
- 卡通渲染
- 可定制的渲染管线
- Animation(动画)
- 动画的基本概念
- Animation Structure and Pipeline
- 如何让设计师能够参与进来
- 如何交互
- Physics(物理模拟)
- 物理系统的基本概念
- 几何原体
- 刚体、弹性体、流体
- 性能优化
- Gameplay Application
- 物理系统的基本概念
- Gameplay
- 事件系统(Event System)
- 脚本系统(Scripts System)
- 图形化的驱动(Graph Driven)
- 编程:设计,写代码、模块化组合都算编程
- Misc. Systems
- 特效系统(Effects)
- 寻路系统(Navigation)
- 相机系统(Camera)
- Tool Set(工具链)
- C++ 反射体系
- Data Schema
- Online Gaming(网络)
- 同步与一致性
- Lockstep Synchronization
- State Synchronization
- Consistency
- Advanced Technology
- Motion Matching
- PCG(Procedural Contenct Generation)
- DOP(Data-Oriented Programming)
- Job System(任务系统),多线程
- UE5:Lumen、Nanite
其他
- 推荐读物
- Jason Gregroy, “Game Engine Architecture”, 3rd or later editions
- Mini Engine
- 课程的小引擎
- 课程目标
- 能够做出一个简单的联网对战游戏
- 可视化编程将会是未来的大趋势
- 蓝图
- 元宇宙
- 挑战很大
- 电影:头号玩家(Ready Player One)
- 不同游戏引擎总体架构类似,但是会有一些特定领域的优化
- ECS(Entity Object System)