• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Daly的游戲人生

            網(wǎng)絡(luò)游戲不同類型的技術(shù)分類

                不同的游戲類型需要有不同的技術(shù)設(shè)計,尤其服務(wù)器端,沒有一個通用游戲引擎可以適應(yīng)所有類型。所以大部分游戲的服務(wù)器端引擎都是根據(jù)產(chǎn)品需求手工打造,商業(yè)引擎通常也得經(jīng)過別扭的折騰改造才能用得比較好(比如Bigworld ^_^ )。 本文對常見的幾種網(wǎng)絡(luò)游戲的服務(wù)端技術(shù)做一個技術(shù)特點的分類。
                約束性能和容量規(guī)模的因素歸納起來是:數(shù)據(jù)共享域,消息廣播域,運算共享域。這幾個因素涉及的對象數(shù)量會直接影響了架構(gòu)涉及,下面分別來說。
             
                 分類特征:
                 玩家數(shù)據(jù)總量,同時在線數(shù)
                 這里是指,玩家登錄后,需要從多大規(guī)模的數(shù)據(jù)中讀取自己的數(shù)據(jù)。social game全局共享的角色數(shù)據(jù)(統(tǒng)一世界),隨著玩家數(shù)量增多線性增長,往往單機儲存不能滿足需求,需要分布式儲存技術(shù)。而對于傳統(tǒng)MMORPG,由于是分服(服務(wù)器之間是平衡世界,角色數(shù)據(jù)相互獨立),相當于天然地用服務(wù)器id做了數(shù)據(jù)分區(qū)(而不需要像分布式儲存那樣考慮分區(qū)算法的擴展性問題),除了登錄信息,沒有全局數(shù)據(jù),單機儲存即可解決問題。
                 AOI范圍與頻率
                 這里指的是游戲過程中,即時廣播涉及的對象數(shù)量以及消息密度,比如同屏玩家數(shù)。競技和休閑類游戲通常比較小,而傳統(tǒng)MMORPG通常較大。
                 范圍和頻率還影響client間傳輸消息的方式,通常有兩種:client間直傳(P2P); 中心服轉(zhuǎn)發(fā)。從延時來看,廣域網(wǎng)游戲這兩者區(qū)別到不大(前提是中心服不卡,其實可以看做一個路由器)。如果廣播范圍 x 頻率較大,中心服的帶寬成本很高(嗯嗯,帶寬是很貴的)。如果采用純P2P,則需要考慮客戶端作弊問題。當然還可以用混合的方法,即中心服監(jiān)督下的P2P,比如有些競技游戲在服務(wù)端也做一層校驗,查出外掛的可能,當然這個不容易實現(xiàn)得好。 大部分情況下,服務(wù)器監(jiān)督一切,最省心。

                 AOI跳轉(zhuǎn)方式
                 是指在不同運算共享域和廣播域直接切換的方式,分為無縫和跳轉(zhuǎn)點。舉個例子,休閑游戲和競技游戲通常是玩家主動點擊進入或退出房間/頻道,不同房間/頻道分隔了廣播域。而即時制MMORPG(比如WOW)區(qū)域之間是無邊界的。這兩者區(qū)別影響運算性能的擴展性,即實現(xiàn)多進程處理的技術(shù)難度。對于前者可以很容易實現(xiàn)多進程分擔處理任務(wù)。后者的無縫AOI,要實現(xiàn)多進程的話,在邊界處需要較復雜的進程數(shù)據(jù)同步技術(shù)。
                 實時性/同步要求
                 網(wǎng)絡(luò)延時的前提下,同步方案主要是用戶體驗和數(shù)據(jù)正確性之間的權(quán)衡。競技和動作游戲強調(diào)打擊感和位置準確性,需要很高的同步要求。很多游戲采用幀同步方案,即一旦對應(yīng)幀數(shù)據(jù)未到,卡住整個客戶端(dota的等待連線)。也有采用運動補償?shù)姆绞?也稱追影),即客戶端預判,當和服務(wù)端位置不一致時,通過加速等方式平滑追上。為了減少延時帶來的影響,一部分計算放在客戶端,關(guān)鍵計算等待服務(wù)器返回。在等待服務(wù)器返回結(jié)果的過程中,通常結(jié)合美術(shù)和技術(shù)手段"欺騙"玩家的視覺(比如起手動作),達到較好的體驗。

            Social game
                 玩法:策略經(jīng)營類,好友互動
                 玩家數(shù)量大,冷數(shù)據(jù)總量大 (海量玩家同一交互域),同時在線高;
                 AOI范圍中。頻率低。消息在好友之間分發(fā)(好友數(shù)量一般在一百以內(nèi))
                 實時性/同步要求:低,不需要實時。運算較簡單(看成是海量數(shù)據(jù)的CURD應(yīng)用)
                 技術(shù)特點:跟微博,QQ群等傳統(tǒng)互聯(lián)網(wǎng)應(yīng)用比較接近:數(shù)據(jù)量大,AOI范圍中,實時要求低。主要難點在于讀寫規(guī)模大,總數(shù)據(jù)量大,cache熱度不明顯(無明顯熱數(shù)據(jù))。
                 性能擴展:依賴于分布式儲存和讀寫技術(shù),與一般社交網(wǎng)絡(luò)技術(shù)類似。由于需要預先加好友,設(shè)定好友數(shù)量上限可以限制數(shù)據(jù)廣播的規(guī)模。

            休閑棋牌類游戲
                 玩家數(shù)量大;冷數(shù)據(jù)總量大;但登錄后通常進入房間。
                 房間之間分隔了廣播域,游戲局之間玩家互相獨立(除了聊天頻道)。意味著較容易根據(jù)房間和游戲分服/進程,性能擴展容易。
                 AOI范圍低(一局游戲的幾個人),實時性一般。運算一般(棋牌算法計算)。
                 架構(gòu)上通常分前端(登錄和房間邏輯)和后端(具體一局游戲),分服設(shè)計較容易。通常一個前端要對應(yīng)很多種不同類型的后端邏輯(各種類型游戲),需要制定一個容易開發(fā)和接入的框架。
                 容量擴展:由于游戲局的獨立性,分進程/分服做運算擴展比較簡單。 通過分區(qū)分房間限制了數(shù)據(jù)廣播規(guī)模。

            競技類游戲
                 玩法:dota, FPS, 格斗動作類
                 AOI范圍低(10人以下),交互頻率高
                 實時交互和同步要求極高(技術(shù)難點)
                 容量擴展:通常與休閑類一樣,先進入房間(有些叫頻道)限制數(shù)據(jù)廣播規(guī)模。不同房間互相獨立,因此也較容易通過增加進程/服務(wù)器分散運算規(guī)模。

            即時制MMORPG
                 通常技能有cooldown, 玩家之間可以穿插(沒有動態(tài)碰撞檢測),同步要求低于動作類和dota網(wǎng)游。單服同時在線人數(shù)有限(1w人左右),邏輯復雜, IO通常單機就可搞定。AOI通常是運算瓶頸,要提高容量就要分進程或分線程。對于區(qū)域間無縫世界,在邊界處的對象,由于互相可見且可戰(zhàn)斗,分管兩個區(qū)域的進程間需要較復雜的同步機制。比如bigworld用的是對象代理技術(shù),即在原區(qū)域是real對象,對端區(qū)域建立一個ghost(代理對象), 對real對象的所有狀態(tài)改變即時同步到對端進程,反之對ghost操作也同步到real。也就是說玩家A在兩個進程都有自己的副本,且都可寫,需要借鑒分布式技術(shù)中,多Writer的數(shù)據(jù)一致性設(shè)計。
                 對MMORPG來說,單服人數(shù)越高,游戲的社區(qū)性和人氣感就越強, 但人數(shù)越多,就越容易卡住服務(wù)器。現(xiàn)在都是多核的世界,基本上都是多線程/進程的架構(gòu)了,多writer/reader, 數(shù)據(jù)同步,鎖這些是常見技術(shù)考量點。一般功能模塊交互性不強,分進程/線程難度不大,但AOI這塊分進程要比較折騰。

                 題外話
                 這兩年公司的校園招聘,程序員的title是虛擬世界架構(gòu)師(汗 -_-!)。真正的虛擬世界應(yīng)該是:數(shù)據(jù)規(guī)模大,AOI范圍大,實時交互。以上還沒有一種游戲同時符合幾個特征,都不同程度通過分區(qū)/分服/分房間/分場景/分頻道分隔了單個進程的處理規(guī)模,單臺服務(wù)器的數(shù)據(jù)規(guī)模和帶寬規(guī)模。當然,即使技術(shù)上可行,玩家腦子同時能處理的對象數(shù)比電腦要差多了(呃,試想數(shù)萬人同處一個場景,然后走來走去,這個有游戲性可言?),這時候瓶頸不在服務(wù)器,超密集的角色,客戶端的渲染效率變成瓶頸。

            posted on 2012-07-17 09:45 Daly 閱讀(2862) 評論(5)  編輯 收藏 引用 所屬分類: 游戲開發(fā)

            評論

            # re: 網(wǎng)絡(luò)游戲不同類型的技術(shù)分類 2012-07-17 10:55 唐詩

            我猜你是網(wǎng)易的,呵呵!  回復  更多評論   

            # re: 網(wǎng)絡(luò)游戲不同類型的技術(shù)分類 2012-07-17 12:09 戰(zhàn)魂小筑

            不錯, 頂起  回復  更多評論   

            # re: 網(wǎng)絡(luò)游戲不同類型的技術(shù)分類 2012-07-23 12:46 smartlean

            邏輯服務(wù)器確實是這些技術(shù)點。關(guān)于“數(shù)據(jù)規(guī)模大,AOI范圍大,實時交互”,有興趣可以交流下~~  回復  更多評論   

            # re: 網(wǎng)絡(luò)游戲不同類型的技術(shù)分類 2013-10-08 12:25 coderchen

            @唐詩
            羨慕  回復  更多評論   

            # re: 網(wǎng)絡(luò)游戲不同類型的技術(shù)分類[未登錄] 2013-11-07 21:06 star

            我也猜樓主是網(wǎng)易的哈哈,學習了~  回復  更多評論   

            一本久道久久综合狠狠躁AV| 亚洲国产日韩综合久久精品| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 久久伊人精品一区二区三区| 97精品久久天干天天天按摩| 伊人久久一区二区三区无码| 精品国产99久久久久久麻豆| 欧美久久久久久| 国产成人久久精品一区二区三区| 久久久久久精品成人免费图片 | 日韩亚洲欧美久久久www综合网 | 欧美亚洲另类久久综合婷婷 | 亚洲国产精品无码久久九九| 婷婷综合久久中文字幕蜜桃三电影 | 国产69精品久久久久777| 久久露脸国产精品| 国产呻吟久久久久久久92| 韩国无遮挡三级久久| 久久精品国产亚洲AV大全| 亚洲精品无码久久久久| 天天久久狠狠色综合| 奇米影视7777久久精品| 亚洲日本久久久午夜精品| 国产精品免费久久| 久久精品成人免费网站| 色综合久久久久久久久五月| 中文字幕无码久久久| 无码8090精品久久一区| 国产精品日韩深夜福利久久| 久久天堂电影网| 中文字幕一区二区三区久久网站| 亚洲成人精品久久| 97精品伊人久久大香线蕉app| 日韩精品久久无码人妻中文字幕| 久久天天躁夜夜躁狠狠| 久久亚洲AV无码精品色午夜| 久久久久久久亚洲精品| 无码国内精品久久人妻| 久久精品人人做人人爽97 | 久久99精品久久久久久不卡| 久久久久久国产a免费观看黄色大片|