======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