當前位置:首頁 » 操作系統 » arpg源碼

arpg源碼

發布時間: 2022-05-03 02:31:24

Ⅰ 跪求ARPG頁游全套源代碼,不是那種伺服器架設端的,是整套的開發文檔,僅自己學習研究用,不涉及版權。

你想自己做一款網頁游戲嗎?那你怎麼不做一代宗師 這款網頁游戲呢!

Ⅱ RPG真三國無雙或真三3.9D和dota的區別

真三國無雙玩家與DOTA玩家歷來是水火不容,DOTA玩家罵真三國無雙抄襲DOTA,使用DOTA的源代碼,而真三國無雙的玩家則更過激,罵DOTA玩家崇洋媚外,還口出狂言:「是中國人,就玩真三國無雙!」殊不知,魔獸爭霸是美國暴雪公司的,真三國無雙是日本光榮公司的。而這張地圖也不一定就那麼有中國意味。當然,這些都無關痛癢,本文僅把兩張地圖做下比較,發現一下其中的不同。

需要說明的是,DOTA這張圖要遠先於真三國無雙這張地圖存在,經歷了諸多版本,目前定格再v6.53,可以肯定,真三國無雙無論在英雄技能還是物品合成方面,都在一定程度上借鑒了DOTA的元素,但又融合了自己獨有的系統,而並不像一些玩家所說的單純抄襲。目前雖然已經快出到v5.0,但大家依舊對v3.9D這個經典版本相當鍾愛,所以,本文將以DOTA v6.53和真三國無雙 v3.9D這兩個版本作為範本進行比較。

(2)一血系統和殺人系統
「First Blood」就是第一滴血,拿第一滴血就是第一個擊殺英雄,還可以得到額外的200塊,此時DOTA的語音提示系統開始運作。成為一血就是第一個被擊殺的英雄,沒有額外的懲罰。如果一名英雄連續擊殺英雄後,殺人系統開始運作。從最基礎的「大殺特殺」到最終的「超越神」,連續殺人沒有任何獎勵,而終結殺戮的人則可以得到額外的金錢收入。這大大增加了的趣味性,也增加了游戲的公平性。比如如果一個法師在前期殺的太厲害,一旦被一個後期英雄擊殺,那麼很有可能這個英雄就會成長起來。而且一旦一名英雄連續殺人,很容易引起敵方陣營的注意,大家都會去終結他,正應了那句話「出來混,早晚是要還的!」
(二)英雄技能
英雄是兩張圖的核心,也就是玩家要直接控制的單位。
首先從英雄數量上說,真三英雄數量明顯偏少,而且還有很多英雄的觀賞性要明顯大於實用性。因此直接導致的一個結果就是在絕大多數比賽中,英雄陣容相當單一。
蜀國:諸葛亮,關羽,張飛,趙雲,魏延。
魏國:司馬懿,郭嘉,典韋,曹仁,荀彧(其實就是荀,根據列傳可以看出)
大多數狀況下大家拼的還是操作。隨著版本的革新,這一狀況有所改變,但英雄依舊是熱門英雄,新增英雄,強就上,不強依舊是萬年的板凳。比如糜竺就是後起新秀。
英雄的稀少帶來的還有戰術的單一。正式比賽中,蜀國的目的很明顯,就是要保趙雲,保關羽,打後期。而魏國三法一控,曹仁到後期也只是經驗,因此魏國想打後期是不可能的,就要藉助前期雙法的優勢速推。輔助以曹仁的車子。10場比賽9場如此。不同的只是細節和不同隊伍隊員間的配合。反而路人戰中更有趣味一點。
其次,從屬性上說,真三中的英雄成長屬於極端屬性成長,比如真三中的智力英雄,智力成長要遠遠大於其他屬性的成長。形成的結果就是力量英雄高力量,血厚。敏捷英雄高敏捷,高護甲,高攻速。智力英雄智力高,魔法多。極端的屬性成長,就使得英雄落入力量克智力,智力克敏捷,敏捷克力量的死循環之中。更何況真三中的敏捷英雄以遠程的居多,就使俗稱的「弓手」混得更加凄慘。
DOTA中似乎顯得好一點。正如前文所說,DOTA的英雄成長很另類。比如食人魔法師主屬性是智力,可力量成長相當高,25級時的力量可以成長到99,比許多力量英雄還要高。又比如幻影長矛手的主屬性是敏捷,可是智力成長卻遠高於其他。這使得英雄可以不按常理來使用,甚至有些力量英雄都可以成為法師!
其次,真三的法師也註定是悲劇。這主要源於技能設計的不合理。眾所周之,法師是靠技能殺傷,技能升到滿級傷害就固定。而英雄的血量則可以隨著等級的提升而提升,因此越到後面對法師越不利,也就形成法師在前期相當強大,到後期被虐待的命運。加之真三中幾乎所有法師的終極技能隨著等級的提升不僅耗魔增大,而且冷卻時間幾乎沒有太大變化或者有所增長,以及針對法師的輔助性道具的缺乏,使得法師更加處於不利的地位。而與之相比,DOTA中的法師不僅有大量後期英雄存在,比如沉默術士以智力作為額外傷害,也就是說隨著智力的成長,沉默術士的輸出也更加可觀。而且還有大量的適合法師的道具。比如增加終極技能威力的藍杖,刷新技能冷卻時間的刷新球。以及新物品中的紫苑之杖和希瓦之守護(俗稱「冰甲」)等等。
再次,具體到蜀魏兩國來說,也是相當不平衡,蜀國的關羽,張飛,趙雲是公認的強大,同樣6級的情況,魏國英雄單挑的話幾乎無人能與之抗衡,另外,整張圖上的唯一一個全圖技能也給了諸葛亮。

