• 沒有找到結果。

題目:基於動態四分樹的巨量多人線上遊戲之混 合式架構

N/A
N/A
Protected

Academic year: 2022

Share "題目:基於動態四分樹的巨量多人線上遊戲之混 合式架構 "

Copied!
68
0
0

加載中.... (立即查看全文)

全文

(1)

中 華 大 學 碩 士 論 文

題目:基於動態四分樹的巨量多人線上遊戲之混 合式架構

A Hybrid Scheme for Massive Multiplayer Online Games on Dynamic Quadtree Architecture

系 所 別: 資訊管理學系碩士班 學號姓名: M09110023 邱子睿 指導教授: 王偉德老師

中華民國 九十三 年 六 月

(2)

基於動態四分樹的巨量多人線上遊戲之混合式 架構

研究生:邱子睿 指導教授:王偉德

中華大學 資訊管理學系

摘要

線上遊戲已經被證明是一個成功的商業模式。線上遊戲擁有明確的獲利管 道,與傳統單機遊戲相比也不受軟體盜版的影響,在亞洲和美洲的遊戲市場上已 經形成了一股風潮。隨著網際網路使用人口的成長,線上遊戲產業的產值也不斷 增加,在韓國甚至已經超過了汽車等傳統產業。然而在高度成長的背後,由於競 爭激烈,線上遊戲廠商已經逐漸面臨到控制營運成本的壓力。以技術層面來說,

經營線上遊戲所需付出的高額網路頻寬費用,和大量主機設備的維護成本是營運 成本的主要項目之一,因此如能有效的減少網路與主機的成本,對線上遊戲廠商 的競爭力必定會有明顯的助益。

而傳統的線上遊戲多採用 Client/Server 架構,最大的缺點便是 Server 容易成 為系統的瓶頸﹔而為了增進服務品質,目前線上遊戲的廠商都必須花費大量的金 錢去採購足夠的硬體設備,同時也必須使用昂貴的網路專線以滿足玩家的需要。

針對這個情形,本研究提出了一個混合 Client/Server 與 Peer-to-Peer 觀念的新架 構,利用四分樹的資料結構對遊戲地圖做管理,將地圖切割成多塊以分散負載至 多台機器,做到 Loading Balance﹔同時亦引進 Peer-to-Peer 的觀念,將流量與運 算負擔分散到玩家之間,能有效的減少廠商的成本負擔。

(3)

A Hybrid Scheme for Massive Multiplayer Online Games on Dynamic Quadtree Architecture

Student: Zih-Ruei Ciou Adviser: Wai-Tak Wong

Department of Information management Chung-Hua University

Abstract

The Massive Multiplayer Online Game (MMOG) has been proved as a successful business model. In comparison with traditional PC Games ,it has a solid revenue source and the profit won’t be affected by the piracy issues. In America and Asia, the share of MMOG has dominated in the whole game market. In Korea, MMOG industry creates even more profit than the traditional ones such as automobile industry. However, as the MMOG market becomes more competitive, so does the importance of reducing the cost of operation. From the analysis, two major operation costs are coming from the enormous expense of hardware and bandwidth. For example, most traditional MMOGs use Client/Server architecture. The major drawback is that the Server can easily become a bottleneck of the system. In order to provide acceptable quality of service, the MMOG companies must spent huge amount of money on the hardware and network bandwidth, which reduce the margin of profit.

To solve this problem, we propose a new architecture combining the Client/Server and the Peer-to-Peer model. By using Quadtree structure to manage the map of game space, we split the map to various servers. In order to save the cost of MMOG companies, we let the game players share the bandwidth and computing costs in Peer-to-Peer way. Thus, we can significantly increase the advantage of MMOG companies.

(4)

致謝

很快的,兩年的研究生涯接近了尾聲。我要感謝王偉德老師不辭辛勞的指 導,以及鄭伯炤老師和游坤明老師在口試審查上提供了寶貴的意見。還有這些日 子以來陪在身邊的好朋友們,謝謝你們,你們讓這一切變得難忘。

珍重,再見。

邱子睿謹致 中華大學資訊管理學系碩士班 中華民國九十三年六月

(5)

目錄

1. 第一章 緒論 ... 1

1.1 研究背景與動機...1

1.2 研究目的...3

2. 第二章 文獻探討 ... 5

2.1 線上遊戲的定義...5

2.2 線上遊戲的發展現況...7

2.2.1 概觀...7

2.2.2 北美的市場概況...7

2.2.3 亞洲的市場概況...9

2.2.4 國內的市場概況...10

2.3 線上遊戲面臨的困難... 11

2.4 現有的解決方案...13

2.4.1 概觀...13

2.4.2 改良式架構...15

2.4.3 與傳統架構的比較...19

3. 第三章 理論架構 ... 21

3.1 運作原理...21

3.1.1 Peer-to-Peer...21

3.1.2 四分樹...22

3.2 系統架構...23

3.3 運作流程...27

3.3.1 初始化...27

3.3.2 玩家登入...27

(6)

3.3.3 地圖分割...28

3.3.4 最小分割單位...32

3.3.5 換手...32

3.3.6 玩家退出...33

3.3.7 Local Game Server 退出 ...34

3.3.8 地圖合併...36

3.4 安全性與防弊...37

3.4.1 玩家退出...38

3.4.2 Local Game Server 不正常退出 ...38

3.4.3 玩家不正常退出...39

4. 第四章 實驗結果 ... 40

4.1 實驗一:可行性...40

4.1.1 場地配置...40

4.1.2 測量方法...40

4.1.3 實驗步驟...41

4.1.4 Local Game Server 結果分析 ...42

4.1.5 Master Server 結果分析 ...46

4.2 實驗二:地圖分割...48

4.2.1 場地配置...48

4.2.2 測量方法...48

4.2.3 實驗步驟...48

4.2.4 Local Game Server 結果分析 ...49

5. 第五章 結論 ... 53

5.1 結論...53

5.2 研究限制...53

(7)

5.3 未來展望...54

5.3.1 網路流量的改善...54

5.3.2 Local Game Server 的選擇 ...55

5.3.3 安全性與防弊機制...55

5.3.4 換手對遊戲體驗的影響...56

(8)

圖目錄

圖 一、client/server 架構示意圖...12

圖 二、peer-to-peer 示意圖 ...12

圖 三、傳統靜態分割示意圖...14

圖 四、Dynamic User Spheres ™...15

圖 五、Terazona 架構圖 ...16

圖 六、雷爵 SDK 系統架構圖...17

圖 七、Cross-Server Sentinels ...18

圖 八、Butterfly.net 架構圖 ...19

圖 九、地圖分割示意圖...22

圖 十、四分樹...23

圖 十一、系統架構圖...24

圖 十二、vyger 遊戲畫面 ...25

圖 十三、Vyger Online RPG 程式架構圖 ...25

圖 十四、本研究之程式架構圖...26

圖 十五、初始化...27

圖 十六、玩家登入...28

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

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

圖 十九、分割過程...30

圖 二十、啟動新的 Local Game Server ...30

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

圖 二十二、轉移 Client...32

圖 二十三、換手步驟...33

圖 二十四、玩家退出...34

圖 二十五、Local Game Server 要求退出 ...35

(9)

圖 二十六、Local Game Server 退出 ...36

圖 二十七、地圖合併...37

圖 二十八、效能工具界面...41

圖 二十九、送出流量圖...43

圖 三十、接收流量圖...43

圖 三十一、CPU 使用率圖...44

圖 三十二、Ping 值分析圖 ...45

圖 三十三、換手過程...45

圖 三十四、Master Server 送出流量圖 ...46

圖 三十五、Master Server 接收流量圖 ...46

圖 三十六、Master Server CPU 使用率圖 ...47

圖 三十七、送出流量圖...49

圖 三十八、詳細送出流量圖...50

圖 三十九、接收流量圖...50

圖 四十、詳細接收流量圖...51

圖 四十一、CPU 使用率圖...51

圖 四十二、詳細 CPU 使用率圖...52

