網(wǎng)游服務器租用 網(wǎng)游服務器租用價格多少錢

網(wǎng)絡游戲英文為Online Game,簡稱網(wǎng)游。又稱“在線游戲”。必須依托于互聯(lián)網(wǎng)進行、可以多人同時參與的游戲,通過人與人之間的互動達到交流、娛樂和休閑的目的。單從中文字面上理解,任何有聯(lián)網(wǎng)功能的游戲,似乎都稱得上是網(wǎng)絡游戲,而實際上網(wǎng)游的概念相對要狹窄一些,換句話說更貼近Online Game的本意,只有完全依靠在線形式、不具備單機游戲功能的游戲才算是真正的網(wǎng)游。2016年12月5日晚,文化部發(fā)布《關于規(guī)范網(wǎng)絡游戲運營加強事中事后監(jiān)管工作的通知》,首次明確規(guī)定網(wǎng)絡游戲虛擬貨幣、虛擬道具不能兌換法定貨幣。

網(wǎng)絡游戲

網(wǎng)絡游戲(Online?Game),又稱“在線游戲”,簡稱“網(wǎng)絡游戲”,它是指以網(wǎng)絡為傳輸媒介、以游戲運營商服務器和用戶計算機為處理終端、以游戲客戶端軟件為信息交互窗口的旨在實現(xiàn)娛樂、休閑、交流和取得虛擬成就的具有相當可持續(xù)性的個體性多人在線游戲。

網(wǎng)絡游戲英文為Online?Game,簡稱網(wǎng)游。又稱?“在線游戲”。必須依托于互聯(lián)網(wǎng)進行、可以多人同時參與的游戲,通過人與人之間的互動達到交流、娛樂和休閑的目的。

按游戲產(chǎn)品的不同,網(wǎng)絡游戲可分為大型角色扮演類網(wǎng)絡游戲、休閑游戲、網(wǎng)頁游戲以及手機游戲。

據(jù)《中國網(wǎng)絡游戲行業(yè)商業(yè)模式創(chuàng)新與投資預測分析報告前瞻》統(tǒng)計數(shù)據(jù)顯示,截止2011年12月份,全國上網(wǎng)用戶5.13億,占人口比例38.3%;網(wǎng)絡游戲用戶3.24億,占網(wǎng)民比例63.2%。

在網(wǎng)絡游戲用戶中,互聯(lián)網(wǎng)游戲用戶2011年的總數(shù)突破1.6億人,同比增長33%;其中,網(wǎng)頁游戲用戶持續(xù)增長,規(guī)模為1.45億人,增長率達24%。移動網(wǎng)下載單機游戲用戶超過5100萬人,增長率達46%;移動網(wǎng)在線游戲用戶數(shù)量達1130萬人,增長率達352%。相對于互聯(lián)網(wǎng)游戲用戶數(shù)量增長速度的放緩,移動網(wǎng)游戲用戶數(shù)量出現(xiàn)了高速的增長,這表明移動互聯(lián)網(wǎng)正逐漸成為網(wǎng)絡游戲市場迅速增長的力量。

網(wǎng)游從早先的一種免費PC游戲形式,經(jīng)過若干年的發(fā)展,時至今日已成長為一個相當成熟而龐大的游戲產(chǎn)業(yè)。

單從中文字面上理解,任何有聯(lián)網(wǎng)功能的游戲,似乎都稱得上是網(wǎng)絡游戲,而實際上網(wǎng)游的概念相對要狹窄一些,換句話說更貼近Online Game的本意,只有完全依靠在線形式、不具備單機游戲功能的游戲才算是真正的網(wǎng)游。

一、第一代網(wǎng)絡游戲:1969年至1977年

網(wǎng)絡游戲發(fā)展史網(wǎng)絡游戲發(fā)展史圖冊

背景:由于當時的計算機硬件和軟件尚無統(tǒng)一的技術標準,因此第一代網(wǎng)絡游戲的平臺、操作系統(tǒng)和語言各不相同。它們大多為試驗品,運行在高等院校的大型主機上,如美國的麻省理工學院、弗吉尼亞大學,以及英國的埃塞克斯大學。

游戲特征:1、非持續(xù)性,機器重啟后游戲的相關信息即會丟失,因此無法模擬一個持續(xù)發(fā)展的世界;2、游戲只能在同一服務器/終端機系統(tǒng)內(nèi)部執(zhí)行,無法跨系統(tǒng)運行。

商業(yè)模式:免費。

第一款真正意義上的網(wǎng)絡游戲可追溯到1969年,當時瑞克·布羅米為PLATO(Programmed Logic for Automatic Teaching Operations)系統(tǒng)編寫了一款名為《太空大戰(zhàn)》(SpaceWar)的游戲,游戲以八年前誕生于麻省理工學院的第一款電腦游戲《太空大戰(zhàn)》為藍本,不同之處在于,它可支持兩人遠程連線。

PLATO是歷史上最為悠久也是最著名的一套遠程教學系統(tǒng),由美國伊利諾斯州厄本姆的伊利諾斯大學開發(fā)于上世紀60年代末,其主要功用是為不同教育程度的學生提供高質(zhì)量的遠程教育,它具有龐大的課程程序庫,可同時開設數(shù)百門課,可以記錄下每一位學生的學習進度。PLATO還是第一套分時共享系統(tǒng),它運行于一臺大型主機而非微型計算機上,因此具有更強的處理能力和存儲能力,這使得它所能支持的同時在線人數(shù)大大增加。1972年,PLATO的同時在線人數(shù)已達到1000多名。

