游戲《太空工程師》自動(dòng)采礦船使用教程

一切為了生產(chǎn)力!

運(yùn)行模式詳看視頻,船雖不同,不過模式?jīng)]變。


具體流程:
這個(gè)原本是想給自己也想嘗試寫一寫飛控的人去參考的,所以放到了最后,但具體使用起來(lái)發(fā)現(xiàn):如果不了解流程,直接對(duì)著按鍵說明使用,會(huì)出現(xiàn)很錯(cuò)問題。如果要從程序上去做完整的閉環(huán)太困難,所以這里明確一點(diǎn)——請(qǐng)想使用該腳本的太空工程師們認(rèn)真走一走這個(gè)流程圖。
Mode——模式,Stage——階段。模式的級(jí)別比階段的級(jí)別高。飛船自動(dòng)飛行時(shí),是先看飛船在哪個(gè)模式下,然后再看飛船在哪個(gè)階段。
模式有:出發(fā)(depart),返回(back),停止(stop)。
不同的模式和階段,飛向的目標(biāo)點(diǎn)不同。粗略地看,每個(gè)階段都會(huì)有出發(fā)和返回兩種模式。
階段1和2就是基地里頭的那兩步操作。
階段3主要是來(lái)回基地和礦區(qū),或者在礦區(qū)里轉(zhuǎn)移鉆點(diǎn)位。所以階段3是最常用的。一般設(shè)置成階段3也會(huì)相對(duì)比較安全,不容易和其它物品發(fā)生碰撞。
階段4開始以及往后的全都是在礦區(qū)里的操作。


具體使用的時(shí)候常出現(xiàn)的問題可能是階段不對(duì),這個(gè)可以直接通過飛船自帶的LCD查看。問題原因一般是設(shè)置完點(diǎn)之后,直接點(diǎn)了出發(fā)(depart)。由于前一個(gè)操作是手動(dòng)模式(Mode=stop),該模式下不會(huì)對(duì)Stage進(jìn)行修改,因此在點(diǎn)stop之前,Stage是多少,那就會(huì)一直是多少。這時(shí),搞完別的操作再點(diǎn)depart,它是不會(huì)去考慮當(dāng)前操作者的想法去實(shí)施的。此時(shí)的做法是點(diǎn)okr即可,就是那個(gè)一鍵返回。它就會(huì)進(jìn)入程序執(zhí)行的正軌,開始執(zhí)行程序的全部操作。但必需將飛船拉高一點(diǎn),讓飛船返回基地的直線路徑上不會(huì)有其它的東西礙,避免撞機(jī)。因些,最好是先把基地的那三個(gè)點(diǎn)設(shè)置好,并在CUSTOMDATA里確認(rèn)一下座標(biāo)參數(shù)。然后再跑礦區(qū)設(shè)置點(diǎn)。
如果飛船還是亂跑,可以看看Target Position它往哪跑了,如果X,Y,Z都是0,說明點(diǎn)在設(shè)置的時(shí)候沒設(shè)置到位,還是默認(rèn)值。

按鍵說明:

Control + 1:
1:stop -- 停止當(dāng)前工作。如果再按 depart 或 back 工作會(huì)繼續(xù)。如果想手動(dòng)控制飛船,就先點(diǎn)這個(gè)。腳本的執(zhí)行有點(diǎn)類似PLC,會(huì)有個(gè)掃描周期,有可能當(dāng)前按下去沒被程序接收到,所以可以多按幾下,也可以在飛船自帶的LCD上確認(rèn)一下Mode是不是=stop。
2:depart --?出發(fā)。
3:back -- 返回。如果飛船在礦坑當(dāng)中,它會(huì)自動(dòng)提升到?DrillApproachPoint?后再返回。
8:unlock(ul) --?解鎖。船在自動(dòng)模式下鎖定在連接器之后,會(huì)自動(dòng)將推進(jìn)器關(guān)閉,將電池改為充電模式,將氫氣罐改為充氣模式。如果此時(shí)想手動(dòng)操作飛船,需要點(diǎn)此按鈕,會(huì)自動(dòng)將推進(jìn)器啟動(dòng),電池改為自動(dòng)模式,氫氣罐取消充氣模式。就類似一個(gè)喚醒操作,否則飛船在解鎖后會(huì)直接掉地上。(注意這里的解鎖并非將連接器解鎖,仍需手動(dòng)解鎖。主要是為了防止出意外,比如氣或電不足的時(shí)候點(diǎn)了解鎖,如果此時(shí)點(diǎn)了解鎖可以在游戲的控制面板里將電池和氣罐改了充氣。)
9:onekeyreturn(okr) --?一鍵返回,如果飛船在空中,且不在 stage=3 的階段,按下此按鍵,會(huì)改為返回模式 ,同時(shí)將 stage 設(shè)為3。這個(gè)主要是方便設(shè)置完礦區(qū)之后一鍵返回。也可以替代一部分的復(fù)位功能。它和返回(back)的不同之處是返回會(huì)沿著當(dāng)前的stage一步步走下去,而一鍵返回(okr)則是會(huì)強(qiáng)制飛船執(zhí)行stage3的返回。