(10)

表目錄

表 一、線上遊戲業者成本比較...2

表 二 、連線遊戲類型...6

表 三 美國線上遊戲市場比較...9

表 四、頻寬人數對照表...47

(11)

1. 第一章 緒論

1.1 研究背景與動機

線上遊戲在近年已經成為了非常熱門的行業﹔不論是在國內外,線上遊戲的 產值都不斷的在成長。韓國從 1999 年開始,遊戲廠商的數目在三年之內快速成 長至 100 家﹔而韓國的線上遊戲廠商 NCSoft 的年獲利也在 2002 年達到了 4000 萬美元的水準[ 1 ]。在台灣,線上遊戲的產值至 2003 年已經成長到 71 億的規模 [ 2 ],國內幾家重要的線上遊戲廠商的獲利能力也十分受到肯定,如遊戲橘子、

智冠、華義、大宇等業者都已經上櫃或上市,並且積極的拓展亞洲其他國家的市 場,藉著之前成功的經驗,以代理商的方式將市場版圖延伸至香港、中國、新加 坡等地﹔同時在歐美地區的線上遊戲市場也有蓬勃的發展,美國著名的遊戲廠 商,如 EA、Sony Online Entertainment、微軟等都有投資線上遊戲的計畫。微軟 公司(2002)並預測 2005 年全球互動娛樂業產值 800 億美元,旗下的家庭遊樂器 產品 Xbox 也推出了連線服務,稱為 Xbox live。網路遊戲已成為微軟研究院四大 研究方向之一,比爾蓋茲稱這是最好的投資[ 3 ]。

然而在高度成長的背後,線上遊戲的產業也逐漸出現了隱憂。根據 NetValue 2002 年調查,台灣線上遊戲人口將在 2003 年達到飽和,在台灣遊戲人數相對 成長趨緩下,會出現供過於求的排擠效應[ 4 ]。在供過於求的情況下,線上遊戲 業者若無法開發新市場,便勢必會與其他同業激烈的競爭,造成獲利時間的延後 以及利潤的下滑。由於遊戲產品驟增,玩家選擇也多,相對的忠誠度就比較低,

因此,既有的業者為留住玩家,新業者為爭取新玩家的青睞,都必須投入高昂的 行銷成本。對業者來說,這代表投資回收的時程拉長,以一款同時在線一萬人規 模的遊戲來看,大約要二十個月才能回本(以月費三百元,初期投入成本新台幣 六千萬來計算),相較於第一批進入線上遊戲市場的業者,像是華義國際的「石

(12)

器時代」和遊戲橘子的「天堂」,大約推出半年後就回本,實在有相當大的差距 [ 5 ]。

除了競爭激烈導致行銷費用激增,目前國內業者多以代理韓國遊戲為主的情 形也導致遊戲業者的進入門檻越來越高。韓國廠商有鑑於台灣線上遊戲市場發展 蓬勃,因此不斷的提高遊戲產品的授權費用,而台灣廠商因為競爭者眾,也出現 炒作授權費用以打擊對手的亂象,造成惡性循環。以遊戲橘子為例,2003 年向 韓國 NCSoft 的採購金額就高達 7 億元新台幣[ 2 ],佔全年度進貨淨額比率的 75.23%。這種不正常的成本結構使得台灣的遊戲廠商的處境日益艱難,只有資本 額較大的企業才有辦法稱過漫長的虧損期,限制了規模較小的新進企業的發展空 間。

有鑑於此,尋找降低營運成本的方法無疑是國內遊戲廠商增加獲利的關鍵。

除了增進本土廠商的研發能力,減少對外國遊戲開發商的依賴之外,我們認為降 低頻寬費用及主機的維護成本亦能增加獲利的空間。根據永昌證券的研究,國內 線上遊戲的廠商每年花費在頻寬和機房建設的成本均十分可觀,整理如表 一[ 6 ] 所示。

表 一、線上遊戲業者成本比較

公司 智冠 第三波 大宇 遊戲橘子 華義

線上遊戲策略 中華網路 宏碁戲谷 大宇全球 遊戲橘子 華義

機房投資 主機代管 主機代管 主機代管 自有機房 自有機房

使用 T3 - 2 4.5 條 7 條 3 條

每條價格 - 100 萬 100 萬 80 萬 170 萬

每月頻寬成本 100 萬 200 萬 600 萬 560 萬 510 萬 每年頻寬成本 1200 萬 2400 萬 7200 萬 6720 萬 6120 萬

目前會員數 台灣 50 萬人

大陸 35-40 萬人 剛推出 22 萬 55 萬 60 萬 同時上網最高人

台灣 1.5 萬人

大陸 5 萬人 1 萬 1-1.2 萬 5.1 萬人 3 萬

ISP 合作對象 Hinet Hinet Hinet 和信 Seednet、東森 合作方式 主機代管 主機代管 主機代管 持股 9% 主機代管

(13)

以遊戲橘子為例,2001 年的頻寬費用為 6720 萬元,與其當年的稅前純益 325,081,000 元相比已佔了 20%左右,再加上遊戲橘子在機房建置上的花費高達 1.8 億元[ 6 ],明顯的可以看出網路頻寬與主機維護的費用是遊戲廠商重要的成 本項目之一。

因此本研究期望能從頻寬與主機維護費用這方面著手,試圖找到一個有效降 低成本的方法,以期能減少支出,增進利潤,進而提升國內遊戲廠商的競爭力。

1.2 研究目的

傳統的線上遊戲採用的是 Client-Server 架構,參與遊戲的玩家連線到中央的 遊戲主機(game server),並對其傳送操作的指令。遊戲的勝負都由 game server 做 判斷。在這樣的架構之下,game server 明顯是一個效能瓶頸,所能負荷的人數必 然受限於硬體的能力與頻寬的限制,目前多數的廠商採取的做法是設立多台 game servers,每一台服務固定人數的玩家。這種做法雖然解決了連線人數的上 限問題,但是 game servers 之間的玩家不能互動,並且每一台 server 的負擔也可 能不平均,而且當任何一台 server 出現問題時其他 servers 也無法接管。為了解 決這些問題,並考慮以低成本開創線上遊戲事業,我們提出了一個混合

Client-Server 與 P2P 的架構。

在此架構中,中央的 server 負責管理資源,將實際的連線負擔分散到遊戲玩 家的機器,增強系統的 scalability 能力。我們利用 Quadtree 的結構管理地圖和玩 家的機器,並將較多玩家的區域分割,分散給多台 Local Game Server,而先前分 割的區域如果人數變少時也可以再將它們合併起來,達到動態分配的效果。中央 的 Master Server 的功能包括儲存玩家的帳號資料、記錄每個分配區域的 Local Game Servers 位置,並比較 server 與 Client 雙方的遊戲狀態資料是否一致,以維 持公平性。由於本系統架構的 Local Game Server 玩家需要負擔頻寬與系統資源,

我們可以提供適當的回饋,鼓勵玩家自發性的擔任 Local Game Server,如此一

(14)

來,線上遊戲的營運成本將可以大幅的降低。藉由上述的動態分配能力、防止作 弊的機制及有效的管理方法,本架構將能提供一個真正能容納巨量玩家同時上線 的遊戲平台。

(15)

2. 第二章 文獻探討

2.1 線上遊戲的定義

目前網路上流行之可連線遊戲依其遊戲類型、遊戲族群類型、付費方式及遊 戲平台的不同可分為三大類型:線上遊戲(ONLINE GAME)、撮合遊戲(MATCH GAME)及回合式遊戲(ROUND GAME) [ 7 ],依序詳述如下:

i. 線上遊戲(ONLINE GAME)

這個類型即是所謂的 MMOG,巨量多人線上遊戲[ 8 ]。主要的遊戲內容 以 RPG(角色扮演)、戰略、策略為主,是目前最熱門的遊戲類型,同時也可 說是狹義的 Online Game 之定義。這種遊戲可以容納上萬的玩家同時進行遊 戲,國內市場上的主要業者皆已經達到擁有數十萬名付費會員的規模[ 6 ]。

