游戏与引擎

此篇文章献给初学游戏设计的开发者,希望能够帮助同学们各好的了解游戏与引擎。

1. 什么是游戏

游戏的类型有很多种,而今天我们所谈,无疑是电子游戏。

对于一般的开发者而言,游戏无非就是程序的代名词,一款游戏在研发人员的眼中恐怕与一般的软件开发无异,然而游戏的意义真的仅此而已吗?我们在游戏的过程中可以在一个二维或三维的虚拟世界中控制人或物让他们按照我们的要求进行互动从而获得乐趣,而这便是游戏独有的魅力——模拟与交互性。

从游戏的特征上来看我们不难发现,电子游戏事实上就是一种虚拟的现实,这也是电子游戏被称之为继八大艺术之后第九大艺术的原因。它拥有八大艺术所具备的共性却又拥有自己独特的艺术样式,它能够使欣赏着不局限于第三方的身份去感受作品本身的气息,从而达到身临其境之感。无论是戏剧、电影、文学、又或是音乐,当我们每一个人作为欣赏者去品味这些创作者的艺术时,即使作品本身再完美,不同的人都将会有不同的感受,因为我们每个人与创作者的角度不同,这样欣赏者就会受到自身的限制而无法真正的还原艺术本身的灵魂。而电子游戏的交互式,却能够使人真正的融入到作品中,至少就目前而言这是其它任何一种艺术都望尘莫及的。也正是因为游戏本身的模拟与交互性注定了其发展的最终趋势——虚拟现实。

2. 何为引擎

人们对游戏引擎的定义是:用于控制所有游戏功能的主程序。通常在一个游戏开发的团队中会将工程师分为引擎程序员与游戏程序员,前者负责引擎系统的功能,例如游戏中的实时渲染,光影计算,人工智能,物理系统,动画技术及音乐等等;而后者则负责游戏的逻辑的实现,即游戏本身的玩法。通过这一点我们可以发现游戏引擎实际就是游戏的框架,它为前端开发者提供了各种各样的游戏中所需要的组件。有人将游戏引擎比喻为赛车的引擎,从游戏的性能角度来说这一比喻是很贴切的,引擎就像是一个导演一样指挥着各个功能模块协调操作,而游戏最终渲染出来的画面效果及运行时的流畅性与引擎也有着很大的关系(当然某些游戏被称作显卡杀手的原因也并非是引擎的关系)。说到这里有人可能会认为引擎工程师要比游戏研发工程师厉害很多,事实并非如此,引擎工程师更关心的对引擎系统组件功能的实现,而游戏研发工程注重的却是对游戏逻辑的抽象,着重点各有不同,却并无高低之分,因为游戏与引擎之间的分界线本就是模糊的。

3. 引擎的由来

在游戏开发的初期,并没有引擎这一概念,人们每开发一款游戏都会从零开始编写代码,这样便浪费了大量的时间和费用。后来人们便将某些具有类似题材的游戏代码整理出来作为下一款该类游戏的基本框架。所以,好的游戏引擎都是为了某种特定的游戏类型而设计的,越是通用的引擎(可以制作很多种游戏内容的引擎),它在特定平台运行特定游戏的性能就越一般,所以,不要指望某种可以横跨N多个平台制作N多种类型游戏的引擎性能会很牛X(实际上可以在任何平台运行任何游戏内容的引擎基本永远不会出现),因为高效的东西总是需要取舍的。

4. 引擎发展简史

关于世界上第一款游戏引擎的说法可谓众说纷纭,但是通常大家比较认同的是1992年3D Realms公司(该公司为Apogee Software公司划分出的独立开发部门)发布的
Wolfenstein 3D(德军司令部),这款游戏可谓是FPS(First Person Shoot,第一人称射击游戏)游戏的鼻祖,这也是后来3D游戏引擎与FPS游戏密不可分的原因。Wolfenstein 3D成功的在游戏中引入了Z轴的的概念,使平面增加了一个纵深空间。而这款引擎的作者便是id software公司的联合创始人John
Carmark(约翰·卡马克),一个被赋予游戏之神称号的电玩游戏程序员,在Wolfenstein 3D发布不久之后,id SoftWare便发布了另外一款在引擎史具有重大意义作品——Doom(毁灭战士)。Doom引擎是世界上第一个被用于授权的引擎,而John
Carmark的地位也从此在游戏界站稳了脚跟(目前卡马克已从id SoftWare公司离职,研发虚拟现实之眼)。

