Orbit_Wars

發佈日期:2026-05-08

曾竑勳

理工學院

資訊工程學系

 

 

這次參加 Kaggle Orbit Wars 線上競賽,對我來說比較像是一次真正把程式拿去實戰測試的經驗。這個競賽不是單純丟資料進模型,然後看準確率多少,而是要自己寫一個 agent,讓它在每一回合根據目前的局勢自動做決定。像是要不要派兵、要打哪一顆星球、要派多少船、路線會不會有問題,這些都要靠程式自己判斷。也因為這樣,我覺得這次比較不像一般課堂作業,而是更接近實際解決問題的過程。

一開始我想得比較簡單,覺得只要找最近的中立星球,然後船夠就派出去打,應該就可以慢慢擴張。可是實際跑了之後才發現,這樣其實很容易變成無效攻擊。因為遊戲裡有些星球會繞著太陽旋轉,艦隊又是直線飛行,如果只是瞄準星球現在的位置,等船飛到的時候,星球可能早就跑掉了。而且中間還有太陽,如果路線剛好穿過太陽,艦隊就會直接被毀掉,等於白白浪費兵力。

後來我開始觀察 replay,才慢慢發現比較好的策略不是一直追正在離開的星球,而是要打正在靠近自己的星球。還有如果自己的星球本身也在旋轉,就可以順著旋轉方向發射艦隊,這樣艦隊比較容易跟上前面的目標,而不是一直打到旁邊或後面。這些細節讓我發現,這個競賽看起來只是遊戲,但其實裡面有很多判斷邏輯,像是距離、產能、兵力、速度、未來位置跟風險都要一起考慮,不能只用單一條件去決定。

這次對我最大的幫助,是讓我更知道怎麼從失敗裡面找問題。剛開始我的 agent 分數沒有很好,但程式本身沒有報錯,這其實比單純錯誤還麻煩,因為它不是不能跑,而是跑得不好。這時候就不能只看程式有沒有執行成功,而是要去看它到底做了什麼不好的決定。我一開始只是覺得我的船送出去都很廢,好像有動作但沒有什麼效果,後來才慢慢拆開看,可能是派兵太少打不下來,也可能是打到低產值星球,就算打下來也不值得,還有可能是追著正在遠離的星球跑,結果艦隊飛很久才到,甚至還沒到局勢就已經變了。

這個過程讓我學到,遇到問題不能只用感覺改程式,而是要先找出真正原因,再針對那個地方調整。Kaggle 的分數也不一定每次都很穩定,因為對手跟地圖都有隨機性。有時候改完覺得應該變強,結果分數反而掉,剛開始會有點煩,但後來也比較能接受這種情況。這讓我學到不能只看單次提交的分數,而是要多測幾場,看整體表現是不是比較穩。這次經驗讓我在解決問題的邏輯、除錯方式,還有面對分數起伏時的耐心上都有進步。

獎助金對我來說不只是補助而已,也讓我比較有理由把這件事完整做下去。因為如果只是自己隨便玩一下,可能丟一次提交、看到分數不高就算了。但這次因為有獎助金支持,我會比較認真去理解競賽規則,也會想辦法把整個流程弄清楚,像是 Kaggle 怎麼提交、本地端怎麼測試、replay 怎麼看、logs 跟 replay 差在哪裡,這些都是實際做了才會遇到的問題。

這次參與也讓我接觸到比較接近實務的開發流程。不是像課堂作業那樣,只要寫出指定功能就結束,而是要一直測試、觀察、修改,再重新確認效果。過程中也遇到環境安裝問題,例如套件版本、Windows 路徑限制、Kaggle CLI 設定等等,雖然這些跟策略本身沒有直接關係,但其實也是實作能力的一部分。對我來說,這次經驗讓我更清楚自己還有哪些地方可以加強,像是策略設計、模擬能力、程式除錯,還有從 replay 裡看出問題的能力,這些都不是只看課本就能學會的。獎助金讓我有機會把課堂上學到的程式能力拿到真實競賽裡面試,也讓我更有動力去把一個東西從能跑,慢慢改到比較合理、比較有效。這次參與雖然過程中有很多卡住的地方,但也讓我真的學到不少。