此類線上遊戲在國內的市場上,代表的產品有《天堂》、《石器時代》、《仙境 傳說 RO》等。收費的方式是由玩家在各通路零售店(7-11、遊戲軟體販售店、

書店等)購買點數卡,並安裝該遊戲軟體,再以連線的方式到該遊戲網站填寫 個人資料以註冊個人帳號,方可進入遊戲。點數卡內含一定時數,每次上網 進行遊戲,遊戲公司會依上線時數,扣除帳戶中的遊戲點數。

ii. 撮合式遊戲(MATCH GAME)

玩家可以自行開設遊戲伺服器,讓其他志同道合的遊戲夥伴呼朋引伴連 上該平台開局對戰,或是加入到由遊戲廠商提供的伺服器,和其他的玩家進 行遊戲。 軟體開發商或代理商通常也會架設同好網站,提供購買遊戲軟體的 玩家們一個對戰與討論的空間,而網站本身提供媒合系統。若不透過網站的 媒合,此種遊戲也可以直接在區域網路進行對戰,十分適合網咖的經營形態,

因而成為目前網咖業者最盛行的網路對戰遊戲,此類代表遊戲有世紀帝國 (AOE)、星海爭霸(Star Craft)等。此類遊戲廠商不能直接由連線過程中收取費

(16)

用,僅有軟體銷售費用,以及授權網咖安裝的授權費收入。而網咖採購這類 遊戲後,可以透過消費者在網咖進行遊戲,使得消費時間延長而增加收入。

iii. 回合式遊戲(ROUND GAME)

回合式的遊戲通常以網站的形式提供,如宏碁戲谷,主要遊戲以麻將、

橋牌、五子棋、賽車等。此類遊戲扎根最早,在 1998 年 1 月傳雅電腦便已 推出 i.Game(遊戲網間) ,提供橋牌等回合制遊戲,也有單人遊戲,算是國內 最早的遊戲網站。回合制的遊戲主要目標顧客群是針對上網找樂趣的網友,

此型態線上遊戲多採免費註冊,開放式的方式提供網友玩遊戲。此類的遊戲 廠商的收入來源主要是網站的廣告收入,部份業者則是以收取會員費作為收 入來源。

表 二 、連線遊戲類型

種類 Online Game Match Game Round Game 族群特性 族群凝聚力最高,遊戲

的忠誠度也較高

三五好友一同號召玩樂 單人或少數人遊戲,群 聚力較低 遊戲特性 需耗費較多時間專研遊

戲場景和角色能力累積

著重於短時間內的刺激 對戰

打發時間,純粹好玩的 遊戲

營收來源 軟體販售收入 會員連線收入

廣告收入 線上購物收入

軟體販售收入 廣告收入 電子商務

會員費 廣告收入

代表遊戲 網路創世紀

天堂 石器時代 魔力寶貝

CS(戰慄時空之絕對武 力)

世紀帝國 星海爭霸

宏碁戲谷:麻將、橋牌、

五子棋、賽車

未來發展潛力 商機最大 商機可逐漸開發 未來發展性較低

由表 二[ 9 ]可知,第一類的 Online Game(或稱 MMOG)為目前商機最大,

並且已經是國內發展最蓬勃的遊戲類型,因此本論文的討論重點皆以此遊戲類型 為主。

(17)

2.2 線上遊戲的發展現況

2.2.1

概觀

MMOG,巨量線上多人遊戲在所有連線遊戲當中,由於實在的獲利能力無 疑的已經成為了最成功的一種類型。一個 MMOG 通常會以一台 Server 負擔 2000 到 4000 人的方式,讓成千上萬的玩家可以同時上線,在一個虛擬的世界之中進 行互動。玩家在這個虛擬世界中可以產生獨有的角色,在遊戲的進行過程中讓這 個角色的能力不斷成長,得到新的物品或學習新的技能等等。

MMOG 採用的是 client/server 架構,由遊戲廠商維護專屬的遊戲 Server 並 提供所需的網路頻寬。業界的遊戲 Server 所採用的平台包含 Linux、Windows 等 主流的作業系統都有,而硬體等級從雙 Pentium 的 PC server,到更強力的專業架 構都可見到。遊戲廠商必須要提供 24 小時持續不間斷的服務,讓玩家隨時可以 登入進行遊戲,僅能允許在必要的維護工作時,進行短暫的停機。同時,遊戲廠 商需要提供一個專門的客服部門來處理遊戲相關的問題,如遊戲程式的 Bug 或 是不良玩家的干擾等等。

MMOG 通常是以零售或線上下載的方式販售 client 端的軟體,再以收取月 費的方式作為收入來源。對於遊戲廠商而言,廠商必須促使玩家不斷的繳交月費 以確保收入,這種情形就和傳統以零售方式販賣的單機遊戲的商業模式不同,而 是以服務為中心的商業模式了。因此對於熟悉傳統零售模式的遊戲廠商而言,通 常是一個困難的轉型過程。

2.2.2

北美的市場概況

線上遊戲在市場上已經有數十年的歷史,而傳統純文字界面的線上遊戲,如

www.play.net 同時上線的人數也有數千人之譜。[ 12 ]但是在 1997 年,由 EA 所

推出的圖形界面的線上 RPG(Role Playing Game ,角色扮演)遊戲,Ultima online ,

(18)

在線上遊戲的發展史上無疑的樹立了新的里程碑。截至 2003 年付費會員的人數 已成長至 20 萬名,雖然在近幾年人數的成長情形已經趨緩,但是 EA 公司積極 的在歐洲和亞洲市場架設遊戲 Server,拓展這兩地的市場,拉大與其他競爭者的 差距。Ultima Online 已經是 EA 公司除了知名的運動類遊戲之外,最重要的產品。

之後由 Sony Online Entertainment 所推出的 EverQuest 更超越了 Ultima Online 的 成就,成為西方市場最成功的產品。付費會員數目目前已經超過了 50 萬人,並 且仍不斷的推出程式的升級和內容的更新。到目前為止 EverQuest 所引起的風潮 仍未有減退的跡象,儘管 Sony Online Entertainment 開始把經營方向延伸至 PS2 遊樂器的版本(稱作 EverQuest Online Adventures),甚至在 EverQuest2,EverQuest 的續作推出之後,仍未影響到 EverQuest 受歡迎的程度。

除了鞏固現有產品的佔有率,EA 和 Sony Online Entertainment 同時也推出許 多不同類型的線上遊戲。Sony Online Entertainment 為 LucasArts 製作了以電影星 際大戰為主題的線上遊戲 Star Wars Galaxies。這款遊戲已在 2003 年 7 月 9 日[ 13 ] 上市,並且在上市兩個月內達到 27 萬 5 千名付費會員的規模[ 14 ]。EA 也在 2001 年到 2002 年間發行了 4 款新的線上遊戲,包括 2002: Majestic, Motor City Online, Earth & Beyond, and The Sims Online 。雖然這幾款遊戲尚未在商業上獲得成功,

但是 EA 公司仍對其寄與厚望。尤其是 The Sims Online,這款根據大受歡迎的 PC 單機板本所改編的線上遊戲被 EA 視為下一個重點產品。如果 EA 能夠將 PC 單 機版本所創下的 800 萬套的銷售佳績成功的移轉到線上版本,則這套遊戲將會改 變線上遊戲市場的版圖。然而至 2003 年 2 月,The Sims Online 僅有 4 萬至 5 萬 名的付費會員,還未達到期望的表現。美國線上遊戲的市場比較,整理如表 三 [ 12 ]。

(19)

表 三 美國線上遊戲市場比較

線上遊戲分類 美國市場規模 收入來源 平均來自每位玩家的收入金

額(ARPP)

MMOG 小,100 到 150 萬人 軟 體 銷 售 、 會 員 月 費、相關精品與付費 服務

每月$9.95-$12.95

PC 單機版遊戲

(以光碟片發行)