在引擎的进化史上另外一款能够与Doom比肩的游戏便是Duke Nukem 3D(毁灭公爵3D),由Apogee
Software公司1994年研发的Build引擎打造,毁灭公爵已经具备了如今我们所接触到的第一人称射击游戏所包含的绝大多数内容,但是Build引擎仍然无法被成为一个真正意义上的3D引擎,因为从引擎本身来讲Build并没有什么实质性的突破,然而,在1996年id software公司发布了Quake(雷神之锤)之后,这个局面被打破了。雷神之锤不仅能够完全支持粒子特效及动画,更重要的是实现了网络游戏的大众化,将网络游戏带到了人群中。

与此同时,我们在来看看同期国内的情况,1995年,由大宇旗下的狂徒工作室研发的仙剑奇侠传诞生了,1996年,由河洛工作室研发的金庸群侠传问世,在这个期间,国内还并没有一款成型的游戏引擎,而这些DOS游戏也都是基于汇编语言完成的,尽管游戏本身的功能和画面以及所使用的技术并不如同期国外的产品,但这两款游戏在中国的游戏史上仍然具有非凡的意义,也是无数人心中永远的回忆。

继雷神之锤之后,id software公司很快推出了雷神之锤2,在当时的3D引擎市场上占据了霸主之席。然而,在1998年Epic Games公司的Unreal(虚幻)闯入FPS世界之后,雷神之锤便出现了一个强劲的竞争对手。在1998年同时出现的还有另外两款引擎,一款是Looking
Glass工作室研发的Dark引擎(后由于工作室倒闭引擎未能继续研发),而另外一款便是大名鼎鼎的半条命(Half-Life)了,其实包括我们在后期玩CS的时候也不难发现,这款游戏中始终留有雷神之锤的影子,没错,这是因为半条命引擎正是基于雷神之锤1和雷神之锤2引擎打造。

在进入了21世纪之后,引擎分化的趋势也逐渐展开,而在2000年左右的时候,国内也诞生了不少的游戏引擎,例如当年大名鼎鼎的梦幻西游及大话西游系列便是通过一款名为风魂的图形引擎打造,风魂引擎是云风在大学时期的一项作品,尽管现在看来这款引擎并不十分完美,但在当时也算红极一时。笔者早些年玩过的一款令我印象十分深刻的游戏便是可乐吧的奇遇(现已改名为奇遇之城),事实上这也是笔者玩过的第一款网络游戏,这款游戏是使用可乐吧的FancyBox引擎打造。同时国内的一些制作单机游戏的工作室也开始了引擎的研发,例如当年的仙剑2,轩辕剑3以及大富翁4,都是采用了大宇旗下的DOMO工作室自主研发的游戏引擎打造,而当年金山旗下的西山居工作室也是凭借了其自主研发的OverMax引擎打造出来复活、秦殇等黑马级别的游戏,同一时期的经典游戏还有很多,2002年可谓是中国单机游戏的最后一个巅峰,之后便彻底沦入了网游的时代。

在2001年之后诞生的引擎大多以追求画面的真实和内容的真实为主,同时也在朝着网络的方向探索,而在2005年之后,昔日的小弟引擎也终成为了引擎界的巨头,05年Epic游戏公司的Unreal 3问世,07年
CryEngine 2强势登场,08年第一款使用Frostbite Engine(寒霜)引擎打造的战地:叛逆连队发布,无一不标识这新的引擎时代到来。

