作爲非科班出生、無完整軟件工程經驗、第一次做遊戲的單人開發者,我最恐懼的事情就是,別人下載了遊戲,卻玩出了死機之類的惡性BUG。
周圍朋友多半用蘋果。很多次有人問我,爲什麼遊戲不出Mac或者Linux版。答案很簡單,我怕出BUG。
Steam上,超過95%的用戶使用Windows。而據前人經驗,玩家提交的80%的BUG都來自於Mac和Linux。我不用蘋果系統,也沒在Linux上玩過遊戲……對這些運行環境一無所知。
我之前對軟件包依賴管理的理解,僅僅停留在Python的requirements/peotry/conda,以及一丁點兒docker上。而這些知識對windows遊戲環境的系統兼容性、硬件差異、運行時依賴沒有幫助。
會不會有一些我自己電腦無論怎麼測試都發現不了的BUG?遊戲內測幾周下來,這類BUG還真不少……記錄一下新手踩的坑,供其他開發者一笑。
問題都比較技術細節,可能僅對使用Godot遊戲引擎的人有用。
以下都是「僅在遊戲導出後或在別人電腦跑上時」纔會出現,遊戲引擎編輯器內無法復現:
Godot編輯器用緩存掩蓋了資產文件缺失
在本地不小心刪了某動畫資產。但Godot的緩存默默補上了,所以錯誤只有在運行導出的遊戲exe到讀取那份資產時纔會暴露
這個很難提前察覺,已經不記得什麼時候手抖刪過,動畫資源也不進Git所以我diff看不見。只能在別人那裏報錯後,從日誌中看出來
感覺Godot應該警告一下這類只有import文件但資源文件本身不存在的情況
資源的文件路徑在導出後發生改變
Godot導出遊戲後,在某些電腦上會改變資源文件夾結構,從而找不到資源。(在某些電腦上,它又不會變……)
我在兩處代碼誤用了`FileAccess.file_exists`函數檢查某資源是否存在
應該用`ResourceLoader.exist`,這個函數考慮到了資源文件夾結構可能的改變
`FileAccess.file_exists`應只用來檢查遊戲安裝路徑以外的用戶數據文件夾(如存檔、設置文件)
有一個場景的文件名大小寫錯了
Windows平臺本身不區分文件名大小寫,所以Godot編輯器裏沒問題,但Godot導出後的運行時環境區分大小寫
在人物移動時,人物精靈圖或背景圖發生抖動,而不是平滑移動
這個在我自己的三臺顯示器上要麼不出現,要麼不明顯,要麼偶爾隨機出現。但少數測試者發來的視頻裏抖得觸目驚心
在調試過垂直同步、全屏模式、幀數限制、物理插值設置、檢測顯示器刷新率、Phantom Camera插件等等一長串可能性且無果後……
最終徹底的解決方案是會被資深開發者們嘲笑的「直接將物理幀率設爲當前顯示器刷新率」(因爲人物移動使用了_physics_process)
沒想到2D遊戲的屏幕抖動/撕裂會有這麼多影響因素。特別是Godot 4.3已經重新實現物理插值之後。
對話系統的單行命令紊亂或重複
這個是開源的YarnSpinner-Godot對話系統自己的線程和編譯相關問題,且問題只有在C#項目導出後才顯得嚴重突出。
它的最新版本已經徹底重寫了出問題的部分,但由於我在很久以前fork的版本上改動較多,升級的成本非常高……
於是,最後寫了三處老版本的補丁大大減少對話紊亂或重複的觸發可能性
這是唯一一個發現了但我卻無法徹底消除的的bug。會以極小概率隨機出現。打補丁後,已不影響正常遊戲流程。
頭撞南牆地學到了一個軟件工程101就會教的東西:千萬別用不穩定的包作爲自己遊戲的核心繫統。
萬幸的是,內測中發現的其他問題都非常微小。真的要特別感謝前幾位參與內測的朋友,把上述惡性坑踩過一遍,才讓後來者有了順暢的遊戲體驗。
《逃離永明島》正式版將於7月31日上線。新的試玩版已發佈,與正式版存檔相通。
更多遊戲資訊請關註:電玩幫遊戲資訊專區
電玩幫圖文攻略 www.vgover.com