敏捷英雄方面無論是馬岱,黃忠還是黃月英,都有轉化為DPS的潛質,因此蜀國無論什麼陣容,總會有一兩個後期英雄的存在,更多的打的是後期。
魏國則顯得凄慘了一些,力量英雄中能成為肉盾的少之又少,勉強能拿得出手的只有曹仁,許褚而已,但是技能的設置又讓他們無法成為戰場的主力。敏捷英雄只有張郃與於禁是弓手,其餘大多數是近戰,像甄姬與服部半藏也只能靠偷襲取勝,想要正面與蜀國抗衡簡直是不可能。在路人戰中,也許甄姬能在後期囂張一下,在真正的高手對決中,以甄姬的屬性成長,不被虐待死才怪呢。唯一的亮點也只有司馬懿,郭嘉,荀彧等一批王牌法師的存在。魏國的法術殺傷相當強大,能在前期很好的剋制蜀國後期英雄的成長,因此魏國要取勝第一要靠英雄間的配合,第二也就是速戰速決,如果發現推進的速度越來越慢,那麼魏國里失敗也就不遠了。蜀國可以不上關羽,不上趙雲,不上諸葛,但魏國卻不能不上司馬,不上郭嘉,這是魏國的悲哀,其實也是真三的悲哀。陣容的單一使得游戲的趣味性大大降低,大家唯一能做的只是在配合和殺人間尋找快樂。

最後就是技能,真三的技能很中規中距,都很樸素也很使實用,諸葛的卧龍射線和司馬的星落都能稱得上華麗了。相比之下DOTA中,英雄技能還算好一些。不但華麗,也很有特色。比如一些力量英雄的技能相當實用,使之不單單成為肉盾,更成為轉化為力量法系,如沙王,撼地神牛等等。還有強大的後期法師存在,如沉默術士,死亡先知等等。還有如屠夫的肉鉤和女祭司的月神之箭的此類施法距離能突破1000的技能。盲射,盲鉤,使得很多比賽出現驚人的高潮,令人折服。

因此,站在公平的角度說,DOTA的趣味確實要遠遠大於真三。舉個很簡單的例子,現實中,有很多玩家從真三轉玩DOTA,可是卻沒有DOTA玩家跑去玩真三,這是為什麼?原因只是在於你可以不了解DOTA,不屑於玩DOTA,但如果真正玩一下的話,就會真正的喜歡上他。這是真三所不能比擬的。

(三)物品合成
物品合成是兩張圖所共有的,但是DOTA的物品不論是質量還是數量都要優於真三很多。首先,需要說的是,在真三中,像消耗性物品的購買CD就很叫人費解,更何況CD時間還很長,通常大家會讓法師先買葯,可在路人中,大家一起擠在一起搶葯的情況也不是沒有,邊路的話如果想把錢全換成葯的話,至少要錯過一波小兵。另外移動速度偏慢,回城卷軸和遠程傳送道具的缺乏令英雄往往在前線與基地的奔波間浪費時間。
其次,就是物品的稀缺,比如在真三國中,無論哪個法師,孫子兵法是必須要出的,除了孫子兵法就是風暴之杖,要說出別的東西,沒有也沒用。一場比賽,諸葛出個飛鞋,一本孫子,一個巫術權杖,基本也就沒什麼了。如果諸葛出個血斧沒有意義也會被人家恥笑。
另外,真三中有很多基礎性物品,但只有很少一部分能得到利用,其他許多都在閑置。更重要的是古物商店也是如此,除了孫子,青囊,孟德,銀劍以外,根本沒有人用其他物品,除此以外的物品根本就是多餘。物品的單一也是造成真三戰術單一的原因之一。

DOTA中,物品分為四個等級,以及新物品。每個商店都有11件武器道具。一級物品大多合成部件低廉,性價比很高,在一定程度上,實用性和使用頻率最高的物品。而4級物品中,大多數就是所謂的「神裝」。新物品是自v3.7以來新增的,到現在的版本新物品基本已經把商店填滿。但無論哪個商店,針對力量,敏捷,智力3種類型英雄的物品還是很平均的。同樣是法師,由於道具的存在,同一個法師可以打成主攻的,也可以輔助的,即便一個奶媽只要打出良好的裝備一樣是殺人利器。最好的例子就是全能騎士,一個標準的奶媽,如果打成輔助的話,可以出風杖(類似於風暴之杖),羊刀(類似於巫術之杖),還可以出刷新球,用兩次守護天使鎖定戰局。除此之外,還可以出死靈書,輝耀,這樣的全能騎士相當強悍。

