在路上...

导航

公告
 
策划案与程序设计
发布日期: 2005-2-5
原载出处:网络游戏策划
作者: 狂刀
翻译: 未知 提交:管理员
 
这也是一篇类似提纲的东西,主要说明在写策划案的时候如何才能让程序明白,或者说能让程序更好的开展工作。

一、程序设计的瀑布模式
1、需求分析。程序本来就是代替现有的系统。确定程序实现的范围,了解所有细节。
2、框架设计。游戏设计中,大中型模式的框架工作量占程序工作量的20%~60%。
3、详细设计。编码。
4、测试。
5、维护。
6、前面步骤的修改,会造成后面步骤的返工。

二、策划案的基本要求:
1、完整性:没有不明确的地方。没写的功能可以不做。
2、一致性:不相互矛盾。
3、可行性:消耗不过大,当前技术能实现。
4、资源消耗:大量读数据库、一次性广播大量消息、使用过多图片、工作量与增加的可玩性不成比例。

三、程序的对象
1、程序=数据+算法。以对象为单位,将相关的数据和算法放在一起。当前流行的设计方法。图片与动作。
2、数据要求:细化到整数和字符串。图片和模型
(1)数据细化到整数(小数)和字符串,明确整数的范围 (字节、短整、长整),字符串的宽度。
(2)服务端小数用定点小数表示(固定除以10000等),用30000来区分加减和比例修改。
(3)百分比(千分比)的表示,时间的表示(日期、秒、毫秒)。
(4)复合字段,data类。复用可减少表尺寸(对于静态表无意义),减少程序读表的时间。
(5)ID。
(6)字符串需要指定宽度。尾0要求内容=宽度-1。
(7)图片的尺寸和格式。
(8)模型及其定位点。虚拟体定位、骨骼定位、顶点定位。各个模型间的组合关系(树状关系)。反例,两个角色抬东西。
3、算法要求:细化到公式。动作和动画
(1)算法具体到单个的数学公式。最大生命值=健康度*10。
(2)各个公式的前后顺序,先用哪个,后用哪个。例子:武器和状态都修正攻击力,一个比例一个加减,谁先谁后。
(3)图片运动的轨迹。例子:通常行走在格子里。小鸟飞行轨迹。
(4)同时有几部分做动作。抛出的物体。例子:火球、飞斧。
5、数据的分布特点:


三、概念(名)VS对象(一堆数据)
1、对象的包含关系是有限的。例子:把人装入背包,
2、对象的组织通常是树状的。参考:程序二部论坛《信仰框架》
3、对象的组合。组合分为包含子对象和对象集。例子:CUser包含背包、装备、摆摊,指针有召唤兽、诱惑兽、地图。背包是物品的集。
4、对象的关系与参考关系。两种参考模式:ID与指针。

四、框架的灵活性与速度。
1、需求变化,需要灵活性。机器限制需要速度。程序员需要平均两者关系。
2、对象之间的各种复杂关系,造成了框架灵活性减小。例子:有许多对象都会操作ITEM对象,所以一但ITEM的对外接口要进行修改,会造成所有使用ITEM对象的其它对象都要修改。修改量非常大,重新出错的机率也会很大。例子:信仰的精灵
3、用指针加速。空指针的危害。例子:玩家身上的地图指针。
4、用字节代替整数,合并字段,开关量合并。节约内存。
5、不可能的分支可减少设计量和可读性。例子:USER身上的MAP指针不可能为空。
6、程序设计之后会被忘掉,重新修改需要许多重新回意的时间。因为少量细节的忘记造成错误的修改。太小的类会造成太多的关系。

五、示例:摆摊

(一)关系
1、玩家:指针。框架问题:允许主人下线,指针可能为空。
2、地图:指针。框架问题:如果可以收起来切屏,比较麻烦。因为地图指针可能为空。
3、物品:ID。单独删除背包中物品,不会造成崩溃。

(二)属性(数据)
1、摊位中的物品。包含ID、类型ID、价格。只是背包中物品的影子,并不把物品移过去。在摆摊对象中用ID或指针实现。因为程序中操作背包的代码未封装,所以许多地方直接删除了背包的物品。所以这里只能用ID而不能用指针。
2、玩家和地图指针。
3、位置和吆喝。
4、收起状态。

(三)算法(操作)
1、ID生成。采用NPC的ID生成器代替。
2、对象的创建与初始化。需要主人的指针、主人的地图、摊位的坐标。自动放到地图中。
3、显示。下传摆摊外形,同时下传吆喝信息。优化:吆喝是随外形下传,客户端自己定时显示。
4、添加物品,同时输入价格。添加后需要广播给周围的玩家,因为有些玩家已经打开摊位了。
5、删除物品。从摊位上删除后,需要广播。
6、买东西。防作弊:同时上传价格。物品转移,存盘,记录交易专用LOG,广播文字消息。
7、发送物品列表(打开摊位)。同时要检查背包中的物品是否还存在。
8、进入地图。检查坐标点是否有其它东东。地图对象中添加摊位的指针。广播外形和吆喝。
9、离开地图。广播离开消息。从地图中删除指针。

客户端设计:

1、点击一个空的摊位。
2、跑过去坐下。锁定玩家的走动功能。
3、创建摊位对象。创建一个全局的摊位对象。地图中显示摊位图片。
4、增加收摊、摆摊、物品管理的按钮。多态按钮:显示、隐藏、激活、按下。
5、增加摊位界面。增加输入价格界面。
6、增加别人的全局摊位对象。
7、增加其它玩家买东西时的确认界面。


四、游戏数据分类
客户端
即时数据:所有变化必须在0秒内看到。例如HP的变化。
异步数据:数据在服务器,客户端等待服务器返回数据。例如仓库或公平交易等。
服务端
存盘数据
按产生方式
固定数据:由策划制作的数据,在程序运行时不会改变。例如Cq_itemtype等。
玩家数据:由服务器产生的存盘数据,玩家可能会随时修改。例如Cq_item等。
可变数据:由策划制作,但在游戏运行中会被修改。例如帮派柱子等。
按加载方式
预加载:在服务器启动时加载,通常和玩家无关。例如帮派数据等。固定数据通常是预加载。
登录时加载:玩家上线时加载的数据。通常和玩家相关的都是此类型。
临时加载:玩家需要数据时,才临时从数据库读入。例如仓库数据等。
内存数据:
临时数据:在程序运行时产生的数据,不存到数据库中。玩家下线,或者服务器关机后,这些数据会消失。例如中毒状态等。
存盘数据:从数据库加载的,要存盘。
固定数据:从数据库预加载的,不存盘。
按计算方式分为:
原生数据:不能从其它数据计算出来。例如一个物品的数量、玩家等级等。
派生数据:根据其它数据,通过公式计算出来。例如背包中物品的总重量、帮派人数等。
posted on 2005-02-09 00:13 AK747 阅读(...) 评论(...) 编辑 收藏