那些年里,PLATO平臺上出現(xiàn)了各種不同類型的游戲,其中一小部分是供學生自娛自樂的單機游戲,而最為流行的則是可在多臺遠程終端機之間進行的聯(lián)機游戲,這些聯(lián)機游戲即是網(wǎng)絡游戲的雛形。盡管游戲只是PLATO的附屬功能,但共享內(nèi)存區(qū)、標準化終端、高端圖像處理能力和中央處理能力、迅速的反應能力等特點令PLATO能夠出色地支持網(wǎng)絡游戲的運行,因此在隨后的幾年內(nèi),PLATO成了早期網(wǎng)絡游戲的溫床。

PLATO系統(tǒng)上最流行的游戲是《圣者》(Avatar)和《帝國》(Empire),前者是一款“龍與地下城”設定的網(wǎng)絡游戲,后者是一款以“星際迷航”為背景的網(wǎng)絡游戲。這些游戲絕大多數(shù)是程序員利用業(yè)余時間編寫并免費發(fā)布的,他們只是希望自己的游戲能獲得大家的認可。當然,也有一些開發(fā)者通過自己的游戲獲得了收入,但通常每小時只有幾美分,并且還得在若干作者之間進行分配。

PLATO在游戲圈內(nèi)并未獲得其應有的榮譽和地位,但這并不能抹殺它對網(wǎng)絡游戲以及整個游戲產(chǎn)業(yè)所做出的貢獻。PLATO上的不少游戲日后都被改編為了游戲機游戲和PC游戲,例如《空中纏斗》(Airfight)的作者在原游戲的基礎上開發(fā)了《飛行模擬》(Flight Simulator),80年代初,這款游戲被微軟收購并改名為《微軟飛行模擬》,成為飛行模擬類游戲中最暢銷的一個系列。1974年推出的《帝國》是第一款允許32人同時在線的游戲,這一聯(lián)機游戲模式成為現(xiàn)代即時策略游戲的標準模式。1975年發(fā)布的《奧布里特》(oubliette)是一款地牢類游戲,大名鼎鼎的角色扮演游戲《巫術》(Wizardry)系列即源于此。

有趣的是,1969年也正是ARPAnet(Advance Research Projects Agency Network)誕生的年份。大家知道,ARPAnet是美國國防部高級研究計劃署研制的世界上首個包交換網(wǎng)絡,它的成功直接促成了互聯(lián)網(wǎng)以及傳輸控制協(xié)議(即TCP/IP)的誕生。

二、第二代網(wǎng)絡游戲:1978年至1995年

背景:一些專業(yè)的游戲開發(fā)商和發(fā)行商開始涉足網(wǎng)絡游戲,如Activision、Interplay、Sierra Online、Stormfront Studios、Virgin Interactive、SSI和TSR等,都曾在這一階段試探性地進入過這一新興產(chǎn)業(yè),它們與GEnie、Prodigy、AOL和CompuServe等運營商合作,推出了第一批具有普及意義的網(wǎng)絡游戲。

游戲特征:1、網(wǎng)絡游戲出現(xiàn)了“可持續(xù)性”的概念,玩家所扮演的角色可以成年累月地在同一世界內(nèi)不斷發(fā)展,而不像PLATO上的游戲那樣,只能在其中扮演一個匆匆過客。2、游戲可以跨系統(tǒng)運行,只要玩家擁有電腦和調(diào)制解調(diào)器,且硬件兼容,就能連入當時的任何一款網(wǎng)絡游戲。

商業(yè)模式:網(wǎng)絡游戲市場的迅速膨脹刺激了網(wǎng)絡服務業(yè)的發(fā)展,網(wǎng)絡游戲開始進入收費時代,許多消費者都愿意支付高昂的費用來玩網(wǎng)絡游戲。從《凱斯邁之島》的每小時12美元到GEnie的每小時6美元,第二代網(wǎng)絡游戲的主流計費方式是按小時計費,盡管也有過包月計費的特例,但未能形成氣候。

1978年在英國的埃塞克斯大學,羅伊·特魯布肖用DEC-10編寫了世界上第一款MUD游戲——“MUD1”,這是一個純文字的多人世界,擁有20個相互連接的房間和10條指令,用戶登錄后可以通過數(shù)據(jù)庫進行人機交互,或通過聊天系統(tǒng)與其他玩家交流。

特魯布肖離開埃塞克斯大學后,把維護MUD1的工作轉(zhuǎn)交給了理查德·巴特爾,巴特爾利用特魯布肖開發(fā)的MUD專用語言——“MUDDL”繼續(xù)改進游戲,他把房間的數(shù)量增加到400個,進一步完善了數(shù)據(jù)庫和聊天系統(tǒng),增加了更多的任務,并為每一位玩家制作了計分程序。

