写一款游戏,而不是一个引擎

这里的名词“引擎”(特别是对于游戏开发这个领域来说)并没有严格的定义。因此,为了确保大家明确我们说的是同一个东西,我来给这个词语做一个定义并且在接下来的篇幅中使用。一个“引擎”就是针对游戏某些方面的需求开发的一套健壮,可重用的软件子系统(包括代码库和工具),用于方便游戏开发。这些需求的范围很广泛:渲染,音频,物理等等。某些野心勃勃的引擎甚至能满足几乎所有的需求,因此被人们叫做“游戏引擎”而不仅仅是“图像引擎”或者“物理引擎”。

 

       好像有点偏离话题了,回到正题:如何开发一个引擎,如果你想过这个问题的话。

      

       不管出于何种理由,许多游戏开发的新手(甚至一些有一定经验的开发者)认为游戏引擎是一款游戏不可或缺,且最重要的部分。他们觉得——用机械引擎来做比喻,引擎这个词最初就来源于此——就像一辆汽车,一款游戏没有引擎的话根本无法运行。但是只要稍微思考一下就会觉得这个比喻站不住脚,一个游戏引擎是可重用组件的集合。你可以用游戏引擎的这些组件来组成一个游戏,但你不能用汽车引擎的通用零件去组装一辆汽车。必须有引擎才能开发一款没有伟大的游戏的想法是荒谬的,但是很多人都有这样的想法。

 

       在游戏论坛上经常看到这样的月经帖:某人觉得是时候开发一款“自己”的引擎了,然后用这个引擎开发一款真正的游戏。这些帖子经常在寻求有关引擎设计和开发的帮助,其实你之所以读到这篇文章,是因为我正好看到这样类似的帖子,然后我就会贴上这个文章的链接,引导你到这里来,轻易的击碎你的美梦 - - !。

 

       如果你在试图写一个引擎,我的建议是:别写。不管什么原因——不管是因为你要开发梦想中的游戏才开发引擎,还是因为你觉得写引擎是很好的学习机会,或者其他什么原因,其实都是浪费时间。你可以坐下来就开始开发一款游戏,而不用什么劳什子引擎,实际上这通常是比先写一款引擎更好的办法。相比开发引擎来说,如果你把精力集中在开发游戏上,开发过程会平滑很多:一款游戏更容易确定需求,范围更小,完成后的成就感和回报更多,也更加,更加,更加的有用。

 

       许多业余开发者声称自己独立完成了一个“引擎”,但不管是他还是别人几乎都不会使用它。因为这个东西没有任何的目标,界限,或者可用的应用程序。它本来想解决某方面的问题,但结果必然会失败。这个引擎最终变成了一堆互相矛盾的,杂乱无章的各种功能的集合体,不试用,不健壮,也不能重用。作者用这些引擎做出来的东西一般是这样的:一个可爱的小地图(从一些很流行的 BSP 格式生成),你可以在里面跑来跑去,可以看到一些用很基本的光照效果渲染出来的可爱的小模型(也是从一些流行的模型格式读取的),运气好的话还可以看到一些碰撞检测或者动画。这些东西最多只能叫做技术演示,但又看不出什么技术来。没什么用,而且看上去既脆弱又不易扩展。

 

       如果你实在是想开发一个引擎,我有一个建议,那就是先做游戏。我能听见你哭叫着抗议,别急,先听我说。这个游戏不一定要是史诗级别的,它没必要成为 GTA5 Quake17 下一代的上古卷轴,或者魔兽世界终结者( WoW killer J )。 它仅仅是一款游戏,有着不错的玩法和适当的内容。就像我前面说的,游戏的需求更好定义,并且也是这些需求的一个实在的产品。一旦你完成了一款游戏的开发,继续做第二款,第三款……每次你开始做下一款游戏,就把前面游戏里面的一些可重用的功能组件提取出来,争取把它做成一个基础的通用库。可能你需要重构一些代码,去掉游戏逻辑相关的特殊代码,但这是好事。这将帮助你把能够泛化通用的部分提取出来加以泛化,并在下一款游戏中检验它,确认它能正常工作。

 

       如果你重复这个过程足够长,在开发完几款游戏之后,你已经有了一些经过验证的健壮,可重用的功能组件。你也有了更多更有趣的 demo 程序来测试你的引擎了。相比一开始就试图完成一款引擎,这种逐步完善的做法无疑要好得多,因为它帮助你明确你的目标,强制你思考将要面对的问题和实际的解决方法,思考引擎和游戏的逻辑多么不同。它让你从错误中学习,而不是假装不会犯错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值