博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
导表工具进阶(自动化)
阅读量:4912 次
发布时间:2019-06-11

本文共 1878 字,大约阅读时间需要 6 分钟。

缘由:

不论服务端还是客户端,读配置的代码总归不少。尤其是有些配置关联着,若策划配置错误,则可能引发诡异的bug。
而且有些字段用起来也复杂,原始数据为x,x,x,这种逗号分隔,甚至更复杂的多组分隔。对于这种复杂数据,要么用的时候再分隔使用,要么加载配置时处理好。
若是手机上呢? 性能本来就不够强劲,还做这么多复杂事宜(这个是导致最终实现新的导表工具的最终理由-用来说服自己的)
画圈:
对于策划而言,最优的数据处理工具就是excel。
手机上什么格式数据加载最快?
经过对xml、lua、json比较,同样的数据,cjson加载最快,lua次之,再来是xml。
此处不考虑二进制格式的原因是:
a、数据主要lua用
b、还是希望数据文本化。
最终选择json格式。核心原因是:cjson解析后可以直接生成lua对象。
不选lua的原因在于:
        数据只能用在lua中,局限,而且加载数据会导致lua语法分析,更耗。
不选xml的原因在于:
        就算生成解析代码,那么若表太复杂,复杂的解析代码肯定耗时更多,故舍弃。
核心问题变为:如何从excel生成json格式。
并且解决:
a、数据检测
b、程序用起来舒心
c、减少体力活
需求规整:
        数据类型:
                a、数据,归为:number、string、boolean、对象
                b、对于怪物掉落,需要物品id、数量、几率等多个参数,说白了就是对这些参数起个名字,程序就好用了
                        1)、对象支持套用模板
                        2)、对象支持一个集合
       
        查找处理:
                能生成行号关联(默认生成,总得有个依据吧?此关联就是必要依据!难道让策划一个个配个?)
                能生成唯一键、复合键关联(参考mysql键概念)
                能生成某个类型的集合,考虑指定品质的装备集合,进行掉落等。
        数据检测:
                a、数据值范围检测
                b、数据值在一个集合中,例如道具类型集
                c、数据值再某个表中某个字段可以查到
                d、数据值指示的图片等文件存在
        表关系问题:
                一个功能可能包含若干个excel子表,那么程序一个功能用多个表咋办?
                增加归属表,若干个功能的子表关联到一个归属中。
        体力活问题:
                自动生成代码,查找、获取数据的函数。
                优化点:
                        考虑多个表查的问题,例如有道具表,道具表中每个道具有类型,例如装备啥的,是不是要获取装备数据还得查另一个表? 程序还是麻烦。 直接把装备数据关联到道具表中,并起个名字! 这在lua中很方便。而且,下次查这个道具,是不是发现关联过了? 还不用关联了,经过测试,性能提升23%,服务器提升的更多,因为7*24小时,要查多少次。。。 总提升更大。
        cjson改进问题:
                或许不算是问题吧,标准json格式中,{"name":"value"},name只能是字符串!!!  可是。。。 游戏中很多id是整数啊!!!  改掉!,让json可以支持{3:value} 这种。  再也不用每次转数字了。
实践:
导表工具干了这么多事情,会不会很慢?
实测,竟然比之前导表工具还快。。。ssd硬盘下20多秒, 普通硬盘下40多秒。
游戏加载速度:
        比之前加载时间缩短了1.3倍多(主要省去了数据关联、数据合法性检测开销)。
策划:
        高兴的事:
                再也不用担心资源路径配错了。。。
                再也不用担心某个字段值不存在了。。。
                再也不用程序读配置时老和程序交流了。。。
        坎坷:
                经常把导表工具规则配错。。。N个错误后,终于会看报错日志了。。。
                经常把表配错。。。。 然后每次导表,报错。导表失败。。。修,继续报。。。。 终于好了。。。 填的正确率还上升了。。。
程序:
        高兴的事:
                再也不用读配置了。。。
                再也不用检测数据关联是否正确了。。。
                再也不用给策划查配置表关联错的问题了。。。
       
                每天还有时间玩玩游戏娱乐下了,让体力活见鬼去吧。。。
        头疼的事:
                对字段起名字。。。对对象模板起名字。。。
                例如:
                        掉落,物品id、数量、几率。
                        策划数据:3,4,5,模板名:id, num, odds
                        程序代码中直接用:
                                info.id, info.num, info.odds  (info为某行的掉落数据)
延伸:
        总有一些麻烦的需求。
        继续对导表工具加功能?
        NO,这样会导致越来越难维护,写插件!
        非通用玩意写个插件就搞定。 生成特殊数据也可写插件!
ps.思路备忘。
具体规则见 excel表格式说明.txt
导表工具全lua实现,插件亦lua实现;
excel转txt用luacom。

转载于:https://www.cnblogs.com/lcinx/p/10570862.html

你可能感兴趣的文章
javascript深入理解js闭包
查看>>
PLSQL
查看>>
ASP.NET Core 应用程序Startup类介绍
查看>>
【python】-类的继承
查看>>
同一个POD中默认共享哪些名称空间
查看>>
HTTP协议详解
查看>>
xdebug调试的原理
查看>>
php 日期时间运算比较
查看>>
C#类、接口、虚方法和抽象方法
查看>>
Linq C#增删改查
查看>>
[转]第一章 Windows Shell是什么 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987862】...
查看>>
iOS获取设备UUID和IDFA
查看>>
模糊查询
查看>>
linux 出现:-bash-3.2$提示符
查看>>
jsp电子商务 购物车实现之二 登录和分页篇
查看>>
科普:搜索引擎的基本工作原理
查看>>
Docker Compose 原理
查看>>
mongodb index 的background 及集群的索引建立
查看>>
判断两个控件在同一个Window上是否有重叠
查看>>
Android+Jquery Mobile学习系列(3)-创建Android项目
查看>>