GAMES104.王希.01.游戏引擎导论

Bilibili 课程链接

游戏引擎导论

  • 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
      • 复杂性的艺术,复杂的系统

组成

  • 看得到的
    • 渲染系统、动画系统 ······
  • 看不到的
    • 物理碰撞系统、控制系统、网络同步 ······
  • 游戏引擎不仅仅是渲染

游戏引擎的挑战

  • 有限的资源、算力、带宽
  • 数据传输的延迟
  • 实时性
    • 对算法复杂性的要求很高
    • 帧率
  • 引擎不仅仅是算法,而是一个生产力的工具
    • 早期游戏引擎:简单的一个软件
    • 现在的游戏引擎:很多工具链(实现不同功能)
      • 面向设计师、艺术家,不仅仅是程序员
  • 对程序员的要求
    • 引擎二次开发的能力,可扩展性
    • 可协作的能力(团队协作)
      • 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)