函数系统与命令方块的对比
如果你看上面的看得有点迷糊,那我们来简单讲讲函数系统和命令方块(CB)系统的对比吧,进度作为函数的联动触发形式,就不作过多讲解了。
前面讲到的三种模块中,对执行顺序无要求的高频模块无论是用函数还是CB都没有什么问题,而那些需要严格保证执行顺序的模块,以前我会将他们全部连在一起,只用一个 RCB(循环型命令方块,即高频CB源)作为“信号源”。
为什么不划出做成子模块(通常以ICB-脉冲型命令方块起头,后面跟一串CCB -连接型命令方块)调用呢?因为你在当前游戏刻调用了ICB子模块以后,它会等到下一个游戏刻才执行。可不要小看这一个游戏刻的延迟,它往往可能让你的系统出现意外,进而产生各种蜜汁bug。
而函数系统中,调用的子模块会立即插队执行,从而能够严格保证执行顺序,出错的可能性大大降低了。
函数系统不能够直接支持Conditional模式,也就是条件激活,而CB是支持的。关于这一点,以我个人的经验,影响是不大的,过去1.8没有
Conditional不也是这么过来了吗?
函数系统的主进程使用gamerule gameLoopFunction <命名空间:函数>来挂载,而CB系统的"主进程"使用 RCB 作为高频信号源。
在过去的版本,通过glf挂载的主进程,其执行者是系统,也就是server。这个设定会产生各种各样的安全隐患,于是在后来的版本中,MOJANG将其执行者改成了glf所挂载的函数(前面也讲到了)。就目前而言,仅仅通过函数系统,就能够实现过去CB能够实现的功能,甚至还有一些是CB难以实现的功能。在这里就不过多讲了,希望对大家有所启发,可以研发各种各样的黑科技出来~
这里插入讲一点,我想对于地图制作者来讲是绝对的福音。
mcf系统直接支持样式代码§。
CB系统的颜色黑科技什么的在这个面前根本不值一提。
资源占用方面,简单说一下我个人的经验。
我们花了不到一天的时间把《喋血冰封II》升级到新的命令系统。新系统在资源占用方面明显比之前庞大的CB系统少了很多,流畅度不降反升,这也得益于函数系统更加接近游戏底层。CB系统在方块更新这一方面就输掉了一大截。更何况它需要占地。
试想一下,如果你的系统足够庞大,出生地可以加载的区域放多CB,你能够记得住吗?你在调试系统的时候,需要花多少时间去找到你要修改的指令呢?
此外,对于一些不放在出生点的模块,我们还需要考虑到区块加载的问题,相信这也是让许多人头疼的问题吧?
函数系统显然不需要担心这个,因为它所有的内容都保存在文件里,不具体地出现在游戏世界中,在资源占用方面相比与CB系统而言,是要占优的。
我们知道,写一个功能可能只要一两天,debug可能要一周。过去CB系统,不依靠编辑器的话,你得手动检查,如果要在中间插入什么指令的话,还得整体移动CB,实际工作效率是十分感人的;借助于编辑器,我们可以通过ooc导入的方式来实现快速修改
而函数系统呢?你需要改点什么,直接去翻文件改,改完了保存一下,再在游戏里通过/reload指令直接刷新,完事儿了。游戏都不用退出重进。
但凡地图制作者,知道了这些,都应该会心动的吧。
讲了这么多,相信大家对新系统也有一定的了解了,说不定已经激动得说不出话来了吧,那么更多内容就请大家自行去体验一下吧。在接下来的更新里,没准还会多出什么意想不到的东西呢!
更多相关资讯请关注:我的世界专题