小,每款遊戲的規模各有 不同,但整體小於 500 萬套

搓合玩家之費用、少 部份須付會員費

每月$0-$4.95

網站形式的遊戲 大,超過五千萬人 廣 告 收 入 、 付 費 下 載、會員費

每月$0-$4.95

家庭遊樂器 小,約 80 萬上網用戶 軟體銷售、會員費、

付費服務

每月$0-$4.95 Xbox Live 要再 加上一年$49.95 的費用

無線裝置(如手機) 小,但成長快速,近五年 有 10 倍的成長

廣 告 收 入 、 付 費 下 載、會員費、付費服

每月$0-$4.95

互動電視 小,僅有少部份具有互動

功能的 set-top box(機上 盒)能提供

廣 告 收 入 、 開 通 費 用、付費服務

N/A

2.2.3

亞洲的市場概況

以往亞洲的市場都被美國主要的遊戲發行商所忽略,原因是傳統以零售方式 為主的發行商擔心亞洲猖獗的盜版行為會影響獲利。但是對於線上遊戲而言,收 入的來源是會員費用,而不是零售的收入,因此盜版的影響不復存在。同時,由 於亞洲近年來的寬頻網路的普及(以韓國為例,目前已經是世界寬頻網路最普及 的國家,高達60%的家庭都有寬頻網路)[ 12 ]使得網路遊戲在亞洲的市場發展的 比歐美更快。儘管歐美地區使用者平均的電腦配備等級較亞洲來的高,但是亞洲 地區常見的網咖提供了足夠的電腦配備,因此抵消了這項障礙。

(20)

日本是亞洲的一個特例﹔有別於亞洲的其他國家,日本的盜版問題比較不嚴 重,因此並沒有影響到傳統以零售方式銷售的單機板遊戲的市場。同時在日本 Internet反倒不如手機上網的服務來的受歡迎,因此日本國內的線上遊戲市場發展 較其他地區來的緩慢。

韓國在亞洲當中是線上遊戲發展的最興盛的國家,韓國的領導廠商NCSoft 所發行的Lineage(在台灣稱作天堂)已經累積到驚人的400萬名付費會員的程度,

遠遠超過前述的EverQuest或是Ultima Online等歐美遊戲。從NCSoft開始,許多由 韓國廠商發行的線上遊戲都創造了銷售佳績,遊戲產業的產值已經超過了韓國的 汽車工業[ 3 ]。這些廠商的成功也影響了亞洲其他地區,包含台灣的線上遊戲市 場,排名前幾名的線上遊戲多由韓國引進,且整個線上遊戲的市場也以韓國製的 遊戲佔大多數。

北美地區的重要遊戲廠商皆已展開將旗下的線上遊戲拓展到亞洲市場的計 畫。Sony Online Entertainment 與韓國的NCSoft合作,將EverQuest改寫成韓文 版,並在當地銷售。Ultima Online 在日本與韓國也已經有不錯的成績,但是和 韓國自製的遊戲仍無法相比。

2.2.4

國內的市場概況

國內最早的線上遊戲是 1999 年,由華彩所推出的「萬王之王」[ 9 ]。初期 並未形成熱潮,但是在 2000 年暑假,華義國際推出的「石器時代」、遊戲橘子推 出的「天堂」、智冠推出的「網路三國」、聖教士推出的「千年」、協倫推出的「黑 暗之光」等的強勢行銷帶動下,一時之間,網路遊戲蔚為風潮,會員人數迅速增 加。在 Online Game 於國內剛開始興起的時期,先期進入的皆是屬於剛成立的新 公司,如遊戲橘子、華義國際,反而如大宇資訊、昱泉等呈觀望態度。而在目睹 Online Game 這塊處女市場的驚人爆發力與獲利能力後,這些公司遂決定利用其 本身在 PC Game 所累積的經驗與知名度,進入這個市場。

根據資策會 MIC 的研究,2003 年國內的遊戲市場與 2002 年相比有大幅的

(21)

成長,達到了 90.6 億元新台幣。2003 年線上遊戲佔了 71 億元,比起 2002 年的 41 億元成長許多,而單機遊戲從 2002 年的 21.4 億元反而減少至 19.6 億元[ 2 ]。

由此看來,雖然國內的遊戲市場整體是有所成長,但是單機遊戲的市場規模反而 呈現萎縮,顯示出線上遊戲已經壓縮到單機遊戲的發展,也證明了線上遊戲乃是 國內遊戲市場的主流。

綜觀國內外的線上遊戲市場,很明顯的在商業上已經被證明是一個成功的商 業模式。與傳統遊戲市場相比,採每月收費的方式可以確保獲利﹔同時亦消除了 軟體盜版對收入的影響。隨著網際網路使用人口的不斷成長,架構在網路上的線 上遊戲也已經的成為一種主流的休閒娛樂方式,因此未來的發展性可說十分的樂 觀。然而在高度成長的背後,由於競爭越來越激烈,如何有效的控制營運成本對 線上遊戲廠商而言也逐漸是一個不得不去面對的問題。接下來我們將以技術的觀 點來討論線上遊戲面臨的問題。

2.3 線上遊戲面臨的困難

在這一節中我們將以系統架構的角度去探討線上遊戲面臨的困難。以連線架 構來看,線上遊戲可以分為 peer-to-peer 和 client/server 兩種[ 15 ]。在 client/server 架構下,所有的玩家都連線到一個中央的 Server 上。當任一玩家要變更其狀態 時,會向 Server 傳送一個要求,Server 再根據遊戲規則去計算出這個要求所造成 的變化,之後便向所有的玩家發出更新訊息,告知玩家變化後的遊戲狀態,如圖 一所示。例如:有一個玩家希望攻擊某一個玩家,此時便會對 Server 送出一個攻 擊的要求。Server 收到這個訊息之後,會根據遊戲的規則,例如攻擊的有效範圍、

傷害程度去計算這個攻擊的要求是否可行,若可行則會造成對方多少傷害等等變 化,將遊戲的狀態更新。計算出更新之後,再將最新的狀態傳送給所有玩家,此 時被攻擊的玩家就會收到被攻擊的訊息,並且在玩家的螢幕上顯示對應的變化。

由上述可知,所有的訊息都需要透過 Server 來更新,因此可以保證所有人所收到 的訊息皆一致。但是很顯然的,正由於所有的訊息都要經過 Server 才能傳送,因

(22)

此 Server 很容易成為效能的瓶頸。

1.其中一位玩家 送出指令

2. Server傳送更 新的狀態給所有

的玩家

圖 一、client/server 架構示意圖

而在 peer-to-peer 架構中,當某個玩家的狀態改變時,要對其他所有的玩家 傳送更新的訊息,其他玩家將根據這個訊息去更新遊戲的狀態。在這個架構底 下,由於每一個玩家都直接對其他人傳送訊息,因此不會有某一台機器成為瓶 頸,如圖 二所示。同時因為傳送給每一個玩家的更新訊息都相同,因此也有人 利用 Multicast 的方式[ 16 ],讓網路設備自動傳送訊息給其他所有的玩家,使單 一玩家傳送訊息所需的時間降到最低。但是在這個架構下玩家必須誠實的回報所 有狀態的更新,每一個玩家的遊戲狀態才會同步﹔若有一個玩家回報偽造的資 訊,則遊戲的公平性便會被破壞。

玩家送出指令時,須傳送更 新訊息給其他所有的玩家

圖 二、peer-to-peer 示意圖

由於在 peer-to-peer 架構下每個玩家傳送的訊息並沒有經過認可,因此當上述的 情形發生時,其他的玩家並不能及時的察覺﹔換句話說,這樣的架構不能充分的

(23)

保障玩家的權益。

一個連線架構要應用在有收費行為的商業遊戲上,維持玩家之間的公平性是 非常重要的。由於 Peer-to-Peer 的架構目前仍未有較好的防止作弊的設計,因此 一般市面上的線上遊戲均是採用 client/server 的架構,而本論文討論的範圍也以 此種架構為主。