1980年埃塞克斯大學與ARPAnet相連后,來自國外的玩家大幅增加,吞噬了大量系統(tǒng)資源,致使校方不得不限制用戶的登錄時間,以減少DEC-10的負荷。80年代初,巴特爾出于共享和交流的目的,把MUD1的源代碼和盤托出供同事及其它大學的研究人員參考,于是這套源代碼就被流傳了出去。到1983年末,ARPAnet上已經(jīng)出現(xiàn)了數(shù)百份非法拷貝,MUD1在全球各地迅速流傳開來,并出現(xiàn)了許多新的版本。如今,這套最古老的MUD系統(tǒng)已被授權給美國最大的在線信息服務機構之一——CompuServe公司,易名為“不列顛傳奇”,至今仍在運行之中,成為運作時間最長的MUD系統(tǒng)。

MUD1是第一款真正意義上的實時多人交互網(wǎng)絡游戲,它可以保證整個虛擬世界的持續(xù)發(fā)展。盡管這套系統(tǒng)每天都會重啟若干次,但重啟后游戲中的場景、怪物和謎題仍保持不變,這使得玩家所扮演的角色可以獲得持續(xù)的發(fā)展。MUD1的另一重要特征是,它可以在全世界任何一臺PDP-10計算機上運行,而不局限于埃塞克斯大學的內(nèi)部系統(tǒng)。

1982年,約翰·泰勒和凱爾頓·弗林組建Kesmai公司,這家公司在網(wǎng)絡游戲的發(fā)展史上留下了不少具有紀念意義的作品。Kesmai公司的第一份合約是與CompuServe簽訂的,當時約翰·泰勒看見了CompuServe打出的一則名為“太空戰(zhàn)士”(MegaWars)的廣告——“如果你能編寫一款這樣的游戲,你就能獲得每月3萬美元的版稅金”,他便把同凱爾頓·弗林一起開發(fā)的《凱斯邁之島》(The Island of Kesmai)的使用手冊寄了一份給當時在CompuServe負責游戲業(yè)務的比爾·洛登,洛登對此很感興趣?!秳P斯邁之島》的運行平臺為UNIX系統(tǒng),而CompuServe使用的是DEC-20計算機,于是Kesmai公司重新為CompuServe開發(fā)了一個DEC-20的版本。這款游戲運營了大約13年,1984年開始正式收費,收費標準為每小時12美元。同年,MUD1也在英國的Compunet上推出了第一個商業(yè)版本。

1984年,馬克·雅克布Mythic娛樂公司的前身),并推出游戲《阿拉達特》(Aradath)。雅克布斯在自己家里搭建了一個服務器平臺,安裝了8條電話線以運行這款文字角色扮演游戲,游戲的收費標準為每月40美元,這是網(wǎng)絡游戲史上第一款采用包月制的網(wǎng)絡游戲,包月制的收費方式有利于加速網(wǎng)絡游戲的平民化進程,對網(wǎng)絡游戲的普及將起到重要作用。遺憾的是,包月制在當時并沒有成長起來的條件,1990年AUSI公司為《龍門》(Dragon’s Gate)定的價格為每小時20美元,盡管費率高得驚人,但仍有人愿意每月花上2000多美元去玩這款游戲,因此在80年代末90年代初,包月制并未引起人們的關注。

1985年,比爾·洛登說服通用電氣公司(GE)的信息服務部門投資建立了一個類似CompuServe的、商業(yè)化的、基于ASCII文本的網(wǎng)絡服務平臺,這套平臺被稱為GEnie(GE Network for Information Exchange)。GEnie于10月份正式啟動,其低廉的收費標準在用戶中間引起了巨大反響,也令一向有著強烈優(yōu)越感的CompuServe感受到了競爭的壓力。GEnie系統(tǒng)實際上是利用GE信息服務部門的服務器在夜晚的空閑時間為用戶提供服務,因此收費非常低廉,晚上的價格約為每小時6美元,幾乎是CompuServe的一半。

同年11月,Quantum Computer Services(AOL的前身)毫無聲息地推出了QuantumLink平臺,這是一個專為Commandore 64/128游戲機玩家服務的圖形網(wǎng)絡平臺,費率僅為每月9.95美元。這一收費標準完全可以成為網(wǎng)絡游戲發(fā)展史上的一個重要里程碑,但由于當時的Commandore 64/128游戲機已步入衰退期,因此這項具有革命意義的收費標準如同雅克布斯的“家庭作坊”一樣,未能引起人們的重視,否則網(wǎng)絡游戲的革命很可能會提前來到。

無論如何,更多運營商的介入令網(wǎng)絡服務業(yè)的競爭激烈了起來,費率的下調(diào)已成必然趨勢。這一階段的美國網(wǎng)絡游戲業(yè)如同現(xiàn)階段國內(nèi)的網(wǎng)絡游戲業(yè),運營商與游戲商在網(wǎng)絡游戲身上大賺了一筆。1988年,Quantum從TSR手中購得“龍與地下城”的授權,三年后,第一款AD&D設定的網(wǎng)絡游戲——《夜在絕冬城》(Neverwinter Nights)誕生,這款游戲運營了若干年,盡管所采用的圖像技術陳舊不堪,但僅在它生命周期的最后一年,即1996年,它就為AOL帶來了500萬美元的收益。