最後真三中,能稱得起光環類道具的只有護衛心得,還是萬年的板凳道具。相比而言在DOTA中,梅肯斯特(補盾),吸血鬼的祭品,強襲裝甲,希瓦之守護,都是很優秀的光環類物品。當小兵被加上數個光環後,那種強悍是無法用語言形容的。

通過上面的文章,大家應該可以看出兩張圖的不同。對於真三國無雙來說,英雄的稀少,物品的缺乏,戰術的單一是致命傷,而小兵的強悍,屬性成長的底下,更加依賴玩家的操作與耐心。因此,真三更多時候是在考驗玩家的細節操作和團隊精神以及對時機的把握。

而DOTA中,英雄眾多,物品豐富,地圖製作精良,更考驗玩家的創造性。比如對地圖陰影的利用,對地形的利用,以及如屠夫盲鉤的那種意識。如果比團隊配合的話,不是不重要,只是沒有真三那種牽一發而動全身的緊密性。有些後期英雄甚至可以靠一個人翻盤,也就有了傳說中的RPG英雄的存在。

最後,很有意思的是,曾經看過一個帖子抱怨:「真三的玩家罵人的技術更加高,出個冷門英雄要罵,出件冷門的武器也要罵,殺不到人要罵笨蛋,殺了人又要罵搶人,真不明白玩真三到底圖什麼。」其實說句公道話,正是由於真三的英雄少,物品少,戰術少,才導致大家很難開拓出新的一片天地,只有在固有的模式中去尋找快樂,因此大家不妨多接觸一下新的東西,真三玩累了可以玩DOTA,隨心所欲的發揮自己的想像力。而DOTA玩多了,同樣也可以嘗試一下真三,體會團隊配合的那種感動。

(一)地圖元素

首先,對於地圖細節方面的比較,DOTA明顯要高出一個檔次,不論是地圖的文字說明顯示還是地圖邊緣的處理,或者是地圖的整體色彩,DOTA都要更細膩一些。例如真三中的地圖邊緣沒有樹林的覆蓋最後竟然可以讓演變成逃生的路徑,相當不可思議,尤其是蜀國的下路最為誇張。因此,真三單從整體效果給人的感覺還是很粗糙。

其次,兩張地圖的構成基本相同,進攻路線分為上中下三路,有固定的野區和終極BOSS。不同的是,真三國無雙中雙方所守衛的是魏國和蜀國的本陣,而雙方的小兵是步兵+弓箭手的組合,雙方中路都由一根外塔,一根中塔和兩根內塔防守,上下兩路的外塔位置由兩根箭塔守護的據點構成,內塔同樣為兩根,在蜀國的下路和魏國的上路則多出一根中塔做防守。終極BOSS則為黃龍。DOTA中,近衛所守衛的是世界樹,小兵由樹精+猛禽德魯伊組成,天災守衛的是冰封王座,小兵由食屍鬼+亡靈法師組成。雙方上中下三路各由一個外塔,一個中塔和一個內塔組成。終極BOSS為ROSHAN。

再次,真三國無雙中,箭塔的攻擊力和防禦都比DOTA的防禦塔高出一個檔次,因此不依靠攻城車的幫助,想在短期內破塔是不可能的。就算購買攻城車的話,想要迅速成型也是不可能的。何況真三國無雙的出兵系統也可以拖延攻城速度。因此按照正常來說,三國無雙每局的時間都要長些,沒有絕對的優勢是打不下來的。而DOTA中,攻城車則隨小兵一起攻城,雖然是隔數波小兵一輛,但如果英雄防守不到位,真的能讓它一下一下的砸掉。另外英雄中有相當一部分英雄的技能是對箭塔有效的,比真三國無雙中的英雄要多出好多,大量召喚系英雄的存在也令速推成為一種戰術。因此,DOTA的游戲時間明顯就要短好多,大多數情況下40分鍾左右基本就能見分曉。

再次,還需要說明的是,在真三國無雙這張地圖中,小兵的攻速很平和,相對於DOTA來說,很容易補刀。但反補卻相當不容易。在DOTA中,半血的小兵就可以反補,而在真三中,則要是死血,即血條變成紅色才可以反補,就這點來說,還是很考驗玩家操作的。

最後,是野區的分別,野區是兩張圖的重要組成部分,很多後期英雄無法在線上立足時往往會去選擇打野。但相比較而言,真三的野怪組合太過單一:6個盜賊,3個巨魔,2個螃蟹,3隻狼,3隻老虎,1隻巨蟹,1頭熊就可以概括了。充當的作用,也只能是玩家的金錢和經驗而已。而DOTA中,野怪的種類相當豐富,至少有20餘種,還可以被玩家用道具和技能收為己用,成為輸出和肉盾,最差還可以被點金手直接變成金錢。相當有意思。

接下來是兩張圖所具有的獨特系統

1.真三國無雙