2.4 現有的解決方案

這一章將探討傳統廠商解決問題所採用的方法,以及目前已被提出的幾種改 良式架構。

2.4.1

概觀

前一章提到了 client/server 的架構中,server 會成為整個系統的瓶頸。一般 為了解決單一 server 負擔過重的問題,會採用 clustering 的方式,將多台機器集 合成一個 server cluster﹔連線進來要求服務的 client 會被分配到不同的機器,以 分擔流量。但是應用在線上遊戲時,由於遊戲玩家彼此的狀態必須隨時同步,因 此若要能讓不同 server 上的玩家能夠彼此互動的話,則每一台 server 都必須要有 遊戲中最新的狀態,當任一台 server 上面的狀態有所改變時,也必須要讓所有的 server 同步更新。線上遊戲的狀態隨時都在更新,每一個玩家隨時都可能下新的 指令,要讓多台遊戲 server 隨時同步是一個困難的挑戰。

目前線上遊戲的開發商,尤其是韓國的廠商,大都是使用靜態分割的方式將 玩家分流。遊戲廠商提供多部機器作為遊戲 server,玩家註冊遊戲帳號時便要選 定其中一台 server,一但選定之後就不可更換。這樣的設計雖然同時可以服務大 量的玩家上線,但是實際上每一台 server 上面執行的遊戲程式是互不相干的﹔不 同 server 上面的玩家無法直接互動,等於是同時有多個平行的遊戲空間同時在運 作,而不能讓所有的玩家一同進行遊戲,如圖 三所示。

(24)

雖然在地圖的同一個位置,

看到的卻是不同的玩家 Server A Server B

圖 三、傳統靜態分割示意圖

這種方式暫時的解決了單一 server 能力有限的問題,但是當其中一台 server 發生問題時,當初在這個帳號上註冊的玩家便不能登入,就算當時有其他的 server 正常運作,也無法互相支援。有的廠商將所有的 server 分成幾群,同一群的幾台 server 共用一個帳號資料庫,使用者可以選擇同一群內的任一 server 登入,不受 單一 server 的限制。雖然不至於一台機器故障就有部份玩家無法登入,但是以負 載平衡的觀點來看,由於玩家可以在註冊時自由的選擇 server,這種靜態分割的 方式無法保證每一台機器所分配到的玩家數目相同。因為一台 server 上的的負載 無法轉移到其他的 server 上執行,所以每一台 server 的負載完全受到在上面註冊 的玩家數目而定,不能確保每一台機器都發揮到最大的效能。每一台 server 未必 會有相同數目的玩家同時上線,代表每一台 server 的負載量也未必相同,而負載 量低的 server 又無法支援負載量高的 server,於是負載量過低的 server 便等於是 投資的浪費。

(25)

2.4.2

改良式架構

為了改善上述的情形,必須要解決如何將遊戲的狀態同步更新到多台 server 的問題。目前在業界已有幾家業者推出了解決方案,重點皆是在於如何將遊戲主 機的負載分散到多台主機。

i. Terazona

在這個架構中,同時有多台的 Game Server 一起運作,而玩家登入後經 由 Dispatcher Server 分配到其中一台 Server 進行遊戲。Dispatcher Server 會根 據 load-balancing 的原則,以目前各台 Server 服務的人數為依據,將新登入 的玩家優先分配給目前人數較少的 Server。Dispatcher Server 同時也會對所有 的 Game Server 送出 heartbeat 訊息,以監控所有 Server 是否正常運作。另外 架構當中有一個 Sphere server,使用了所謂的 Dynamic User Spheres ™ (動態 使用者球化空間)的技術,藉由觀察所有玩家的互動情形,將互動頻繁的玩家 分成多個 Group,以此決定當遊戲狀態改變時要通知的範圍[ 10 ] ,如圖 四 [ 17 ]所示。Sphere Server 同時也提供容錯的能力,當有機器滿載或是出問題 時可以偵測出來,並且重新分配負載。

圖 四、Dynamic User Spheres ™

遊戲的資訊和玩家的帳號等會儲存在資料庫中,每一台 Game server 可以 透過資料庫取得相同的遊戲狀態資訊。遊戲當中的 NPC(Non-Player

Character),也就是由電腦控制,依照遊戲的內容設計與玩家互動的程式是在 另外一群 NPC Server 上面執行,與服務玩家的 Game Server 分開。另外玩家

(26)

之間的聊天訊息可由另外的 Chat Server,將遊戲訊息的流量和聊天訊息的流 量分開,如圖 五所示。

圖 五、Terazona 架構圖

這個架構也包含了記帳系統,遊戲官方網站用的 Web Server 以及相關的 資料庫,可以提供一個線上遊戲營運所需的各種功能。

ii. 雷爵公司 SDK(Server Develop Kit)

由台灣的雷爵公司所開發的 SDK,已經實際應用在兩套線上遊戲上,分 別為”萬王之王”和”創世霹靂”。這個架構主要由 Login Server ,Game Server 和 資料庫所組成,Login Server 的作用就和前述的 Dispatcher 一樣,可以將玩家 導向至所屬的 Game Server。同樣的,這個技術也會將整個遊戲世界分區,讓 每一台 server 所負擔的量儘量一致,同時也提供容錯的能力,如圖 六[ 11 ] 所示。

而在雷爵公司提供的文件提到,在中國北京實際營運時利用了 5 台雙 Pentium III 733 的機器,便能服務 8000 人同時上線。根據該公司文件的說法,

傳統架構線上遊戲每服務 3000 名玩家所需的 server 設備成本便要 300 萬元,

而採用該公司之架構則僅需 30 萬元等級的設備[ 11 ]。由此可知,無法充分利

(27)

用硬體性能的傳統架構明顯浪費了許多設備的成本。

圖 六、雷爵 SDK 系統架構圖 iii. Butterfly.net:

這個架構同樣也將遊戲的世界分割成數個區域,分散到多台 Game Server 上面去執行。玩家登入時,先經過 Gateway Server,然後按照分配的規則導 向到其中一台 Game Server。而當玩家從一台 Game Server 負責的區域移動到 另一台 Game Server 的區域時,系統提供了一個 Cross-Server Sentinels 的機 制,如圖 七[ 19 ]所示,可以偵測出這種情形,隨後原本的 Game Server 會將 玩家目前的遊戲狀態資訊傳送到新的 Game Server,遊戲過程不會中斷。

(28)

圖 七、Cross-Server Sentinels

這個架構利用高速的光纖網路將每一台 Server 連接起來,因此 Game Server 能夠在短時間內把玩家的遊戲狀態轉移,不會造成遊戲的延遲﹔同時 當一台 Game Server 滿載,或是發生問題時,也可以將這台 Game Server 原有 的負載移轉到其他的 Server 執行。每一個玩家的狀態原本是儲存在 Database 中,當玩家登入時,這個資料會被 Game Server 從 Database 讀取出來,直到 這個玩家登出時,便又會寫回資料庫中。Deamon Controllers 的功能則和前述 的 Terazona 架構中的 NPC Servers 相似,專門控制遊戲當中依照遊戲內容所 設計的人工智慧角色,會和玩家進行互動,如圖 八[ 18 ]所示。

(29)

圖 八、Butterfly.net 架構圖

2.4.3

與傳統架構的比較

比較這三種架構,我們可以發現分散玩家至多台 Server 的技術是這些架構的 重心。玩家可以從一台 Server 轉移至另一台,因此系統可以視目前每一台 Server 的狀況調整負載的分配,進而達到以下幾種能力:

i. Scalability

傳統架構中,如果某台 Server 的上線人數超過其負荷就必須再增加一台 Server,而原有的 Server 卻不會因為增加這些 Server 而減少負荷(以增進服 務品質)。而上述之改良架構每一台機器都能發揮最大的效益,因此每增加一 台就能夠明顯的增加可容納的負載量。

(30)

ii. Reliability