而国内的引擎大多因为后期无人维护以及技术落后的原因纷纷被遗弃,国产单机游戏市场也在欧美大作的冲击下逐渐萎缩,也只有个别工作室在勉力支撑,而所使用的引擎也大多是引入了国外的引擎,例如仙剑4,仙剑5,仙剑5前传以及轩辕剑所使用的RenderWare引擎(曾用于制作战地2,GTA系列游戏等),除此之外大多数公司都已转型,直到近两年来单机游戏才有回暖的趋势。在近两年来的单机游戏作品中血雨算是一款成功之作,而国内四剑游戏也仅有古剑奇谭的表现能称得上用心制之作,古剑2的画面在国内的游戏中已经可以算是相当高的水准了;而同样在13年发布的三剑之一的轩辕剑6曾被人称作是砸了Unity的招牌,在笔者看来说是Unity砸了轩辕剑更为贴切一些,毕竟目前的Unity
3D引擎用来做大型PC的确是有些勉强;13年另外一款备受关注的单机PC大作便是由玄黄工作室打造的凡人修仙传了,这款号称国内第一款ARPG游戏的大作在耗时三年精心制作后终于上市,可上市不久之后玄黄却解散了,其中原因不言而喻。14年有一个令笔者十分振奋的消息便是河洛工作室重组了,这个当年打造了金庸群侠传,武林群侠传,三国群侠传的工作室终于再一次的回到了单机游戏的视野中,而在7月18日西山区的新作新剑侠传奇也将上市(这游戏的人物模型是剑网3吗??),尽管宣传片看起来很一般,但笔者相信这款游戏能够延续剑侠情缘系列的经典。

除了国内的单机游戏之外,国内的网络游戏引擎的发展也可谓是进步神速,其中的代表作品便是金山的剑网3和完美世界,但是这两款引擎距离国外的高富帅引擎仍然有着不小的差距。好在2012年国内出现了两款号称次时代引擎的家伙,一款为方舟工作室自主研发的AkEngine,代表作武魂;而另外一款就是搜狐畅游的黑火引擎了,黑火引擎曾经发布了一段名为代号X7的宣传片,实际为与大宇合作将要打造的轩辕剑7,但从宣传片上来看黑火引擎的画面的确可以黏上世界一流引擎的步伐了,但实际效果如何还有待考验。

尽管目前可供我们选择的优秀游戏引擎有很多,但是一款能否制作出来黑马游戏并不在于引擎本身,而在于使用它的人。因为游戏界的至理名言是"内容为王(content is king)"。

游戏与引擎

时间: 2024-10-06 07:07:07

游戏与引擎的相关文章

使用GoWorld游戏服务器引擎轻松实现分布式聊天服务器

GoWorld游戏服务器引擎简介 GoWorld是一款开源的分布式可扩展的游戏服务器引擎,使用Go语言(Golang)编写.它采用类似BigWorld的结构,使用了简化的场景-对象框架.以一个典型的MMORPG为例,每个服务器上会有多个场景,每个场景里可以包含多个对象,这些对象包括玩家.NPC.怪物等.GoWorld服务器可以将场景分配到在不同的进程甚至不同的机器上,从而使得游戏服务器的负载是可扩展的. 开源分布式游戏服务器引擎:https://github.com/xiaonanln/gowo

HTML5游戏开发引擎Pixi.js新手入门讲解