(1)士氣系統
個人感覺是一個好壞參半的系統。首先可以肯定的是,地圖作者很尊重原游戲。玩過光榮公司的ARPG游戲《真三國無雙》系列的玩家都知道,士氣對雙方交戰的重要性。而在真三這張圖中,同樣,士氣高漲的小兵的輸出往往要高一個檔次。所以劣勢方後期要面對的不單單是對方的英雄,更重要的是要先把士氣拉回來。如果士氣太低的話,單單是小兵就能把英雄搞死。換句話說,士氣系統就是讓優勢方加速勝利,讓劣勢方加速失敗。可是,我們應該注意到,雖然優勢一方是通過自己的努力慢慢積累來的,但就算DOTA中也有後期英雄,後期英雄要在後期才能發揮作用,前期缺乏有效的輸出,很容易死在強力魔法輸出的法師手上。因此後期英雄都是在屈辱中成長,最後一戰定勝負。而士氣系統的介入,在一定程度上卻干擾了游戲的公平性。一個強力法師在前期盡情的虐待一個後期英雄,而每虐待一次,身邊的小兵就要比後期英雄的小兵強一點點。所以,後期英雄要比在普通情況下更難成長。但如果在很幸運的情況下,這個後期英雄終於成長起來了,但要面對的不僅是這個英雄,還有那麼多如狼似虎的小兵,各位,你會覺得公平嗎?也許有人會說,正因為後期英雄比較強,所以要讓小兵強一點保護法師才更公平啊。但各位,法師就是要壓制後期英雄,能讓後期安安穩穩成長起來本身就是法師的失職,你沒有把握好前期的優勢,所以就要承擔後果,靠地圖的優勢去彌補,本身就是一種不公正。而在DOTA中,優勢方雖然讓會有「近衛方或者天災方正在向勝利邁進!」等字樣的提示,但絲毫不會影響小兵的實際能力,充其量是對玩家的一種激勵,讓玩家在盡可能公平的環境下游戲。

(2)糧倉系統
相當有意思的設定,也是筆者相當欣賞的設定。在蜀國的上路和魏國的下路,各有由兩根箭塔和兩個攻高,血厚,防高的船長守衛的糧倉。如果將對方的糧倉破壞不僅每人可以得到800塊的獎勵,還可以斷掉地方英雄的經濟收入,即電腦定期供給的資金。因此,對方的英雄只能靠自己刷兵賺錢,對經濟是個不小的打擊。但打糧倉是有風險的,稍有不慎,就會讓積累的優勢前功盡棄。所以才更具有挑戰精神,也是筆者相當肯定的。

(3)攻城車系統
真三中,攻城車分為投石車和沖車。投石車為遠程攻擊,攻擊類型為攻城,重甲,可以攻擊建築物和普通單位。而沖車其實就是人族的坦克,近戰攻擊,攻擊類型為攻城,城甲,只能攻擊建築物。但都需要玩家自己購買,而且要消耗木材。在真三中要靠殺兵才有木材。因此一個人要擁有大量的車是不可能的。通常都是幾個人買大量的車,用車強推敵人的基地。雖然這也稱的上一種戰術,但卻大大降低了游戲的趣味。更何況,像曹仁這位裸奔男,車子似乎就是天生為他准備的。沒有車子,真的不知道在常態下還能做什麼。

(4)出兵系統
同樣也是值得肯定的系統。真三中,其實真正保衛的不是本陣,而是上中下三路的兵營,如果兵營被拆掉的話是無法繼續出兵的,因此,兵營如果被破的話,在通常情況下是很難翻盤的。因此,兵營在真三中是相當重要的。但隨著英雄等級的提高,死亡後的復活時間也持續增長。所以一次團滅可能導致直接被破掉一路。雖然買活是最有效的防守途徑。但當資金不足的時候,選擇出兵則可以最大限度的抵擋敵人的進攻。吳國和匈奴算是比較強的援軍,但是需要大量的金錢和木材以及時間,正常情況下,一般是看不到出現的。

2.DOTA

(1)指令系統與模式系統
指令系統其實對游戲沒有實際的效果,只是方便玩家進行游戲。充分體現了地圖作者人性化的一面。通常個人常用的指令大隻包含以下幾個:
-random 隨機一名英雄
-repick 放棄英雄,重新選擇
-di 在游戲中,顯示反補記號
-ma 顯示敵人使用的英雄
-ms 顯示英雄當前的移動速度
-cs 顯示當前的殺兵數和反補數
-swap xx 交換英雄
-apm 顯示所有玩家的手速
這些指令在最大程度上方便了玩家,是真三國無雙中所沒有的,因此在這一方面上,DOTA似乎做得更好一些。
模式系統則使得DOTA更具有可玩性。最常用的是全陣營選擇,即雙方玩家都可以選擇近衛或天災的英雄。這使得游戲不再局限於單一的陣營。不同陣營的英雄間的技能搭配也更多樣化,隨之而來的戰術也層出不窮。很值得肯定。另外死亡模式,扯淡模式也都突破傳統的思維,使得玩家體會不一樣的玩法。

Ⅲ 60版本光強堆滿多少

