自動化 Steam 遊戲

雙劍版全套洋蔥裝備
雙劍版全套洋蔥裝備

適用所有以 X11 系統為基礎渲染的 Steam 遊戲的自動化方式

接下來要介紹的方法是基於 X11 的系統發展出來的,意即所有遊戲都可以透過類似的概念作到自動化,只要這些遊戲的渲染是透過 X11 的機制完成。

這則貼文以 2021 時在 Steam 上推出的最終幻想三代(太空戰士三代, Finaly Fantasy III )的像素復刻版 ( Pixel Remaster , PR )為例。這個方法可以用在像是練功累積經驗值、職業熟練度,與蒐集低機率掉落的寶物,像是水晶塔中的黃、綠、紅龍才會掉落的洋蔥系列裝備。我用這個方法把所有角色練到等級 99 並且蒐集到所有的洋蔥裝備。

如果你已經對於什麼是 X11 系統有一點概念,你可以直接參考這段在 gist 上的程式碼來自動化練功。

你的系統是 X11 為基礎的系統嗎?

因為這個自動化方法是基於 X11 系統發展出來的,首先要知道自己的系統是否支援 X11 ,才能知道這方法是否適用自己; Ubuntu 預設是一個支援 X11 的系統。你可以參閱維基百科鳥哥的網站上對於 X11 (或說是 X Window System )的介紹。

簡單來說,X Window 系統採用主從架構,亦即有一個 X server 會跟 X client 溝通。在 Ubuntu 上, Steam 會把遊戲畫面渲染成眾多 X client 的其中一個。這其實就是說,任何支援自動化操作 X server 的工具,其實都可以自動化遊戲、自動化練功;例如 xdotool

如果你是 Mac 的使用者,則是要看你的 OS X 是哪一個版號,從早期的 10.02 ( Jaguar )到 10.07 ( Lion )與比較新的 10.8 ( Mountain Lion ),分別對 X11 有不同的相容與支援程度;可以參考這則維基百科查看 OS X 對 X11 的支援程度。理論上 10.5 、 10.6 與 10.7 應該可以直接套用 xdotool 的方法,其他版本可能也可以,只是多少會有支援度差異。實際上我沒有親自試過,也歡迎大家分享實測經驗。

如果你是微軟視窗系統使用者,理論上你也可以採用這個方法,只是你要先在你的電腦裡安裝你的 X server ,並且試著讓 Steam 渲染到 X client 上,而不是你的視窗系統預設的視窗畫面。我沒有自己真的試過這個解法,如果有人有試過並且願意和大家分享,那就太棒了。

對於 Linux 的使用者,我自己使用版號 Proton-6.21-GE-2 的 Proton-GE 相容層技術,在我的 Ubuntu 上玩最終幻想三代 Steam PR。透過 xdotool 自動化的方法運作得很順暢。

以 Ubuntu 上的 xdotool 為例

如果你是 Ubuntu 使用者,你可以直接參考這段在 gist 上的程式碼來自動化你的遊戲、自動化練功;我自己也是用這段程式碼在 FF III 裡面練功、刷洋蔥裝備。目前大多 Linux 桌面發行版,大多都是預設支援 X11 ,例如 Debian 、 Fedora 等等;亦即同一段程式碼與概念可以直接適用。

一些使用上的小技巧與注意事項

在用這個給 FF III 練功的自動化時,有一些小技巧可以留意,讓自己練功刷洋蔥裝備的過程中更順暢:

與大家分享不同的自動化情境

這段 我用在 FF III 練功刷寶物的程式碼還相當陽春,並且是完全限定在 FF III 的操作方式上。理論上任何基於 xdotool 這類方式的自動化,因為等同於直接模擬玩家的輸入,所以可以用在任何所有可能的遊戲情境中。唯一要做的就是客製化不同遊戲中不同輸入方法的順序與邏輯。歡迎與大家透過開 pull request 或是送補丁給我,來分享你已經客製化、用於其他 FF III 情境、甚至其他遊戲的自動化。

最後,祝大家練功愉快!!

等級 99 的洋蔥劍士
等級 99 的洋蔥劍士