Code Liquid 是什麼?

TL;DR,給很忙的人的結論:

Code Liquid 是一個成人向的 3D RPG H Game

Code Liquid Reboot 開發中畫面

一切的起源…

幾個月前我案子剛忙完,正愁著沒什麼事情做的時候,剛好和 Yami 聊到遊戲開發的話題。他說道:

是什麼…阻止了你自己開發一款遊戲?

「噢酷…有道理。」我雖然在兩間遊戲公司工作過,也從小就熱愛遊戲,我卻從來沒有想過我應該自己做一款遊戲試試看。自從開始自學寫 After Effects 腳本後,現在我有了一部份程式基礎、也對 3D 製作的流程有更深入的了解,何不趁空閒時間試試看呢?

但不得不說我的程式基礎差到不行,雖然寫得出簡單的 JavaScript,但對其他程式語言一竅不通,大部分的 Code 都是東拼西湊「能跑就好」的東西。我實在不認為這樣的狀況可以好好用主流的遊戲引擎做一款像樣的遊戲。於是我決定邀請他合作,協助程式方面會遇到的問題。

Code Liquid Reboot 開發中畫面

為什麼是 H Game?

因為最快。

決定要製作 Code Liquid 的時間是 2018 / 09 / 26,我們都各自有自己的事情要做,例如 Yami 的 始春,而我也有可能隨時接到影像案子而必須將精力花在工作上。所以我們決定只花大約一個月的時間完成這個 Side Project。

比起其他類型的遊戲,例如 射擊遊戲、冒險遊戲、動作遊戲 等等…不是對劇情完整性要求很高,就是對操控手感、甚至關卡的編排要求很高。對時間與經驗都不夠的我們來說,要在一個月內從完全沒做過遊戲到做出一個像樣的遊戲幾乎不可能。

而一般 H Game 並不對這些東西的要求很高。例如 Illusion / Kiss 這類日本一線的 3D H Game 廠商,劇情都不太是主要賣點,而是「實用度」。

當時我手上有很多可以使用、甚至是可以商用的角色模型素材,我自己因為習慣也收集了很多 MMD 的動畫檔,於是我們一開始決定用手上現有的素材與最底線的完成度標準來製作。而我本身也因為影像製作的專業,對自己能掌控 H 場景的「實用度」也滿有信心的。於是 Code Liquid 就這麼開始製作了。

Code Liquid Reboot 的一部份角色陣容

Reboot 是什麼?

其實 Code Liquid 開始開發兩個禮拜後,整個遊戲的雛形已經差不多完成了。我們有四、五組 H 過場動畫,有一個小小的村莊場景,和一些基本的程式系統。

Code Liquid 第一個版本畫面

就在我們打算發佈第一個 Code Liquid 版本的時候,我無意間發現了 Unity 正在測試中的新功能「HDRP (High-Definition Rendering Pipeline)」,這是一個新的畫面渲染模式,針對次世代遊戲主機與高階電腦開發,畫面相較一般的模式漂亮很多。

使用了 HDRP 渲染流程的畫面

( HDRP 有關的技術細節之後會再開一篇文章 )

我和 Yami 都同意採用 HDRP 模式的畫面比之前類似 Toon Shading 的卡通渲染好看很多,於是我們經過討論後決定放棄原先的 Code Liquid 雛形,開新的專案全部重新開始。

( 不選擇升級現有專案,而另外開專案的原因會在 HDRP 文章中說明 )

所以… Code Liquid Reboot 呢?

為了熟悉更多的新系統、排解新問題,於是時間來到了 2018 / 11 / 30,撰寫這篇文章的同時 Code Liquid Reboot 正在開發中,對引擎、新功能已經有了更多的熟悉,也排除了大部分製作過程會遇到的問題,開發正在慢慢步上軌道,後面應該會更順利一些。

如果關心 Code Liquid 的開發狀況,歡迎各位到 Discord 伺服器。我們有 Unity Collab Bot 和 GitHub Bot 會回報開發狀況,也會不定時舉辦開發實況或問答。

Discord 伺服器連結:https://discord.gg/6mzKmJV

我們下一篇文章見!

以有條理與 ECS 的思緒正確地撰寫 MonoBehavior 邏輯

在 Unity 中,目前分為兩個撰寫遊戲的方式:ECS(Entity、Component、System)與傳統的 MonoBehaviour

前者是 Unity 在 2018 年所推出的新程式結構撰寫理念,主要是為了解決多數的程式碼都在主執行緒上執行,而導致 CPU 分配率不彰、程式效率降低、執行緒鎖死的問題。但 ECS 基本上到年底,都還不是一個完善的狀態,更不是萬能仙丹;事實上,ECS 就算進入了正式版,也有可能是在下一個產物出來之前的過渡期設計。

話雖如此,ECS 的設計理念還是值得參考與借鑒的。在前端網頁設計中,其實已經運用了類似的理念有至少二、三年之久,那東西耳熟能詳的名稱是:VuexRedux

Vuex 是個設計理念而不是特殊軟體,其用意是為了集中資料、並且明確地劃分修改與存取邏輯。

簡單來說,ECS 嘗試地想要將:「把所有邏輯全部塞進同一個 MonoBehaviour 元件」的這種問題給解決。

設想看看,如果遊戲內有一百個物件,而且那些物件都是 NPC 玩家,但角色大多都是相同的邏輯與行為方式,在傳統寫法這會造成每個元件都有自己的邏輯,而導致效能不彰。

說到每個元件都有自己的邏輯,ECS 的解決方法顯而易見:

讓元件本身只保有狀態資料,而邏輯獨立成一個中央系統。

如果這聽起來牛頭不對馬嘴、不曉得到底是在說什麼東西,那麼你一定會喜歡接下來的程式碼範例章節。 閱讀全文〈以有條理與 ECS 的思緒正確地撰寫 MonoBehavior 邏輯〉