Dumb Game Lab

部落格 · 開發幕後

開發日誌 · 波折

修完要驗證卻等了 40 分鐘,5 秒的路一開始就在那裡

Justin Lee, Dumb Game Lab ·

史萊姆製作遊戲的鏡頭復位修正前後對比圖。同一個畫面並排六張,右下角看得到開發用建置的標示

如果測試用的建置只有一個,從烘焙地圖到執行確認全部跑完的完整建置,驗證一個 bug 就要 40 分鐘。只改了程式碼的話,改走只重新編譯腳本 DLL 的快速版,同樣的驗證 5 秒就結束了。測試迴圈該先做快速版,完整建置留到最後只跑一次。

10 月 27 日,同一句話說了兩次

那天我修好了測試用 PC 的失格 bug。為了驗證修好的版本去跑建置,結果是要烘焙 5 張地圖、還要做執行確認的完整建置,一次就要 40 分鐘。

下午 4 點 51 分,我說出「怎麼這麼久,不能不要建置,直接開發模式嗎」。下午 6 點 7 分又說「真的好久,拜託快一點」。兩次說的都沒錯。

後來我試著跑只改程式碼時只編譯腳本 DLL 的快速版腳本,5 秒就結束了。那條路一開始就有,是我沒有用。

夾在 40 分鐘和 5 秒之間的東西

把完整建置做的事拆開來看,是烘焙地圖、製作播放器,還有執行看看有沒有正常啟動。接近出貨的時候,這些全都需要。

但這次改的只是失格判定的幾行程式碼。地圖明明沒變,卻還是重烘了 5 張。我想確認的只有「改過的程式碼有沒有正確運作」這一件事,為了看這個,其他全部都陪著等了 40 分鐘。

快速版把這些過程拿掉了。只把改過的腳本編譯成 DLL,先前烘好的成果直接沿用。同樣的驗證只花了 5 秒。

完整建置快速版
做的事烘焙 5 張地圖 + 製作播放器 + 執行確認編譯改過的腳本 DLL
花的時間約 40 分鐘約 5 秒
使用時機接近出貨、地圖有改的時候只改了程式碼的時候

一天能修幾次

我自己算算看。就算假設一天 8 小時全部拿來跑建置,40 分鐘的版本也只能跑 12 次出頭。也就是說,驗證、修改、再驗證的循環,一天超不過 12 次。換成 5 秒的版本,一個循環連 1 分鐘都不用。

bug 不會一次就抓到。修了,錯了,再修,又錯。循環的次數就是一天能抓到的 bug 數。那天我損失的不是 40 分鐘,而是一天裡大部分能跑的循環。

這個數字是用日記上寫的 40 分鐘、5 秒,加上 8 小時的假設算出來的。實際上一天跑了幾次,我並沒有數過。

史萊姆製作遊戲的第一張訂單畫面,共四張。同一段提示文字下,星形麵團伸展又縮回
確認修改結果的截圖,一次會擷取好幾張。循環要 40 分鐘的話,光這一張也是 40 分鐘。

原因出在順序

一開始建立測試迴圈的時候,我並不是照「快速版先做,完整建置後做」的順序來設計的。只有一個完整建置。快速版是我火大之後,才跟著開發模式開關一起出現的。

我不是要怪誰,講的是結構。測試迴圈一慢,人就會少做驗證。驗證變少,就在不知道修得對不對的情況下去做下一件事。慢的迴圈不只是慢而已,最後會讓人乾脆不驗證。

新的測試對象一開始就先做的順序

從這天起,新的測試對象我都照這個順序來建迴圈。

每套引擎的名稱不同,但都有類似的路。Unity 的話,開發用建置裡有只重新建置腳本的選項,編輯器的 Play Mode 選項也可以跳過 Domain Reload。不管走哪一邊,重點都一樣:第一天就把「只重做有改的部分」的路準備好。

  • 第一天:先做出只改程式碼的版本能在幾秒內跑起來的路(快速版,在編輯器直接執行)
  • 第二:開發模式開關。把烘焙地圖、長動畫、廣告這些跟驗證無關的東西關掉
  • 最後:完整建置只在接近出貨和地圖有改的那天才跑
  • 每個測試迴圈都先量一次「這個驗證要幾秒」

還沒修好的部分

快速版腳本和開發模式開關是做出來了,但要求新的測試對象第一天就先鋪快速版的規則或檢查,目前還沒有。現在只是寫在一張工單上的決心而已。下一個測試對象第一天會不會真的鋪好,到時候再確認。

FAQ

遊戲建置時間太久,要怎麼縮短?

先把完整建置做的事拆開來看。如果只改了程式碼,烘焙地圖和處理資源就不需要重做。另外做一個只編譯改過腳本的快速版,完整建置只在接近出貨時才跑,一次驗證就能從 40 分鐘縮到 5 秒。

有只重新建置腳本的方法嗎?

Unity 的開發用建置有只重新建置腳本的選項,前提是之前已經做過播放器。在編輯器裡,也可以用 Play Mode 選項跳過 Domain Reload。每套引擎的名稱不一樣,請到你用的引擎文件裡找「增量建置」或「只建置腳本」。

只用快速版不行嗎?

不行。快速版是用來確認程式碼的,看不到地圖、資源和實際的播放器執行。接近出貨和地圖有改的那天,還是跑一次完整建置,把兩邊對一對比較安全。

更多文章

新遊戲與小消息,大約每月一封。

其他語言English한국어日本語繁體中文