主觀淺談《時空之門》與《Colorful Waves》遊戲性的相似失控

前幾天《時空之門》宣布停止營運的日程,作為曾經入過坑但也快速離坑的前玩家,我主觀的思考了《時空之門》核心玩法無法持續吸引玩家的問題,察覺其中或許與我在 2017 GGJ 製作的《Colorful Waves》有著相似的困境。

這篇文章便是寫下一些主觀的心得,也歡迎他人針對我的觀點提出意見與討論。

Read More »

[Unity] 設計可以在建置前自我檢查的場景 – Make GameObject Check Itself

我在製作遊戲 UI,或者場景中有些會不斷在顯示、隱藏之間切換的物件時,會利用物件的 SetActive() 來進行操作;或者有其他原因,會在場景中佈置一些關閉的物件,之後再依據遊戲流程重新啟動。

在這樣的情境下,我常常發生一個失誤:在編輯場景時為了確認某個效果,而將應該關閉的物件啟動,或者將應該啟動的物件關閉,最後忘記復原就進行了儲存與遊戲建置,然後理所當然地出錯了。

但畢竟場景配置不像程式碼撰寫,會在失誤時提示錯誤。於是這次就嘗試建立一套機制,可以對場景配置進行自動檢查,來避免人為的失誤造成遊戲運行的錯誤。

Read More »

解決 Unity 的遊戲停頓或 lag 的可能方案 – some probable methods to prevent unity lagging

Unity 在手機或掌機等效能有限的平台上,如果沒有進行優化,當遊戲複雜到一定的程度就無法保證幀數可以穩定,開始出現各種卡頓,影響玩家體驗。

一般出現卡頓,都可以依照原因對症下藥、進行優化,盡量增加玩家的優良體驗,以及減少對設備的負擔。因為在社群上參與了些討論,就想將 Coroutine 跟非同步這兩個在 Unity 中常用的運算優化手段做個紀錄。

**這篇文章是單純的想法心得與資料閱讀筆記,沒有舉出實作的驗證。

Read More »

C# 上 Observer pattern 的實作差異 – observer pattern on C#

前陣子有注意到,大多數的書籍或網站資料在介紹 設計模式(Design Pattern) 時,往往所採用的實作方式都是以 C++ 或 JAVA 為實作基礎,甚至在 Unity 為主題的書籍上,也沒有針對 C# 做進一步說明。

事實上作為一個不斷擴充版本及功能的語言,.NET 的 C# 的使用上提供了更多樣化的類別或介面,可以用不太一樣的方式來實作設計模式,妥善的應用 C# 所帶來的便利。

最明顯的例子,就是利用 C# 的 delegate,可以更加方便的實作 觀察者模式(Observer pattern),甚至讓應用上更加靈活。本文記錄了三種作法可讓大家比較參考:

  • 純 class
  • Delegate (Action)
  • Event & EventHandler

Read More »

[C#/Unity] 更多 Singleton – More Singleton in Unity

在舊文章 應用 Singleton pattern 及 Unity Component 做系統拆分與管理 – Dividing your game system in unity. 中,我開發了一套架構來作為單一 Singleton 的替代方案,用於統一管理會在整個 Unity 專案中使用到的遊戲功能系統。

該篇文章中的 GameSystemMono (即仿 Singlton 的組件) 繼承了 MonoBehaviour,來實現一些設計上的想法。不過帶來優點的同時也產生了一些限制,經過與他人的討論後,認為還是需要一個不依賴 MonoBehaviour 的 Singleton 組件方案,兩者互相補足,而這個想法終於在最近進行了實作。

Read More »