2005年8月13日

转GAMERES论坛bigbook2000对一个帖子的回复

这是是某人在GAMERES论坛策划版贴了一个战斗流程图引起的一位程序员兄弟的回复,对我们大家都应该很有启发。

以下是原文转载:

 

现代游戏何其复杂,采用面向过程的方式来处理本来近似现实的世界你们不觉得自己都看得糊涂

 

我们把角色作为一个对象,对象假如有HP属性,我们只要规定,HP什么时候增加怎么增加增加多少,什么时候减少怎么减少减少多少就行了

 

战斗本身就不是一个过程,从程序代码的角度来讲,他是由各个事件触发而形成的,比如玩家喝了一瓶加HP的药,每5秒增加HP100,直到总计增加1000点,但不得超过角色本身最大HP,这看起来是个过程,但不好理解

 

我们如果把药瓶当成是一个对象,那么它有很多属性方法和事件,比如能喝这是他的一个方法,能扔掉,这也是一个方法,每5秒增加HP100,这是一个属性,也可以每2秒增加100HP,这也是一个属性,5秒钟时间到增加100HP这是一个事件

 

这样我们就好理解整个游戏,从整个游戏大的对象划分为几个小的对象,再从小的对象去派生很多具体的对象,整个游戏系统就完成了。不必在设计的时候去考虑某个过程,这样只会增加问题的复杂度,而且容易出漏洞

 

只有极少数操作性的和事务性的,我们可以采用流程图,比如申请公会,具体的任务系统,操作流程等等

 

面向对象的方法不仅适用于游戏程序,同样适用于策划,因为程序本身就是根据策划制定游戏框架和模块,作为一个执行策划实际上就相当于半个程序系统分析员,如果你需要做这种技术性很强的东西,那么就必须了解程序是如何运作的

 

另外一个,对于战斗这种连续性很强的复杂事件(这里称之为事件而不是过程),我们策划需要把握的不是流程而是状态,就是在这种敌对方法交战的过程中,敌对双方各自有什么属性,每种属性到了一个什么状态,会触发哪些事件,用list列出来就好了,如果使用流程图展开,对于一个有20种属性10种技能的敌对双方来讲,你画10页的流程图也说不清楚问题

 

 

有书真富贵,无事小神仙
曾因酒醉鞭名马,生怕情多累美人
所有为着理想而发过的誓言,只不过是为了讽刺日后的背叛罢

 

没有评论:

发表评论