相比于我們常見的數(shù)據(jù)中心的普通web服務器,游戲服務器(如英雄聯(lián)盟,魔獸世界)有什么特別的地方?

朋友里有一位服務器大牛做過類似的總結,我征得他的同意把當時的資料分享一下。大量刪節(jié)。

文章里說游戲服務器比較多,沒怎么說web服務器。但是看了之后你就明白Web和游戲服務器在并發(fā)性方面根本性的不同了。

游戲服務器架構通識

· 前言

· 我們將從游戲服務器發(fā)展的簡單歷程出發(fā),鳥瞰一下目前大多數(shù)的游戲服務器架構。

· 這里盡可能的避免陷入細節(jié)的技術問題,而是從技術進化的結果狀態(tài),反推原始問題是什么。希望能通過這個過程,解釋清楚游戲服務器是在解決什么問題,痛點到底在哪里。

· 一、早期網(wǎng)游服務器。

· 蠻荒時期的游戲服務器框架我們一筆帶過,那時的游戲服務器和一個小Web服務沒有區(qū)別。

· 蠻荒時代的服務器只負責存儲玩家賬號、數(shù)據(jù)、轉(zhuǎn)發(fā)場景內(nèi)其他玩家的行為。很多移動、使用技能等關鍵邏輯在服務器上根本沒有。隨意就能用變速齒輪改變游戲速度。

· 從傳奇的時代開始,游戲服務器就不再是簡單的上傳存檔、下載存檔、訪問頁面而已。游戲服務器內(nèi)部出現(xiàn)了游戲邏輯,既能用于同步每個玩家看到的世界,又能讓邏輯與客戶端分離,避免早期的網(wǎng)絡游戲那種毫無防范的邏輯體系(對外掛防御能力為0)。

· 這種架構奇怪的地方是處理網(wǎng)絡連接數(shù)據(jù)傳輸?shù)膲毫瓦壿嬏幚淼膲毫υ谕粋€服務器上(存儲模塊可能也在同一個進程),就算邏輯處理壓力為0,承載人數(shù)也高不到哪去。

· 二、早期游戲服務器的改進版本

· 當開發(fā)者們有了初步經(jīng)驗以后,新作品的開發(fā),自然而然的過渡到了如下的形式:

· 游戲邏輯服務依然是在一臺服務器上,單進程(邏輯處理本身肯定是在一個線程中,可以有子線程負責內(nèi)網(wǎng)通信)。但是我們自然的想到,存儲負載和網(wǎng)絡連接負載可以從邏輯服上拆出來。

· 由于連接服務器本身沒有時序性,很容易做分布式的(其實大部分游戲還是只用一個連接服),存儲服務不要求高實時性,高峰期存盤間隔可以稍長一些,不會對游戲服造成影響。

· 三、成熟形態(tài)的服務器框架(這節(jié)是重點)

· 1、邏輯服務器的負載均攤方法一:按照功能劃分多個服務器進程

· 2、邏輯服務器的負載均攤方法二:按照場景劃分多個服務器進程

· 難點在邏輯的設計上,要像做手術一樣把本來是一體的功能切開,并抽象出若干個API來保持聯(lián)系(服務器之間是TCP連接)。

· 在分解時,要找聯(lián)系相對最薄弱的環(huán)節(jié)入手,比如場景和場景之間分開、單獨抽出聊天服務、組隊服務、好友服務。

· 無論如何分解,最終結果只能是有限個服務。而且分解的越細,開發(fā)難度就越大。因為跨服務器邏輯是把簡單的同步邏輯變成了異步Callback邏輯,而且容易出現(xiàn)時序問題等不易測試的問題。

· 單個場景服務幾乎是無法分解的。分解單個場景難度巨大以至于出現(xiàn)了BigWorld引擎來專門的解決場景分割問題,后面會談到。

· 這種成熟形態(tài)的游戲服務器已經(jīng)能滿足現(xiàn)實中99%的頻繁交互類網(wǎng)游需求,是大型MMO端游、頁游的主流形式。

· 對比Web服務器

大致只說一點:由于數(shù)據(jù)庫的存在以及HTTP請求的特性,Web服務器天生就是并發(fā)的,也一直在高并發(fā)的路上越走越遠。

· 附:開房間式的網(wǎng)絡游戲

· 開房間式的網(wǎng)絡游戲也是游戲的一個重要分支,英雄聯(lián)盟、DOTA、很多手游例如皇室戰(zhàn)爭、王者榮耀等等。

· 這種游戲房間之間幾乎沒有交互,只有大廳內(nèi)有交互,可以理解為原始形態(tài)的游戲服務器的平行擴展。

· 房間式游戲擴展難度較小,只是需要根據(jù)玩家數(shù)量動態(tài)擴展游戲房間的數(shù)量、服務器數(shù)量。很像網(wǎng)站的架構。

· 這種游戲架構最最適合放在云平臺上,設計合理的話,它可能遇到的問題和大型網(wǎng)站幾乎一模一樣。不需要特別的討論它們。

· 只是,畢竟游戲不都是開房間的玩法。

· 小結:游戲服務器框架特點

· 1、真正的數(shù)據(jù)都在內(nèi)存中,數(shù)據(jù)庫性能不那么重要

· 注:很多大型游戲采用了共享內(nèi)存,避免宕機時損失過大。

