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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
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>
            在线视频国产日韩| 亚洲小说区图片区| 99视频精品全国免费| 亚洲国产视频一区| 亚洲精品欧美| 在线视频你懂得一区| 亚洲欧美国产三级| 久久国产乱子精品免费女| 久久精品一区二区三区不卡牛牛 | 999亚洲国产精| 亚洲欧美999| 久久精品亚洲国产奇米99| 美日韩免费视频| 亚洲精品久久久久久久久久久久久| 最新亚洲电影| 午夜性色一区二区三区免费视频| 久久精品视频亚洲| 欧美精品亚洲| 国内精品一区二区| 正在播放欧美视频| 久久人人看视频| 亚洲国产一二三| 午夜精品影院在线观看| 蜜臀久久99精品久久久久久9| 欧美片在线观看| 狠狠爱www人成狠狠爱综合网| 亚洲精品乱码久久久久久久久| 亚洲欧美日韩国产综合| 亚洲国产欧美国产综合一区| 小黄鸭精品aⅴ导航网站入口| 欧美一区二区大片| 久久久久综合网| 国产精品久久| 午夜精品久久久久久久蜜桃app| 久久国内精品视频| 欧美日韩一级黄| 一区精品在线| 欧美一区激情| 这里只有视频精品| 欧美日韩爆操| 亚洲国产成人午夜在线一区| 欧美在线一区二区| 一本久久知道综合久久| 欧美3dxxxxhd| 一区二区三区自拍| 久久精品成人欧美大片古装| 亚洲视频在线播放| 欧美日韩在线一区二区| 亚洲精品免费电影| 欧美国产1区2区| 久久久久久穴| 亚洲第一色在线| 女同一区二区| 久久网站免费| 亚洲国产精品久久久久久女王 | 新片速递亚洲合集欧美合集| aa亚洲婷婷| 欧美视频日韩视频在线观看| 日韩视频中午一区| 日韩视频在线观看国产| 欧美日韩在线播放三区四区| 亚洲性图久久| 亚洲伊人观看| 国产一级精品aaaaa看| 久久香蕉国产线看观看av| 欧美淫片网站| 亚洲第一伊人| 亚洲人成网站在线播| 欧美久久电影| 小辣椒精品导航| 欧美伊人久久| 亚洲区欧美区| 在线一区二区三区做爰视频网站| 国产精品久久久久久久9999| 欧美在线一二三四区| 久久久久久久久久久成人| 91久久夜色精品国产九色| 亚洲精品在线一区二区| 国产精品一区二区在线| 久久婷婷影院| 欧美日本在线看| 欧美中文在线免费| 久久免费黄色| 日韩一级精品视频在线观看| 亚洲无人区一区| 亚洲国产精选| 亚洲一区二区在线视频 | 欧美在线观看一区| 亚洲一区二区四区| 欧美影视一区| 噜噜噜久久亚洲精品国产品小说| 日韩一级精品视频在线观看| 亚洲直播在线一区| 亚洲国产成人av| 99riav1国产精品视频| 国产一区二区中文| 亚洲精品视频在线| 国自产拍偷拍福利精品免费一| 亚洲国产欧美在线人成| 国产伦精品一区| 亚洲国产网站| 国产在线国偷精品产拍免费yy| 91久久久久久久久| 一区二区在线观看视频| 亚洲一区二区三区久久| 91久久精品一区| 欧美一区二区在线看| 一本色道88久久加勒比精品 | 亚洲国产精品ⅴa在线观看| 99re66热这里只有精品3直播| 精品不卡视频| 香蕉国产精品偷在线观看不卡| 亚洲精品午夜精品| 久久女同互慰一区二区三区| 亚洲制服少妇| 欧美日本一道本| 亚洲第一中文字幕| 国外成人在线| 欧美一区二区日韩一区二区| 亚洲一区二区三区三| 欧美人与性动交α欧美精品济南到| 老牛嫩草一区二区三区日本 | 国产精品99久久99久久久二8 | 一区二区三区自拍| 亚洲伊人色欲综合网| 一区二区三区日韩欧美| 欧美高清在线精品一区| 欧美jizzhd精品欧美巨大免费| 国产一区二区毛片| 欧美在线免费观看视频| 欧美一二区视频| 国产精品入口日韩视频大尺度| 一本大道av伊人久久综合| 日韩一区二区精品| 欧美久久久久久蜜桃| 日韩午夜av电影| 亚洲欧美综合精品久久成人| 国产精品成人v| 亚洲一区精品视频| 欧美一区二区在线看| 国产午夜精品理论片a级探花| 小嫩嫩精品导航| 久久免费国产| 亚洲国产午夜| 欧美日韩黄色大片| 亚洲视频免费| 久久精品国产v日韩v亚洲| 亚洲免费综合| 国产一区二区三区久久| 欧美一区二区三区免费大片| 久久免费的精品国产v∧| 伊人天天综合| 欧美人在线观看| 亚洲女女女同性video| 久久久久久色| 亚洲区欧美区| 国产精品毛片va一区二区三区| 亚洲欧美日韩精品久久久| 久久久亚洲人| 制服丝袜亚洲播放| 国产在线精品一区二区夜色| 欧美成人精品影院| 亚洲一区二区久久| 欧美成人黑人xx视频免费观看| 99精品黄色片免费大全| 国产美女搞久久| 欧美电影电视剧在线观看| 亚洲色图在线视频| 噜噜爱69成人精品| 亚洲一区二区三区影院| 在线 亚洲欧美在线综合一区| 欧美国产一区二区在线观看 | 欧美黑人一区二区三区| 亚洲一区二区三区在线播放| 在线成人激情黄色| 国产精品久99| 欧美国产日韩一区二区| 欧美一区二视频| 日韩一级黄色大片| 欧美成人情趣视频| 久久国产免费看| 亚洲一区二区三区成人在线视频精品 | 奶水喷射视频一区| 亚洲在线免费视频| 亚洲精品美女91| 久久久亚洲精品一区二区三区| 在线亚洲精品| 亚洲精品综合久久中文字幕| 狠狠爱综合网| 国产精品亚洲欧美| 欧美日韩性视频在线| 久久综合久久综合这里只有精品| 亚洲午夜av| 亚洲特级片在线| 亚洲精品人人| 亚洲国产欧美一区二区三区同亚洲| 久久久精品国产免大香伊 | 亚洲国产精品久久久久秋霞不卡| 久久不射中文字幕| 午夜在线不卡|