什么是游戏引擎

Author Avatar
sunT 3月 29, 2020
  • 在其它设备中阅读本文章

既然要设计游戏引擎,所以我们首先得知道什么是游戏引擎。但是在了解游戏引擎的概念之前,我先探讨一下什么是游戏呢?

什么是游戏

现在我们说的游戏可能是比较狭隘的游戏了,只是单纯指video game,也就是我们运行在电子产品上的视频游戏。但是游戏这个词本身是一个比较宽泛的概念,在我们小时候科技还没还未发展,电子产品还没有兴起的时候,我们也是可以呼朋引伴的玩游戏,诸如丢手绢、跳皮筋、打沙包等等。我也称这些活动为游戏。所以什么是游戏呢?

我个人对游戏理解是:

  1. 明确的规则
  2. 一个和多个参与其中的玩家
  3. 一个或是多个目的
  4. 玩家在规则下使用各种方法和策略到达目的

但是人为什么会想去玩游戏呢,我把它称之为体验
在游戏中把自己代入角色体会现实中无法得到的体验(沉浸式体验);打磨技术完成挑战(学习精进体验);交友和放松心情(温暖舒心体验)。

所以这就是游戏,它在我们的现实社会中扮演着非常重要的角色,使我们生活必不可少的元素。

什么是游戏引擎

游戏是对现实世界的一个模拟,模拟世界的花花草草、高山大川、高楼大厦、车水马龙等等;还有对时间的模拟,随着时间的流逝,各种事物的状态就会改变;还有一些自然规律的模拟,比如一些物理理论:自由落体、流体力学、刚体力学等等。

这样一看游戏之间有很多共通点,这些共通点可以打包成一个模块供很多游戏使用,这其实就是一个游戏引擎的概念。

最早的游戏引擎是id Software开发DOOM时提出的,他们把软件的一些核心组件进行划分,使得其中一部分可以经由id soft授权使用。那么这个就是早期游戏引擎的概念了。

游戏引擎的多样性

首先游戏有不同的类型,所以不同游戏类型对游戏引擎的要求也不一样。就拿图形渲染来说,渲染室内和渲染广阔场景要求是不一样的。而且不仅是游戏类型导致的游戏引擎的多样性,硬件平台也是其中的因素,不同游戏引擎可能针对不同的硬件平台优化力度和偏向不同。所以通用的游戏引擎往往在性能表现上吃亏,因而设计出一款可以制作任何游戏的引擎可以说是天方夜谭。

现有知名游戏引擎

  1. Unreal 非常全能的游戏引擎,支持可视化开发,几乎可以完成任何FPS和第三人称的3D游戏。
  2. unity3D 几乎兼容所有的平台,易于学习和上手。
  3. CryEngine 让你的游戏更美丽,输出非常优质的画面。
  4. RAGE 复杂人工智能管理,可以去GTAV体验一下。

还有好多非常优秀的游戏引擎,在这里就不一一举例了。

运行时引擎架构

arc

此图是出自《游戏引擎结构》这本书,它非常全面的为我们展示了游戏引擎的各个组件的划分和层级关系。

对于硬件、驱动、操作系统都不是游戏引擎主要关注的部分,但是不同平台的游戏引擎设计思路还是有一定区别的,咱们下按下不表。

第三方软件开发包和中间件

  • 数据结构及算法:STL、Boost、Loki。
  • 图形:硬件接口库OpenGL/DirectX、libgcm、Edge
  • 碰撞和物理:Havok、PhysX、ODE
  • 动画:Granny、Havok Animation、Edge
  • 人工智能: Kynapse
  • 生物力学角色模型:Endorphin和Euphoria

平台独立层

包装常用的标准C语言库、操作系统调用以及其他基础API,保证封装的接口在不同的平台上都一样。

核心系统

  • 单元测试
  • 数学库
  • 内存管理

一些实用性软件集合。

资源管理

为各种各样的资源:贴图、网格、音频、字幕等资源提供一个统一的管理入库。

渲染引擎

游戏引擎中最大最复杂的一个组件之一。

低阶渲染器:实用各种图形设备接口DirectX和OpenGL等,摄像机、光照几何图元的提交。
场景剔除与优化:空间剖析
视觉效果:粒子效果、动态阴影、HDR、FSAA等
前端:HUD、fMV、IGC、内置菜单

剖析和调试工具

内存以及性能统计工具

碰撞和物理

  • 力以及约束
  • 刚体
  • 物理碰撞

Havok和PhysX

动画

  • 刚体层次结构动画
  • 骨骼动画
  • 每顶点D动画

人体接口设备

  • 键盘鼠标
  • 手柄
  • 其他游戏设备

检测输入和判断一下复杂的组合输入

音频

管理游戏里面的音频文件

在线多人

  • 单屏多人
  • 切割屏多人
  • 网络多人
  • 大型多人在线游戏

游戏基础系统

游戏性指游戏内进行的活动、支配游戏世界的规则、玩家新角色能力、其他玩家的能力和玩家长期和短期的目标。
可以利用一些开发效率较高的脚本语言来设计实现。

个别游戏系统

这个是在游戏引擎没有包含,而游戏需要,所以为了个别游戏定制的系统。

工具和资产管道

游戏中存在各种数据,都是可以使用专有的工具设计出来的,但是这些数据包含了工具本身一些数据,所以游戏引擎不能直接使用,所以可以利用资产管道把这些数据处理成游戏引擎可以使用的数据。

还有一种工具就是世界编辑器,可以让玩家自定义游戏世界。

工具可以独立架构,或是和运行时库使用同样的框架构建。