你的心中也有一个引擎吗?
大师曾说过, “Every game programmer has a engine”。没听过?好吧,是我说的。但我相信每个游戏或者图形程序的心中都有一个引擎,他也许从未能把它做完,甚至从未开始过,但是在他的心中总有一块地方为此保留,在那编织他的梦想之翼,希望有一天能飞出曾经是他的梦想却又令他感到乏味的生活,到达他的荣耀之地。即使他总是感觉力不从心,即使他知道也许永远也没法完成,但是他从未想过放弃。
很多人觉得世界上有那么多引擎没必要自己做一个。的确,能找到的引擎确实很多可是实际上适合用的很少。让我们盘点一下:
1.贵族型的,Unreal、Cry Engine、Big World、Gamebryo,也许很棒,但是太贵,都在10w刀以上,一般公司是用不起的,何况小团队了。
2.白菜价的,如典型的Torque和这两年发展很快的Unity 3D等,Torque太古老了,代码风格晦涩,性能也一般,唯一觉得亮点的地方是BSP + Portal + QuadTree的无缝室内外做的不错,但问题BSP的建模工具实在是太难用了,无法给美术提供很好的创作体验。而U3D设计很现代挺喜欢,性能也不错,很看好它,有机会一定要用用试试。
3.开源的,看过很多开源的引擎也各有亮点,但是开源的问题就是很可能热一段就没人管了。现在可能只有OGRE一枝独秀。OGRE代码清晰易读,结构灵活,扩展性很强,但很多时候灵活性和性能是冲突的。渲染器也还主要沿用原来的面向固定流水线的设计,shader总像是二等公民,跟现在完全基于可编程流水线的设计趋势感觉有点不搭调。
你看看你的选择还剩几个?
之前我总在想一个问题。为什么国内这么多牛人但是几乎没有优秀的引擎。现在渐渐有些认识,我觉得要做好一个引擎,至少得满足如下几点。
1.个人能力。个人能力是一切的基础,起码编程语言,数据结构,数学基础,Windows和3D API,实时图形学得过的去吧。这些都学好的确不易,很多人都达不到,但是国内满足这个条件的还是很多的。牛人还是有不少,但是很遗憾往往一个人不够,能够一起合作的牛人就少多了。
2.充足的周期。引擎从开始设计到可以用到产品很可能至少要1-2年,可是有几个公司可以容忍1-2年的研发周期,中间没有任何产出和效益?所以这个条件看似容易实际也是很苛刻的。国内的公司受盈利压力大部分表现浮躁,也许只有财大气粗的大公司的嫡系部队才有这个机会,可以伴随着项目把引擎发展起来。小公司,别想了,人家指着你1年翻本呢。所以我们经常看见校园里的高手很多,但是成年的大师很少,因为缺少成长成大师的环境。
3.有创作团队的支持,如果你认为你一个人可以闭门造车数年磨一剑那你就想错了。在可编程流水线的时代做个简单的渲染框架实现几个惊人的效果实际上不难。效果再酷啃几天论文,调整下渲染流程,再写几个小shader也就出来了。Post Effect就更容易了,基本拿来主义就可以了。GPU Gems、ShaderX、Crysis都放在那呢。但是你的这些酷的特征能为美术所用吗?如何把这些特征武装在美术的创作理念里?这需要很多交流和反思。更重要的是工具,如果要做一个完善的引擎,做一个能充分让Content Pipeline直观、高效、标准,发挥艺术家最大生产力的东西可就不是写个小插件那么简单了。要做的太多了。
你想想看满足这些条件的人还有多少,当然这还只是必要条件不是充分条件。做到这些不意味就能成功。
当然,也不排除有一些业余精神病爱好者,不畏艰险。现在用的山寨引擎是在08-09期间开发的,和我们的美术团队一起发展而来。功能很少,设计和性能也都不算优良。虽然引擎很烂但成功应用在了多个商业小项目中,聊以慰藉吧。最近发现改进的难度越来越大了,因为总要考虑和以前项目的兼容性,当你需要为向历史妥协而畏首畏尾的时候或许就表示你应该有个全新的开始了。
不知道新的东西什么时候能做出来,能不能做出来,做过一段才感觉自己能力真是差的太远,也可能就从此学聪明知难而退了。先多学学吧。前一段耽误的时间太多,无论怎样都要努力吧。写此文自勉,如果还有像我一样,水平不高胆子不小的人,我想告诉你,你并不孤单。 :)
GG GL