三国游戏开发策略

来源:互联网 发布:玩dnf老是网络连接中断 编辑:程序博客网 时间:2024/04/28 20:46

一、怎么样才能做好游戏
     关于这个问题,很多人会认为要面向玩家、面向市场。其实这是不全面的。我们知道,玩电脑游戏的过程是人与游戏交互的过程,也就是说一个游戏好不好取决于人和游戏这两个方面的因素,其中人这个因素具有很大的不确定性,这是因为人的喜好与社会状况,文化传统,甚至和人的经历都有关系,人是多种多样的,其喜好也是多种多样的,这就给面向玩家,面向市场造成了困难。如果真的想要做到面向玩家,面向市场,那就需要经过比较深入的研究,而不是简单的做一些调查,需要从人脑结构的角度入手,如此才能真正抓住玩家真正的喜好,才能知道哪些喜欢是稳定的,哪些喜好是易变的,这些研究由于理论上和实践上的条件都不足,研究有相当大的困难。所以,“面向玩家、面向市场”只是一个口号,真正要做到是非常困难,如果长期一直往这方面想,由于基础不足,实质性的进展很难取得,所以想做好游戏,我们还是应该先从基础打起。
那么什么是基础呢?是实现。一个方案能不能实现取决于技术和经济两个方面,从技术方面来说,逻辑上有错或者逻辑要求超过了计算机所能承受的能力(即性能要求太高)都是不能实现的,从经济方面来说,就是游戏的开发时间问题,如果一个游戏开发要一百年,那么就算技术方面再可行也是很难实现的,这个方面往往被大家忽略。
我们再回到一开始的问题,既然研究如何面向玩家,面向市场很困难,我们不妨从实践着手,一开始做的游戏不用追求这些,而后逐步的完善游戏来试验,看看玩家是否满意。既然是这样,这就要求游戏的可维护性要好,否则怎么能够修改和完善呢,而可维护性的好坏就取决于基础。可见,打好基础是非常重要的。

二、游戏开发的战略问题
    不同的人有不同的喜好,不同类型的游戏也有不同的开发方法。在这两个因素的作用下,不同开发者其侧重点也不同。开发者应该在开发中逐步确立自己的主攻方向,如:画面,逻辑,AI,玩法,性能等等,在确立主攻方向以后,就需要对其进行深入的研究,这是确定这方面优势的根本。一个游戏包含很多方面,如果我们开发者每项都想追求最好,时间和精力是不允许的。但是如果没有确立一项或几项的主攻方向,这样的游戏就缺乏亮点,也就没法称得上好游戏了。当然我并不是说刚开始开发游戏就要确立主攻方向,在一开始可以全面发展,在实践中发现自己的强项并且打好基础,等到时机成熟了(也就是基础打的差不多了),就可以根据自己的特长和游戏的类型选择一项或几项主攻方向。
    要指出的是,主攻方面可以是直接面向玩家的直接类型,比如说:玩法,AI,画面等等,也可以是为直接类型服务的间接类型,比如说逻辑,它为画面,AI等等提供了基础,对逻辑的深入研究,可以极大的提高开发速度,不能因为不直接面向玩家,就不应该研究,还可以是为间接类型服务的更间接类型,比如说数学,哲学。我之所以做出这些划分就是因为有些人有这么种观念,觉得不直接面向玩家的东西都没有必要研究,殊不知,这些看似间接的东西往往起了决定性作用,它能改变一个游戏的技术可行性和经济可行性,它能够使本来难以实现的东西轻松实现,把原来要开发时间很长的游戏的开发时间大大缩短。前面说过,做出一个可维护性好的游戏是做出好游戏的基础。有了这些基础的支持,游戏的可维护性好了,更新速度快了,做出好游戏的概率就大大提高,这正是基础研究所能产生的巨大效果。