打開QGIS軟體,將左側上面瀏覽器中的「道路圖層」拖拽到左側下面的圖層窗口中。
2
/4
選中道路圖層,選擇工具欄「切換編輯模式」工具(黃色的鉛筆符號),開始編輯。
3
/4
滑鼠左鍵沿著影像上道路的輪廓進行點擊繪制道路,繪制完成後右鍵,填寫道路屬性信息。
4
/4
選擇工具欄「當前編輯」下的「保存所選圖層」,對繪制的道路進行保存。

QGIS(原稱Quantum GIS)是一個自由軟體的桌面GIS軟體。它提供數據的顯示、編輯和分析功能。
中文名
QGIS
外文名
Quantum GIS
開始於
2002年 5月
類別
桌面地理信息系統
特點
用戶界面友好、跨平台、可擴展
快速
導航
功能介紹使用方法功能
軟體介紹
QGIS是一個用戶界面友好的桌面地理信息系統,可運行在Linux、Unix、Mac OSX和Windows等平台之上。QGIS是基於Qt,使用C++開發的一個用戶界面友好、跨平台的開源版桌面地理信息系統。[1]
QGIS項目開始於2002年 5月,是基於跨平台的圖形工具Qt軟體包,採用C++ 語言開發的一個GIS軟體。目前的開發非常活躍,當前(2014年)的最新版本是QGIS 2.4 版。QGIS源碼採用 GNU General Public License協議對外發布。

Ⅳ 端游,手游服務端常用的架構是什麼樣的

端游、手游服務端常用的架構是什麼樣的?
類型1:卡牌、跑酷等弱交互服務端卡牌跑酷類

因為交互弱,玩家和玩家之間不需要實時面對面PK,打一下對方的離線數據,計算下排行榜,買賣下道具即可,所以實現往往使用簡單的 HTTP伺服器:

登錄時可以使用非對稱加密(RSA, DH),伺服器根據客戶端uid,當前時間戳還有服務端私鑰,計算哈希得到的加密 key 並發送給客戶端。之後雙方都用 HTTP通信,並用那個key進行RC4加密。客戶端收到key和時間戳後保存在內存,用於之後通信,服務端不需要保存 key,因為每次都可以根據客戶端傳上來的 uid 和 時間戳 以及服務端自己的私鑰計算得到。用模仿 TLS的行為,來保證多次 HTTP請求間的客戶端身份,並通過時間戳保證同一人兩次登錄密鑰不同。

每局開始時,訪問一下,請求一下關卡數據,玩完了又提交一下,驗算一下是否合法,獲得什麼獎勵,資料庫用單台 MySQL或者 MongoDB即可,後端的 Redis做緩存(可選)。如果要實現通知,那麼讓客戶端定時15秒輪詢一下伺服器,如果有消息就取下來,如果沒消息可以逐步放長輪詢時間,比如30秒;如果有消息,就縮短輪詢時間到10秒,5秒,即便兩人聊天,延遲也能自適應。

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

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

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

MUDOS採用 C語言開發,因為玩家和玩家之間有比較強的交互(聊天,交易,PK),MUDOS使用單線程無阻塞套接字來服務所有玩家,所有玩家的請求都發到同一個線程去處理,主線程每隔1秒鍾更新一次所有對象(網路收發,更新對象狀態機,處理超時,刷新地圖,刷新NPC)。

游戲世界採用房間的形式組織起來,每個房間有東南西北四個方向可以移動到下一個房間,由於歐美最早的網游都是地牢迷宮形式的,因此場景的基本單位被成為 「房間」。MUDOS使用一門稱為LPC的腳本語言來描述整個世界(包括房間拓撲,配置,NPC,以及各種劇情)。游戲裡面的高級玩家(巫師),可以不斷的通過修改腳本來為游戲添加房間以及增加劇情。早年 MUD1上線時只有17個房間,Roy Trubshaw畢業以後交給他的師弟 Richard Battle,在 Richard Battle手上,不斷的添加各種玩法到一百多個房間,終於讓 MUD發揚光大。

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

用戶數據保存在文件中,每個用戶登錄時,從文本文件里把用戶的數據全部載入進來,操作全部在內存裡面進行,無需馬上刷回磁碟。用戶退出了,或者每隔5分鍾檢查到數據改動了,都會保存會磁碟。這樣的系統在當時每台伺服器承載個4000人同時游戲,不是特別大的問題。從1991年的 MUDOS發布後,全球各地都在為他改進,擴充,退出新版本,隨著 Windows圖形機能的增強。1997游戲《UO》在 MUDOS的基礎上為角色增加的x,y坐標,為每個房間增加了地圖,並且為每個角色增加了動畫,形成了第一代的圖形網路游戲。

因為游戲內容基本可以通過 LPC腳本進行定製,所以MUDOS也成為名副其實的第一款服務端引擎,引擎一次性開發出來,然後製作不同游戲內容。後續國內的《萬王之王》等游戲,很多都是跟《UO》一樣,直接在 MUDOS上進行二次開發,加入房間的地圖還有角色的坐標等要素,該架構一直為國內的第一代 MMORPG提供了穩固的支持,直到 2003年,還有游戲基於 MUDOS開發。雖然後面圖形化增加了很多東西,但是這些MMORPG後端的本質還是 MUDOS。隨著游戲內容的越來越復雜,架構變得越來越吃不消了,各種負載問題慢慢浮上水面,於是有了我們的第二代游戲伺服器。

