• 沒有找到結果。

Quadtree 資料結構

在文檔中 中華大學 碩士論文 (頁 51-54)

第四章 系統架構設計之分析

4.2 混合 Client-Server 與 P2P 的遊戲架構

4.2.3 Quadtree 資料結構

我們利用一個 Quadtree 的資料結構來紀錄 Local Game Server 和其負責的 地圖區域,而整個 Quadtree 的架構如圖 十三所示,假設下面的正方形是一張完 整的遊戲地圖,而地圖上面有黑點的圖塊部分就是玩家所在的地方,如此可以清 楚地看到全部玩家的分佈,這一整個大地圖初始是由一個 Local Game Server 來管理,當上線玩家越來越多,已經快超過 Local Game Server 的負擔時,Master Server 會進行地圖切割,一次將地圖分割成四塊子地圖,然後交由不同的 Local Game Server 來管理;相反地,如果玩家人數變少,一台 Local Game Server 足 以負擔 4 塊同層的子地圖的話,Master Server 會將地圖合併起來,交由一台

_______________________________________________________________________________ 39

___________________________________________________________________________________

Local Game Server 管理即可。

如此,我們藉由 Quadtree 能夠動態的切割地圖及合併地圖的能力,將地圖 給不同的 Local Game Server 來管理,不但可以負擔更巨量的玩家人數,解決了 一般傳統架構的人數上限問題,更可以分散遊戲中全部的玩家,來減輕及平均 Server 的負擔,如此可以做到動態的 Loading Balance,這兩點都是本架構優點 之一。

Gray node White node (without player)

Black node (with players)

圖 十三、Quadtree 的資料結構圖

以下描述關於 Quadtree 在遊戲的初始及進行時,Quadtree 如何做地圖的 切割及分配:

i 初始化:

如圖 十四所示,一開始是只有遊戲廠商所架設的一台 Master Server 和一台 Local Game Server 而已,而此第一台的 Local Game Server 會先 向 Master Server 做登錄,然後 Master Server 要求此 Local Game Server 負責管理遊戲整塊的大地圖。

_______________________________________________________________________________ 40

___________________________________________________________________________________

Master Server

Local Game Server 1. Server啟動時,

向Master Server作 登錄

2. Master Server給予 Local Game Server一

個ID及分配地圖

0

1

1

圖 十四、初始化示意圖 ii 地圖分割:

如圖 十五所示,當第一台 Local Game Server 的玩家人數負載太多,

以致於快無法承擔流量時,Local Game Server 會通知 Master Server 進 行地圖分割,並告知 Master Server 要將哪一塊的子地圖分給新的第二台 Local Game Server,然後 Master Server 會將地圖區域加以切割成四塊,

此時,第一台 Local Game Server 也會去啟動第二台 Local Game Server 運作,從與其連線的 Clients 或是其下線中選出適合的人選,並要求其成 為新的第二台 Local Game Server,當第二台 Local Game Server 開始啟 動運作時,會去向 Master Server 做登錄,Master Server 會將要分出去 的地圖分配給第二台 Local Game Server,如此就完成的第一次的地圖分 割。

同理,當還有許多新的玩家加入某一個 Local Game Server 的管理區 域時,如果玩家人數快超過 Local Game Server 所能負擔的上限時,如同 上述的方式來進行地圖分割,並找出一個新的 Local Game Server 來管理 其中一塊的子地圖,來減輕及平均 Local Game Server 的負擔。

_______________________________________________________________________________ 41

___________________________________________________________________________________

Master Server

Local Game Server 1. 當Server 1負擔太大,

會向Master Server要求分 割,並從下線清單中,找

一台Server啟動

2. 新的 Server作登錄,

Master Server給予新的 Server一個ID,並分配給

予的地圖

0

1

1

2

2 1

1

圖 十五、地圖分割示意圖 iii 地圖合併:

如果當玩家逐漸離開某一個 Local Game Server 的管理區域,最後已 經沒有玩家在此塊子地圖進行遊戲時,此時 Local Game Server 會通知 Master Server 進行地圖合併,Master Server 會將此 Local Game Server 所負責的子地圖交由給同層的一個 Local Game Server 來管理,而 4 塊子 地圖也變成一塊較大的地圖,如此可以進行節點的縮減,減少不必要 Local Game Server 服務的數量。

在文檔中 中華大學 碩士論文 (頁 51-54)