青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

網頁游戲分線到不分線

轉載自:http://www.cnblogs.com/me-sa/archive/2011/12/10/erlang0020.html

     這一年來可以明顯看到一個變化:網頁游戲分線從標配逐漸變成了可選,越來越多的游戲開始不分線;當初為什么要分線?現在為什么又不分線?技術上面臨著什么挑戰?僅僅是技術問題么?

術語解釋

    不同的技術實現"一條線"的概念也不盡相同,我們使用的Erlang實現,這里的一條線對應Erlang的一個VM.

為什么要分線?

     可以通過比較來回答這個問題:所有玩家都在同一條線上 VS 同樣數量的玩家被分配在多條線;如果所有玩家(假定1000人)都在一條線上首先同一場景的玩家數就會比較高,特別是一些游戲的熱點區域比如副本入口,主城中心,傳送門等等,當然同屏人數也會高;服務器端對應相關場景的廣播壓力,和業務邏輯的運算壓力都集中在一條線上。而進行了分線之后,相當于把玩家做了分流,同一場景以及同屏的人數都會減少,一方面服務器端單條線的運算壓力下降了,另一方面客戶端的同屏人數也降了下來;

   分線實際上幫服務器端和客戶端都減輕了壓力,特別是很長一段時間內Flash客戶端的同屏人數一直有人數限制,多數游戲能做到100多人,不會超過200人;這實際上是木桶理論中的短板,即使服務器端能做到不分線,客戶端也支撐不了那么高的同屏;(當然現在這個問題已經有了突破)

   總結一下,為什么分線:分擔運算壓力 同屏人數限制

 

分線對設計的影響

    分線實際上是突破技術瓶頸支撐更多玩家的方案,一旦分線自然就會帶來"換線"和"跨線"的問題;所謂換線,就是玩家顯示的從一條線路切換到另一條線路;不在同一條線的玩家就屬于"跨線";玩家一個在1線,一個在2線,他們要交易怎么辦?組隊呢?聊天呢?戰斗呢?即使是忽略掉交互的因素,只看一個玩家,這一個玩家上線應該選擇哪條線?如果玩家在戰斗,交易,掛機等狀態下能夠換線么?在這些狀態下下線然后上線怎么處理?

   本質上換線實際上是玩家數據從一個Erlang節點遷移到另一個Erlang節點,有一個銷毀和重建的過程;而跨線是兩個玩家的數據在不同的Erlang節點內。

   一部分解決方案是來自于策劃,會有一些游戲狀態的互斥,比如不允許跨線交易,不允許在修煉狀態換線,等等;另外一方面就要在做設計的時候充分考慮分線了:

    玩家不在一條線怎么辦?玩家當前能不能換線?玩家在當前這個狀態換線了怎么辦?玩家下線之后再上線怎么辦?我這個服務是全局的應該怎么辦?......

    具體技術實現上,Erlang做這個有先天優勢,啟動多個節點,設計一個網關節點做負載均衡;做水平擴展是很容易的。

 

分線血淚

   可以發現分線的設計需要在完成某一個功能的同時考慮到多條線的情況,會增加問題的復雜度;我不知道有多少采取分線策略的游戲曾經因為分線栽過跟頭,我們就差點因為分線的一個bug把游戲經濟系統搞死;事情大概經過:

   某周日23點左右 運營的同事告訴我游戲內有玩家金幣異常

   23:30左右到公司  封號,分析日志,發現金幣來源應該是玩家交易,排除服務器被攻擊可能

   0點左右  封鎖了交易的所有協議,停服更新

   1點左右 發現還有一處可能出現問題的地方 再次更新

   2點 從玩家日志庫抓取異常玩家的數據做分析 發現玩家金幣成倍增長2 4 8 16 32 64 也就是說,金幣被”復制了“,但是玩家怎么做到的?是自己和自己交易么?分析代碼雖然缺少這個防護,但是交易使用的SQL也保證了他得不到收益。

   3:00 ~5:00 在本地測試環境,反復模擬各種情況下的交易,答案:當時游戲存在一個分線選擇的bug導致玩家可以同時登陸兩條線,玩家使用兩個賬號反復登陸換線,然后進行交易就可以把金幣通過交易復制;  

    6點左右補丁做好熱更新第一個版本

    7點左右客戶端補丁也做了分發

   第二天運營提交了相關賬號的修復規則,一個游戲的充值有一個前提保證就是游戲內的經濟系統穩定,一旦出現刷金幣之類的事情搞亂了經濟系統,這個游戲服也就死掉了;

 

