• 沒有找到結果。

3. 第三章 理論架構

3.3 運作流程

3.3.3 地圖分割

當 Local Game Server 所負擔的人數超過其能力的限制時,首先要計算其負 責之地圖區域中的上線人數,找出負責區域中最多人的一塊,如圖 十七所示。

若原本便只有負責一塊區域,則必須將這塊區域分割成四塊,再將這塊區域當中 人數最多的分配給新的 Local Game Server,如圖 十八所示。

1. 原本管理了3塊區域

2. 將其中最多人的一塊分割出去

圖 十七、地圖分割:原本管理多塊區域

1.將一塊區域分割成四塊

2. 選出最多人的一塊分割出去

圖 十八、地圖分割:原有的區域為一整塊

決定好分配的區塊後,便將這個區塊代表的地圖座標範圍,以及這塊區域在 四分樹中的節點編號等資訊,再加上一個亂數產生的序號,傳送給 Master Server 以要求分割。Master Server 收到要求之後,會將這台 Local Game Server 的 IP、

要求分割的地圖座標範圍、節點編號及其送出的序號記錄起來,以利後續的處理。

Local Game Server 根據一些客觀的條件,如頻寬、電腦速度、連續上線時間 等,從目前所服務的 Client 中選出適合執行 Local Game Server 的電腦,向該 Client 送出要求成為新的 Local Game Server 之訊息。這個要求的訊息會包含先前傳送 給 Master Server 的亂數序號,如圖 十九所示。

收到要求的 Client 端若已經執行 Local Game Server,或其他原因不願意執行 Local Game Server 程式,則會送出拒絕的訊息。反之,若 Client 可以執行 Local Game Server 程式,則會向要求的 Local Game Server 送出同意的訊息。

Local Game Server 若收到拒絕的訊息,則會向下一個候選的 Client 發出要 求,直到得到同意的訊息為止。而同意要求的 Client 端會啟動 Local Game Server 的程式,向 Master Server 登入,如圖 二十所示。

1. 傳送相關資訊 與序號給Master

Server

2. Master Server 記錄相關資訊

3. 根據客觀條件從 Client中挑選

4. 送出要求訊息至選 定的Client

圖 十九、分割過程

2. Local Game Server 向下一個 Client發出要求

1. Client 拒絕要求 4. 回傳“同意啟動“之訊息

3. Client 接受要求,啟動 Local Game Server 程式 5. 新的Local Game Server

向Master 登入

圖 二十、啟動新的 Local Game Server

登入時,這台新的 Local Game Server 傳送給 Master Server 先前包含在要求 啟動的訊息當中的亂數序號,Master Server 便能從先前的記錄中查出這台新的 Local Game Server 是所要分擔的地圖區域,並且傳送這台新的 Local Game Server 所負責的地圖座標範圍,以及負責各鄰近區域的其他 Local Game Server 的清單。

Master Server 更新其 Quadtree 的記錄,由於新加入了一台 Local Game Server,必須通知原先運作的 Local Game Server 地圖區域的分配已經改變,因此 Master Server 會找出緊臨這塊區域的其他 Local Game Server,並傳送更新的訊 息。先前要求分割的記錄會被刪除,代表這個分割的要求已被處理,如圖 二十 一所示。

2. Master Server依 序號找出原始的 Local Game Server

5. 告知其鄰近區域已 新增一台Local

Game Server 4. 更新四分樹記錄

3. Master Server 回傳負責 區域與鄰近區域資訊

1. 新的Local Game Server登入 時,送出序號與相關資訊

圖 二十一、更新鄰近區域資訊

當 Server 啟動完畢時便會通知原本要求分割地圖的 Local Game Server,表 示可以準備接管該區域了。原有的 Local Game Server 收到通知後,會開始轉移 該區域上原有的玩家至新的 Local Game Server,此時遊戲會暫停。轉移完成之 後,便正式完成了地圖分割的動作,如圖 二十二所示。

1. 新的Local Game Server 啟動完畢,通知原本的

Local Game Server

3. 該區域內的Client 登入至 新的Local Game Server

2. 傳送Client之遊戲狀態資訊

圖 二十二、轉移 Client

相關文件