游戏开发了解程序工作(3)
程序使用的数据类型会更多样,因此策划在编写数据,或提出数据需求的时候,应尽量说明清楚这些数据属于哪种类型。以及该项数据的最小值和最大值,也就是数据的值域。这样能保证程序有足够的信息选择合适的数据类型。
例如NPC的血量,要求是整数型,最小为0,最大为10亿。
数据有三种存在方式:资源数据、实例数据和数据库数据。
资源数据:程序运行时作为资源读入的数据,这类数据提供了构建游戏世界的基础信息,例如地图数据、怪物模板数据。制作资源数据是策划最大量和频繁的工作。
实例数据:相对于怪物模板数据,游戏中同一种怪物可能有很多只,那每一只都是一个模板的实例,他们都有一个自己的实例ID,这些在游戏运行过程中生成出来的数据,就是实例数据。
数据库数据:实例数据在游戏程序关闭的时候就消失了。那玩家如何记录自己的角色,获得的装备,宠物呢?这些数据实例数据会通过服务器程序储存到游戏数据库中,在下次运行程序的时候,就可以再次读取并创建角色实例信息了。服务器程序不能一直不停的写数据库,一般游戏会定期进行储存,或者在重要的时候进行储存。如果不希望玩家因为服务器宕机而丢失已获得的东西,那么就应该在这个时候提出立即储存实例的功能需求。另外,在提需求的时候一定要注意实例储存的上限,不然可能会遇上例如装备不能再扩展属性的问题,因为装备的实例已经固定了大小存储到数据库中,所以再扩展的属性无法储存,除非将已经生成并储存在数据库的装备全部进行修改,而这是非常冒险切耗时的操作。
数据是程序在空间上的描述,那么通常逻辑是一个时间过程的描述。
对于程序来说,逻辑无非是做一个什么事,判断一个什么值,循环一个什么过程。在脑子里清楚有哪些数据后,程序会进行逻辑代码的编写,这个过程非常参考策划的功能需求。
当程序编写逻辑代码的时候,他会考虑如下几个问题:
l 逻辑的起始点在哪里?系统初始化是什么样子?
l 哪些是客户端逻辑?哪些是服务器逻辑?
l 逻辑是否分阶段分步骤?有哪些阶段和步骤?
l 玩家可以有哪些操作,如何反馈?
l 客户端如何处理异常操作?
l 服务器如何循环工作?
l 服务器如何处理玩家掉线、服务器关闭开启、何时存储数据库?
l 功能之后可能会有哪些扩展?(留下扩展接口,方便之后的扩展功能)