類型3:第二代游戲伺服器 2003

2000年後,網游已經脫離最初的文字MUD,進入全面圖形化年代。最先承受不住的其實是很多小文件,用戶上下線,頻繁的讀取寫入用戶數據,導致負載越來越大。隨著在線人數的增加和游戲數據的增加,伺服器變得不抗重負。同時早期 EXT磁碟分區比較脆弱,稍微停電,容易發生大面積數據丟失。因此第一步就是拆分文件存儲到資料庫去。

此時游戲服務端已經脫離陳舊的 MUDOS體系,各個公司在參考 MUDOS結構的情況下,開始自己用 C在重新開發自己的游戲服務端。並且腳本也拋棄了 LPC,採用擴展性更好的 Python或者 Lua來代替。由於主邏輯使用單線程模型,隨著游戲內容的增加,傳統單伺服器的結構進一步成為瓶頸。於是有人開始拆分游戲世界,變為下面的模型:

游戲伺服器壓力拆分後得意緩解,但是兩台游戲伺服器同時訪問資料庫,大量重復訪問,大量數據交換,使得資料庫成為下一個瓶頸。於是形成了資料庫前端代理(DB Proxy),游戲伺服器不直接訪問資料庫而是訪問代理,再有代理訪問資料庫,同時提供內存級別的cache。早年 MySQL4之前沒有提供存儲過程,這個前端代理一般和 MySQL跑在同一台上,它轉化游戲伺服器發過來的高級數據操作指令,拆分成具體的資料庫操作,一定程度上代替了存儲過程:

但是這樣的結構並沒有持續太長時間,因為玩家切換場景經常要切換連接,中間的狀態容易錯亂。而且游戲伺服器多了以後,相互之間數據交互又會變得比較麻煩,於是人們拆分了網路功能,獨立出一個網關服務 Gate(有的地方叫 Session,有的地方叫 LinkSvr之類的,名字不同而已):

把網路功能單獨提取出來,讓用戶統一去連接一個網關伺服器,再有網關伺服器轉發數據到後端游戲伺服器。而游戲伺服器之間數據交換也統一連接到網管進行交換。這樣類型的伺服器基本能穩定的為玩家提供游戲服務,一台網關服務1-2萬人,後面的游戲伺服器每台服務5k-1w,依游戲類型和復雜度不同而已,圖中隱藏了很多不重要的伺服器,如登錄和管理。這是目前應用最廣的一個模型,到今天任然很多新項目會才用這樣的結構來搭建。

人都是有慣性的,按照先前的經驗,似乎把 MUDOS拆分的越開性能越好。於是大家繼續想,網關可以拆分呀,基礎服務如聊天交易,可以拆分呀,還可以提供web介面,資料庫可以拆分呀,於是有了下面的模型:

這樣的模型好用么?確實有成功游戲使用類似這樣的架構,並且發揮了它的性能優勢,比如一些大型 MMORPG。但是有兩個挑戰:每增加一級伺服器,狀態機復雜度可能會翻倍,導致研發和找bug的成本上升;並且對開發組挑戰比較大,一旦項目時間吃緊,開發人員經驗不足,很容易弄掛。

比如我見過某上海一線游戲公司的一個 RPG上來就要上這樣的架構,我看了下他們團隊成員的經驗,問了下他們的上線日期,勸他們用前面稍微簡單一點的模型。人家自信得很,認為有成功項目是這么做的,他們也要這么做,自己很想實現一套。於是他們義無反顧的開始編碼,項目做了一年多,然後,就沒有然後了。

現今在游戲成功率不高的情況下,一開始上一套比較復雜的架構需要考慮投資回報率,比如你的游戲上線半年內 PCU會去到多少?如果一個 APRG游戲,每組伺服器5千人都到不了的話,那麼選擇一套更為貼近實際情況的結構更為經濟。即使後面你的項目真的超過5千人朝著1萬人目標奔的話,相信那個時候你的項目已經掙大錢了 ,你數著錢加著班去逐步迭代,一次次拆分它,相信心裡也是樂開花的。

上面這些類型基本都是從拆分 MUDOS開始,將 MUDOS中的各個部件從單機一步步拆成分布式。雖然今天任然很多新項目在用上面某一種類似的結構,或者自己又做了其他熱點模塊的拆分。因為他們本質上都是對 MUDOS的分解,故將他們歸納為第二代游戲伺服器。

類型4:第三代游戲伺服器

2007從魔獸世界開始無縫世界地圖已經深入人心,比較以往游戲玩家走個幾步還需要切換場景,每次切換就要等待 LOADING個幾十秒是一件十分破壞游戲體驗的事情。於是對於 2005年以後的大型 MMORPG來說,無縫地圖已成為一個標准配置。比較以往按照地圖來切割游戲而言,無縫世界並不存在一塊地圖上面的人有且只由一台伺服器處理了:

