游戏《太空工程师》自动采矿船使用教程

一切为了生产力!

运行模式详看视频,船虽不同,不过模式没变。


具体流程:
这个原本是想给自己也想尝试写一写飞控的人去参考的,所以放到了最后,但具体使用起来发现:如果不了解流程,直接对着按键说明使用,会出现很错问题。如果要从程序上去做完整的闭环太困难,所以这里明确一点——请想使用该脚本的太空工程师们认真走一走这个流程图。
Mode——模式,Stage——阶段。模式的级别比阶段的级别高。飞船自动飞行时,是先看飞船在哪个模式下,然后再看飞船在哪个阶段。
模式有:出发(depart),返回(back),停止(stop)。
不同的模式和阶段,飞向的目标点不同。粗略地看,每个阶段都会有出发和返回两种模式。
阶段1和2就是基地里头的那两步操作。
阶段3主要是来回基地和矿区,或者在矿区里转移钻点位。所以阶段3是最常用的。一般设置成阶段3也会相对比较安全,不容易和其它物品发生碰撞。
阶段4开始以及往后的全都是在矿区里的操作。


具体使用的时候常出现的问题可能是阶段不对,这个可以直接通过飞船自带的LCD查看。问题原因一般是设置完点之后,直接点了出发(depart)。由于前一个操作是手动模式(Mode=stop),该模式下不会对Stage进行修改,因此在点stop之前,Stage是多少,那就会一直是多少。这时,搞完别的操作再点depart,它是不会去考虑当前操作者的想法去实施的。此时的做法是点okr即可,就是那个一键返回。它就会进入程序执行的正轨,开始执行程序的全部操作。但必需将飞船拉高一点,让飞船返回基地的直线路径上不会有其它的东西碍,避免撞机。因些,最好是先把基地的那三个点设置好,并在CUSTOMDATA里确认一下座标参数。然后再跑矿区设置点。
如果飞船还是乱跑,可以看看Target Position它往哪跑了,如果X,Y,Z都是0,说明点在设置的时候没设置到位,还是默认值。

按键说明:

Control + 1:
1:stop -- 停止当前工作。如果再按 depart 或 back 工作会继续。如果想手动控制飞船,就先点这个。脚本的执行有点类似PLC,会有个扫描周期,有可能当前按下去没被程序接收到,所以可以多按几下,也可以在飞船自带的LCD上确认一下Mode是不是=stop。
2:depart -- 出发。
3:back -- 返回。如果飞船在矿坑当中,它会自动提升到 DrillApproachPoint 后再返回。
8:unlock(ul) -- 解锁。船在自动模式下锁定在连接器之后,会自动将推进器关闭,将电池改为充电模式,将氢气罐改为充气模式。如果此时想手动操作飞船,需要点此按钮,会自动将推进器启动,电池改为自动模式,氢气罐取消充气模式。就类似一个唤醒操作,否则飞船在解锁后会直接掉地上。(注意这里的解锁并非将连接器解锁,仍需手动解锁。主要是为了防止出意外,比如气或电不足的时候点了解锁,如果此时点了解锁可以在游戏的控制面板里将电池和气罐改了充气。)
9:onekeyreturn(okr) -- 一键返回,如果飞船在空中,且不在 stage=3 的阶段,按下此按键,会改为返回模式 ,同时将 stage 设为3。这个主要是方便设置完矿区之后一键返回。也可以替代一部分的复位功能。它和返回(back)的不同之处是返回会沿着当前的stage一步步走下去,而一键返回(okr)则是会强制飞船执行stage3的返回。

Control + 2:
1:stop -- 和 Control + 1 里的一样.
3:docking point -- 设置飞船停靠点。在自动模式下到达该点后,飞船会自被连接器锁定。
4:Approach point 1 -- 和 docking point 同一高度的点,距离 docking point 大概15到20米左右,不用太精确。主要是为了返回时能把方向拉正,太近了飞船有可能不会将朝向对准连接器就平移过去,造成无水与连接器锁定。太远的话浪费时间。从 Approach point 1 到 docking point 这段距离的速度是相当慢的。
5:Approach point 2 -- 在 Approach point 1 上的点,主要是为了飞船离开时,先提升一个高度,如果不需要提升,可以在按下 Approach point 1 之后,直接按 Approach point 2 这样两个点就设在同一个位置,程序上是不影响,只是为了防止和基地的其它物品相撞。

