初入游戏服务端开发行业,分享一下自己在做机器人功能时候的一些心得,欢迎各路大神指教。
根据策划的需求,策划希望生成的机器人非常逼真,不仅拥有类人的战斗逻辑思维,而且要求机器人的各项可展示信息也要极尽所能匹配正常玩家,也就是说,不能让玩家感觉他打的是机器人。所以在做逻辑之前,我在配表的时候也花了很多心思。
直接上表图。
这是其中的阵容表,因为培养线比较多,所以就不一一列举了。
简单描述一下各个字段的含义,第一个规则id字段是生成索引用的。因为最后的排列组合出现了200多万种可能,不采用索引方式,而直接添加所有数据进入内存,会导致宕机或者溢出。
二三字段中的等级上下限是用来规范机器人的等级,只有等级在这个范围以内的机器人才能拥有这种阵容。
余下的字段分为武将id和小伙伴id(玩过养成的朋友都知道,有的游戏的机缘或者缘分系统是由上阵武将和小伙伴提供的)。
其余表不做太多解释。直接进入生成索引的环节。
下面是我的索引源码,话说写这个源码的时候被公司的反编译大哥一顿嘲笑。但是没办法啊= =。我的递归写的太烂了。想递归的时间这个10多层的for循环我早就写完了。反正这个算法只是为了生成索引表,就用一次,所以就很粗暴的这样写了。
每次看到这串代码的时候,我都只想说一句话,我就是我,看到自己都上火。
这段是模拟91-120级的机器人可能会遇到所有培养情况。
因为我比较菜,从java直接生成的xlsx表,生成之后打不开,所以就采取了先生成txt,再从txt转换为xlsx。
在这里要说一句题外话,xlsx单个sheet表的行数的上限大概是在一百零几万,超过这个行数会无法保存,所以我在生成txt的时候也是做了计数统计,尽量保证每一次生成的txt不超过这个上限,所以就分成了三个区间段进行生成。
不过这仅仅是索引表的第一步。因为这个按策划需求来讲是要求对玩家的战斗力进行匹配,所以最后服务端加载的索引表形式应该是战斗力+索引的两字段xlsx表。
所以在第一步的索引表里我详细的加载了所有可能性的详细数据,