接下来应该说说主攻方向应该怎么主攻,实践是很重要的研究方法,但由于实践在时间上和空间上的局部性,使人很难真正理解主攻方面的原理,充分的实践是必要的,因为它能给开发者带来真实的局部信息。但过度实践并不能带来多少新信息,因此我们应该从理论的高度,从完整的时空角度来研究主攻方向,这样就能对主攻方面有个透彻的理解。那么透彻理解的标准是什么呢?能够从时空上说出主攻方向,即说出主攻方面的静态结构和动态结构,静态结构说出主攻方面由哪些对象组成,对象间是怎么联系的,动态结构说出主攻方面随时间的前进,对象是怎么运动的。时空方面的理解还不足以指导实践,这是因为理论具有很强的概括性,通过一个模型是难以概括所有的实际问题,但由于理论是对实际问题的抽象,我们可以用实际问题中的对象来代替理论上的对象,这就要求对实际问题的对象有真实的信息,这样才能够通过理论来解决实际问题。这也是为什么理论研究要建立在充足经验的基础上。最后我们还要对工具有充足的理解,由于开发者通常是使用高层的工具来完成主攻方面的开发,故对工具的理解是非常重要的,但对工具的理解一定要建立在理论模型的基础上,这样才能够真正搞明白工具到底为开发者做了哪些事,而对于工具本身的理论模型可以深究也可以不深究,如果开发者的工具不容易变动,可以直接通过实际的对象来理解,如果容易变动开发工具,则需要知道理论模型,以便能更快学会工具。从上面的讲解可以看到,从时空上认识一个东西是非常重要的,因为不管是主攻方面还是开发工具都需要这么认识。因此怎么从从时空上认识一个东西就显得非常重要,其实对一个东西的时空认识正是我们通常所说的逻辑。认识一个事物的逻辑是并不像一些人所说完全要靠经验,是有方法的,它是有具体的内容和过程。一个好的方法能够使你很快的认识一个事物,从而大大缩短开发时间。而目前的开发,不管是策划还是程序,把大量时间都浪费在认识一个具体的事物,这正是软件开发生产率低的根源。可见,不管主攻哪个方面,掌握一套好的认识逻辑的方法都是非常重要的。目前程序员一般使用某种程序设计语言来认识事物,但由于程序设计语言在时间和空间上具有局部性并且过于高层,使得用它来分析具体问题的时侯缺乏了思路,分析速度慢。所以用程序设计语言来分析问题并不是一个好的选择。但有的人会说用程序设计语言分析问题能保证实现。实际上用合理的分析方法也能保证实现。因为不管是程序设计语言还是那种分析方法其本质都是相通,都是对象、对象间联系,对象随时间运动,如果对逻辑有一定的了解,就很容易发现其相通之处,无非就是做那三样东西。

三、三国游戏开发策略
    三国游戏有非常多类型,不同开发者其主攻方向也是不同的。但是很多人还是比较认可光荣的游戏,所以这里只讨论光荣那些三国游戏我们应该怎么去做。光荣的三国志系列优势在于内涵。而作为内涵的后盾正是逻辑。目前开发这种游戏摆在我们面前的难题并不是什么技术可行性,而是经济可行性,开发一个像三国志那样逻辑较为复杂的游戏是需要很多时间的,这个时间并不是个人能够承担的起。所以,很多有志于开发那样游戏的人往往想通过组建团队来解决时间不够的问题,可是管理问题解决起来比这技术问题难得多,所以基本上这种游戏很难开发成功,要知道管理问题里面暗含者许多社会问题,并不是我们能够解决的。那么我们就不能做这种逻辑较复杂的游戏吗?并不是,我们可以看到网络上那么多三国游戏设想的案子,它能用几万字把一个游戏给描述完,可见我们真正需要做的工作并没有想象的那么多,是因为我们做了太多与游戏无关的底层所以才花了那么久的时间。很多人会认为那些案子都是空想,那些案子很多细节问题避而不谈,遇到类似的还会说参考某某游戏,而实际开发是要把细节都补上并且那些参考某某游戏的东西也要具体写出来,表面上看现在的开发的确是如此。但是反过来想想,人家不关注这些细节,说明这些细节可以由引擎本身来决定,而参考某某游戏可以通过复用啊。可见这些内容的确是我们开发中不必要的劳动。而这些实际上还只是表面的问题,还有更深层次的问题在里头,从策划上来讲找不到一套好的方法来分析和表达游戏的逻辑,通过摸索浪费了大量时间,从程序上,程序员运用程序那种高层的概念去理解策划写的东西以及实现东西,这就造成了程序员开发思路不畅,大大浪费时间,更严重的是由于思路不畅,惰性就产生了,很多时侯不愿意思考,直接让编译器去验证是不是正确,最后导致一堆BUG,正如让你算10*10,你知道反正就是一个正整数,你一直从1试到100最后试对了,虽然是对了,但是你浪费了大量时间。所以有人说设计:编码:测试=4:2:4,测试占的比重如此大。其实我并不反对测试,只是花如此多时间测试过了头,而且即使花这么多时间去测试,最后还是一大堆BUG。林锐在《软件工程思想》里就说过,好软件是设计出来的,不是测试出来的。所以从设计源头上来解决BUG问题,才是解决BUG问题的根本之道,而这其中一套好的分析逻辑的方法就非常重要,同时辅以一些定理,就可以检查出设计上的逻辑错误,这样就不需要通过大量的体力劳动来找出BUG。从美工上来讲,作图也是非常耗时间,对业余开发来说,美工还是稀缺资源,所以有人就跟我说,你别的问题都解决了,美工问题还是不能解决啊,我想说的是,其实美工也有逻辑,现在的3d模型比以前的2d贴图逻辑性就更强,它通过形状来模拟客观世界事物的形状,所以大型游戏开发使用3d模型工作量往往更少,因为3d模型就是美工方面的面向对象,它更直接符合人脑思唯,复用性也强。但是现在美工方面缺乏对各种事物的模型的深入研究,每个游戏模型都得重新做起,这本身就是浪费很多时间,如果对事物归类然后研究模型特征,肯定也是能发现规律性的东西,当然这种事情就需要有经验的美工来做才能做好。我对美工的了解很少,做不了这种事,再加上三国志系列本身是强调逻辑的东西,对美工要求也不高,所以正如简单的逻辑不需要好的思维方法也能完成一样,对美工的要求可以降低,这样当前的美工的经济可行性也就能达到要求。