傳統架構中,因為每一台 Server 負責的是獨立的區域,因此有一台 Server 發生問題時,這台 Server 上面的玩家就會受到影響,其他正常運作的 Server 也不能支援。上述的改良架構中,由於玩家可以轉換至不同的 Server 繼續進 行遊戲,因此有一台 Server 出問題時,系統可以將上面的負載轉換至其他的 Server,不會造成停機。

iii. 節省成本

由於每一台 Server 都能發揮最大的效益,因此不會有投資浪費產生,相 較傳統的架構而言可以大幅節省成本。

上述的功能可以增加玩家連線的品質,降低成本並提高系統的可靠度,因此 可以有效的強化線上遊戲廠商的競爭力。然而上述的架構中,遊戲廠商依然需要 負擔所有的 Server 端之設備與維護成本。若是能夠將這些成本分散由玩家分擔,

相對而言一家廠商要開創線上遊戲事業所需的資金門檻便可降低,同時由於維護 成本降低,營運的利潤會隨之增大。因此我們將結合上述之改良架構的方法,再 加上 Peer-to-Peer 之分散成本的觀念,提出了一個新的架構。

(31)

3. 第三章 理論架構

在我們提出的架構中,主要的觀念是將遊戲的地圖分割成多塊,分散給多部 Server 管理。這個方法已經在前述的 terazona、雷爵 SDK 和 Butterfly.net 等架構 中被採用。我們並利用四分樹的結構來儲存地圖,使得地圖可以動態的切割成多 塊區域,以分配給多個 Server 負擔。有了分散負擔的依據之後,我們更進一步的,

將 Peer-to-Peer 的觀念加入,讓 Server 端程式在玩家的機器上面執行。這些 Server 程式彼此之間會自行處理大部分遊戲運作時的工作,遊戲廠商僅需要負責有限的 管理工作。這一章將詳細的介紹我們所提出的架構之運作原理和流程。

3.1 運作原理

本章將介紹本研究中提出架構的特色,系統的設計以及各種運作流程的細節 說明。

3.1.1 Peer-to-Peer

在我們的架構中,我們會選出部份玩家的機器,也就是 Client 端來執行 Server 的程式,分擔整個遊戲的負載,我們稱為 Local Game Server。而這些執行在玩家 機器的 Server 可以當作是一個”Peer”,每個 Peer 之間可以自主的協同運作。例如 玩家在改變位置時,從一台 Server 的負責區域移動到另一台時,兩台 Server 之 間會自行移轉玩家的遊戲狀態資訊。而遊戲廠商必須提供一個中央控管的機制,

稱為 Master Server,記錄每一台 Local Game Server 所管理的區域,導引玩家登 入到正確的 Local Game Server。

由於可以由玩家來擔任 Local Game Server,Client 端與 Game Server 之間通 訊的網路頻寬便可由玩家來分擔,遊戲廠商便可以減少網路頻寬的支出。另一方 面,Local Game Server 的設備維護支出也等於由玩家來分擔。遊戲廠商也可以自

(32)

行架設機器擔任一部份的 Local Game Server,以控制服務品質。

3.1.2

四分樹

在本研究的系統架構中,利用了四分樹的資料結構來切割地圖的空間。四分 樹是階層式資料結構的一種,在空間資料的表示法上扮演著重要的角色。四分樹 中的一個節點對應了遊戲地圖上的一塊區域,若這個區域裡面需要在細分成更小 塊的區域時,便在這個節點底下長出四個子節點,將這塊區域分割成四個子區 域,分別代表這個區域的 NW(西北方)、NE(東北方)、SW(西南方)、SE(東南方)。

1

2

3

4

4 4

5 5 6 5

NE

SE NW

SW

圖 九、地圖分割示意圖

在圖 九中,數字代表負責該區域的 Server 編號。地圖空間每分割一次,便 產生四個子區域;而每一台 Server 可以負擔一或多塊區域。我們可以將這個關係 畫成四分樹,如圖 十所示。

藉由四分樹的資料結構,我們可以追蹤每一台 Local Game Server 所負責的 區域,當區域要分割成更小的區塊時,可透過增加子節點的方式來記錄;而多個 小區域要合併成一個大區域時,便刪除子節點。透過四分樹的這些特性,可以讓 遊戲廠商的 Master Server 輕易的管理地圖的分配。

(33)

2 3

1

4 4

4

6 5

5 5

圖 十、四分樹

透過分割地圖的動作,我們可以把上線的遊戲玩家分散給不同的 server 管 理,因此整個遊戲的連線與運算等負擔便可以由所有的 server 共同分擔,達到 Loading Balance 的能力,讓每一台 server 都能夠充分發揮硬體的能力,增進整個 系統的 scalability。以此為基礎,我們可以將遊戲空間完整的連接起來,讓所有 的玩家都能夠在同一個空間中互動,不必再為了單一主機的容量限制,而把玩家 分散到多個遊戲空間。

詳細的地圖分配與切割的原則,將會在後面有詳細的說明。

3.2 系統架構

系統共分為 Master Server、Local Game Server 和 Client 三部份,如圖 十一 所示。

i. Master Server:負責帳號的維護,記錄 Game Server 負責的地圖區域。

ii. Local Game Server:實際運作遊戲內容,與 Game Client 連線,並與其他的 Local Game Server 合作。

iii. Game Client:裝置在玩家的機器上,顯示遊戲的畫面,接收玩家的操作指令。

(34)

(Virtual Community of Game Players) Master

Server Database

Local Game Server

Local Game Server

Local Game Server

Local Game Server Game Client

圖 十一、系統架構圖

為了讓本研究提出的系統架構能在一個實際的遊戲上面運作,我們採用了一 個現有的 Open source project – Vyger Online RPG(Role Playing Game) [ 20 ]。這個 遊戲採用 Java 語言開發,提供了一個虛擬的遊戲空間讓玩家互動。在遊戲中每 個玩家可以選定一種人物作為自己的角色,在遊戲空間中可以自由的行走,彼此 之間也可以進行交談。遊戲的畫面如圖 十二所示。

Vyger 本身的地圖架構設計成可以允許不同的 server 管理不同的地圖,可以 讓我們利用這個設計去實作出分割地圖成多塊,並分散給不同的 Server 來管理的 功能。Vyger 的架構為一般的 Client/Server 架構,其中包含了一個 2D 的圖形界 面引擎,如圖 十三所示。

(35)

圖 十二、vyger 遊戲畫面

圖 十三、Vyger Online RPG 程式架構圖 Server

Gateway Server

Game Server

Account Server MAP

Data GUI Client

2D Graphic Engine

Common Library/Network Library

JAVA Virtual Machine

(36)

本研究所需要的程式架構將以 Vyger Online RPG 的原始架構為基礎來修 改。本研究之程式架構中的 Master Server 包含了原本 Vyger 的 server 程式中的 Account server module(作用為帳號的管理)、Quadtree 管理程式(地圖分配),

以及負責對其他 Server 傳送資訊的 Gateway Server。Local Game Server 基本上沿 用原有 vyger server 的大部分架構,加上本架構所需的各種流程控制的邏輯程 式。Client 的部份同樣修改自原始的 Client,使用原本的地圖格式、圖形資料等,

透過其原有的 2D 圖形引擎成像,加上與 Master Server、Local Game Server 溝通 時所需的流程控制程式。

Vyger Online RPG 使用了一個抽象化的函式庫,將低階的網路通訊等工作包 裝成物件。而實際傳送資訊的方式是採用將物件序列化(Serialize)的方法,直接 把一個訊息當中的資料與這個訊息所要執行的相關程式邏輯包裝成物件。上述的 功能都由圖 十四的 Common Library/Network Library 所支援,其中物件序列化的 功能是直接由 Java 本身所提供。

Common Library/Network Library

JAVA Virtual Machine

Local Game Server

Gateway Server

Game Server

Control Logic MAP

Data GUI Client

2D Graphic Engine

Quadtree manager Account Server

Master Server

Database Gateway

Server

Control Logic

圖 十四、本研究之程式架構圖