在线演示 本地下载 ?这篇文章中,介绍HTML5游戏引擎pixi.js的基本使用. 相关代码如下: Javascript 导入类库:(使用极客的cdn服务:http://cdn.gbtags.com) <scripttype="text/javascript"src="http://cdn.gbtags.com/pixi.js/1.6.1/pixi.js"></script> 引擎使用: .... .... 阅读原文:HTML5游戏开发引擎P

手机游戏服务器引擎Scut免费开源

scut 官网:http://www.scutgame.com/ Scut是一个开源.免费.稳定.快速开发的手机游戏服务器引擎,支持开发人员使用Python脚本语言或C#语言开发:底层采用C#编写,基于MVC框架思想设计, 开发人员只需要关注如何定义数据实体类及属性,不再需要关注多据库(MSSQL.MySql等)及表设计,Scut会帮助你自动检测生成相应数据库的表结构:它还提供了丰富的AIP和成熟的游戏模块中间件,快速开发你的游戏服务器应用,和Cocos2d-x完美结合,提供基于Cocos2d-

日入过百优质消除手游数据分享—萌萌哒包子脸爱消除(游戏开发引擎:libgdx)

从2014年开始,消除游戏异常火爆,从消除小星星到腾讯的天天消除都赢得了海量用户.目前,各大市场上开心消消乐等游戏依旧火爆.消除游戏一直持续保持着女性和孩子的主流游戏地位.虽然市场上消除游戏种类很多,玩法也不少,但是经典玩法仍是主流.本游戏使用的是最经典的玩法加扩展,亮点是提供了强大的游戏关卡编译器,可以不断完善和创新新的关卡与玩法! 本源码适合有一定App运营经验的人,当然如果你只是为了学习又不差这点钱,这也将是一个非常不错的选择.本源码出售性质为买断性出售,意思是我只会卖1次,这和那些卖了无

如何学好游戏3D引擎编程

注:本文是网上看到的一篇文章,感觉写的很好,因此收藏了下来 <如何学好游戏3D引擎编程>此篇文章献给那些为了游戏编程不怕困难的热血青年,它的神秘要我永远不间断的去挑战自我,超越自我,这样才能攀登到游戏技术的最高峰--阿哲VS自己 QQ79134054多希望大家一起交流与沟通 这篇文章是我一年半前,找工作时候写的,那时是发到学校的BBS上.现在我工作了,想法和以前也有不同,但对游戏引擎编程理念还是基本差不多.在我没遇到U3以前,一直研究WILDMAGIC,可以说是GAMEBRYO的前身吧,他们基

20个免费的JavaScript游戏开发引擎

基于HTML5+JavaScript+CSS3技术,结合3D,动画,油画,数学,颜色,声音,WebGL能够创造非凡的游戏.在这篇文章中我们已经收集了20个免费的JavaScript游戏引擎帮助开发人员进行快速开发. 1. Crafty This is a lightweight and modular JavaScript game engine which consists of many components like animation, event management, redraw

Unity 3D游戏开发引擎:最火的插件推荐

摘要:为了帮助使用Unity引擎的开发者制作更完美的游戏,我们精心挑选了十款Unity相关开发插件和工具.它们是:2D Toolkit.NGUI.Playmaker.EasyTouch & EasyJoystick.UnIDE.Tile Based Map and Nav.FX Maker.Toon shader.Top-Down Assets Mobile和83 Explosion Sound Effects. 作为当前最主流的3D游戏引擎之一,Unity拥有大量第三方插件和工具帮助开发者提升

Scut游戏server引擎Unity3d访问

Scut提供Unity3d Sdk包.便利的高速发展和Scut游戏server对接: 看Unity3d示为以下的比率: 启动Unity3d项目 打开Scutc.svn\SDK\Unity3d\Assets文件夹下的TestScene.unity项目文件,选中Main Camera.将TestGUI.cs文件拖动到Inspector窗体的Script,如图: 点击执行.例如以下: 文件夹层次说明 1)       Net层:封装Http与Socket请求操作,以及网络协议的数据解析和请求參数的打包

Scut游戏服务器引擎之Unity3d接入

[狗刨学习网] Scut提供Unity3d Sdk包,方便开发人员快速与Scut游戏服务器对接: 先看Unity3d示例如下: 启动Unity3d项目 打开Scutc.svnSDKUnity3dAssets目录下的TestScene.unity项目文件,选中Main Camera,将TestGUI.cs文件拖动到Inspector窗口的Script,如图: 点击运行,如下: 目录层次说明 1)       Net层:封装Http与Socket请求操作,以及网络协议的数据解析和请求参数的打包,其中