為什么不分線了?

    首先分線的種種限制,比如跨線不能交易等等增加了玩家操作步驟,需要玩家先選擇換線;另外,分線分流玩家分散了壓力也分散了人氣,顯得游戲不熱鬧;

    其次在Flash同屏問題已經有了優化方案,可以看一下現在非常火爆的神魔遮天,它的同屏人數遠遠超出了100的限制;觀察一下神魔遮天的處理,當一個區域聚集了很多人的時候,它并不是一下全部渲染出來,而是一個一個渲染出來的;還有一些客戶端的優化策略,這些方案的組合結果就是同屏人數可以更多;

 

怎么實現?

    有的不分線是通過拆分游戲的功能模塊實現的,比如把場景運算放在單獨的erlang節點,以功能為單位拆分成多個節點分擔壓力;一旦壓力上去就可以通過增加對應的功能節點來緩解壓力;實際上是換了一種分擔壓力的方式,對于客戶端和玩家這些都是透明的。

   我們從分線到不分線更困難一些,之前所有的邏輯都是在一個節點內完成,很難按照功能拆分游戲,那將是顛覆性的。咨詢立濤,他給我們的建議是只開一條線,開啟SMP,單線支撐2000~3000人應該沒有問題。

   Erlang SMP VM比普通Erlang VM要慢那么一點點,但是可以充分發揮多核優勢 摘錄一點資料:

   從OTP R12B開始,如果操作系統報告有多于1個的CPU(或者核心)VM的SMP版本會自動啟動,并且根據CPU或者核心的數量啟動同樣數量的調度器。

    沒有SMP支持的Erlang VM只有1個運行在主處理線程中的調度器。該調度器從運行隊列(run-queue)中取出可以運行的Erlang進程以及IO任務,而且因為只有一個線程訪問他們所以無須鎖定任何數據。而帶有SMP支持的Erlang VM可以有一個或多個調度器,每個運行在一個線程中。調度器從同一個公共運行隊列中取出可運行的Erlang進程和IO任務。在SMP VM中所有的共享數據結構都會由鎖進行保護,運行隊列就是這樣一個由鎖保護的數據結構。

   詳情看這里:http://shiningray.cn/some-facts-about-erlang-and-smp.html

   實踐過程中,我們還是采取了一個折中的方案,只要玩家在一條線上不超過閾值,就只開啟這一條線,客戶端也沒有線路選擇的功能,如果超過閾值,就開啟新線路,并通知客戶端顯示選線功能;

 

僅僅是技術問題么?

   從分線到不分線不僅僅是技術問題,策劃同樣要做調整,比如游戲內的一些容易堆積玩家的區域要想辦法分散壓力,比如增加入口,修改NPC位置等等;還有一些數值限制也需要重新考慮,比如一個活動分線模式最多只允許30個玩家參與,不分線了這個限制就要改掉否則大部分玩家都參與不了這個活動。

   單服最高在線超過3000人怎么辦?首先現在游戲平臺能推到這個在線的情況都很少了;其次如果超過這個值,一般都是開啟新服,也就是通過運營手段而非技術手段解決這個問題。

 

  從分線到不分線,下一站是什么?一個世界?

  對于開發者,下一戰又是什么?


posted on 2012-11-22 11:16 楊粼波 閱讀(869) 評論(1)  編輯 收藏 引用 所屬分類: 文章收藏網絡編程

評論

# re: 網頁游戲分線到不分線 2012-11-22 15:08 戰魂小筑

