Game Engine Architecture by Jason Gregory:1.3 什么是一个游戏引擎
来源:互联网 发布:穆雅斓的淘宝店有假吗 编辑:程序博客网 时间:2024/06/05 01:04
"游戏引擎"这个概念是在1990时代中期随着类似当时由idsoft公司做的疯狂流行的Doom这种第一人称射击游戏而出现的。Doom通过对核心软件部分(如3D图形渲染系统、碰撞检测系统、音频系统)、美术资源、游戏世界、用以提高玩家游戏体验的一些游戏规则的合理的、很好的定义的分离,形成了一个比较好的的架构。当开发者开始开放游戏授权,或者仅仅用对“游戏引擎”作最小的改动而把新创作的美术资源,世界地形分布,武器,角色,车辆还有游戏规则做到新产品中去的时候,这个分离的作用就显现出来了。这个使得"mod commnity"诞生了-一组独立的玩家及小型的独立的工作室,用原作品开发者提供的免费的工具对现有的游戏进行修改。到90年代末期,一些游戏如"Quake III Arena"(雷神之锤3:竞技场)及"Unreal"(虚幻)就是被重用及模式修改而制作出来的。引擎可以被通过脚本语言例如idsoft的QuakeC等高度定制,引擎的授权使用对开发者来说也变成一个非常重要的资金来源。今天,游戏开发者可以通过授权游戏引擎和重用一它的一些重要的部分来制作游戏。这个经验在个性化引擎的时候仍作为一个可考虑的投资方式被使用,它比自己在家里面一个引擎的核心部分全靠自己完成更加经济。
游戏跟它的引擎之间的界线经常是模糊的。有的引擎作了一个非常合理的划分,而另外一些则看上去丝毫没有这个意思。在某个游戏,渲染代码可能清楚地“知道”如何去画一个兽人,而另外一些游戏,渲染引擎可能只提供一个通用的支持材质和shader的东西,而“兽人”这种东西可能是靠数据来定义的。没有哪个工作室对游戏和引擎做一个完美的清晰的划分,随着游戏设计的确定这两个东西的可接受的定义经常在转换着。
辩证地说一个“数据驱动的架构”是这个软件到底只是一个游戏还是一个游戏引擎之间的区别。当一个游戏包含了硬编码的逻辑或者游戏规则,或者使用了特定的代码去渲染特定的游戏物件,那么就变得很困难或者基本不可能用它去另外做一个游戏。我们可能需要定义“游戏引擎”这个概念在软件上应该是可扩展的,并且在不作大的改动的情况上能作为许多不同游戏的基础。
完全不能再用来 能够个性化去做 可以修改以便做某种 可以用来做任意
另外做一个游戏 非常简单的游戏 特定类型的游戏 类型的游戏
|--------------------|------------------|---------------------------------|
|--------------------|------------------|---------------------------------|
^ ^ ^ ^ ^
PacMan HydroThunder Quake Unreal 基本不可能
engine 3 3
这里当然没有像黑白分明那么清楚的界限。我们可以作一个完整的列表来显示这些引擎的地位。表1.1列了一下一些非常知名的引擎在这个列表中的位置。
有人可能会想游戏引擎可能可以做得像苹果的QuickTime或者是微软的MediaPlayer-一个具有通用的能玩可以想象的任意类型的游戏。不过这个设想还没有达到(或者永远都不会达到)。绝大多数游戏引擎都经过很仔细的调整以便于在一个特定的平台上运行一个特定的游戏。即使是最通用的支持多平台的游戏引擎都只适合做某一类型的游戏,如第一人称射击游戏或者赛车游戏。可以这么说,一个游戏引擎或者中间件越通用,那么它就越不能理想的在某个特定平台运行某个特定的游戏。
这个现象会发生是由于设计任何软件时固定性会带来一些矛盾,这个矛盾是建立在这个软件将如何被使用以及运行的目标平台是什么。例如,一个被设计为负责秘密室内场景的渲染引擎可能就不适合广阔的室外场景。这个室内场景引擎可能会用一个BSP树或者portal系统来保证这些被接近摄像机的墙或者物体挡住的几何网格不会被渲染。而另外一方面,室外场景引擎,可能会用一个less-exact occlusion mechanism,或者完全不是,但它有可能会同意使用一个细节层次(LOD)的技术来保定越远的物体是用最少的三角形来绘制,而用一个比较高精度的较多三角形的解决方案当它靠近摄像机的时候。
随着越来越快的计算机硬件和特殊的显卡到来,也伴随着更高效的渲染算法和数据结构的出现,不同类型的游戏的渲染引擎之间变得越来越接近。比如现在有可能用一个第一人称射击游戏的引擎来做一个实时的策略游戏。但是,通用性和最优化的矛盾依然存在。一个游戏往往可以通过针对特定的类型或者硬件的一些特定的需求作一些非常重大的改进。
- Game Engine Architecture by Jason Gregory:1.3 什么是一个游戏引擎
- Game Engine Architecture by Jason Gregory:1.2 什么是一个游戏
- Game Engine Architecture by Jason Gregory:1.5 游戏引擎概况
- Game Engine Architecture by Jason Gregory:1.4 不同类型的游戏引擎(1)
- Game Engine Architecture by Jason Gregory:1.4 不同类型的游戏引擎(2)
- Game Engine Architecture by Jason Gregory:1.6 实时游戏引擎架构(1)
- Game Engine Architecture by Jason Gregory:1.6 实时游戏引擎架构(2)
- Game Engine Architecture by Jason Gregory:1.6 实时游戏引擎架构(3)
- Game Engine Architecture by Jason Gregory:1.6 实时游戏引擎架构(4)
- Game Engine Architecture by Jason Gregory:1.6 实时游戏引擎架构
- Game Engine Architecture by Jason Gregory: 目录
- Game Engine Architecture by Jason Gregory: 序
- Game Engine Architecture by Jason Gregory:1.1 一个典型游戏团队的结构
- Game Engine Architecture by Jason Gregory:2.1 版本控制(1)
- Game Engine Architecture by Jason Gregory:2.1 版本控制(2)
- Game Engine Architecture by Jason Gregory:1.7 工具和资源流水线(1)
- Game Engine Architecture by Jason Gregory:1.7 工具和资源流水线(2)
- Game Engine Architecture(《游戏引擎架构》)
- 结构体指针问题
- ACCESS里面的表导出到EXCEL
- Windows Embedded 6.0 R3开发教程及介绍
- 网站性能-错误的sql语句导致的严重性能问题
- linux下安装Trac
- Game Engine Architecture by Jason Gregory:1.3 什么是一个游戏引擎
- 第9章 串流DVB频道(翻译中)
- 开博第一天!!!!
- dx10 学习随笔(四)
- 一些经典的书籍下载地址-一个老程序员的结晶
- [转]Tomcat(6.0.14) Session创建机制简介
- Best practices for playing tennis
- 如何利用shell对.zip文件进行解压缩
- 对Activity的了解