曾经有人跟我说面向对象只是种方法而已,与面向过程是并列的。有这样观点的人其实并没有真正了解面向对象,如果从能够实现的角度来说,这两种方法的确区别不大,但是对问题域和实现域的分析才是软件开发的核心。而面向对象和面向过程的最大区别就在于此,用面向对象的思维方法分析问题速度快,准确性好,建立的模型好理解,如此就能够极大的提高开发效率。为什么是这样的,这就得从人说起,因为软件开发是人做的,所以考虑人的结构非常重要。我们知道人有感觉,有五官,通过五官能够感受到形状,声音,颜色等等,但不管是什么感觉,在感性思维中就是一个东西,不同的器官感受到的是不同方面,把具体感觉的因素忽略掉,就形成理性思维中一个抽象的对象。所以人的思维起点就是对象。对象随着时间的前进而产生变化并为人所感知,这个时侯人就有了对象运动的概念。这一点,可以从人类语言看出,名词就是对象,动词就是动作。实际上,语言的本质正是描述客观世界的逻辑,也就是说明那三个方面的东西,词、句都只是一种形式。认识到这一点对理解程序设计语言的本质非常有帮助。那么面向过程中的数据结构和算法到底是什么东西呢,本质上来讲都是对象的抽象,两者都是因为把对象中某些东西给忽略了,其中数据结构是静态结构的抽象,算法是动态结构的抽象。如果说一个对象只需要认识其对其它事物运动怎么影响而不需要认识本身的结构,那么它就成了一个函数,同理,如果这个对象不能改变别的对象的运动,而会被其它对象改变,那么就成了一个变量。一句话,面向过程是对面向过象的抽象。所以它是高层的东西,如果开发者用高层的东西来分析问题,由于基础没打好,思路会出现障碍。而数学呢,它是比面向过程更高层的东西,比如说图论,就根据变量之间关联不同,把一群变量整体归为集合、线性表、树、图四大结构。
接下来说说关于程序设计语言的问题,我们要明确这种语言是面向计算机的,主要是硬件。对于CPU,内存,设备的动静态结构都需要有一定的理解,才能够真正理解程序设计语言的本质。我们知道,计算机工作的过程是从内存中取指令到CPU,然后再根据指令对计算机部件作出相应操作。可见,程序是交给CPU,然后由CPU做事。由于很长一段时间计算机就是单CPU,所以呢,人和计算机能够沟通唯一对象就是CPU,而怎么沟通呢,就是告诉它,各部件运作的先后顺序,这种先后顺序就是程序。正是因为这样,很多人就把实现等于程序了。但是,客观世界是有多个对象并且还同时运动,这就与计算机中单个CPU对象产生了矛盾,这个矛盾就引发了开发中很多难题,也使得面向过程的观念深入人心。其实只要对CPU的时间分片,单个CPU就可以当多个CPU用,而内存也可以分块,也就有了多个对象,这就是操作系统中进程的思想。在计算机系统中,CPU是对象的时间,内存和存储型外设是对象的空间,设备是对象的对外表现,以便被人所感知。可以看到计算机可以表达逻辑上的三个问题,也就是说用那种思路来表达是不用担心实现问题的,但是性能问题可能会存在,这就需要通过测算来验证是否可行。
再讨论一下是否要做引擎的问题,这取决于当前的工具是否能够满足开发需求,比如说目前的程序设计语言由于细节过多,对做逻辑不是很方便,这时自己做个引擎就很方便了。所以这个问题,就看开发者主攻方面的工具目前是否合适,如果合适,那直接用就好了,如果不合适,就需要自己做一个。引擎的关键就在于它能够大大提高开发速度以及游戏质量,而引擎使用者就得被引擎开发者的思想所束缚,如果自己的思路比那引擎好,由于引擎思路的限制就影响了开发速度,如果自己优化思路比引擎好,那游戏性能就受限制。凡是这种情况就需要通过自己做引擎来摆脱引擎的束缚,这是提高开发效率的关键之一。
最后回到三国游戏开发的问题上来,其实三国志系列的游戏就包括势力,城池,武将,部队,钱,粮等十几个对象,找出了其本质后就不觉得会多复杂了,策划的任务就是把这些对象之间的关系以及对象的运动说明清楚,再加上说明逻辑对外怎么表现以及玩家怎么操作,程序的任务就是构造一个支持多对象同时运行的平台,然后再此基础上把策划所写的这些内容转化成程序,美术还是常规做法就不说了。要说明的是,开发时侯最好采用核扩充法,也就是说一开始对象数量不要太多,这样能够保证成功实现。

原文地址:http://blog.csdn.net/niitlcj/article/details/4459816

0 0