Table of Contents

3.互動範例架構(Demo Architecture)

Guess Who 邏輯架構圖

3-1 專案簡介

Guess Who 是一個多人互動遊戲的網路同步架構,核心功能包括玩家連線管理、 RPC 互動、遊戲狀態同步與結算。

3-2 流程概述

3-2-1 連線註冊階段

(1) MultiConnectManager :註冊並監聽連線狀態。
(2) OnConnectStateChanged :監聽連線變化,處理重新連線機制。
(3) OnPlayersChange :偵測玩家進出,更新當前玩家列表狀態與遊戲進度狀態的判斷。
(4) GetLocalPlayerObject :確認本地玩家 Avatar 是否已經創建。
(5) MultiActManager :註冊並監聽事件狀態。
(6) CheckIsMaster :檢查當前玩家是否為 Master 房主身分。

3-2-2 遊戲初始化階段

(1) RPC :傳輸數據,包括場景同步、組隊資訊與各項數值更新。
(2) Avatar初始化控制 :利用 Avatar 相關 SDK 來控制玩家角色初始化。
(3) SetMissionDone :透過此場景ID與階段通知伺服器已完成第一階段任務。

3-2-3 遊戲選角階段

(1) 變更 Avatar 外觀與持有物設定:透過 Avatar 相關 SDK 來控制更換 Avatar 自定義皮膚外觀與持有物。

3-2-3 遊戲進行階段

(1) 控制各角色遊戲數值初始化設定
(2) 玩家控制:
a.BindGameObject / GetGameObject :綁定與獲取遊戲同步物件。
b.CameraChangeTarget / ChangeToFirstPerson :相機視角切換。
c.ReplaceAvatar / AddAttachment / RemoveAttachment :更換角色與裝備。
d.PlayAnimationClip / StopAnimationClip / Shake :動畫與特效控制。
e.RPC 各類特效通知:處理角色死亡與中彈效果等同步播放。

3-2-4 遊戲結算階段

(1) 計算並顯示遊戲結果。
(2) SetMissionDone :透過此場景 ID 與階段通知伺服器已完成第一階段任務。
(3) 角色狀態設定。
(4) 離開遊戲設定。

3-3 各模組的功能描述

(1) MultiConnectManager:負責管理玩家的連線狀態,處理連線和斷線事件。
(2) MultiActManager :負責同步資料的資料監聽與傳輸事件。
(3) CameraManager :負責控制鏡頭的事件與鏡頭設定。
(4) MissionManager :負責通知成就任務階段的完成事件。
(5) ComponentManager :負責處理場景上元件的事件邏輯。主要由 CHTLand > Component > 各類元件,來放置到場景上進行設定。
(6) PlayerManager :負責處理自己的 Avatar 資訊與全場景內玩家列表與相關 Avatar 物件的資訊。

3-4 模組間的交互方式

(1) 事件驅動:透過 OnPlayersChange 監聽玩家進出的變化。
(2) RPC 機制:透過 RequestAuthority 及 RPC 進行數據同步。
(3) 主從機制: CheckIsMaster 確保 Master 負責場景同步。
(4) 遊戲內互動:玩家可以透過 UI 與事件來觸發動畫特效、外型切換和玩家與玩家間的交互影響。