Unity

Simple Crowd Simulation System – 簡易人群模擬系統

遊戲玩家走在路上,遇到迎面而來的人群,每個人物都有著自己的走路姿勢、路徑、反應,上述的景象在許多大規模遊戲中,如俠盜獵車手、看門狗、人中之龍…等都有出現。
當開發者醉心於遊戲世界中的主要系統、構思遊戲主要玩法與體驗的同時,這些旁支系統也是提升遊戲體驗的一劑強心針。

Continue reading “Simple Crowd Simulation System – 簡易人群模擬系統”

Unity

Unity DOTS – A Case Study of Brick Breaker

DOTS (Data-Oriented Technology Stack) 是 Unity 近年來主打的核心功能之一,充分利用多核、多線程處理讓遊戲的運行速度更快、更高效,讓預設環境下開發的效能有飛躍性地提升。

由於 DOTS 目前還屬於開發中的架構,導致架構內容不斷的變化,此篇會先比較過往版本中的 DOTS 與 2019.3 版本有何種差異。
並在 2019.3 版本的基礎上,完整開發出一個擁有基本功能的打磚塊遊戲,實作內容包含:定義碰撞範圍玩家輸入移動物件碰撞偵測刪除物件

Continue reading “Unity DOTS – A Case Study of Brick Breaker”

Physics · Unity

Verlet Integration – A Case Study of Simple Dynamic Bone

Dynamic BoneUnity Asset Store 中的一套動態骨骼系統,開發者不需要任何的程式基礎也能夠快速上手並使用動態骨骼功能,透過簡易的設定就能夠快速的進行物理模擬,讓腳色的頭髮、衣服、胸部…等物體進行更加真實的物理移動。

在先前的文章 Verlet Integration 韋爾萊積分法 – 以邊緣檢測與繩索模擬為例 中,在韋爾萊積分法的基礎上實作了邊緣檢測,並加入長度約束藉此模擬繩索擺動。

Dynamic Bone 則是在韋爾萊積分法的基礎上額外加入了重力外力慣性阻力彈性剛性碰撞長度約束等因素,模擬出更真實的物理移動。

此篇文章將重點放在如何在韋爾萊積分法的基礎上加入慣性阻力彈性剛性長度約束,藉此變化出簡化版的動態骨骼,不但有效的優化了原版動態骨骼的效能,還會解釋動態骨骼中的韋爾萊積分法及每個步驟的物理模擬是如何計算的。

Continue reading “Verlet Integration – A Case Study of Simple Dynamic Bone”

Physics · Unity

Verlet Integration – A Case Study of Boundary and Rope Simulator

一般而言在實作物體移動時會使用Kinematic Equation 運動方程式
由於運動方程式需要速度
加速度等資訊才能夠有效運算
Verlet Integration 韋爾萊積分法則是另一種運動方程式的解決方案
能夠在不需要速度的前提下
只依靠物體的當前位置、前一幀位置就模擬出結果

Continue reading “Verlet Integration – A Case Study of Boundary and Rope Simulator”

Unity

Understand How Garbage Collection Works in Unity – 淺談 Unity Garbage Collection 機制

Garbage Collection 是讓記憶體回收再利用的過程,當記憶體區塊不在需要時,該區塊即可被釋放並回收,以便在下一筆資料進來時能夠重複利用。

在一些程式語言中,開發者需要透過適當的函數來分配和釋放這些堆內存區塊。

而 Garbage Collection 機制會自動幫開發者管理內存,減少顯示分配和釋放堆內存區塊的編碼工作量,也大大降低內存洩漏的可能性。

但若 Garbage Collection 發生的次數過於頻繁則會導致遊戲表現不佳,這也是常見的性能問題。

Continue reading “Understand How Garbage Collection Works in Unity – 淺談 Unity Garbage Collection 機制”

Unity

New Prefab Workflow – Unity 2018.3b

Prefab 是 Unity 的一種物件型態,使用 Prefab 能夠將資源進行封裝來達到泛用物件的效果。
但一直以來,卻存在著一個令人詬病的問題,「無法巢狀編輯 Prefab」。

若 Prefab Parent 內含有其他 Prefab,A、B 及 C,一旦修改了 A、B、C 的內容並更新 Prefab Parent,則會遺失 Prefab 之間的關聯性,需要手動更新其餘與 A、B、C 相關的物件。

在 Unity 2018.3b 推出的新 Prefab 系統,包含 Nested Prefab 和不少新功能。

Continue reading “New Prefab Workflow – Unity 2018.3b”