· 2、單CPU性能比CPU數(shù)量重要的多。

· 3、目前有很多游戲,特別是手游,使用Redis讀寫代替內(nèi)存讀寫,甚至也有用Mongo的。

· 4、開新服、舊區(qū)合服的情況,非常適合云平臺。

· 先進服務器框架

1、BigWorld。理念過于超前,把并發(fā)性做到極致,開發(fā)友好度弱到極致,已廢。

2、Skynet。本人強烈推薦,誰學誰知道,除了必須要用lua語言,沒有什么缺點。

· 聊聊十萬行代碼

· 游戲服務器開發(fā)速度受美術資源制作速度、客戶端開發(fā)速度制約。近幾年我猜測服務器方面并不會有大的技術革新。

· 游戲開發(fā)未來的趨勢是多元化、低門檻化、大眾化。很長一段時間內(nèi)BigWorld這種大怪獸級別的引擎不會再崛起。

· 分布式框架的崛起時間點,無論如何,也在VR技術成熟之后了。

 

一般的網(wǎng)站應用程序,是典型的Request-Response模式,通過tcp和服務器建立一次鏈接,而請求數(shù)據(jù)和影響數(shù)據(jù)通過http協(xié)議進行組裝,當完成一次交互的時候,服務器端和客戶端tcp鏈接就會釋放,把服務器端socket資源留給新的客戶端。通常web程序是比較好擴展的,通過硬件負載均衡和添加web服務器來實現(xiàn),這一套方案業(yè)界都已經(jīng)比較成熟了。網(wǎng)游比較特殊,最大的特點在于客戶端和服務器端是要進行長連接的,客戶端和服務器端基本上一直要保持連接,不是典型的Request-Response模式,Client會主動給Server發(fā)送數(shù)據(jù),Server也可能主動往Client發(fā)送數(shù)據(jù),生命周期比較長,一次發(fā)送的數(shù)據(jù)量比較小,但是數(shù)據(jù)交互發(fā)送比較頻繁。由于要進行長連接,服務器端的socket就不能進行復用,單臺服務器處理請求是會有限。用web的方案解決擴展問題,也不太適用。在web程序中,客戶端之間的數(shù)據(jù)是沒有交互的,所有的數(shù)據(jù)都是通過web服務器響應給客戶端,但是網(wǎng)游服務器中,每個客戶端的數(shù)據(jù)的變化,都要通過服務器端廣播給其他客戶端。所以客戶端會有上限,這也就是為什么服務器要進行分區(qū),一個區(qū)里面同時在線人數(shù)會有限制。

數(shù)據(jù)庫服務器

數(shù)據(jù)庫服務器其實就是專門利用一臺服務器進行數(shù)據(jù)庫的讀寫操作。這點特別是在大型的網(wǎng)絡游戲里尤為重要。因為在大型網(wǎng)絡游戲里,要處理玩家的數(shù)據(jù)量非常大,如果不利用專門的服務器進行處理,很有可能會拖累這個服務器組。

計費服務器

通常在商業(yè)的網(wǎng)絡游戲里出現(xiàn),用于記錄玩家在線的時間,給收費提供依據(jù),同時也是整個服務器組里最重要的部分,一旦出現(xiàn)問題,運營商就不用賺錢了。

聊天服務器

在游戲里的聊天功能是屬于一種瞬時動作,理論上是放在邏輯服務器里進行處理。不過在大型網(wǎng)絡游戲里,因為這個部分功能與游戲里的其它部分聯(lián)系并不緊密,因此可以獨立出來做一個功能服務器。

服務器的集群設置

在大型游戲的應用過程中,實際需要處理的玩家數(shù)量可能過萬,一臺普通的服務器是無法完成所要完成的工作,因此,在實際應用的時候,通常是由一組多臺服務器共同完成一個功能。
例如地圖服務器,可以根據(jù)需要,把游戲里所有的地域進行劃分,劃分為N個區(qū)域,然后讓這一個區(qū)域里發(fā)生的事件都用一個特定的服務器進行處理。這樣做的目的是減少一個服務器所承擔的計算量,把整個系統(tǒng)組成一個分布式的網(wǎng)絡。
不過這樣做的同時會造成一個麻煩:當一位玩家從區(qū)域1,移動到區(qū)域2。這個時候,就必須先在服務器1里把玩家刪除,然后再在區(qū)域2里加入玩家。同時需要由服務器1向服務器2轉(zhuǎn)移玩家的數(shù)據(jù)信息(因為服務器組在工作的時候,玩家的信息只能保存在當前所在區(qū)域的服務器里),也就是說一旦玩家發(fā)生服務器間區(qū)域移動,服務器端就不可避免的造成數(shù)據(jù)通訊。因為這種移動并不是有規(guī)律的,玩家所在的服務器都有可能到達其它服務器。這樣,如果服務器組里有N臺地圖服務器,那么,每個服務器都可能向其它N-1臺服務器產(chǎn)生連接,總共就可能產(chǎn)生N×N個連接。如此數(shù)量連接如果只是使用普通的socket設計,就很有可能會給服務器通訊間的各種問題所困擾,為此,在商業(yè)網(wǎng)絡游戲的服務器之間,通常都使用成熟的第三方的通訊中間件,如ACE,ICE等作為網(wǎng)絡連接的傳輸層。