Control + 2:
1:stop --?和?Control + 1?里的一樣.
3:docking point --?設(shè)置飛船停靠點(diǎn)。在自動(dòng)模式下到達(dá)該點(diǎn)后,飛船會(huì)自被連接器鎖定。
4:Approach point 1 --?和 docking point?同一高度的點(diǎn),距離 docking point?大概15到20米左右,不用太精確。主要是為了返回時(shí)能把方向拉正,太近了飛船有可能不會(huì)將朝向?qū)?zhǔn)連接器就平移過去,造成無(wú)水與連接器鎖定。太遠(yuǎn)的話浪費(fèi)時(shí)間。從?Approach point 1?到?docking point?這段距離的速度是相當(dāng)慢的。
5:Approach point 2 --?在?Approach point 1?上的點(diǎn),主要是為了飛船離開時(shí),先提升一個(gè)高度,如果不需要提升,可以在按下?Approach point 1?之后,直接按?Approach point 2?這樣兩個(gè)點(diǎn)就設(shè)在同一個(gè)位置,程序上是不影響,只是為了防止和基地的其它物品相撞。

Control + 3:
1:stop --?和?Control +?1?里的一樣.
3:mine?field 1?--?設(shè)置礦區(qū)的第一個(gè)角點(diǎn)。礦區(qū)是一個(gè)平行四邊行,需要設(shè)置其三個(gè)角點(diǎn)。
4:mine?field 2?--?設(shè)置礦區(qū)的第二個(gè)角點(diǎn)。
5:mine?field 3?--?設(shè)置礦區(qū)的第三個(gè)角點(diǎn)。該按鈕同時(shí)會(huì)在一個(gè)四邊形區(qū)域內(nèi)計(jì)算出一系列的一鉆點(diǎn),飛船將會(huì)按照這些點(diǎn)的順序,一個(gè)一個(gè)飛到這些點(diǎn)的上空,開始向下鉆。由于這些點(diǎn)可能數(shù)據(jù)量巨大,所以直接存在 storage?當(dāng)中,在游戲中無(wú)法接觸到。
6:calculate mine field grid --?為了方便數(shù)據(jù)復(fù)用。程序當(dāng)中的一些重要參數(shù)會(huì)以 ini 格式存在編程塊的?CustomData?中,建議設(shè)置完所有點(diǎn)之后,手動(dòng)復(fù)制一份到一個(gè)不容易損壞的地方存起來(lái),比如一塊LCD。當(dāng)編程塊重建之后,可以將這些數(shù)據(jù)重新拷進(jìn)編程塊的?CustomData ,然后點(diǎn)該按鈕,這樣就可以繼續(xù)使用,不需要重新一個(gè)一個(gè)地設(shè)置點(diǎn)。

參數(shù)設(shè)置說明:

