搜索
查看: 1545|回复: 1

04-07开发回顾

[复制链接]
2008-1-20 00:37:57

主题

好友

1008

积分

太守

自04年做出战略三国三次开发版以后,游戏开发发展就达到了一个瓶颈,这一点在战略三国四次开发版的失败得到体现,也在五次开发版得到体现。因而在这个过程就慢慢体会到了策划的作用。
一个游戏如果单独一个人开发,势必会过多的考虑自己的技术实力而简化设计,正是因为这种“好实现”的心理制约了游戏开发的发展。而对于策划来说,却不会考虑这些,策划会更多的从游戏的需要考虑设计,而不会像程序“好实现”角度来考虑问题,也就给程序提出了课题,程序在解决这些课题中得到进步。正是因为策划具有给程序开发指引道路的作用,我以后才一直坚持要有专门的策划,而不是我自己做。
在策划的指导下,三国游戏开发就在原有技术上逐步前进,并在前进过程中逐步形成了三国游戏三轮开发的思想。接下来说说从04年底以来的游戏开发的历史:
在04年底到05年初这段时间,由于论坛的彻底关闭,使我的重心又回到了游戏开发,在这段期间主要的任务确定游戏开发基本问题,并在这段时间确立了任毅策划战略三国。
从05年2月开始,任毅开始了战略三国的策划,而我进行了战略三国开发的研究,这个研究过程分为三轮:
在第一轮中因为策划案还正在写,因而当时的研究是战棋的战争部分实现的研究,包括部队的移动、攻击和计划并带有简单的AI,在这个研究程序中,实现了一些在之前战略三国中没有实现的东西,如一个部队一回合只能行动一次;敌人的行动可以表现在界面上等。总的来说是具有了战棋游戏的特征。
在05年的4月初,策划完成了部分的策划案,而之前研究的与策划案有较大的出入,所以这时的研究方向就改成了以策划案的内容为中心进行专题研究,包括地图、地形、势力、城池、格子、武将等专题,在这些专题的研究中解决了很多游戏开发中的实际问题,如:地图移动、武将排序、内政命令等问题,这些实际问题的解决为后面的第三轮研究奠定了基础,不过在第二轮的研究过程中,出现了两个很大的问题,一是随着程序代码的增长,可维护性迅速下降,成为游戏开发发展的直接障碍;二是界面之间的切换问题,指的是在使用如征兵的内政命令时,会进入另外一个界面,而在另外一个界面操作完以后如何把操作后的数据传回原界面,以当时的技术只有一个功能建立一个公共变量,而我对此感到麻烦想找到一个统一的办法,这样就遇到了困惑。在界面切换还有一个问题,就是经常会出现弹出的界面会在大地图所在界面之后,而大地图所在界面因为要弹出别的界面,所以在设计上是要禁止操作的。这样一样,如果弹出的界面在大地图所在界面之后,就会造成玩家无法操作整个游戏,在当时弄了很久也解决不了这个问题,所以最后干脆设计成弹出界面以后,大地图所在界面消失,不过这种做法在最后发布的时侯被很多人批评,说这样就没有游戏氛围了。
正是因为第二问的第一个大问题,使我思考了很久时间,最后通过yinxiaodan的介绍面向对象思想得以解决,这样在7月中旬就进入了第三轮的研究也就是战略三国的实际开发阶段。在这个阶段,产生了两个个很重要的思想,即元素思想和事件思想。元素思想是管理对象的重要方法。具体的内容如下:第一,建立元素管理器,对每一个元素进行管理,每个元素以动态数组的方式存放,元素管理器具有增加、删除元素的功能,这样对元素的管理就方便了很多;第二,编号制。给每个元素一个编号,编号作为元素的唯一标识。这样就可以通过编号来指定具体的元素。通过元素思想和类的GET/LET属性,解决了很多逻辑上的复杂问题。事件思想是解决游戏中下达命令和执行命令时间差的重要方法。如:下达征兵命令后,要等进行进入战略面后才能执行征兵命令。事件思想解决的基本方法就是把要下达的命令储存起来,等命令下达的时侯才会执行刚才要下达的命令。在刚建立事件思想的时侯就是单纯的增加事件->执行事件->删除事件的过程。但是随便开发的深入,就发现了这种做法问题所在,因为事件之间是有联系的,比如行军和攻击就有密切的联系,如果任由其增加事件,而没有对同一类事件做统一的管理会出问题。于是为了解决这个问题,就产生了事件类,事件类就是对同一类事件统一管理的工具。这样事件的结构就由事件系统-事件转变成了事件系统-事件类-事件的结构。在这些思想产生的同时,又出现了一个制约开发发展的新问题,即界面问题。因为当时用VB的控件来开发游戏,所以在很多界面问题的解决费了很大功夫。当时光是实现行军就费了不小功夫,而战斗则是根本没实现成功。
2005.9.4战略三国终于基本开发完成,并发布到论坛上。由于在战略三国的开发中解决了很多逻辑上的问题而界面问题很大且没有AI,而且这是一个离策划所有要求还很远的作品,因此当时定名为战略三国逻辑内核版演示版。这个作品发布以来在界面上受到了很多批评。所以在当时就确立了三国游戏的三轮开发。分别是第一轮:逻辑,第二轮:界面,第三轮:AI。这样战略三国逻辑内核演示版就很明显的属于第一轮的开发。在战略三国开发完以后,我就对战略三国的开发作了总结。写了《战略三国设计思想》的书,书里不仅包括战略三国开发过程中已经解决的问题的解决方法,还包括针对未解决问题提出的解决方案,这本书对指导模拟三国的开发起了重要的指导作用。
在战略三国之后,任毅还策划了梦想三国游戏,但是由于当时的团队问题,最终在1月底夭折。我和任毅的合作到这时就终结了。
不过在终结的前夕发生了一件事,这件事影响着我2006年的开发。有一天,我到游戏之家论坛,看到了Paradoxion,觉得挺有意思就下载下来玩,玩了几关觉得很有意思,就一直玩下去,结果这个游戏的免费版只能玩到第七关,之后就不能玩了。我觉得很可惜,但是想一想那个游戏明显在我的实现能力范围内,所以就有了做这个游戏的念头。后来静下心来想一想,觉得单纯抄那个游戏没意思,就把那个游戏和弹力小子、桌球、反射镜结合起来想出了一个游戏的方案,这样就制作了一个小游戏,后来取名叫飞棒击球。在做这个游戏过程中因为经过战略三国开发中面向对象开发思想的训练,开发起来格外轻松,不用半天就做完了,这种感觉在当时是很久没有体会到的。做完了以后很开心,当时就把这个游戏给游戏之家看。游戏之家觉得这个游戏挺好,只是画面比较差,就为我做了美工,并且告诉我做游戏不要用控件要用bitblt,这一点我在当时并不能理解,当时就质疑问他用bitblt怎么实现球的移动,后来他写了一个球移动的例子给我,我一看才明白了,原来画面是一直刷新的,当球位置改变以后整个画面重画就可以实现球的移动。这使我当时体会到用控件编程的弊端-要想方设法改属性实现效果,而用代码只需直接输入参数就可以实现-很直接。所以之后就尝试着就游戏之家给我的FX来重做飞棒击球,重做之后由于没有掌握正确的界面制作方法再加上添加一些新的效果(如:半透明),在界面处理上花了大量时间,导致这次开发的时间比第一次开发要长的多,用了1周。不过最终做出来的游戏质量还是令我满意的,可以说至今仍是我目前所做游戏最满意的一个。这一方面有我用新方法的因素,还有一方面是图片的质量比较好。总之,飞棒击球的开发使我在界面制作上受益很多。
飞棒击球开发完以后,游戏开发一度停工,直到林度的出现。06年4月,我和林度开始了合作的谈话,重点谈了游戏开发的艰巨性和策划的要求,最后达成了共识,实现了合作。5月林度的策划初稿出来,我对林度的初稿提出建议让他修改,并且对他的策划进行了研究制订了开发计划。6月底开始了模拟三国的开发,模拟三国的开发是从开发编辑器开始的,从数据编辑器到地图编辑器,再到公式编辑器最后到界面编辑器,形成了基本的编辑器体系。这套编辑器仍然适用于至今战争的开发。在编辑器开发中,也走过一段曲折的路。我在编辑器开发中就发现问题,随着编辑器开发的深入,我的干劲也逐渐减退,所以在做完公式编辑器以后下了决定,先做游戏等游戏做到界面部分再做界面编辑器。这样就开始了模拟三国的开发,模拟三国先从战略三国开发已有经验的元素思想和事件思想中开始,定义各种元素的属性和方法,对战略三国的事件类并作了一些调整。然后用飞棒击球制作界面的方法来制作界面,对于一个界面写一个类,一个部件写一个类,就这样一个个部件完成,一个个界面完成。在开发界面过程中还遇到层界面问题,当时只给予粗略的解决。模拟三国开发界面的方法被称为第一代界面系统。第一代界面系统的特征就是部件和界面缺乏集中的管理,代码重复率很高。当模拟三国开发到小界面的时侯,同时也开始开发了界面编辑器,这个界面编辑器比起战略三国的界面编辑器进步的最大之处就是,界面编辑器内部可以写代码,只不过这种代码实际上就是一些参数而已,但是客观上实现了小界面和游戏程序的完全分离。这是模拟三国的一个重大成就。进入7月底,底层开发基本完成,开始了应用层的开发,在应用层的开发并没有底层开发那么顺利,因为在策划理解上出现一堆障碍,浪费了大量时间去理解,究其原因跟当时我没有认真研究策划的功能部分有关,因为之前研究的重点是策划的元素、事件和界面,也就是底层部分。就这样,随着后面时间的减少,模拟三国的时间没能全部实现,更大的问题是模拟三国是个没有AI的游戏。总之,模拟三国的作用在于使底层开发,特别是界面的开发得到了极大转变,是属于三国游戏的第二轮开发。但是模拟三国中的重底层轻应用导致了模拟三国的基本失败。
模拟三国的开发于06.10.22停工,一直到07.6.11才恢复开发。在这期间,我跟铁血进行了关于游戏开发的大量谈话,对模拟三国的失败作反思。此外,林度也在做反思。在07年4月,林度在论坛上提出开发失败的原因就在于一次做太多系统,他认为每次开发应该只做一个系统,每个系统都要含有AI。要等一个系统做完以后,才能开发下一个系统,这个想法其实就是软件工程中的增量模型。而模拟三国的是瀑布模型。林度从开发模型的角度解决模拟三国的问题,而我从策划表达角度来解决问题,让林度对策划作了若干次修改,最后达到了较好理解的程度才开始开发战争。
模拟三国开发使用的第一代界面系统虽然比战略三国有了很大的改善,但是问题很大,所以在6.11这次战争的开发中就对第一代界面系统做了大量改进,形成了第二代界面系统。第二代界面系统特征是:把资源从界面系统中独立出来,专门产生图片资源管理器,并开发了图片管理器程序;建立界面列表机制,对于每个要显示的界面必须存在于界面列表上,显示界面从底往高显示界面,操作时只能操作最上面的界面;建立层判断机制,但这种机制代码的复用性太低;第二代界面系统比第一代有了一些改进,但最大的问题是没有主循环,使得显示和操作的处理变得很麻烦,这跟当时判断鼠标点击还有窗体的事件有关。此外,针对由于模拟三国开发中开发过于求急,使得对一些程序细节问题没有足够的重视的问题,如层判断,影响了后续开发,这次开发中对这些问题都给了一定的时间研究,以保证好的框架。在这次开发中还学习了A*算法,并把它应用于行军AI中。
在7月中旬,战争之行军部分开发完成。但是在开发之后,发现了两个重大问题,一是程序藕合性过大,公共变量太多;二是游戏不流畅。针对这两个问题就进行了行军系统的第二次开发。对于第二个问题,花了一周时间学习DX8,对于第一个问题又花了一周的时间作了系统分析,在系统分析中规定每个元素和界面都要有create方法,对于每个元素和界面在将来写代码时需要用到的对象就必须放到create方法中,并且在元素和界面类里都有对应的私有变量来保存。这样就大量的减少了公共变量。此外,还在系统分析中:第一,确立了统一的元素管理器,把所有元素都给予不同的编号,这样编号不仅可以确定具体是哪个元素而且还可以确定该元素的种类,这是逻辑部分的发展;第二,强化了事件机制,因为在第一次开发中对模拟三国的事件部分作了大幅简化,减少了大量事件的属性(因为战争的事件主要通过遍历元素来实现,而之前是通过指定元素编号),所以导致一些功能丢失,这次恢复了时间判断和随机编号;第三,确定了元素的归属问题,把各种元素归属归到游戏界面中去,这样加载元素数据要在开始游戏后才能进行,在结束后会自动卸载元素,使游戏的进程变得合理。在界面系统上,则产生了第三代界面系统,其特征是:第一,模仿VB控件的概念,建立了部件概念,使得渲染对象的工作封装到部件里由部件在具体功能里渲染,而不像之前的都直接使用;第二,建立部件管理类,方便了部件的渲染和层判断;第三,游戏采用主循环方式来进行,采用清屏->接收控制->改变数据->渲染的流程,使操作和渲染分开;第四,把鼠标作为一个对象独立出来,并且作为几乎每个界面系统的对象的创建参数,方便了界面系统对鼠标的控制;第五,把功能从界面中独立出来做成一个类而在部件的操作和事件的进行中不需要写具体功能只需写使用功能系统的某方法(其实方法名一样,只是参数不同,区分功能就靠参数),这样实现了功能的独立;第六,通过主循环机制解决了动画问题,方法是在显示动画的部件里,判断实际间隔达到或超过指定间隔,如果是则换图。而主循环和事件系统之间的矛盾则通过游戏界面来解决,也就是说把原来事件循环的内容放到游戏界面的操作方法里,也是通过判定间隔时间来判断是否运行事件系统。总之,第三代界面系统的核心是用部件的方法管理整个界面系统,缺点在于对部件的独立性太低,还是要依赖于屏幕,如坐标上要绝对坐标。
2007.9.7战争之行军部分第二次开发完成并发布战争之行军部分1.4,战争之行军部分开发完成。在发布的前夕,对第二次开发进行总结,发现了第三代的界面系统的很多问题,而很多问题已经不像之前几代的那么大了,只是不完善。
从2007.9.8开始,进入战争之战斗系统的开发,在战斗系统的开发上到目前为止还只是在界面上作了一些微小的调整。从9月到12月的主要成就是产生了第四代界面系统,这个系统是2007.10.8在《界面机制的改变》文章里设计的。第四代界面系统引进了集合部件的概念,使得界面系统可以支持多级部件,把界面列表和部件统一成部件,只不过界面列表是游戏这个集合部件。第四代界面系统的特征是:第一,游戏的基础是基本部件,包括图片、图形、文字、框、按钮、动画构成的;第二,集合部件是由基本部件构成的,采用层管理的方法管理基本部件,基本部件的坐标是相对于它所属的集合部件;第三,整个游戏就是一个集合部件,它由各个界面的集合部件组成;第四,集合部件也具有部件所拥有的可见、失效等属性。在第四代界面系统的开发过程中还遇到了一次困难,那就是如何只显示在集合部件范围内的部件,关于这个问题最后是通过了DX里面的纹理来解决,也就是说渲染基本部件不要直接渲染到屏幕上而是要先渲染到集合部件纹理上,然后集合部件要渲染到上级集合部件纹理上,最后渲染到屏幕上,所以所有集合部件都必须有纹理。在第四代界面系统里还有一点较大的变化就是,操作和范围判断的函数都没有了参数,因为这些参数的信息都可以从鼠标中获取。在2007.12.30第四代界面系统底层基本开发完成,但是目前在部件管理器上还存在一些问题,需要解决。解决以后就可以进入界面系统应用层的开发了。第四代界面系统的主要缺点就在于缺乏对声效的支持,这可能会成为第五代界面系统的开发重点。
在2008.1.17提出了实现战斗动画的方法,方法比较依赖于美工,也就是要美工做出的动画效果对于在下面的部队,攻击在该部队上面的部队(不管哪个方向)都要体现出攻击效果。至于这个方案能不能实现则要通过实践的考验。
回复 举报
2008-1-21 10:52:30

主题

好友

2151

积分

刺史

好长。:surrender

楼主的战略三国玩过,不错。


支持原创:p :p
回复 举报

本版积分规则

Archiver|手机版|Langya.Org ( 浙ICP备05062527号-1 )

GMT+8, 2022-10-8 07:28 , Processed in 0.056717 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed © 2001-2012 Comsenz Inc. Design by 360cd.cn

返回顶部