iT邦幫忙

2026 iThome 鐵人賽

DAY 30
0
Vibe Coding

從課堂半成品到完整發布:獨立遊戲的30天重生記系列 第 30 篇

【DAY30】Unity 2D 敘事遊戲開發:30 天完賽心得:打破先入為主的心態,工程師的自我蛻變

  • 分享至 

  • xImage
  •  

一、前言:30 天的終點,也是全新的起點

當我敲下這行字時,心裡湧現的除了如釋重負的輕鬆感,更多的其實是一種「我真的做到了!」的踏實感。

回顧這 30 天的鐵人賽旅程,每天在繁重的課業與專案開發間拉扯,跟 Unity 的 UI 跑版打架、跟莫名其妙的 BUG 搏鬥、為了打包 WebGL 與 PC 而反覆調整 Player Settings。這場馬拉松很累,但當我打開最終的執行檔,看著《平民王冠》流暢地運行、存檔、跳出成就通知時,我突然就覺得一切都值得了(除了我快爆掉的肝XD)。

而在這最後一天,我最想聊的不是程式碼,而是這 30 天裡的心態轉變。

二、最大的錯誤:不是BUG而是先入為主的恐懼

文章前面提到,《平民王冠》原本是大學課堂上的期末專案。當時交出的 STD(軟體需求規格)測試結果表上,充滿了 Failed 非常地不盡人意。

最核心的原因,就卡在 UR-03(結局永久記錄) 與 SC-01(存檔與讀檔功能)。
還記得當時組員們開會討論存檔機制時,大家的反應幾乎是異口同聲:
「要存檔?那不就要搞懂複雜的關聯式資料庫(SQL)、架設伺服器或寫一堆繁瑣的 IO 讀寫嗎?這太難了啦,我們根本沒學過,乾脆放棄存檔功能吧!」

因為這句「太難了」,我們在專案企劃階段就自動繳械投降,甘願讓遊戲變成一個無法記錄玩家心血、只能一次性通關的半成品。當時的我們,甚至把這歸咎於「技術力不足」與「時間不夠」。

然而,這 30 天的鐵人賽卻狠狠甩了我一巴掌——原來,阻礙我們的從來不是技術的難度,而是我們自己「先入為主覺得很難」的傲慢與怠惰。
當我在鐵人賽的第 15 天被迫直面這個痛點,認真去查閱 Unity 的官方文件與 C# 序列化機制時,我驚訝地發現:

  • 實現存檔根本不需要什麼高大上的資料庫。
  • 只要寫一個簡單的資料結構(Data Class),透過 JsonUtility.ToJson() 把遊戲狀態轉成 JSON 字串,再用 File.WriteAllText() 存到本地端,就大功告成了。
  • 讀檔也只需要反向解析即可。

整個核心邏輯幾十行code就能搞定。回過頭看當初在課堂上恐慌半天的自己,真的會覺得有些哭笑不得。我們常常把未知的事情過度神化,因為害怕失敗、害怕跨出舒適圈,就提早幫自己找好「做不到」的藉口而放棄。

三、鐵人賽教會我的三件事

透過這 30 天每天必須產出、每天必須往前推進的高壓訓練,我有三個最重要的體悟想分享給所有正在學習程式或考慮參賽的夥伴:

1. 大問題都是被自己嚇出來的,拆解它就贏了一半
不管是複雜的對話系統、常駐的 UI 框架,還是讓人頭皮發麻的存檔,當你沒有統整時直接看,看起來難如登天。但只要像這 30 天一樣,把大目標拆成每天一個小功能(今天寫音量控制、明天寫場景切換、後天寫 JSON 存檔),山就會在一鏟一鏟中被你移平,完全沒有所謂的「遠看是座山,近看山不小,我在看三小......」。

2. 「動手做」永遠比「空想」快
程式碼不會因為你盯著它看就自己跑出來,Bug 也不會因為你祈禱就消失。遇到不會的技術,與其在腦袋裡自我懷疑「我能不能辦到」,不如直接開 Unity 寫幾行測試看看。往往動手下去做之後會發現:「欸?好像比想像中簡單嘛!」
3. 完成比完美更重要,但追求完美才會讓你真正成長
從 Day 1 那張滿是的 Failed 的圖走到今天全數 Passed,儘管這過程並不是一帆風順,UI 跑過版、記憶體洩漏過、Build 出現過不明 Error 常常讓我崩潰,但正是這些碰撞與除蟲的過程,累積成了扎實的除錯直覺。

四、致謝與未來展望
這 30 天的鐵人賽,不僅僅是把一門課堂專案從半成品打磨成能發布的完整作品,更是一場工程師心態的成年禮。它讓我明白:只要願意給自己 30 天的專注與堅持,那些曾經覺得高不可攀的高牆,終究會變成你踩在腳下的風景。

《平民王冠》的開發告一段落,但我的軟體開發與獨立遊戲之路才正要開始。
我謝謝能堅持泡在程式跟遊戲內30天的我自己,讓我強烈感受到自己的進步。更感謝這 30 天來持續閱讀、關注我的你各位,我們有緣再見!


上一篇
【DAY29】Unity 2D 敘事遊戲專案總結:從半成品到完整發布的技術架構演進
系列文
從課堂半成品到完整發布:獨立遊戲的30天重生記 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言