游戏开发一直都是一个神秘的学科,无论图书大厦里的设计书籍还是网络上的开发攻略,无不让人望而却步,冗长的代码以及高深的言语,使得游戏开发爱好者们造成各种各样的误解,很长一段时间,都误认为游戏开发就是DirectX、就是Opengl、就是……,这种观念从招聘中就能看得到,少有真正理解游戏开发,那么游戏开发确实是一个很复杂的学问吗?其实不是,它本身就是一个简单的构成。
对于游戏,很早就产生了,DirectX只是一种SDK,以前没有它的时候,游戏照样有,姚仙写仙剑奇侠传使用的是Basec语言,俄罗斯方块也不过是汇编代码的集合,如今flash也好silverlight也好,都是一个开发包,一个工具,本身没有太复杂的。
我本身是一位游戏开发爱好者,总结下来,觉得游戏开发的基础最少应了解以下三个部分:
第一:逻辑思维和基础学科
逻辑思维是一个重要的部分,如果逻辑思维很好的话,有很多问题都可以很容易在之前找到(我们戏称为YY),但是逻辑思维不等于理性思维,游戏开发需要的是逻辑思维,如果过于理性的话,游戏开发也不会充满激情,比如:在任何情景下,设计一个双人娱乐项目,这时候需要的是逻辑,而不是理性。但是理性是控制大脑的根本,指导我们什么东西该做什么东西不该做,就如这个双人娱乐项目不是拿菜刀互砍,也不是一个人打一个人不还手,因为理性告诉我们,需要公平,需要安全,游戏开发是一个结合逻辑和理性思维的学科,如果我们想开发好游戏那么这方面绝不能不考虑。
对于基础学科上,建议是学习好数据结构、良好的数学基础、最好有点艺术感觉,这些学科都是影响将来游戏开发最近基本的知识,如果有更高层次的追求,那么学习一下心理学、经济学、图形学、项目管理,都将会未来奠定好的基础。
第二:游戏循环
任何游戏归根结底其实都是一个循环,一个大循环套各种小循环,各种小循环套更多的小小循环,这些循环为游戏创造了一个体系,在这个体系下,通过循环的方式获得最终的展现,如果说游戏没有循环,那么可以说不是一个游戏,别说面向对象,别说MVC,作为游戏来说一个界面也好,一个控制也好,都是一个简单循环的体现,这个理论也不是什么高深的思想,而是最简单的游戏开发雏形,如果有模式比这更好,那么我可以说,那些可能没有循环的模式理解容易,游戏做循环的处理,简单易行方便快捷。
上图只是一种简单的表示,可能高手们对此可能有其他的论述,在后面,咱们用代码的方式来考虑它的合理性。
第三:代码设计模式
虽然说Silverlight提供了MVC的设计方式,但是作为游戏开发者应该了解软件开发的代码设计模式,这些设计模式常常划分成不同的种类,常见的种类有:
创建型设计模式,如工厂方法(Factory Method)模式、抽象工厂(Abstract Factory)模式、原型(Prototype)模式、单例(Singleton)模式,建造(Builder)模式等
结构型设计模式,如合成(Composite)模式、装饰(Decorator)模式、代理(Proxy)模式、享元(Flyweight)模式、门面(Facade)模式、桥梁(Bridge)模式等
行为型模式,如模版方法(Template Method)模式、观察者(Observer)模式、迭代子(Iterator)模式、责任链(Chain of Responsibility)模式、备忘录(Memento)模式、命令(Command)模式、状态(State)模式、访问者(Visitor)模式等等。
作为游戏开发,需要了解的是抽象工厂(Abstract Factory)、迭代子(Iterator)、观察者(Observer)、访问者(Visitor)这几种,这几种方式如果做了了解,那么在游戏开发中将会驾轻就熟。
如果是引擎级别的开发,则必须将设计模式搞清楚,我曾经写过两个游戏引擎,一个是C++一个是DirectX,现在回过头去看那代码实在垃圾,主要是在思想意识上达不到很高的水准,所以写出来的代码也是什么都没有——没有体系,没有性能,没有便捷,没有安全……但是反过来说,有再好的设计思路和设计体系,代码写不出来也是白搭,正是因为有之前的两个垒出来的上万行代码才使得学习的更多。所以对于这方面,需要两方面都要加强,代码的设计和坚持不懈的Coding才能真正达到提高。