Lecture 1:游戏引擎导论
Topic 1 Why we need to learn
如果把做游戏比作会开车,会做游戏引擎就是会造车。游戏引擎就是 the diamond on the crown。
游戏引擎的未来应用:
- Game
- 虚拟人
- 电影动画
- 军事模拟
- 数字孪生
- 真实世界的虚拟化呈现/表达
Topic 2 History of game engine
- 早期
- 红白机(Famicom, FC)
- 游戏引擎之父
- John Carmack,卡神
- Wolfenstein 3D (1992)
- Doom
- Doom 引擎授权后做出了 ShadowCaster
- 早期现代游戏引擎
- 背景:Voodoo 显卡出现
- 游戏:Quake
- 硬件发展推动游戏行业发展
- 现代游戏引擎生态
- Middlewares, 中间件
- Middlewares, 中间件
Topic 3 What is game engine
- Technology Foundation of Matrix
- Productivity Tools of Creation
- Art of Complexity
荐书:The complexity of system,系统复杂之美
Complexity of Simulation by 0/1
现代计算机本质:图灵机(01 变换)
Game engine is way beyond rendering
荐书:game engine architecture
游戏引擎的挑战:有限算力,实时处理
Toolchain for creators
做引擎要先学会做面向广大用户(程序员,艺术家/设计师)的工具
- 对于程序员
- 提供可扩展接口
- 是否具有二次开发能力也是评判引擎的标准
- 对于艺术家/设计师
- 提供多人协作功能
Update the engine on the fly
热更新
Topic 4 How to study
A study path for game programmer
本课只关心主干道,建立知识体系结构,在未来在碰到问题的时候知道从何下手
Topic 5 Course content
Basic Elements
- Engine Structure and Layer
- Data Organization and management
take away: 打开游戏引擎,从 Update 函数开始看起,就能顺藤摸瓜看到架构
Rendering
- Model, material, shader, texture
- light and shadow
- render pipeline
- sky, terrain, etc.
Animation
- Basic concepts of animation
- Animation structure and pipeline
动画间的融合
Physics
- basic concepts of physics system
- gameplay applications
- performance optimization
前面的是视觉表达,这里要负责物理表达
Gameplay
- event system
- scripts system
- graph driven
如何让模拟世界变为“可玩”的游戏
take away: 编程不意味着 scripts coding,所有逻辑构建其实在某种程度上都可以算是编程
Misc. systems
- effects
- navigation
- camera
Tool set
- c++ reflection
- data schema
如何构建工具
Online gaming
- lockstep synchronization
- state synchronization
- consistency
预告令人头疼的拜占庭算法和爱斯基摩人小屋再次出现!
Advanced technology
- motion matching
- 动作融合匹配让其自然
- procedural content generation (PCG)
- 游戏内容自动生成
- data-oriented programming (DOP)
- job system
- Lumen
- 虚幻 5 的光照系统
- Nanite
- 虚幻 5 的虚拟几何系统
Topic 6 Course logistics
References
- no required textbooks
- most recommended reference
- Game Engine Architecture, Jason Gregroy
Mini Engine
- mini runtime framework
- mini editor
- building basic knowledge system of game engine
Assignments
野心:最后能做个小小的联网对战游戏