Control + 3:
1:stop -- 和 Control + 1 里的一样.
3:mine field 1 -- 设置矿区的第一个角点。矿区是一个平行四边行,需要设置其三个角点。
4:mine field 2 -- 设置矿区的第二个角点。
5:mine field 3 -- 设置矿区的第三个角点。该按钮同时会在一个四边形区域内计算出一系列的一钻点,飞船将会按照这些点的顺序,一个一个飞到这些点的上空,开始向下钻。由于这些点可能数据量巨大,所以直接存在 storage 当中,在游戏中无法接触到。
6:calculate mine field grid -- 为了方便数据复用。程序当中的一些重要参数会以 ini 格式存在编程块的 CustomData 中,建议设置完所有点之后,手动复制一份到一个不容易损坏的地方存起来,比如一块LCD。当编程块重建之后,可以将这些数据重新拷进编程块的 CustomData ,然后点该按钮,这样就可以继续使用,不需要重新一个一个地设置点。

参数设置说明:

【ShipInformation】是有关船的一些自身的属性。这些除了最后两项 ThrustPower 和 Thrust Power Correction Factor 不需要去找对应的块把名字改过来,其余都要相同。
ShipName:船的无线电呼号。这个与IGC通信有关。
Cockpit:驾驶舱,这个是姿态调整用的,接下来可能会被放弃,直接使用Remote Control来调整。目的其实是减少出错。因为ShipInformation里头的这些项如果和实际对应项的名称对不上,程序会报错。(目前程序已经可以自动搜索驾驶舱,所以现在这个参数可以不用理会)
PanelName:显示船只信息的显示屏的名称。下一步准备是使用代码自动搜索,将船上的LCD面板找到然后直接使用,不再需要手动核对名称。(目前程序已经可以自动搜索驾驶舱,所以现在这个参数可以不用理会)
AutoPilotName:远程控制器的名称,因为使用了两个,所以暂时只能手动核对名称。使用两个远程控制器的原因是为了能够在船自动驾驶的时候,仍能通过远程模块实现对船的指挥,否则只有一个远程控制块,船在自动飞行时,将无法远程对其发指令。也就是说,Remote Control 1 是主控,而 Remote Control 2 是1的其中一个被控设备。通过1,可以实现在自动飞行状态下,将2的自动飞行状态改为关闭。
Connector:连接器。
ThrustPower:单个推进器的推力,如果有大有小,随便调一个就行,这里是我查到的小船块的大氢推的单个推力,400000N。这个是为了给飞船计算刹车距离用的。程序会自己获取飞船当前总重,和向前喷射的推进器的个数。(在V2.0版本里不起作用)
Thrust Power Correction Factor:这个是用来修正推进器推力的,因为可能会有多个不同规格的推进器,所以根据 ThrustPower 一个参数计算出来结果需要修正。该参数修正所需的刹车距离,当距离目标点小于该距离后,飞船会开始减速。这个参数是一个比值,1就是不变,大于1刹车变弱;小于1刹车变强。(在V2.0版本里不起作用)
【Mission】是工作时的一些参数。
Mode:模式。我将飞船的状态分为了三种模式。depart——出发去工作。back——返回连接器。stop——中断当前任务。飞船停在当前位置,按了 stop 之后,再按 depart 或者 back 会继续 stop 之前的任务。
stage:飞船的飞行阶段。我将采矿的所有工作分成了多个阶段。
speedLimit:飞船限速。
Height:飞船飞临矿区时所在的高度。
Depth:钻孔深度。
DrillPointNum:显示当前任务下钻到了第几个钻点。主要是用来回来倒货和充电之后,再矿区找回原来在钻的点,继续原来的钻点位置。当它为零的时候,会回到连接器。
DrillPointTotal:显示总共有多少个钻点要去钻。
Interval:设置每个钻点的间隔距离。

DockingPoint:停船点。与连接器连接的点。
ApproachPoint1 和 2 分别提两个接近点。DP 和 AP1 大致应该设置同一水平高度,飞船回程时可以从 AP1 平移到 DP,出发时,可以从 DP 平衡到 AP1。

MineField1、2和3分别是矿区平行四边形的三个角点。
Ze是根据这些角点算出的一个单位向量,这个以及往后的都不用管。
其中,ApproachPoint1 和 2,MineField1、2和3总共5个点,在生成,并检查确认无误后,最好是在连接器附近建一个LCD面板,将这些参数复制过去,方便船损之后的数据复用,减少重新设点的麻烦。

如果自己想移植脚本,需要注意以下几点:
陀螺仪的方向需要全部一致,指向需按下图所示安装。

倒货到基地的功能要配合货箱的命名:Ore and Ice Cache。可以多个同名,满了一个,会自动倒到下一个。
按键位置,注意字母全要大写。


V2.0脚本特性:
针对服务器节省运算的要求,编程块的更新频率降低,取消了脚本内的刹车控速的代码,将速度交由远程控制块完全控制。刹车性能会变差,会过冲,速度最好不要超过20m/s。
增加当前点位置记录。在矿坑内的未挖到结束点需要返航时,可记录当前点再返航,完成卸货或补充燃料后,会从当前记录点开始,而不需要从0深度重新低速向下挖,减少空行程,提高挖矿效率。