每台 Node伺服器用來管理一塊地圖區域,由 NodeMaster(NM)來為他們提供總體管理。更高層次的 World則提供大陸級別的管理服務。這里省略若干細節伺服器,比如傳統資料庫前端,登錄伺服器,日誌和監控等,統統用 ADMIN概括。在這樣的結構下,玩家從一塊區域走向另外一塊區域需要簡單處理一下:

玩家1完全由節點A控制,玩家3完全由節點B控制。而處在兩個節點邊緣的2號玩家,則同時由A和B提供服務。玩家2從A移動到B的過程中,會同時向A請求左邊的情況,並向B請求右邊的情況。但是此時玩家2還是屬於A管理。直到玩家2徹底離開AB邊界很遠,才徹底交由B管理。按照這樣的邏輯將世界地圖分割為一塊一塊的區域,交由不同的 Node去管理。

對於一個 Node所負責的區域,地理上沒必要連接在一起,比如大陸的四周邊緣部分和高山部分的區塊人比較少,可以統一交給一個Node去管理,而這些區塊在地理上並沒有聯系在一起的必要性。一個 Node到底管理哪些區塊,可以根據游戲實時運行的負載情況,定時維護的時候進行更改 NodeMaster 上面的配置。於是碰到第一個問題是很多 Node伺服器需要和玩家進行通信,需要問管理伺服器特定UID為多少的玩家到底在哪台 Gate上,以前按場景切割的伺服器這個問題不大,問了一次以後就可以緩存起來了,但是現在伺服器種類增加不少,玩家又會飄來飄去,按UID查找玩家比較麻煩;另外一方面 GATE需要動態根據坐標計算和哪些 Node通信,導致邏輯越來越厚,於是把:「用戶對象」從負責連接管理的 GATE中切割出來勢在必行於是有了下面的模型:

網關伺服器再次退回到精簡的網路轉發功能,而用戶邏輯則由按照 UID劃分的 OBJ伺服器來承擔,GATE是按照網路接入時的負載來分布,而 OBJ則是按照資源的編號(UID)來分布,這樣和一個用戶通信直接根據 UID計算出 OBJ伺服器編號發送數據即可。而新獨立出來的 OBJ則提供了更多高層次的服務:

對象移動:管理具體玩家在不同的 Node所管轄的區域之間的移動,並同需要的 Node進行溝通。

數據廣播:Node可以給每個用戶設置若干 TAG,然後通知 Object Master 按照TAG廣播。

對象消息:通用消息推送,給某個用戶發送數據,直接告訴 OBJ,不需要直接和 GATE打交道。

好友聊天:角色之間聊天直接走 OBJ/OBJ MASTER。整個伺服器主體分為三層以後,NODE專注場景,OBJ專注玩家對象,

GATE專注網路。這樣的模型在無縫場景伺服器中得到廣泛的應用。但是隨著時間的推移,負載問題也越來越明顯,做個活動,遠來不活躍的區域變得十分活躍,靠每周維護來調整還是比較笨重的,於是有了動態負載均衡。動態負載均衡有兩種方法,第一種是按照負載,由 Node Master 定時動態移動修改一下各個 Node的邊界,而不同的玩家對象按照先前的方法從一台 Node上遷移到另外一台 Node上:

圖11 動態負載均衡

Node Master定時查找地圖上的熱點區域,計算新的場景切割方式,然後告訴其他伺服器開始調整,具體處理方式還是和上面對象跨越邊界移動的方法一樣。但是上面這種方式實現相對復雜一些,於是人們設計出了更為簡單直接的一種新方法:

圖12 基於網格的動態負載均衡

於網格的動態負載均衡還是將地圖按照標准尺寸均勻切割成靜態的網格,每個格子由一個具體的Node負責,但是根據負載情況,能夠實時的遷移到其他 Node上。在遷移分為三個階段:准備,切換,完成。三個狀態由Node Master負責維護。准備階段新的 Node開始同步老 Node上面該網格的數據,完成後告訴NM;NM確認OK後同時通知新舊 Node完成切換。完成切換後,如果 Obj伺服器還在和老的 Node進行通信,老的 Node將會對它進行糾正,得到糾正的 OBJ將修正自己的狀態,和新的 Node進行通信。

很多無縫動態負載均衡的服務端宣稱自己支持無限的人數,但不意味著 MMORPG游戲的人數上限真的可以無限擴充,因為這樣的體系會受制於網路帶寬和客戶端性能。帶寬決定了同一個區域最大廣播上限,而客戶端性能決定了同一個屏幕到底可以繪制多少個角色。

從無縫地圖引入了分布式對象模型開始,已經完全脫離 MUDOS體系,成為一種新的服務端模型。又由於動態負載均衡的引入,讓無縫伺服器如虎添翼,容納著超過上一代游戲伺服器數倍的人數上限,並提供了更好的游戲體驗,我們稱其為第三代游戲服務端架構。網游以大型多人角色扮演為開端,RPG網游在相當長的時間里一度占據90%以上,使得基於 MMORPG的服務端架構得到了蓬勃的發展,然而隨著玩家對RPG的疲憊,各種非MMORPG游戲如雨後春筍般的出現在人們眼前,受到市場的歡迎。

