SDL中文论坛
标题:
tb.dat
[打印本页]
作者:
admin
时间:
2020-8-24 16:36
标题:
tb.dat
为什么要存在tb.dat?
tb.dat主要作用是减少游戏启动时加载构造规则时间。把[terrain_graphics]解析成程序能直接认识的building_rule,从tb.dat文件读取形成building_rule,这两者比较起来tb.dat的要快。
用tb.dat后编程要注意的,以及它会带来副作用。
1、tb.dat不存储那些图像文件不存在的规则
tb.dat不存储是因为一条规则内判断文件是否存在也是要点时间的。而多存在一条无效规则就会使得terrain_builder::build_terrains()花费多余时间。
判断文件是否存在要使用terrain_builder::load_images函数,因而在把规则加入规则集前一定要调用load_images,只有该函数返回true才能加入规则集。当然load_images除了判断文件是否存在,还会把这存在文件形成图面,这个过程对于形成tb.dat是多余的,但考虑形成tb.dat是在作安装包前执行,不影响玩家玩游戏时的启动时间。
2、一旦制作本来不存在图像后,需要重新形成tb.dat
没有的图像文件存在后,图像归属规则可能就从无效变成有效,而旧的tb.dat可能就没收录这条规则,要生效则必须重新形成tb.dat。
3、全局构造规则和本地构造规则
全局构造规则指的是主config下的[terrain_griphics]块形成的构造规则。(全局构造规则适用于所有战役)
本地构造规则指的是特定场景下的[terrain_griphics]块形成的构造规则,像[scenerio]。(本地构造规则适用于特定战役)
在程序中,building_rule中的local字段指示该规则是全局的还是本地的。
用了tb.dat后只支持全局构造规则。——这并不是说用tb.dat后就不能支持局部构造规则,是要支持的话就必须对本地构造规则也和全局一样形成一个类似tb.dat文件,要形成这个dat有点难,又考虑到至少现阶段是几乎不用写本地构造规则,暂不作支持。
至此tb.dat中存的都是全局构造规则,像terrain_builder::flush_local_rules函数就不会产生什么影响。
4、如何形成tb.dat
tb.dat是kingdom.exe形成,editor.exe只能察看tb.dat内容。
欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/)
Powered by Discuz! X3.3