打包工厂 萌新第一个mod,请大家多支持
异星工厂吧
全部回复
仅看楼主
level 10
zhuyw05 楼主
h ttps://mods.factorio.com/mod/MegaPackFactory
众所周知,玩大型mod,UPS是绕不过去的痛点(说的就是你PY)。很多兄弟们玩到UPS只剩30-40就不想再玩这个档了。而且,越是好玩的机制(比如LTN火车,传送带分流器)越耗UPS。
我曾开过一贴,当时用的办法是魔改factory planner让它输出量化信息写到文件上,再在场外用python脚本根据量化结果生成一个特定的制造机和特定的等效配方。我最后没有发布那个工作,因为看起来可能不错但是玩起来体验非常差
1 每做一个量化就要切出去生成然后重新加载进游戏。py这种mod很大进一次游戏2分钟
2 py非常讲究一个配方升级。新机器,新插件,新配方是老办法的几十倍效率。不得不对同样功能的模组反复做很多次,而且塞进去的机器和插件无法回收...
3 每个量化结果对应一种新机器和新配方,而mod内容随着游戏过程不停动态修改,一旦把之前的某一个实体定义cover了,原来的存档立刻崩溃...
当时讨论帖里,有几个朋友都提到了一个思路,就是实际摆出一个厂区然后用脚本去监控它们的生产和消耗,然后用一个大箱子代替这个厂区,用脚本控制移除,插入物品来模拟一个等效的投入产出。
当时学艺不精,不知道怎么实现。这两天按这个思路实现了一个mod。刚刚写完,估计bug较多,贴图和操作方式也很粗陋。放在官网上了,请有兴趣的小伙伴们多测试多提意见,以及谁有适合体积很大的厂区 (50*50,100*100,200*200)的贴图甚至动图,请回帖教我。非常感谢!
这个mod通过生成constant-combinator展示信息,有个副作用就是会把原版constant-combinator的slots扩到1000.
完全靠本身的脚本实现功能,不依赖任何mod也应该和所有mod兼容。
使用方法是这样的 分为以下4步
1 站在一片空地上,命令行里输入/M1 或/M2 或/M3 (Mark),标记以角色为中心,边长50/100/200的一片区域。如果标记成功,会生成一个石砖铺成的框框。同时会移除周围其它的石砖地面。
2 在这片区域内,铺设你的蓝图区块。当稳定运行时,输入/S (Start monitor)启动监控。如果成功,你应该会看到每一个机器在产出物品时有白字飘过。
3 一段时间后,输入/E (End_monitor)停止监控。成功的话,区块右侧会生成三个constant-combinator。内容是这片区域平均每分钟的产出,输入,以及里面包含的建筑物和插件。为了减少中间产物体现在净输入和净输出上,你可以启动后再投料,切断投料等中间产物消耗完毕再停止监控。当然这会损失一点点效率
4 如果对结果满意,输入/P 厂区内的所有建筑物会被摧毁,创建一个同等大小的巨大的箱子,有1500个slot。每分钟脚本会检查箱子里的物品,尝试扣除1分钟的输入并放入1分钟的产出。这个箱子可以用以上流程创建多个,但是不能套娃(因为它本身是箱子不是制造机),也不能用蓝图复制。因为这个箱子作为entity只会被脚本创建,不存在对应的item。
5 不需要或者需要升级它时,右键挖掉它,会在角色背包插入里面包含的机器。如果恰好你背包满了,那就无了。(当前版本如果你/P之前拆除机器,可以复制一份机器。后续可能会修改这一点,会增加一个判断,所有机器都在才允许创建)
6 当前版本尚未处理电力消耗,造出来的大箱子不耗电(可能后续会调整)。无法处理输入和输出的流体:如果你的净输出包含流体会被移除,净输入包含除了水以外的流体则无法创建。净输入的水会被忽略。但是生产过程中的流体是允许的。如果你确实需要某个区块输入流体,可以改成输入装满的桶?
7 当前版本不处理需要燃料运作的entity,等于所有的燃料是免费的(当然也得不到burnt result)。后续可能会改
基本就是这样。召唤勇于试毒的吧友~
2023年10月02日 16点10分 1
level 10
zhuyw05 楼主
补充说下。游戏里lua api可以读取每个机器的crafting_progress那个制造的进度条,但是无法读取产能加成的那个进度条。因此现在这个mod是这样处理的
1 读每个机器的基础产能(原版游戏里都是0)和所有提供产能的插件,计算机器实际产能,设为x。
2 读每个机器走完一次进度条,记录1份消耗和(1+x)份产出。
监控时间够长的话,结果是趋近真实的。太短就不好说了
还有,如果你的机器制造速度特别特别快,比如超过1秒20次(3个tick做完),有可能监控部分会出点bug。如果快到1个tick制造一次(即超过1秒60次),几乎肯定是要出bug的。
原则上这个mod支持不同的surface,但是太空站行不行我没试过(可能铺石砖那步会有bug?)。其它的星球按说应该没问题,按说吧...
建议不要放奇怪的东西进去,比如各种发电机,SE的飞船引擎什么的。
2023年10月02日 16点10分 2
level 10
zhuyw05 楼主
然后,感谢OPENAI感谢Chatgpt4,帮我写代码写文档[吐舌]。可能是异星的开源mod代码和文档不少都被Chatgpt4训练时用过,它特别会干这个。虽然有些东西会错,但是大体是靠谱的。
2023年10月02日 16点10分 3
level 9
真正的萌新想知道ups是什么东西?[呵呵]
2023年10月02日 23点10分 4
逻辑帧率,就是一秒钟可以更新游戏多少帧。 默认游戏是60帧每秒。如果你的UPS很高可以加速,让游戏处于2X ,4X甚至16X的速度。反之当你的工厂越改越大,十万个建筑(爪子,箱子,机器等等都算)时,甚至有可能60帧都维持不住,这时候游戏就会变得卡顿。
2023年10月03日 00点10分
level 8
我设想的是类似一个厂房mod的建筑,用蓝图设计厂内的各种流程,设计完后定型,然后直接厂房变成一个组装机,根据之前设计的厂房内蓝图来决定这个组装机厂房的工作效率,直接输入原材料,再输出成品,这种适合长流程复杂的大型mod,就是像黑盒整合成组装机了
2023年10月02日 23点10分 5
这是我最早的设想,你可以翻我以前的那个帖子。这个游戏的底座决定了data.lua和control.lua是分两步加载的,也就是说组装机,组装配方的定义必须在加载游戏时定死,不能在游戏运行时动态修改。这就是为什么我之前那个版本必须每次量化完就切出去改一次mod
2023年10月03日 00点10分
level 8
支持,加油!
2023年10月03日 02点10分 6
level 7
[真棒]
2023年10月03日 04点10分 7
level 8
楼主牛呀,很久之前就想要这种类型的mod了,加油别鸽了,还有少点bug
2023年10月03日 11点10分 8
哈?这不是已经发布了吗 第一行官网那个链接 官网搜名字也可以Mega Pack Factory
2023年10月03日 13点10分
可以,很具体,有bug没,不能带液体咋办?
2023年10月03日 15点10分
@范沛house 区域内可以使用有液体的配方,但总体不能有液体的净输入(水除外)。如果有液体的净输出会被抹去。如果需要液体净输入可以灌桶,在区域内倾倒。
2023年10月03日 16点10分
就是输入不用管子,用桶对吧
2023年10月03日 16点10分
level 10
zhuyw05 楼主
在官网上更新了一下,修了几个bug
现在这东西本质是一个绿箱子,意味着你可以连线输出内容物方便控制输入。但是,如果你不修改机器人站点覆盖范围,或者用mod,很可能没法用物流机器人送货,因为这个盒子太大了超过覆盖范围了....
2023年10月03日 13点10分 9
level 10
zhuyw05 楼主
上几个图。首先,输入M1/M2/M3 框一个标记区。
2023年10月03日 13点10分 10
level 10
zhuyw05 楼主
当你摆好蓝图后,输入/S 启动监控
2023年10月03日 13点10分 11
level 10
zhuyw05 楼主
如果成功,你应该看到每个机器在成功产出一次冒白字。左侧每个三秒输出一次当前整个区域的平均每分钟净输入和净输出。
2023年10月03日 13点10分 12
level 10
zhuyw05 楼主
一段时间后,输入/E结束监控。右侧出现三个constant-combinator 分别表示工厂平均每分钟净输出,净输入,以及区域内所有entity
2023年10月03日 13点10分 13
level 10
zhuyw05 楼主
如果合适,输入/P后,清空区域内一切物体,替换为一个大盒子。(如果不合适,重复/M过程即可。当然你也可以什么都不做,不会有影响。)
2023年10月03日 13点10分 14
level 10
zhuyw05 楼主
输入原料
2023年10月03日 13点10分 15
1 2 尾页