最大的區(qū)別是,web服務器每個client都是獨立的,游戲服務器不同client是有交互有狀態(tài),會實時地互相影響。這導致很多設計上的差異。
并發(fā)架構的影響
在高并發(fā)下,對client請求進行負載均衡并不如web那么簡單,因為client狀態(tài)會互相影響,并且可能共享寫數(shù)據(jù)甚至有時序依賴。大型mmorpg通常是長連接,并發(fā)服務數(shù)通常要遠小于web服務器 。根源就是實時性和強交互性的限制,兩者要求越低的游戲,并發(fā)就可以做得越高。
web服務運算較少,io密集,讀多寫少。游戲服計算和io都密集,讀寫都頻繁

對代碼風格的影響
比如開發(fā)web服務,基于nginx的openresty就很好用,利用了Lua的協(xié)程和異步io,寫起來很流暢而不失性能。但用來做游戲服務器,協(xié)程卻可能是個坑,因為游戲依賴很多上下文環(huán)境,當協(xié)程被喚醒時,上下文環(huán)境改變,協(xié)程的代碼風格很容易用了舊變量導致邏輯錯誤。

類型1:卡牌、跑酷等弱交互服務端

卡牌跑酷類因為交互弱,玩家和玩家之間不需要實時面對面PK,打一下對方的離線數(shù)據(jù),計算下排行榜,買賣下道具即可,所以實現(xiàn)往往使用簡單的 HTTP服務器:

登錄時可以使用非對稱加密(RSA, DH),服務器根據(jù)客戶端uid,當前時間戳還有服務端私鑰,計算哈希得到的加密 key 并發(fā)送給客戶端。之后雙方都用 HTTP通信,并用那個key進行RC4加密??蛻舳耸盏絢ey和時間戳后保存在內(nèi)存,用于之后通信,服務端不需要保存 key,因為每次都可以根據(jù)客戶端傳上來的 uid 和 時間戳 以及服務端自己的私鑰計算得到。用模仿 TLS的行為,來保證多次 HTTP請求間的客戶端身份,并通過時間戳保證同一人兩次登錄密鑰不同。每局開始時,訪問一下,請求一下關卡數(shù)據(jù),玩完了又提交一下,驗算一下是否合法,獲得什么獎勵,數(shù)據(jù)庫用單臺 MySQL或者 MongoDB即可,后端的 Redis做緩存(可選)。如果要實現(xiàn)通知,那么讓客戶端定時15秒輪詢一下服務器,如果有消息就取下來,如果沒消息可以逐步放長輪詢時間,比如30秒;如果有消息,就縮短輪詢時間到10秒,5秒,即便兩人聊天,延遲也能自適應。

此類服務器用來實現(xiàn)一款三國類策略或者卡牌及酷跑的游戲已經(jīng)綽綽有余,這類游戲因為邏輯簡單,玩家之間交互不強,使用 HTTP來開發(fā)的話,開發(fā)速度快,調(diào)試只需要一個瀏覽器就可以把邏輯調(diào)試清楚了。

類型2:第一代游戲服務器 1978

1978年,英國著名的財經(jīng)學校University of Essex的學生 Roy Trubshaw編寫了世界上第一個MUD程序《MUD1》,在University of Essex于1980年接入 ARPANET之后加入了不少外部的玩家,甚至包括國外的玩家。《MUD1》程序的源代碼在 ARPANET共享之后出現(xiàn)了眾多的改編版本,至此MUD才在全世界廣泛流行起來。不斷完善的 MUD1的基礎上產(chǎn)生了開源的 MudOS(1991),成為眾多網(wǎng)游的鼻祖:

MUDOS采用 C語言開發(fā),因為玩家和玩家之間有比較強的交互(聊天,交易,PK),MUDOS使用單線程無阻塞套接字來服務所有玩家,所有玩家的請求都發(fā)到同一個線程去處理,主線程每隔1秒鐘更新一次所有對象(網(wǎng)絡收發(fā),更新對象狀態(tài)機,處理超時,刷新地圖,刷新NPC)。游戲世界采用房間的形式組織起來,每個房間有東南西北四個方向可以移動到下一個房間,由于歐美最早的網(wǎng)游都是地牢迷宮形式的,因此場景的基本單位被成為 “房間”。MUDOS使用一門稱為LPC的腳本語言來描述整個世界(包括房間拓撲,配置,NPC,以及各種劇情)。游戲里面的高級玩家(巫師),可以不斷的通過修改腳本來為游戲添加房間以及增加劇情。早年 MUD1上線時只有17個房間,Roy Trubshaw畢業(yè)以后交給他的師弟 Richard Battle,在 Richard Battle手上,不斷的添加各種玩法到一百多個房間,終于讓 MUD發(fā)揚光大。