希望看到更多的此類經驗處理, 感覺不錯  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美另类国产| 免费不卡亚洲欧美| 国产三级欧美三级| 亚洲日本一区二区三区| 免费在线成人| 欧美激情一区二区三区成人| 亚洲国产成人久久| 亚洲免费观看高清完整版在线观看熊 | 亚洲国产mv| 日韩小视频在线观看专区| 亚洲伦理一区| 欧美一二区视频| 欧美高清不卡| 一本色道久久88综合亚洲精品ⅰ | 亚洲成色999久久网站| 亚洲黄色成人| 亚洲永久免费观看| 久久综合久久88| 亚洲精品在线视频观看| 亚洲一区精彩视频| 免费不卡在线观看av| 欧美日韩一区二区三区免费看| 国产精品日韩电影| 亚洲黄色性网站| 久久国产精品99国产精| 亚洲国产另类久久精品| 香蕉av福利精品导航| 欧美精品久久久久久| 国产亚洲欧美一区二区| 99国产精品一区| 麻豆成人在线| 亚洲欧美卡通另类91av| 欧美韩日一区二区三区| 国产综合精品| 亚欧美中日韩视频| 一本色道久久综合亚洲91| 另类春色校园亚洲| 黄色成人在线免费| 亚洲欧美精品伊人久久| 亚洲成人资源网| 久久久久久精| 国产真实乱偷精品视频免| 亚洲无线观看| 亚洲区一区二| 欧美gay视频激情| 亚洲电影免费观看高清完整版在线| 午夜电影亚洲| 在线视频欧美一区| 欧美日韩系列| 亚洲午夜精品久久久久久app| 欧美成人精品在线| 久久久精品网| 在线看片一区| 欧美r片在线| 久久久天天操| 在线日韩av永久免费观看| 久久久国产精品一区| 久久看片网站| 亚洲欧美日韩一区二区| 国产精品卡一卡二| 亚洲欧美久久| 亚洲欧美自拍偷拍| 国产亚洲精品自拍| 久久久久久免费| 欧美有码在线观看视频| 国产日韩专区| 蜜臀久久99精品久久久久久9| 久久国产一区二区三区| 狠狠色噜噜狠狠色综合久 | 亚洲欧美日韩中文在线制服| 国产精品美女视频网站| 先锋影音网一区二区| 亚洲自拍高清| 精品不卡视频| 亚洲欧洲精品一区二区三区波多野1战4 | 亚洲第一页在线| 欧美福利专区| 亚洲欧美韩国| 久久激情中文| 亚洲精品国产无天堂网2021| 亚洲经典自拍| 国产精品嫩草影院一区二区| 久久er精品视频| 久久在线免费观看视频| 夜夜狂射影院欧美极品| 亚洲午夜成aⅴ人片| 狠狠久久婷婷| 亚洲免费观看高清在线观看| 国产精品一区二区三区观看| 久热精品在线视频| 欧美日韩精品一区二区| 久久福利影视| 欧美精品免费播放| 久久精品国产欧美激情| 欧美成人三级在线| 欧美一区三区三区高中清蜜桃 | 亚洲在线成人| 久久久国产精品亚洲一区| 99ri日韩精品视频| 午夜精品福利一区二区三区av | 欧美成人有码| 国产精品大片| 亚洲国产欧美一区二区三区同亚洲| 免播放器亚洲一区| 亚洲久色影视| 久久久精品国产免大香伊| 国产精品亚洲网站| 欧美国产视频日韩| 国产手机视频精品| 亚洲美女精品久久| 亚洲国产美女精品久久久久∴| 亚洲无限av看| 99精品欧美| 欧美国产成人在线| 美女在线一区二区| 国产精品一区毛片| 夜夜爽99久久国产综合精品女不卡| 国产一区美女| 亚洲欧美日韩精品在线| 亚洲视频一区在线观看| 久久综合中文字幕| 久久美女性网| 国产欧美一区二区三区久久人妖| 亚洲国产日韩欧美在线动漫| 伊人久久成人| 久久久不卡网国产精品一区| 欧美一级欧美一级在线播放| 欧美日韩国产二区| 亚洲精品欧洲精品| 日韩亚洲在线观看| 欧美成人黑人xx视频免费观看| 久久久久久综合| 韩国av一区| 久久久99久久精品女同性| 久久综合久色欧美综合狠狠| 国产一区二区三区日韩| 亚洲欧美国产精品专区久久| 亚洲综合不卡| 国产精品区一区二区三| 国产精品99久久久久久有的能看| 一区二区免费在线观看| 欧美日本在线播放| 日韩一级成人av| 亚洲欧美第一页| 国产亚洲精品成人av久久ww| 欧美永久精品| 免费观看不卡av| 亚洲精品视频中文字幕| 欧美日韩国产精品自在自线| 夜夜夜久久久| 亚洲私人影院| 国产欧美一区二区精品性色| 久久成人国产| 欧美黄色视屏| 亚洲天堂成人在线视频| 亚洲国产经典视频| 一本一本a久久| 国产精品欧美久久| 久久精品国产久精国产思思| 欧美国产综合| 亚洲欧美日韩综合| 国内不卡一区二区三区| 久久综合狠狠综合久久综青草| 欧美激情亚洲自拍| 亚洲一区尤物| 激情自拍一区| 欧美日韩a区| 欧美一区国产二区| 欧美韩国在线| 亚洲欧美清纯在线制服| 在线看一区二区| 欧美视频中文一区二区三区在线观看| 亚洲综合第一| 亚洲国产高清自拍| 欧美在线一级视频| 亚洲最新视频在线| 激情视频一区二区| 亚洲综合久久久久| 欧美14一18处毛片| 亚洲女女女同性video| 在线日韩av片| 国产精品一区二区三区四区| 欧美福利一区二区| 欧美在线视频免费播放| 日韩视频免费看| 欧美不卡在线| 久久精品国产一区二区三区| 一本大道av伊人久久综合| 狠狠色综合播放一区二区| 国产精品久久久久91| 欧美 日韩 国产一区二区在线视频| 亚洲午夜在线观看| 亚洲精品乱码久久久久| 欧美成人激情视频| 久久在线免费| 久久精品日产第一区二区三区| 99精品国产一区二区青青牛奶| 国产一区在线观看视频| 国产精品久久久久久影视| 欧美国产亚洲另类动漫|