類型5:戰網游戲伺服器

經典戰網服務端和 RPG游戲有兩個區別:RPG是分區分服的,北京區的用戶和廣州區的用戶老死不相往來。而戰網,雖然每局游戲一般都是 8人以內,但全國只有一套伺服器,所有的玩家都可以在一起游戲,而玩家和玩家之使用 P2P的方式連接在一起,組成一局游戲:

玩家通過 Match Making 伺服器使用:創建、加入、自動匹配、邀請 等方式組成一局游戲。伺服器會選擇一個人做 Host,其他人 P2P連接到做主的玩家上來。STUN是幫助玩家之間建立 P2P的牽引伺服器,而由於 P2P聯通情況大概只有 75%,實在聯不通的玩家會通過 Forward進行轉發。

大量的連接對戰,體育競技游戲採用類似的結構。P2P有網狀模型(所有玩家互相連接),和星狀模型(所有玩家連接一個主玩家)。復雜的游戲狀態在網狀模型下難以形成一致,因此星狀P2P模型經受住了歷史的考驗。除去游戲數據,支持語音的戰網系統也會將所有人的語音數據發送到做主的那個玩家機器上,通過混音去重再編碼的方式返回給所有用戶。

戰網類游戲,以競技、體育、動作等類型的游戲為主,較慢節奏的 RPG(包括ARPG)有本質上的區別,而激烈的游戲過程必然帶來到較 RPG復雜的多的同步策略,這樣的同步機制往往帶來的是很多游戲結果由客戶端直接計算得出,那在到處都是破解的今天,如何保證游戲結果的公正呢?

主要方法就是投票法,所有客戶端都會獨立計算,然後傳遞給伺服器。如果結果相同就更新記錄,如果結果不一致,會採取類似投票的方式確定最終結果。同時記錄本劇游戲的所有輸入,在可能的情況下,找另外閑散的游戲客戶端驗算整局游戲是否為該結果。並且記錄經常有作弊嫌疑的用戶,供運營人員封號時參考。

類型7:休閑游戲伺服器

休閑游戲同戰網伺服器類似,都是全區架構,不同的是有房間伺服器,還有具體的游戲伺服器,游戲主體不再以玩家 P2P進行,而是連接到專門的游戲伺服器處理:

和戰網一樣的全區架構,用戶數據不能象分區的 RPG那樣一次性load到內存,然後在內存裡面直接修改。全區架構下,為了應對一個用戶同時玩幾個游戲,用戶數據需要區分基本數據和不同的游戲數據,而游戲數據又需要區分積分數據、和文檔數據。勝平負之類的積分可以直接提交增量修改,而更為普遍的文檔類數據則需要提供讀寫令牌,寫令牌只有一塊,讀令牌有很多塊。同帳號同一個游戲同時在兩台電腦上玩時,最先開始的那個游戲獲得寫令牌,可以操作任意的用戶數據。而後開始的那個游戲除了可以提交勝平負積分的增量改變外,對用戶數據採用只讀的方式,保證游戲能運行下去,但是會提示用戶,游戲數據鎖定。

類型8:現代動作類網游

從早期的韓國動作游戲開始,傳統的戰網動作類游戲和 RPG游戲開始嘗試融合。單純的動作游戲玩家容易疲倦,留存也沒有 RPG那麼高;而單純 RPG戰斗卻又慢節奏的乏味,無法滿足很多玩家激烈對抗的期望,於是二者開始融合成為新一代的:動作 + 城鎮 模式。玩家在城鎮中聚集,然後以開副本的方式幾個人出去以動作游戲的玩法來完成各種 RPG任務。本質就是一套 RPG服務端+副本服務端。由於每次副本時人物可以控制在8人以內,因此可以獲得更為實時的游戲體驗,讓玩家玩的更加爽快。

說了那麼多的游戲伺服器類型,其實也差不多了,剩下的類型大家拼湊一下其實也就是這個樣子而已。

熱點內容
萬魔斬腳本 發布:2024-10-06 08:23:18 瀏覽:876
華強北耳機連安卓手機下什麼軟體 發布:2024-10-06 08:21:53 瀏覽:251
兒科發現傳染病的應急演練腳本 發布:2024-10-06 08:21:48 瀏覽:598
玩王者榮耀的時候要買哪個配置 發布:2024-10-06 08:19:41 瀏覽:620
imovie怎麼清理緩存 發布:2024-10-06 08:14:30 瀏覽:17
python字典list 發布:2024-10-06 08:14:26 瀏覽:578
amhip訪問 發布:2024-10-06 08:03:54 瀏覽:437
joy加密 發布:2024-10-06 07:53:27 瀏覽:201
結構是由哪種腳本語言填寫的 發布:2024-10-06 07:24:27 瀏覽:744
客戶端反編譯教學 發布:2024-10-06 07:10:42 瀏覽:783