下一段將詳細介紹整個系統運作的步驟,以及架構中各單元的功用。

(37)

3.3 運作流程

3.3.1

初始化

首先遊戲廠商將 Master Server 啟動。第一台 Local Game Server 啟動後,向 Master Server 登入,Master Server 會告知這台 Local Game Server 其所負責區域的 資訊。由於尚未有其他 Server,此時全部的遊戲空間皆由第一台 Local Game Server 服務,Master Server 開始接受遊戲玩家的 Client 端程式登入,如圖 十五 所示。

1. Master Server 啟動

2. 第一台Local Game Server登入

3. Master Server 傳 送地圖範圍資訊

Local Game Server Master Server

圖 十五、初始化

3.3.2

玩家登入

遊戲玩家的 Client 端程式(以下簡稱 Client 端)登入 Master Server。Master Server 根據該玩家帳號所在位置,從 Quadtree 中找出所負責的 Local Game Server,並告知 Client。Client 端根據 Master Server 的訊息,重新登入到指定的 Local Game Server,如圖 十六所示。

(38)

1. Client登入

2. 從Quadtree中查詢目的地 的Local Game Server

3. Master Server 告 知目的地Local Game Server資訊

4. Client登入目的地 Local Game Server

圖 十六、玩家登入

3.3.3

地圖分割

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

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

1. 原本管理了3塊區域

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

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

(39)

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 登入,如圖 二十所示。

(40)

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

(41)

登入時,這台新的 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,此時遊戲會暫停。轉移完成之 後,便正式完成了地圖分割的動作,如圖 二十二所示。

(42)

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

Local Game Server

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

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

圖 二十二、轉移 Client

3.3.4

最小分割單位

如前述,當上線人數不斷增加時,地圖亦會不斷的分割成多塊。此時如果地 圖被分割了太多次,造成區域範圍過小的話,則玩家在遊戲過程中很容易移動一 小段距離就發生換手的情形。因此我們會訂定一個最小的分割單位,如果地圖切 割到這個單位的大小就不允許再切割。而如果這塊區域的上線人數依然繼續增加 的話,負責該區域的 Local Game Server 就會拒絕玩家進入。這個最小單位的大 小過大則無法發揮分散負擔的作用,過小則換手的機率過高,因此要根據這兩個 原則去訂定適當的大小。

3.3.5

換手

當玩家從目前的 Local Game Server 所掌管的區域,移動到其他 Local Game Server 所負責的區域時,Local Game Server 會根據先前由 Master Server 所告知的 鄰近區域的 Local Game Server 清單,查詢出下一個區域所負責的 Local Game

(43)

Server 的 IP 位置等資訊。

得知 IP 位置之後,便將這名移動中的玩家帳號資訊傳送給目的地 Local Game Server,至此便完成換手的動作,如圖 二十三所示。

3.3.6

玩家退出

當玩家想要結束遊戲時,會向目前連接的 Local Game Server 送出登出的訊 息。Local Game Sever 收到登出的要求後,首先將玩家轉移至 Master Server。接 著玩家登出的要求會在 Master Server 上面處理。Master Server 將該玩家目前的遊 戲狀態儲存,並通知玩家的 Client 端程式離線,如圖 二十四所示。

B A

A A

1. 由鄰近區域列表中查出掌 管目的地的Local Game

Server

3. 該Client 登入至目的地之 Local Game Server Server B

Server A 2. 傳送玩家的遊戲狀態給目的地

之Local Game Server

圖 二十三、換手步驟

(44)

2. Local Game Server 將Client轉移

至Master Server

1. Client 送出登出要求 3. Master Server儲

存玩家資料

4. 通知Client可以離線

圖 二十四、玩家退出

3.3.7 Local Game Server 退出

當一台 Local Game Server 想要停止服務,則可向 Master Server 送出退出的 要求訊息,訊息內容包含了一個亂數產生的序號。Master Server 收到要求後將這 個訊息儲存起來供之後的步驟使用。

Local Game Server 送出要求之後便從目前所管理的 Client 中,挑選出適合擔 任執行 Server 程式的 Client,並送出要求訊息,訊息中包含先前傳送給 Master Server 的序號。挑選 Client 的原則如同前述「3.3.3 地圖分割」所描述。當有一台 Client 端同意啟動 Server 程式時,便會回傳同意的訊息給要求退出的 Local Game Server,而 Server 程式啟動之後,會向 Master Server 登記,並傳送序號已表明接 替原本要求退出的 Local Game Server。Master Server 收到序號後便可以更新 Quadtree 中的地圖分配記錄,並通知這塊鄰近區域的所有 Local Game Server,以 更新這些 Server 的鄰近區域列表,如圖 二十五所示。

(45)

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

Server

2. Master Server 記錄相關資訊

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

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

5. Client 同意啟動,

送出回應

6. 啟動Server程式

圖 二十五、Local Game Server 要求退出

當接替的 Local Game Server 啟動完成之後,會對要求退出的 Local Game Server 送出通知,表示可以退出了。此時原本的 Local Game Server 將所管理的 玩家的遊戲狀態資訊轉移給接替的 Local Game Server,完成退出的程序,如圖 二 十六所示。

(46)

2. Master Server根據序號查 出要取代的Local Game Server,並更新四分樹記錄

1. 接替的Local Game Server 送 出序號,登入到Master Server 6. 舊的Local Game

Server退出

4. 傳送玩家之遊戲帳號資訊

5. Client 登入至接替的 Local Game Server 3. Master Server找出鄰近區域

的Local Game Server,並通 知其更新資訊

圖 二十六、Local Game Server 退出

3.3.8

地圖合併

隨著遊戲的進行,遊戲中的各個玩家會不斷的移動位置。由於區域分割過細 會造成遊戲過程中需要換手的次數增加,當有某些區域的玩家人數降低時便可以 將這個區域合併到鄰近的區域,以避免區域分割太細的問題。

當某一台 Local Game Server 的人數降低,連續一段時間的負載都低於一定 水準之後,便詢問鄰近區域的 Local Game Server,要求接管。當四分樹中的同一 層的節點所對應的地圖區域都合併到同一部 Local Game Server 時,便可將四個 節點合併為一個節點,如圖 二十七所示。

(47)

A

A A

A A B

A

B

1. Server B掌管的區域合併 到Server A的區域

A A A

A

A

A A

A A A

A

A

2. 4塊區域合併,刪除子節點

A

圖 二十七、地圖合併

3.4 安全性與防弊

在這個架構中,Local Game Server 是由玩家自願性的擔任。由於牽涉到遊戲 的公平性,以及玩家之間的利益衝突的問題,因此必須進一步的討論防弊與安全 性的問題。由於 Local Game Server 是在部份玩家的機器上執行,因此若有一惡 意的玩家被分配到某塊區域擔任 Local Game Server,在無法保證程式碼不會被修 改的情形下,該名玩家有機會透過如送出錯誤資訊,或故意阻止其他玩家連線等 手段干擾遊戲的公平性。

同時,由於玩家所維護的機器並不保證隨時都能夠正常運作,有可能因為當 機、網路斷線等原因而不正常的中斷服務,因此本架構必須考慮到系統的穩健性 (robustness )問題。

針對以上的問題,本研究在防弊方面提出了使用 Client 和 Local Game Server 雙方同時認證的方法,以防止其中一方送出偽造資訊。而穩健性方面,由於 Master Server 是遊戲廠商所維護,比起一般玩家的機器來的更可靠,因此我們可以藉由

(48)

Master Server 來處理 Client 或 Local Game Server 不正常離線時的管理問題,並且 可以記錄各台 Local Game Server 過去的表現,來決定未來這些機器被分配成為 Local Game Server 的優先順序。同時這個系統也可以採用時下拍賣網站的做法,

玩家可以評鑑各 Local Game Server 的表現,以玩家之間的力量去遏止惡意玩家 的影響。

3.4.1

玩家退出

