• <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>
            教父的告白
            一切都是紙老虎
            posts - 82,  comments - 7,  trackbacks - 0

            網(wǎng)路的硬件也有限,而人的創(chuàng)造也無(wú)限,在公網(wǎng)平均130ms的Latency下,是不存在“完全的”的同步情況。如何通過(guò)消除/隱藏延時(shí),將用戶(hù)帶入快速的交互式實(shí)時(shí)游戲中,體驗(yàn)完美的互動(dòng)娛樂(lè)呢?

            以下六點(diǎn),將助你分清楚哪些我們可以努力,哪些我們不值得努力,弄明白實(shí)時(shí)游戲中同步問(wèn)題關(guān)鍵之所在,巧妙的化解與規(guī)避游戲,最終在適合普遍用戶(hù)網(wǎng)絡(luò)環(huán)境中(200ms),實(shí)現(xiàn)實(shí)時(shí)快速互動(dòng)游戲:

            1. 基本情況:
               (A) 網(wǎng)絡(luò)性能指標(biāo)一:帶寬,限制了實(shí)時(shí)游戲的人數(shù)容量
               (B) 網(wǎng)絡(luò)性能指標(biāo)二:延時(shí),決定了實(shí)時(shí)游戲的最低反應(yīng)時(shí)間

            2. 兩個(gè)基本原則:
               (A) 讓所有的用戶(hù)屏幕上面表現(xiàn)出完全不同的表象是完全沒(méi)有問(wèn)題的。
               (B) 把這些完全不同表象完全柔和在一個(gè)統(tǒng)一的邏輯中也是完全沒(méi)有問(wèn)題的。

            3. 同步的十二條應(yīng)對(duì)策略:
               (A) 最大可能減少游戲中的數(shù)據(jù)傳輸
               (B) 將阻塞通信放到線程池中實(shí)現(xiàn)
               (C) 永遠(yuǎn)不要為了等待某個(gè)數(shù)據(jù)而不讓游戲進(jìn)行下去
               (D) 利用預(yù)測(cè)和插值改進(jìn)游戲的效果
               (E) 當(dāng)使用預(yù)測(cè)插值的時(shí)候傳送的數(shù)據(jù)不僅包括坐標(biāo),還需要速度和加速度
               (F) 將輸入數(shù)據(jù)枷鎖或者隊(duì)列化(例如鍵盤(pán)消息隊(duì)列),直到下次發(fā)送數(shù)據(jù)的時(shí)刻,傳統(tǒng)的方法是在固定的時(shí)間(發(fā)送數(shù)據(jù)前)檢測(cè)鍵盤(pán),在游戲的原理上隱藏延時(shí)
               (G) 使用事件調(diào)度表,將需要在所有用戶(hù)客戶(hù)端同時(shí)發(fā)生的事件,提前廣播到所有用戶(hù)
               (H) 使用多次攻擊來(lái)殺死一個(gè)精靈,盡量減少一次性的、確定性的、延時(shí)敏感的事件
               (I) 延長(zhǎng)子彈或者火箭在空中飛行的時(shí)間(在其飛行的同時(shí),在所有客戶(hù)端進(jìn)行預(yù)測(cè)插值)
               (J) 所有物體從一個(gè)地方移動(dòng)到另外一個(gè)地方都需要時(shí)間,避免諸如“瞬間移動(dòng)”的設(shè)計(jì)
               (K) 盡量使游戲中所有精靈,飛船或者其他物體,都按照可預(yù)測(cè)的軌跡運(yùn)行,比如在移動(dòng)中增加慣性
               (L) 充分發(fā)揮創(chuàng)造力,盡最大可能的合并游戲中前后相關(guān)的事件,合并游戲中存在的延時(shí)此問(wèn)題,需要在技術(shù)上改進(jìn)的同時(shí)也需要策劃有所重視,規(guī)避一些影響較大的設(shè)計(jì),巧妙的隱藏"延時(shí)"

            4. 同步問(wèn)題現(xiàn)狀:
               (A) 重視程度不夠:很多人尚未意識(shí)到此問(wèn)題的存在,曾有公司花半年時(shí)間打算做一款“松鼠大戰(zhàn)”的網(wǎng)絡(luò)版。
               (B) 技術(shù)上無(wú)徹底解決方案:對(duì)于多數(shù)程序員,單機(jī)游戲技術(shù)善未成熟就匆匆步入網(wǎng)絡(luò)時(shí)代。
               (C) 研究這個(gè)技術(shù)需要條件:需要有實(shí)力的公司才能提供,無(wú)此條件,即便有能力的程序員也無(wú)法成功。

            5. 目前網(wǎng)游的三大技術(shù)難題:
               (A) 服務(wù)器的響應(yīng)問(wèn)題:如何使服務(wù)器在支持越來(lái)越多的人數(shù)的情況下提供最高的響應(yīng)。
               (B) 同步問(wèn)題:如何在有限的網(wǎng)絡(luò)響應(yīng)情況下,實(shí)現(xiàn)快速實(shí)時(shí)類(lèi)游戲,提供最完美的交互。
               (C) 服務(wù)器分布式問(wèn)題:如何在統(tǒng)一用戶(hù)數(shù)據(jù)的情況下,利用分部式將各個(gè)分散的“世界”統(tǒng)一到一個(gè)“世界”中。
               誰(shuí)能真正解決好以上三個(gè)問(wèn)題,配合策劃在設(shè)計(jì)上的突破,將使其他人在至少兩年內(nèi)無(wú)法超越。
              
            6. 相關(guān)補(bǔ)充:
               (A) 網(wǎng)格技術(shù)現(xiàn)在還是抄作,真正用到游戲中,還有很多技術(shù)難點(diǎn)需要突破(比如:目前網(wǎng)格的單位計(jì)算時(shí)間是以秒計(jì)算).
               (B) 其實(shí)與很多人想法相反的是現(xiàn)在3D技術(shù)早已不是主要的矛盾。而現(xiàn)在國(guó)內(nèi)外對(duì)于以上三個(gè)問(wèn)題可以說(shuō)處于同一個(gè)起跑線上,完全有機(jī)會(huì)取得先機(jī)。
               (C) 現(xiàn)在解決同步問(wèn)題已經(jīng)很緊迫,而同時(shí)所需要的環(huán)境也已經(jīng)成熟,只要有所關(guān)注,半年之內(nèi)可以得出較成熟的結(jié)論


            那么具體怎么解決呢?再下一步怎么辦?
            這就得自己去實(shí)踐了,我只說(shuō)這么多了,哈哈,不然又教懶了那些成天再網(wǎng)上搜方案的人。



            MMO的同步策略目前已經(jīng)沒(méi)有什么秘密可言了,簡(jiǎn)單敘述下各要素:


            MMO人行走:MMO中如果是鼠標(biāo)點(diǎn)擊行走傳目的地+中間尋路接點(diǎn)就行了,服務(wù)器簡(jiǎn)單驗(yàn)證一下。如果是鍵盤(pán)控制行走的話,需要做簡(jiǎn)單的預(yù)測(cè)插值。

            MMO打怪:要看怎么個(gè)打法,客戶(hù)端根本不必管服務(wù)端什么時(shí)候傳來(lái)消息,直接演示動(dòng)畫(huà)就行了,最好把被砍的過(guò)程動(dòng)畫(huà)做長(zhǎng)一點(diǎn),可以在播放動(dòng)畫(huà)的過(guò)程中等待服務(wù)器傳過(guò)來(lái)的延遲敏感事件,比如--該人已死。這樣處理起來(lái)比較容易,最重要的是客戶(hù)端看起來(lái)要流暢。

            MMO插值:所謂“把不同表象柔和在一起”算法很多,簡(jiǎn)單的可以參考DR,位置不同的時(shí)候可以做一次線性插值,直接把人拉扯過(guò)去,或者二次線形插值,做一條平滑的曲線修正,看具體項(xiàng)目選擇了。

            時(shí)鐘:就是時(shí)鐘同步,所有時(shí)鐘都是以“貞”為單位的,服務(wù)器主邏輯循環(huán)可以是5-10fps,多則無(wú)益,客戶(hù)端同樣維持一個(gè)和服務(wù)端頻率相同的消息同步貞。

            時(shí)間貞:把ping值加到時(shí)間計(jì)算里面是多余的,按貞計(jì)算的話,服務(wù)端告訴客戶(hù)端在n貞發(fā)生xx事件的時(shí)候,客戶(hù)端收到的時(shí)候如果客戶(hù)端貞數(shù)大于n,說(shuō)明是發(fā)生過(guò)了的,那么做插值,如果小于n,說(shuō)明是未來(lái)發(fā)生的,那么加入時(shí)間表。


            1 游戲中的行走,則是一個(gè)需要同步的重頭戲,當(dāng)今游戲分成兩種同步方式,一種是以服務(wù)器端為準(zhǔn),如果發(fā)現(xiàn)客戶(hù)端的坐標(biāo)和服務(wù)器的坐標(biāo)不符合的話,則拉回。這點(diǎn)的好處是可以彌補(bǔ)瞬移外掛的出現(xiàn),但在網(wǎng)絡(luò)環(huán)境差的情況下,則出現(xiàn)游戲不流暢。

            所 以,我比較推薦使用以客戶(hù)端計(jì)算為準(zhǔn)的方法(當(dāng)然是我因?yàn)槲疫@個(gè)游戲?qū)τ螒蛄鲿承砸蠛芨撸蛻?hù)端向服務(wù)器發(fā)送計(jì)算好的數(shù)據(jù),服務(wù)器經(jīng)過(guò)一定的預(yù)測(cè)判 斷,廣播給其他玩家,這個(gè)雖然是能引起和wow一樣的問(wèn)題,瞬移外掛,但完全可以從游戲設(shè)計(jì)方面進(jìn)行根本避免。(這里就不談策劃方面的問(wèn)題了)

            2 游戲的戰(zhàn)斗,戰(zhàn)斗的同步性要求也相當(dāng)高,這里我也引用樓主說(shuō)的,在固定時(shí)間檢測(cè)鍵盤(pán),以一定頻率發(fā)送攻擊消息,這里有一個(gè)關(guān)鍵,就是服務(wù)器和客戶(hù)端都進(jìn)行 攻擊判定,即使服務(wù)器中沒(méi)有攻擊判定成功,但在客戶(hù)端判定成功,也要播放攻擊效果。不過(guò)一切計(jì)算效果以服務(wù)器為準(zhǔn)。這是一個(gè)欺騙玩家的手段。

            posted on 2009-09-12 10:39 暗夜教父 閱讀(4489) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): Game Development

            FeedBack:
            # re: 網(wǎng)絡(luò)游戲同步法則
            2011-05-21 09:46 | Bob
            時(shí)鐘:就是時(shí)鐘同步,所有時(shí)鐘都是以“貞”為單位的,服務(wù)器主邏輯循環(huán)可以是5-10fps,多則無(wú)益,客戶(hù)端同樣維持一個(gè)和服務(wù)端頻率相同的消息同步貞。

            時(shí)間貞:把ping值加到時(shí)間計(jì)算里面是多余的,按貞計(jì)算的話,服務(wù)端告訴客戶(hù)端在n貞發(fā)生xx事件的時(shí)候,客戶(hù)端收到的時(shí)候如果客戶(hù)端貞數(shù)大于n,說(shuō)明是發(fā)生過(guò)了的,那么做插值,如果小于n,說(shuō)明是未來(lái)發(fā)生的,那么加入時(shí)間表。


            一般時(shí)間和時(shí)間貞如何設(shè)計(jì)?會(huì)直接采用系統(tǒng)時(shí)間嗎?  回復(fù)  更多評(píng)論
              
            # re: 網(wǎng)絡(luò)游戲同步法則[未登錄](méi)
            2012-09-06 11:01 | 李強(qiáng)
            這里就要涉及到游戲邏輯的設(shè)計(jì),如果無(wú)法避免,那么和策劃者就要說(shuō)明了,因?yàn)榻Y(jié)果依據(jù)的是服務(wù)器端的預(yù)測(cè),而客戶(hù)只看自己客戶(hù)端屏幕上的結(jié)果,完全不一樣,只能采用隨機(jī)性的規(guī)則,讓客戶(hù)感覺(jué)是倒霉運(yùn)氣不好或者走運(yùn)運(yùn)氣好了  回復(fù)  更多評(píng)論
              

            <2009年9月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            常用鏈接

            留言簿(2)

            隨筆分類(lèi)

            隨筆檔案

            文章分類(lèi)

            文章檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久成人国产精品| 少妇久久久久久久久久| 久久久无码精品亚洲日韩蜜臀浪潮 | 国内精品久久久久久麻豆| 久久国产精品无码一区二区三区| 亚洲欧洲久久久精品| 亚洲а∨天堂久久精品| 欧美成a人片免费看久久| 色播久久人人爽人人爽人人片aV| 亚洲国产成人精品久久久国产成人一区二区三区综 | 成人免费网站久久久| 99久久er这里只有精品18| 99re久久精品国产首页2020| 69国产成人综合久久精品| 国产日产久久高清欧美一区| 伊人色综合久久天天| 蜜臀久久99精品久久久久久| 一级做a爰片久久毛片免费陪| 国产美女亚洲精品久久久综合| 久久精品国产亚洲av日韩| 久久亚洲国产精品一区二区| 品成人欧美大片久久国产欧美| 热久久国产欧美一区二区精品| 久久99热这里只有精品国产| 国内精品久久人妻互换| 久久久久久久久久久免费精品| 国内精品伊人久久久久777| 国产精品久久永久免费| 一本久久a久久精品综合香蕉| 亚洲精品无码专区久久久| 一级做a爰片久久毛片16| 亚洲国产精品成人AV无码久久综合影院 | 久久精品这里只有精99品| 久久精品国产亚洲AV香蕉| 久久精品99久久香蕉国产色戒| 精品无码久久久久久久动漫| 狠狠色婷婷久久综合频道日韩 | 91精品国产91久久综合| 中文精品99久久国产| 精品国产福利久久久| 亚洲熟妇无码另类久久久|