What & How & Why

Introduction

Notes for Chapter 1


什么是游戏引擎

  • 制作,开发,管理游戏的软件平台
  • 也可用于模拟,建筑虚拟化,训练,以及工业中的媒体互动

常见引擎

  • Unity:小型跨平台
  • Unreal
  • Godot:开源
  • GameMaker
  • CryEngine
  • Lumberyard

游戏引擎的设计

主要组成的部分有:

  • Render Engine
  • Physics Engine: PhysX, Bullet Physics
  • Sound Engine: SDL_Mixer, OpenAL, FMOD
  • Scripting Engine: 负责管理 game state, 更新游戏世界,处理用户输入。通常使用脚本语言:C#,lua, python 等,用于实现游戏机制和 AI。
  • Assets Management: 管理,导入导出游戏资产:比如模型,贴图,字体,音频等
  • Scene Editor

High-level Architecture

游戏行业没有指定实现的蓝本
  • 好处:创作的自由性
  • 坏处:缺乏标准化
游戏引擎的特性
  • 高适应性
  • 每个游戏带来的需求都不相同
本书的 alignment
  • 使用封装的库
  • Game.exe:用户主要使用的程序
  • Empy.exe:用于场景创建以及引擎版本准备

开发工具

  • 语言:C++

开发环境

  • IDE:VS-code

Building System

  • 目的:将 source code 编译为可执行的程序或库
  • 用于管理依赖,决定哪些部分需要在更新时重新编译
  • 使用系统:Cmake
外部包管理
  • 使用 Conan

Graphic API

  • 角色:应用层与硬件(GPU)之间的中间件
  • 常见的 API:DriectX, OpenGL, Vulkan, Metal
  • 本书使用:OpenGL,跨平台

Script API

  • 用于定义 gameplay 的内容,比如 AI,游戏内的事件
  • 允许对游戏原型的快速迭代
  • 本书使用:Lua

GUI

  • 使用 Dear GUI