用戶使用 Telnet之類的客戶端用 Tcp協(xié)議連接到 MUDOS上,使用純文字進行游戲,每條指令用回車進行分割。比如 1995年國內(nèi)第一款 MUD游戲《俠客行》,你敲入:"go east",游戲就會提示你:“后花園 - 這里是歸云莊的后花園,種滿了花草,幾個莊丁正在澆花。此地乃是含羞草生長之地。這里唯一的出口是 north。這里有:花待 阿牧(A mu),還有二位莊?。╖huang Ding)”,然后你繼續(xù)用文字操作,查看阿牧的信息:“l(fā)ook a mu”,系統(tǒng)提示:“花待 阿牧(A mu)他是陸乘風的弟子,受命在此看管含羞草。他看起來三十多歲,生得眉清目秀,端正大方,一表人才。他的武藝看上去【不是很高】,出手似乎【極輕】”。然后你可以選擇擊敗他獲得含羞草,但是你吃了含羞草卻又可能會中毒死亡。在早期網(wǎng)上資源貧乏的時候,這樣的游戲有很強的代入感。

用戶數(shù)據(jù)保存在文件中,每個用戶登錄時,從文本文件里把用戶的數(shù)據(jù)全部加載進來,操作全部在內(nèi)存里面進行,無需馬上刷回磁盤。用戶退出了,或者每隔5分鐘檢查到數(shù)據(jù)改動了,都會保存會磁盤。這樣的系統(tǒng)在當時每臺服務器承載個4000人同時游戲,不是特別大的問題。從1991年的 MUDOS發(fā)布后,全球各地都在為他改進,擴充,退出新版本,隨著 Windows圖形機能的增強。1997游戲《UO》在 MUDOS的基礎上為角色增加的x,y坐標,為每個房間增加了地圖,并且為每個角色增加了動畫,形成了第一代的圖形網(wǎng)絡游戲。

因為游戲內(nèi)容基本可以通過 LPC腳本進行定制,所以MUDOS也成為名副其實的第一款服務端引擎,引擎一次性開發(fā)出來,然后制作不同游戲內(nèi)容。后續(xù)國內(nèi)的《萬王之王》等游戲,很多都是跟《UO》一樣,直接在 MUDOS上進行二次開發(fā),加入房間的地圖還有角色的坐標等要素,該架構一直為國內(nèi)的第一代 MMORPG提供了穩(wěn)固的支持,直到 2003年,還有游戲基于 MUDOS開發(fā)。

雖然后面圖形化增加了很多東西,但是這些MMORPG后端的本質(zhì)還是 MUDOS。隨著游戲內(nèi)容的越來越復雜,架構變得越來越吃不消了,各種負載問題慢慢浮上水面,于是有了我們的第二代游戲服務器。

首先大概介紹一下運營商的概念,或者換個現(xiàn)在更常用的說法,“渠道”。
因為如果對國內(nèi)手游產(chǎn)業(yè)不是非常了解的話,可能不是很能理解國內(nèi)手游產(chǎn)業(yè)中“渠道”的角色。
傳統(tǒng)的單機游戲行業(yè),開發(fā)商負責整個游戲的研發(fā),而真正的純單機游戲并沒有“運營”的概念,所以只有所謂的“發(fā)行商”,負責對游戲進行包裝、營銷和發(fā)售。例如《暗黑破壞神2》在中國的發(fā)行商是奧美,《伊森瘋狂賽車》在中國的發(fā)行商是天人互動。最后的營收則是由開發(fā)商和發(fā)行商按一定的比例瓜分。
而傳統(tǒng)的PC網(wǎng)游(俗稱“端游”),由于有開發(fā)大型端游能力的公司往往也同時具有強大的運營能力(包括營銷推廣、維護服務器、客服等等),因此開發(fā)商與運營商往往是同一家公司(如網(wǎng)易、完美、騰訊、西山居等等)。而國外的網(wǎng)游如果要在中國市場運營,則往往會委托中國的公司來進行運營活動(也就是俗稱的“代理”)。而最后的營收同樣由開發(fā)商和運營商進行分成。例如《魔獸世界》與網(wǎng)易、《龍之谷》與盛大、CF(我就不打書名號了)與騰訊等等。也有極少數(shù)國內(nèi)網(wǎng)游由別家的國內(nèi)公司進行運營。例如盛大也曾經(jīng)運營過西山居的《劍網(wǎng)三》。然而這些游戲由于往往是國外的公司全權委托給國內(nèi)公司進行代理,因此往往賬號登陸和游戲本身還是要通過同一家公司的服務器。
而到了手游時代,整個產(chǎn)業(yè)的運作方式進行了一次大洗牌。所謂的“渠道”如今承擔了更重要的角色。因為這個時代的“渠道”商往往是幾年前霸占了更多用戶流量資源的公司。例如有微信和QQ的騰訊、有貼吧等等的百度、有自己的手機平臺的小米等等。由于擁有更多的用戶資源,這些平臺往往比傳統(tǒng)的自研游戲大廠本身的推廣能力要強上幾個數(shù)量級。許多端游大廠在轉(zhuǎn)型手游的過程中對于“渠道”的認識嚴重不足,往往都付出了慘痛的代價。如今“渠道”+開發(fā)商的模式已經(jīng)成為常識。
需要指出的是,APPSTORE和國外的GOOGLEPLAY也是“渠道”的一種。APPSTORE的首頁推薦幾乎是蘋果平臺上最有力的推廣手段。

