大洋棒球俠




















關於當時對於Photon Fusion角色動畫處理的相關研究紀錄
Photon Fusion一共有六種處理方式
1 - Networked State With Animator
2 - Interpolated Networked State With Animator
3 - State Synchronization With Animator
4 - Network Mecanim Animator
5 - Network FSM With Animancer
6 - Fusion Animation Controller
1 to 5 使用 render accurate, 6 則是使用 tick accurate。
Render Accurate Animations是默認方式,它可以確保在場景渲染時動畫精度和渲染效果的一致性。這種方式下動畫的播放速度和渲染幀率是同步的,因此可以確保在所有客戶端和服務器上動畫的播放速度和效果都是一致的。但是這種方式需要消耗更多的計算資源。
Tick Accurate Animations則是以遊戲的邏輯幀率為基準進行處理,它可以確保在遊戲邏輯的運行過程中動畫的精度和一致性。這種方式下動畫播放的速度和邏輯幀率是同步的,因此可以確保在所有客戶端和服務器上動畫的播放速度和效果都是一致的。但是這種方式的精度可能會因為幀率不穩定而受到影響。
1.這是最簡單的解決方案,根據Render方法中的網絡數據或OnChanged回調設置,並使用網絡狀態來控制 Animator 參數。
考量結果: 其他客戶端加入後,運動動畫可能會非常不同步。這是因為動畫時間沒有同步,因此即使狀態擁有權的角色已經播放了幾秒鐘的動畫,所有客戶端上的動畫開始播放時間仍然為零。只能透過下一個動畫操作中進行修正。
2.這比上一個方案更進一步它使用內插網絡數據而不是僅使用最新數據。使用插值數據可以使動畫更加精確,即使在網絡條件不理想的情況下也能保持這種精度。(如果對精度沒有很大的要求,對於許多項目來說,插值器的使用可能是不必要的複雜化。)
考量結果: 基於可以實現出的結果我認為Network Mecanim Animator會是更好的嘗試。
3.State Synchronization With Animator這個方法會添加一個特殊組件AnimatorStateSync,該組件定期同步當前播放器動畫器狀態及其時間。狀態同步可確保proxy(模擬出來的玩家)動畫即使在玩家加入遊戲後或代理對象進入Area Of Interest時也會保持同步。
Area of Interest(AOI)是一種用於優化網絡數據傳輸的機制。它通過區分玩家所處的區域,只傳輸和處理有用的數據,減少不必要的網絡流量和計算負擔,從而提高了遊戲的性能和可玩性。
考量結果: State Synchronization With Animator 採用手動同步動畫狀態的方式,通過調用 SyncState() 方法手動同步動畫狀態。它的優點是可以更精確地控制動畫同步,比較適合於一些需要更精細的動畫控制的遊戲。
缺點是需要手動同步動畫狀態以及如何學習使用 AOI以及Interest Management功能,需要更多的代碼量和處理複雜度。
4.Network Mecanim Animator 則是使用 Mecanim 動畫控制器自動同步動畫狀態。它的優點是相較於356的範例更為簡單,可以快速集成到遊戲中。缺點是相對於 State Synchronization With Animator 來說,同步精度會稍低一些,可能會出現一些短暫的不同步的現象,但在大多數情況下不會影響遊戲體驗。
考量結果: 我希望更快速集成動畫同步功能,並且可以接受少量的不同步現象,所以目前選擇使用 Network Mecanim Animator。
5.Network FSM With Animancer是使用Animancer插件來實現網絡狀態機的示例。 Animancer是一個強大的動畫系統插件,可用於Unity引擎。使用Animancer,可以輕鬆控制動畫播放,創建過渡和混合動畫,以及使用狀態機來管理角色的行為。在這個示例中,我們使用Animancer創建了一個基本的狀態機來管理角色的行為,並使用Fusion的網絡功能同步狀態機狀態。
考量結果: 相比其他,Animancer實現更加簡潔,易於理解和擴展。但使用Animancer插件,這會增加一定的成本和學習曲線。
6.最可靠的動畫精度是通過tick accurate解決方案(Fusion Animation Controller)實現的,但它有一個很大的缺點,即正確設置和維護起來非常複雜。
考量結果: 不夠成熟。抱歉,依據那時的進度來說沒有機會嘗試。