我是温太齊,Unity 遊戲工程師,擁有 10 年工作經驗,主要製作中小型專案。通常負責架構開發與通用功能,像是核心玩法、UI、編輯器,也會負責管理 Git。也經常負責研究與提供解決方案,以及指導初階工程師。
不論商業工作或獨立專案,如果對我的能力有興趣,或只是想討論,歡迎聯絡!
工作專案
(FANIMAX) 電馭跑酷
- 使用 Unity 與 Fusion 開發 2D 平台競速對戰手機遊戲
- 使用 PlayFab 與 Azure Functions 開發後端功能
- 負責整體架構開發
- 製作技能編輯器
- 協助設計師規劃 AI 行為樹設計架構
- 教導初階工程師如何正確寫程式與使用架構
- 使用 Addressables 處理資源更新並制定包體規則
- 制定 Google Play 與 Apple App Store 的發佈流程與版本分流
(IGG) Myth Saga
- 使用 Unity 開發服務型手機 RPG
- 負責自動掛機打寶系統的所有客戶端功能,包含 AI 與 socket 中間層
- 負責公會領地戰爭系統的所有客戶端功能
- 開發與維護服務型手遊的各種常見功能
(FANIMAX) ProjectMD
- 使用 Unity 開發 2D 回合制手機遊戲
- 負責整體架構開發
- 製作技能編輯器
- 制定 Addressables 工作流程
- 使用 Google App Script 編寫資料下載頁面,輸出設計師在 Google Sheet 填寫的資料表
- 編寫定點數函式庫,以解決網路傳輸造成的浮點數誤差
(UDREAM) 女神聯盟M
- 服務型手機遊戲的開發維護
- 撰寫前後端服務的程式碼,前端語言使用 Lua,後端語言使用 Go
(維亞娛樂) Over Kill
- VR 多人對戰射擊遊戲
- 使用 Java 開發多人連線射擊遊戲的遊戲伺服器。
- 使用 Java 實作 3D 空間與碰撞偵測,有單元測試驗證。
- 使用 recast4j 來處理路徑搜尋。
- 使用 LWJGL 渲染遊戲伺服器的戰場,用來偵錯。
- 將原本在 Unity 上用 C# 編寫的 AI 套件轉寫成 Java 版本,讓設計師可以用同一份資料。
(維亞娛樂) 資源管理器
- AssetBundle 管理視窗與資源更新
(維亞娛樂) Excel Exporter
- 第一次寫 Excel 資料表工具
- 功能設計的很爛,該有的功能沒有,既有的功能也不好用
(維亞娛樂) Network Hub
- 公司的遊戲產品都有連線功能,所以寫個套件給所有專案使用。
- 因為連線的軟體不一定是 Unity 程式,所以套件不能依賴 Unity。
- 使用 C# 和不保序的 UDP 做狀態同步,事件用 TCP 傳送。
(維亞娛樂) 白色懼塔
- VR 恐怖遊戲,需要玩家做簡單互動。
- 使用 Leap Motion 偵測器偵測玩家雙手位置與動作。
(維亞娛樂) 屍獄末日2
- VR 多人合作射擊遊戲,接續 1 代製作。
(維亞娛樂) 城市英雄
- VR 多人合作射擊遊戲,風格偏兒童向。
- 基於屍獄末日製作,不同武器的變化性比較大。
- 可以破壞場景物件。
(維亞娛樂) 屍獄末日
- VR 多人合作射擊遊戲,使用 HTC VIVE。
- 使用 NodeCanvas 給設計師自行決定出怪與演出的流程圖。
- 簡易斷肢功能。
(尚芳國際) 拉拉保齡
- 兒童機台遊戲,用2條紅外線感測器偵測球的進入點。
- 接手超過 90% 的類別都是 Singleton 的專案,將其重構成可維護的架構。
- 重新實作與硬體裝置通訊的 Unity 插件。
- 因為只能使用低規格機器,需要特別做效能最佳化,保證執行幀數 24 小時均維持在 60FPS。
Side Projects
Flexi
PhysaliaStudio/Flexi: Unity Gameplay Ability System Framework
這是我為了需要複雜技能編輯的遊戲製作的通用框架。雖然前期設置可能複雜了點,但對我工程師來說,以後我就不用再寫一次差不多的底層邏輯了。
除了自己多做幾個雛型使用外,也經過一次商業開發的驗證,獲得了反饋並調整,雖然架構和 API 可以再優化,不過功能上目前我自己使用起來,在製作戰鬥系統上已輕鬆省了不少時間。
- 自定義效果節點
- 使用 GraphView 內建節點編輯器
- 內建 LIFO-Queue 與 Tick 運作的效果處理
- 內建 RPG 式的 Stat 計算邏輯
ExcelDataExporter
PhysaliaStudio/ExcelDataExporter
就是個 Excel 資料表工具
- 支援 Excel 內定義 class、struct 與 enum,並生成程式碼
- 可輸出成 ScriptableObject 或 JSON
- 使用 API 取得資料