===================
介紹完渠道的概念后,再來理解為何要把登陸和游戲服務器分開就很容易了。因為在手游時代,是個網(wǎng)游都是要接入渠道登陸功能的,因此在開發(fā)游戲的初期就應該把接入渠道的工作納入開發(fā)計劃之中。
一般運營的游戲?qū)嶋H負責保存游戲數(shù)據(jù)和執(zhí)行服務端邏輯的服務器由開發(fā)商進行部署和維護,而負責登陸的服務器則由渠道負責部署和維護。由于渠道往往擁有很多現(xiàn)成的用戶,以及各種方便快捷的登陸方式(例如微信的自動登錄),而這些登陸方式不同平臺往往差別很大,而渠道間的競爭也很激烈,因此大多數(shù)渠道都會通過給出現(xiàn)成的登陸模塊(SDK)和統(tǒng)一接口的方式供開發(fā)商進行接入。
不過要指出的是,這里的“登陸”應該是只單純的用戶名密碼、游客賬號等等單純的“驗證身份”的模塊。事實上,開發(fā)商在自己的游戲服務器中也會有單獨的登陸功能模塊。
舉個例子,現(xiàn)在有個由“NETHARD”的公司開發(fā)的叫《枕頭大戰(zhàn)》的游戲在小米的平臺上進行運營。
有個叫小A的玩家是小米的用戶,賬號是13854389438,昵稱是“巭孬嫑莪”。
然后他玩了小米上的《枕頭大戰(zhàn)》,用了小米的賬號進行登陸。
然后進入游戲后他建了個叫“伊藤誠”的角色。
在普通玩家看來,這整個一套是一個非常簡單的登陸流程。但其實這里面有三套可以稱之為“賬號”的系統(tǒng)。
首先是小米平臺的賬號(13854389438 - 巭孬嫑莪)。這套賬號保存在小米的服務器上。
在登陸了“巭孬嫑莪”后,NETHARD公司獲取了小米提供的身份驗證信息,如果這個身份是第一次在NETHARD的服務器上登陸,那么NETHARD的服務器會為該用戶分配一個NETHARD內(nèi)部的用戶身份,例如“13854389438%%MI”,并將這兩個身份進行映射。而每次“巭孬嫑莪”在用“13854389438”的賬號登陸《枕頭大戰(zhàn)》時,NETHARD的服務器上也會自動通過“13854389438%%MI”的賬號進行登陸。
最后,存在NETHARD游戲服務器內(nèi)的角色“伊藤誠”則相當于第三重賬號。由于現(xiàn)在的手游網(wǎng)游往往在同一個賬號下的角色不共享貨幣(如常見的“元寶”、“鉆石”等等),因此在NETHARD的服務器內(nèi),“伊藤誠”則是一個獨立的身份。而NETHARD的賬號系統(tǒng)則會將“伊藤誠”和“13854389438%%MI”再一次映射起來。

====================
最后需要指出的是,在上述的流程中其實是有三臺服務器存在的。分別是小米的登陸服務器、將小米賬號“13854389438”和NETHARD賬號“13854389438%%MI”進行映射的服務器以及將“13854389438%%MI”和“伊藤誠”進行映射的服務器。而最后那臺服務器往往才是真正的游戲服務器。
至于為什么要將第二臺服務器和第三臺服務器分開?因為除了“登陸”功能外,手游還有“計費”模塊。
NETHARD公司自然不會只有《枕頭大戰(zhàn)》一款游戲。而NETHARD公司還有自己獨立的財務、審計,那么玩家花的每一塊軟妹幣,最后都是要通過第二臺服務器的流水的。
當“伊藤誠”在游戲里消費“¥100”買了一瓶“妹汁”時,首先第三臺服務器會生成一張訂單,告訴第二臺服務器“玩家13854389438%%MI買了道具No8989,訂單號XXX”。第二臺服務器則會告訴小米的服務器“你的那個玩家13854389438買了道具No8989,訂單號XXX”。然后小米在自己的服務器上查了下,道具No8989的售價是¥100(這個信息是游戲在平臺上發(fā)布前事先注冊好的信息),然后在獲得“伊藤誠”的確認后,小米和支付寶進行了一系列骯臟的交易,最后小米獲得了¥100,然后告訴第二臺服務器“已收到13854389438的贓款,可發(fā)放No8989,訂單號XXX已完成”,第二臺再把該信息傳達給第三臺服務器,最后第三臺服務器(也就是游戲服務器)在游戲里把妹汁發(fā)放給了“伊藤誠”先生。
當然這事兒還沒完,在月底時,小米會把¥100中應該分成給NETHARD的那一部分給NETHARD,然后兩家公司再各自給自己的臨時工們發(fā)了餉,大家就各回各家各找各媽了。

更多
  • 該日志由 于2017年12月23日發(fā)表在 未分類 分類下, 你可以發(fā)表評論,并在保留原文地址 及作者的情況下引用到你的網(wǎng)站或博客。
  • 本文鏈接: 網(wǎng)游服務器租用 網(wǎng)游服務器租用價格多少錢 | 幫助信息-動天數(shù)據(jù)
  • 文章標簽:
  • 版權所有: 幫助信息-動天數(shù)據(jù)-轉(zhuǎn)載請標明出處
  • 【上一篇】 【下一篇】

    0 Comments.

    發(fā)表評論