这个系列是GAMES104-现代游戏引擎:从入门到实践(GAMES 104: Modern Game Engine-Theory and Practice)的同步课程笔记。本课程会介绍现代游戏引擎所涉及的系统架构、技术点以及引擎系统相关的知识。本节课主要介绍现代游戏引擎的基本概念。
Game: Miracle of Modern Computer Technology
现代游戏引擎是一个非常庞大的系统,它集合了整个计算机科学从底层硬件到应用端几乎全部的内容。某种意义上说,开发一个现代游戏引擎的难度不亚于开发一个现代操作系统。
Why We Need to Learn?
在正式介绍游戏引擎的相关概念前我们先来考虑为什么要学习游戏引擎这个问题。实际上现代游戏引擎的应用范围已经不局限于单纯的电子游戏,游戏引擎和相关的技术是整个虚拟世界的基石。
Metahuman
游戏中的”捏脸”以及目前火热的虚拟人(metahuman)背后是游戏引擎和图形技术十几年来不断进步的结果。
Cinematic & Animation
影视工业中虚拟场景的渲染也不再是离线渲染技术一枝独秀的领域。通过游戏引擎已经可以实现实时的场景渲染,方便影视工作者及时调整拍摄流程。
Simulation
在军事领域,各国已经在使用游戏引擎辅助战术训练。
Digital Twin
数字孪生(digital twin)更是需要游戏引擎作为基石。可以说游戏引擎是沟通现实世界与虚拟世界之间的桥梁。
History of Game Engine
从历史发展的角度上来看游戏引擎是一个非常年轻的概念。早期的游戏并没有专门的引擎,开发者的目标是在有限的计算能力和存储空间中实现相对复杂的游戏玩法。
随着整个电子游戏行业的发展人们发现可以重复利用某些代码并把一些概念分离抽象出来,这就形成了早期的游戏引擎。公认的游戏引擎之父是John Carmack,他开发的重返德军总部(Wolfenstein 3D, 1992)可以认为是第一款通过游戏引擎开发的游戏。
John Carmack后来还开发了毁灭战士(Doom),并以此定义了FPS这一游戏类型。他还通过授权的方式允许其它公司开发商业游戏,这也了奠定了游戏引擎的商业模式。
现代游戏引擎的出现则要归功于GPU的发展。随着对图形渲染需求的增加,人们开发出了GPU这样的计算硬件将图形运算从CPU逻辑运算分离出来。通过对高度并行化图形运算的优化,人们第一次实现了全程的3D游戏。
计算能力的提高不仅提升了游戏画面的质量,也为游戏系统开发提出了各种各样的挑战。
今天的游戏引擎已经有一个庞大的门类,很多游戏开发商甚至有着自己专门开发的游戏引擎。
除了游戏引擎外也有很多公司和团队专精某一个子系统的功能,包括物理仿真、声学仿真、渲染等等。
What’s Game Engine?
Wiki中关于游戏引擎的概念过于笼统和抽象,在本课程中我们则将游戏引擎定义为实现虚拟世界整套技术的基础,同时也是展示人们创意的舞台。
游戏引擎是一个非常复杂的系统,即使是非常简单的游戏也需要系统的不同组件相互协作才能实现基本的游戏功能,比如说渲染系统在屏幕上绘制图像、物理系统模拟人物战斗的过程、控制系统实现玩家和角色的交互、联网系统实现多人互动等等。
同时需要特别强调的是游戏引擎不等于渲染系统,实际上渲染只占现代游戏引擎的一小部分内容。
游戏引擎的目标是在有限的计算资源和带宽下尽可能对现实世界进行实时模拟。实时性是游戏引擎和图形学其它研究的重要区别之一,大部分游戏特效的计算都要压缩在1 ms左右。
游戏引擎的用户也不仅仅是游戏开发者,现代游戏引擎可以服务于设计师和工程师作为一种生产力工具。
对于开发者,游戏引擎需要提供具有高拓展性的API以满足不同类型游戏的开发需求。同时游戏引擎也需要考虑协作性以方便团队之间相互沟通合作。
游戏引擎还需要考虑技术更新换代后向前的兼容性,因此架构设计对于游戏引擎尤为重要。
How to Study?
那么如何学好游戏引擎呢?由于系统的复杂性,游戏引擎几乎包含了整个计算科学的知识体系。
不过在本课程中我们更关注于游戏引擎的知识框架和体系结构,不会专攻于某些技术的细枝末节。
Course Content
本课程会涉及现代游戏引擎的体系架构、渲染系统、动画系统、物理系统、游戏性架构、特效系统等。
为了实现游戏引擎,课程中还会介绍各种常用的工具。
同时,本课程也会介绍一些业界的前沿技术。
Course Logistics
最后,本课程的官方资源如下:
感谢课程团队的无私奉献!