Player(玩家)
ID |
int |
玩家标识 |
monarchID |
int |
君主(武将ID) |
order |
int |
军令 |
color |
uint |
颜色 |
Castle(城池)
ID |
int |
城池标识 |
name |
String |
城池名称 |
playerID |
int |
玩家标识(城池归属于哪个势力,为0则是空城) |
captainID |
int |
太守标识(武将ID) |
gold |
int |
金 |
rice |
int |
米 |
treasure |
int |
宝 |
soil |
int |
土地值 |
industry |
int |
产业值 |
population |
int |
人口 |
disaster |
int |
防灾值 |
rule |
int |
统治度 |
reservist |
int |
后备后数量 |
funList |
String |
功能列表(武器店|学校|医馆|市场) |
genList |
String |
武将列表(武将ID) |
conList |
String |
连通列表(城池ID) |
x |
int |
在地图上的X坐标 |
y |
int |
在地图上的Y坐标 |
General(武将)
ID |
int |
武将标识 |
name |
String |
名称 |
strength |
int |
体力 |
power |
int |
武力 |
knowledge |
int |
知识 |
loyalty |
int |
忠诚度 |
morality |
int |
品德 |
exp |
int |
经验 |
soliders |
int |
士兵数 |
weaponID |
int |
武器ID(装备ID) |
armorID |
int |
防具ID(装备ID) |
armyType |
int |
军种(1-山|2-水|3-平原) |
status |
int |
状态(0-在野|1-出仕) |
imgUrl |
String |
头像路径 |
Equip(装备)
ID |
int |
装备标识 |
name |
String |
名称 |
type |
int |
类型(1-剑|2-刀|3-矛|4-防具) |
price |
int |
价格 |
value |
int |
攻击或防御值 |
weight |
int |
重量 |
condition |
int |
购买条件(0-任何人|1-武90|2-德90|武将ID) |
Fun(功能)
ID |
int |
功能标识,填装备店、学校、医馆或商行的ID |
type |
String |
类型,指定是哪种功能店,为了程序方便,这里直接填表名 |
EquipShop(装备店)
ID |
int |
装备店标识 |
swdList |
String |
剑列表(装备ID) |
bswList |
String |
刀列表(装备ID) |
sprList |
String |
矛列表(装备ID) |
armList |
String |
防具列表(装备ID) |
Hospital(医馆)
ID |
int |
医馆标识 |
price |
int |
价格 |
recover |
int |
恢复体力值 |
Firm(商行)
ID |
int |
商行标识 |
buyRate |
int |
一百两金对应多少石米 |
sellRate |
int |
一百石米对应多少两金 |
以上是游戏的数据库设计,不过没有遵循SQL的数据库设计范式。因为如果表之间存在1对n联系的话还要再增加关联表,这样增加了维护的工作量。
1、数据的使用方法是在Excel里填数据,然后使用自己写的工具通过Excel表生成一个自定义格式的数据文件和一个使用AS3语言的VO类。游戏初始化的时候按数据文件的数据实例对应的VO类。这样可以实现数据的强类型,方便编程。
2、每一个表都在程序中用一个字典储存,字典的键对应ID。
3、对于存在1:n关系的关联表,VO类保持与其相关的实例引用,而不是ID(个人认为保持引用的开销应该比int类型要小)。例如,城池表有将军列表,这里的genList为String类型,填值的格式为General|10001,10002,10003,这样在程序初始化时将该字段解析为Vector类型,并存储id为10001,10002和10003的General类型实例。所以基础表要先初始化,提供实例给依赖他的对象。对于保存对象引用的做法可能会造成意想不到的问题,比如我要持久化一个对象到本地,但并不需要他引用的对象,这样就会添加额外的开销。保存ID的话相对比较灵活,而且从自定义数据中解析成VO也不需要复杂的处理。
4、玩家进行游戏的时候会修改VO里面的数据,这些会被修改的VO实例统一组合到一个全局类。保存游戏进度时将该全局类转为ByteArray对象,压缩保存到本地。下次游戏开始时则读取该数据还原。
以上的数据表是游戏的基础,根据霸王大陆的游戏规则还有很多配置表或计算公式,如下是其中一部分,在开发到相关模块时再进行处理:
1、每回合分配行动力按武将数量及带兵数配置表(最小最大值,上一回合有剩行动力可累加到下一回合)
2、计谋消耗行动力配置表
3、战术消耗战术值配置表
4、按等级和武力兵种数量分配配置表
5、不同军种在不同地形上按士兵数量消耗行动力配置表
6、拥有城池数量可获得军令数量配置表
7、升级需要经验配置表
8、升级时按原武力确定提升武力值配置表
9、读书提升智力的上限
10、读书按智力确定费用和提升知点数配置表(在学校表里)
11、按知领悟计谋配置表
12、按条件(知,武,忠)确定计谋成功率和伤害值配置表
13、情报收集按德和知出现的情报结果配置表
14、单挑时牵制、攻击和拼命的概率配置表
15、按武将数量和带兵数量消耗粮食量的计算公式
16、单挑剑、刀、矛相克,其对应成功概率配置表
17、四月收金、五月收粮发生天灾暴动等按开发度和统治度的计算公式
18、武将出生时间地点和死亡时间配置表