在遊戲進行過程中,Client 和 Local Game Server 都擁有玩家目前的遊戲狀態 資訊,而當玩家退出時除了 Local Game Server 將玩家的遊戲狀態儲存在 Master Server 之外,Client 端也可以送出一份最後的遊戲狀態給 Master Server,由 Master Server 比較其差異。若完全相同才能視為正常退出,否則即有一方送出的是修改 的資訊。

而作弊之責任歸屬的問題,則需要遊戲廠商的客服人員的介入調查,這一點 和現有的線上遊戲相同。例如若許多 Client 退出時皆發生資訊不一致的情形,則 可能是該 Local Game Server 送出不正常的資訊;而若某一 Client 的資訊與 Local Game Server 不一致,而該 Local Game Server 所服務的其他 Client 並沒有不一致 的情形發生,則可能是該 Client 出現問題。遊戲廠商可以分析記錄檔的變化,根 據遊戲規則的設計來推斷合理性,以判斷出作弊的情形。

3.4.2 Local Game Server 不正常退出

當某台 Local Game Server 不正常的離線了,則原本所服務的 Client 在經過 一定時間的等待之後便認定其連線已中斷。此時受到影響的 Client 向 Master Server 回報此一情形,而 Master Server 便嘗試與該 Local Game Server 連線。若 Master Server 亦無法與之建立連線,則 Master Server 會從目前上線的其他 Local Game Server 中尋找一台來接替斷線的 Local Game Server,並使用 Client 端最後 的遊戲資訊當作目前的遊戲資訊,繼續進行遊戲。

(49)

若只有某一台 Client 無法與該 Local Game Server 建立連線,而 Master Server 察覺該 Local Game Server 並無異常情形發生,則將該 Client 視為退出,儲存其 遊戲狀態資訊。這個情形會被 Master Server 記錄下來,並影響到該 Local Game Server 的評價。若此 Local Game Server 是惡意的阻止某位玩家連線,而該玩家 在其他的區域皆能正常進行遊戲,則遊戲廠商的客服人員便可以依此記錄進行調 查。

3.4.3

玩家不正常退出

當 Local Game Server 經過一定時間之後,仍無法和某個 Client 連線,則將 該玩家的遊戲狀態資訊傳送至 Master Server,Master Server 會儲存其資訊,視為 正常退出來處理。

(50)

4. 第四章 實驗結果

4.1 實驗一:可行性

為了驗證本研究所提出的架構之可行性,我們以實驗的方法來證明。實驗的 目的為測量一台一般水準的 PC 在擔任 Local Game Server 的情況下,是否能夠負 擔足夠的玩家,並測量其負擔玩家數目與網路頻寬的關係。

4.1.1

場地配置

本研究利用學校電腦教室,共使用 52 台 PC,配備為 Pentium4 2.4Ghz,裝 有記憶體 512MB。

所有的 PC 以 100M 的區域網路連結。我們使用其中 2 台 PC,一台執行 Master Server 程式,另一台執行 Local Game Server 程式。其他的 PC 執行 Client 端程式,

以模擬多人同時上線的情形。

4.1.2

測量方法

i. 網路流量與 CPU 使用率:使用 Windows2000 所內建的“效能“工具程式,

記錄每一秒鐘 Local Game Server 的網路流量與 CPU 使用率的變化,如圖 二 十八所示。

(51)

圖 二十八、效能工具界面

ii. 上線人數:我們在 Local Game Server 的程式中,每次有 Client 登入時便將當 時的時間和上線人數記錄在 log 檔中。

iii. 連線反應時間:Client 端的程式定時送出 Ping 訊息給 Local Game Server,我 們將當時的系統時間與 Ping 值記錄在 log 檔中,可以分析連線反應時間的變 化。

iv. 模擬遊戲操作:為了模擬多人同時進行遊戲的情形,我們修改 Client 端程式,

讓其自動間隔一段時間便送出一個移動位置的指令。移動位置是以亂數產 生,使得遊戲的角色會在遊戲地圖中不停的走動,以模擬實際有玩家操作的 情形。在本研究的實驗中,我們安排 Client 送出指令的週期為 2 秒鐘。

4.1.3

實驗步驟

本實驗的目的是測量多人同時上線時,Local Game Server 所產生的網路流量 與上線人數的關係。

i. 啟動 Master Server。

ii. Local Game Server 登入至 Master Server,掌管整塊遊戲地圖。

(52)

iii. Client 依序登入至 Local Game Server,以每 2 秒鐘送出一個指令的頻率與 Local Game Server 進行連線。

iv. 當所有的 Client 都確實登入之後,將原本的 Local Game Server 停止。此時 Local Game Server 會要求 Client 啟動 Local Game Server 程式,並將所有的玩家轉 移致新的 Local Game Server。我們透過參數的設定,強迫只有事先選定的某 個 Client 會接受 Local Game Server 的要求,以便觀察網路流量。

v. 新的 Local Game Server 啟動後,會接收所有的 Client 連線。我們記錄此時的 網路流量,觀察轉移玩家時的流量變化。

vi. 當所有的 Client 都完成轉換之後,停止效能工具的記錄動作。將效能工具產 生的網路流量記錄檔,Local Game Server 產生的上線人數記錄檔,以及 Client 端產生的 Ping 值變化記錄檔儲存,供之後的分析。

vii. 停止所有的 Client 端與 Server 端程式的運作,實驗結束。

4.1.4 Local Game Server 結果分析

本章我們將以流量、CPU 使用率以及 Client 端 Ping 值來分析實驗的結果。

4.1.4.1. 流量分析

以 Local Game Server 的行為來看,必須持續對所有的 Client 端送出更新訊 息,加上目前最普及的寬頻形式為 ADSL,本身有上傳頻寬較低的特性,因此我 們首先針對 Local Game Server 耗用上傳部份的網路流量作分析,如圖 二十九所 示。

(53)

0 20000 40000 60000 80000 100000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

上線人數(人)

送出流量(Byte)

640K 512K

256K

圖 二十九、送出流量圖

在圖 二十九中,每一條虛線所代表一名新的玩家登入,折線則是每秒鐘網 路送出資訊的流量。我們可以看出來,隨著上線人數的增加,網路流量亦逐漸的 增大。觀察網路流量,每一名玩家登入時須傳送初始化的資訊給該名玩家,因此 會使用較多的頻寬。而一旦登入進去之後,遊戲進行過程中所需的頻寬便遠低於 初始化的動作。由於初始化只會發生在登入的過程中,因此我們以遊戲進行過程 中所需的頻寬作為衡量的標準。

按照圖 二十九的顯示,當人數接近 33~34 人之間時流量已超過了 256Kbps,

在 49~50 人的時候超過 512Kbps,而 640Kbps 大致上都能應付 Local Game Server 對 Client 送出指令的需求。

再觀察同時間 Local Game Server 所用的下載頻寬,如圖 三十所示。

0 5000 10000 15000 20000 25000

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

上線人數(人)

接收流量(Byte)

圖 三十、接收流量圖

參考文獻

相關文件

最後特別提出說明,本研究用戶端作業系統為 Win 2000 Professional,伺服 器端作業系統為 Windows 2000 Server 並啟動 Active Directory

  SOA 記錄裏,記載著關於該 域名權責區域的一些主 要網域名稱伺服器 ( primary DNS server) 和其它 相關的次要名稱伺服器 ( secondary DNS server)

例如 : http ( 網頁伺服器所用的協定 ) 定義了 client 如何向 server request 網頁及 server 如何 將網頁及其中的各種內容回傳給 client 。. 提供服務給 application layer

每個 zone 交由一部 name server負責的作 法會有一個問題,萬一這個 name server 當 掉,可能造成 Internet上其它機器無法取得屬 於這個 zone 的資料(就是 domain name

2.TURN Server generates and sends Allocate Response

Binding Warning message Binding Update message AAAO: the AAA server of the old foreign network to which the OFA belongs. AAAF: the AAA server of the new foreign network to which the

Note that if the server-side system allows conflicting transaction instances to commit in an order different from their serializability order, then each client-side system must apply

[r]