最近心血来潮做个Cocos2d-x的3D游戏玩,摊子铺得有点大,说起来也是千头万絮,整理一下思路,不妨先从数据库开说吧。因为在我看来,游戏就是数据+规则+操作控制+动画展现。数据库是最基本的东西,所以第一步先说它。
做数据库设计,各人各公司,有不同的流程,我这是个做着好玩的项目,所以没那么多讲究,直接画草图,做个大概框架,逐个功能模块慢慢完善,然后以后再慢慢更改。
先上总体草图:
游戏的数据载入流程将是这样:
1、用户登录,查询user_info表,核对用户username和password,然后依照唯一的userid,然后依照用户的点击操作,分别到wepon(武器),task(任务),BB(宝宝)、user_space(个人空间)、skill(技能)等各个表中,查询出用户拥有些什么武器、任务、宝宝、技能,个人空间有什么装备等等,分别再执行下一步操作。
2、如果用户选择task,去执行一个任务,OK,从task表中根据用户所选择的任务,依照唯一的taskID去Scene中找出这个task要用到的Scene,载入场景。Scene表详细结构举例如下:
从Scene表,可以获得当前场景的介绍、背景模型、灯光、进场摄像机特写等等一系列数据,读出后,即可按数据库的数据指定建造出一个3D的场景。
3、场景建好了,里面有一个背景模型(依靠scene_bg3dm调入3D模型生成),并且打好了灯光,那么,boss在哪呢?看boss表。
首先是scene_boss_list,用来记录一个Scene里面,用到了哪些boss,根据SceneID进行关联。
到此,已经获得了一个场景里面的boss清单,出场时间等等,那么每个boss出来,是什么级别?有什么动作?携带什么技能和武器?穿什么装备呢?
不详细说了,依靠bossID去boss表,bossAction,bossSkill等一系列相关表查询,一个boss的出场属性也就配齐了,它就可以在场景里面携带着满满的属性数据,等待召唤了,不是么~
以上说的,是一条支线的数据流程,用户可以选择多种支线,去操作多个表,在UI的展现上,就是装备升级啊,宝宝培养啊,技能升级啊,个人空间布置啊等等的功能。从数据库的思路来看,其实一款游戏的最底层,逻辑是蛮简单的。
基于数据安全,数据库应该有加密存储,关键数据应该依靠服务器端进行存储查询,这个不用说了。什么东西都摆在本地,那么也就只能是个单机游戏了。
当然了,这里用的只是做手头这个游戏的一个草稿,关键是思路。