【ShipInformation】是有關(guān)船的一些自身的屬性。這些除了最后兩項(xiàng) ThrustPower 和?Thrust Power Correction Factor?不需要去找對(duì)應(yīng)的塊把名字改過來(lái),其余都要相同。
ShipName:船的無(wú)線電呼號(hào)。這個(gè)與IGC通信有關(guān)。
Cockpit:駕駛艙,這個(gè)是姿態(tài)調(diào)整用的,接下來(lái)可能會(huì)被放棄,直接使用Remote Control來(lái)調(diào)整。目的其實(shí)是減少出錯(cuò)。因?yàn)镾hipInformation里頭的這些項(xiàng)如果和實(shí)際對(duì)應(yīng)項(xiàng)的名稱對(duì)不上,程序會(huì)報(bào)錯(cuò)。(目前程序已經(jīng)可以自動(dòng)搜索駕駛艙,所以現(xiàn)在這個(gè)參數(shù)可以不用理會(huì))
PanelName:顯示船只信息的顯示屏的名稱。下一步準(zhǔn)備是使用代碼自動(dòng)搜索,將船上的LCD面板找到然后直接使用,不再需要手動(dòng)核對(duì)名稱。(目前程序已經(jīng)可以自動(dòng)搜索駕駛艙,所以現(xiàn)在這個(gè)參數(shù)可以不用理會(huì))
AutoPilotName:遠(yuǎn)程控制器的名稱,因?yàn)槭褂昧藘蓚€(gè),所以暫時(shí)只能手動(dòng)核對(duì)名稱。使用兩個(gè)遠(yuǎn)程控制器的原因是為了能夠在船自動(dòng)駕駛的時(shí)候,仍能通過遠(yuǎn)程模塊實(shí)現(xiàn)對(duì)船的指揮,否則只有一個(gè)遠(yuǎn)程控制塊,船在自動(dòng)飛行時(shí),將無(wú)法遠(yuǎn)程對(duì)其發(fā)指令。也就是說,Remote Control 1?是主控,而?Remote Control 2?是1的其中一個(gè)被控設(shè)備。通過1,可以實(shí)現(xiàn)在自動(dòng)飛行狀態(tài)下,將2的自動(dòng)飛行狀態(tài)改為關(guān)閉。
Connector:連接器。
ThrustPower:?jiǎn)蝹€(gè)推進(jìn)器的推力,如果有大有小,隨便調(diào)一個(gè)就行,這里是我查到的小船塊的大氫推的單個(gè)推力,400000N。這個(gè)是為了給飛船計(jì)算剎車距離用的。程序會(huì)自己獲取飛船當(dāng)前總重,和向前噴射的推進(jìn)器的個(gè)數(shù)。(在V2.0版本里不起作用)
Thrust Power Correction Factor:這個(gè)是用來(lái)修正推進(jìn)器推力的,因?yàn)榭赡軙?huì)有多個(gè)不同規(guī)格的推進(jìn)器,所以根據(jù)?ThrustPower?一個(gè)參數(shù)計(jì)算出來(lái)結(jié)果需要修正。該參數(shù)修正所需的剎車距離,當(dāng)距離目標(biāo)點(diǎn)小于該距離后,飛船會(huì)開始減速。這個(gè)參數(shù)是一個(gè)比值,1就是不變,大于1剎車變?nèi)?;小?剎車變強(qiáng)。(在V2.0版本里不起作用)
【Mission】是工作時(shí)的一些參數(shù)。
Mode:模式。我將飛船的狀態(tài)分為了三種模式。depart——出發(fā)去工作。back——返回連接器。stop——中斷當(dāng)前任務(wù)。飛船停在當(dāng)前位置,按了 stop 之后,再按 depart 或者 back?會(huì)繼續(xù) stop?之前的任務(wù)。
stage:飛船的飛行階段。我將采礦的所有工作分成了多個(gè)階段。
speedLimit:飛船限速。
Height:飛船飛臨礦區(qū)時(shí)所在的高度。
Depth:鉆孔深度。
DrillPointNum:顯示當(dāng)前任務(wù)下鉆到了第幾個(gè)鉆點(diǎn)。主要是用來(lái)回來(lái)倒貨和充電之后,再礦區(qū)找回原來(lái)在鉆的點(diǎn),繼續(xù)原來(lái)的鉆點(diǎn)位置。當(dāng)它為零的時(shí)候,會(huì)回到連接器。
DrillPointTotal:顯示總共有多少個(gè)鉆點(diǎn)要去鉆。
Interval:設(shè)置每個(gè)鉆點(diǎn)的間隔距離。

DockingPoint:停船點(diǎn)。與連接器連接的點(diǎn)。
ApproachPoint1?和 2?分別提兩個(gè)接近點(diǎn)。DP 和 AP1?大致應(yīng)該設(shè)置同一水平高度,飛船回程時(shí)可以從 AP1?平移到 DP,出發(fā)時(shí),可以從 DP?平衡到 AP1。

MineField1、2和3分別是礦區(qū)平行四邊形的三個(gè)角點(diǎn)。
Ze是根據(jù)這些角點(diǎn)算出的一個(gè)單位向量,這個(gè)以及往后的都不用管。
其中,ApproachPoint1?和 2,MineField1、2和3總共5個(gè)點(diǎn),在生成,并檢查確認(rèn)無(wú)誤后,最好是在連接器附近建一個(gè)LCD面板,將這些參數(shù)復(fù)制過去,方便船損之后的數(shù)據(jù)復(fù)用,減少重新設(shè)點(diǎn)的麻煩。

如果自己想移植腳本,需要注意以下幾點(diǎn):
陀螺儀的方向需要全部一致,指向需按下圖所示安裝。

倒貨到基地的功能要配合貨箱的命名:Ore and Ice Cache??梢远鄠€(gè)同名,滿了一個(gè),會(huì)自動(dòng)倒到下一個(gè)。
按鍵位置,注意字母全要大寫。


V2.0腳本特性:
針對(duì)服務(wù)器節(jié)省運(yùn)算的要求,編程塊的更新頻率降低,取消了腳本內(nèi)的剎車控速的代碼,將速度交由遠(yuǎn)程控制塊完全控制。剎車性能會(huì)變差,會(huì)過沖,速度最好不要超過20m/s。
增加當(dāng)前點(diǎn)位置記錄。在礦坑內(nèi)的未挖到結(jié)束點(diǎn)需要返航時(shí),可記錄當(dāng)前點(diǎn)再返航,完成卸貨或補(bǔ)充燃料后,會(huì)從當(dāng)前記錄點(diǎn)開始,而不需要從0深度重新低速向下挖,減少空行程,提高挖礦效率。