• <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>

            戰(zhàn)魂小筑

            討論群:309800774 知乎關(guān)注:http://zhihu.com/people/sunicdavy 開(kāi)源項(xiàng)目:https://github.com/davyxu

               :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評(píng)論 :: 0 Trackbacks

                朋友催促下,想很快的做出新一版的戰(zhàn)魂,并且添加這4年多來(lái)自己所有研究出來(lái)的高科技!

                對(duì)于大量的子彈彈幕和高速微操控制,只有幀同步能解決這個(gè)問(wèn)題,但是中國(guó)國(guó)內(nèi)對(duì)于幀同步研究的人很少,國(guó)外也少見(jiàn)這類(lèi)文章,甚至用google都很難搜到,難不成是我用錯(cuò)搜索詞?

                大學(xué)時(shí)期曾經(jīng)看過(guò)一本重慶大學(xué)出版社出版的游戲編程?;贒X8寫(xiě)的,很基礎(chǔ),里面還記得有王鑫寫(xiě)的幀同步的基本原理。

                這里個(gè)人總結(jié)下:

            1. 幀同步,顧名思義:就是每一幀都同步,所以就是真同步
            2. 由于數(shù)據(jù)量巨大,一般使用UDP做發(fā)送
            3. 要做到數(shù)據(jù)的絕對(duì)同步,延遲不能太大,最好能在局域網(wǎng)來(lái)做,延遲20ms以下
            4. 如果要在公網(wǎng)傳輸,由于采用的是P2P傳輸,因此,UDP的打洞也是必不可少的

            因此,可以先定下采用的網(wǎng)絡(luò)庫(kù)是Raknet(http://www.jenkinssoftware.com/),從網(wǎng)上down了一個(gè)下來(lái)看視頻,還是很強(qiáng)大的,雖然用的項(xiàng)目不是很多。不過(guò)用于個(gè)人的項(xiàng)目已經(jīng)足夠了。

                Raknet和XNA下的網(wǎng)絡(luò)庫(kù)很類(lèi)似,支持可信賴(lài)的UDP發(fā)送。由于是自定義的傳輸方式,同時(shí),沒(méi)有TCP的負(fù)載均衡的復(fù)雜算法,因此網(wǎng)絡(luò)傳輸速度可以很快

                在游戲中的幀同步,在我的考慮將是這樣的:

            1. 游戲中的邏輯幀與渲染幀是不同步的,邏輯幀也許遠(yuǎn)遠(yuǎn)低于渲染幀
            2. 對(duì)于一個(gè)使用elapse值在邏輯控制下移動(dòng)的物體,這個(gè)移動(dòng)算法必須能被時(shí)間插值。
            3. 那么我們將這段時(shí)間進(jìn)行分段,每一段就是一幀。我們?yōu)檫@些幀進(jìn)行編號(hào),類(lèi)似于封裝TCP協(xié)議一樣。這些編號(hào)更類(lèi)似于指令號(hào)。
            4. 游戲中有一人被作為服務(wù)器使用,每個(gè)玩家將自己的操作編碼成指令后發(fā)送給這臺(tái)服務(wù)器,由服務(wù)器統(tǒng)一分配序號(hào)廣播給所有的其他玩家
            5. 對(duì)于可以被時(shí)間插值的動(dòng)畫(huà)軌跡(尋路),那么將發(fā)送軌跡(如果尋路算法出來(lái)的結(jié)果是唯一的,就只需要發(fā)送起點(diǎn)跟結(jié)尾點(diǎn))以及每幀更新這個(gè)物體的時(shí)間插值參數(shù)。
            6. 由于外界輸入對(duì)系統(tǒng)的干擾,才產(chǎn)生了需要同步的數(shù)據(jù)。外界輸入干擾保護(hù)用戶操作和AI
            7. 考慮到每人的網(wǎng)絡(luò)ping值的不同,對(duì)于特別慢的玩家,可能在其廣播指令時(shí),其他玩家已經(jīng)走出很多步,因此需要計(jì)算一個(gè)平均ping值,當(dāng)網(wǎng)絡(luò)中某人的ping值低于這個(gè)值時(shí),將彈出類(lèi)似于魔獸/星際的同步對(duì)話框,等待其本地指令序號(hào)趕上其他玩家的序列號(hào)
            8. 由于所有物體的移動(dòng)都可以被時(shí)間插值,因此,游戲中的每一邏輯幀,只需要將本地服務(wù)器在上一幀的ping值和幀號(hào)廣播給所有的玩家
            9. 當(dāng)物體啟動(dòng)和結(jié)束移動(dòng)時(shí)廣播
            10. 當(dāng)渲染幀數(shù)下降時(shí),將很明顯的看到幀同步對(duì)象有很明顯的"跳躍"現(xiàn)象,這個(gè)現(xiàn)象在星際中更是明顯。但在技術(shù)成熟的魔獸中已經(jīng)被插值予以替代
            posted on 2009-05-14 23:09 戰(zhàn)魂小筑 閱讀(6912) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 網(wǎng)絡(luò) 服務(wù)器技術(shù)
            人妻无码久久一区二区三区免费| 久久国产精品一区| 久久se精品一区精品二区| 国内精品久久久久久久久| 亚洲国产精品综合久久网络 | 久久66热人妻偷产精品9| 中文字幕久久欲求不满| 久久精品桃花综合| 91久久香蕉国产熟女线看| 无码人妻久久一区二区三区免费丨| 久久99国产精品二区不卡| 久久精品青青草原伊人| 久久国产精品偷99| 日本久久久久久中文字幕| 国产美女亚洲精品久久久综合| 久久91精品综合国产首页| 国产精品女同久久久久电影院| 久久久久久av无码免费看大片| …久久精品99久久香蕉国产| 久久大香萑太香蕉av| 久久国产免费| 国产国产成人久久精品| 久久久久人妻一区精品色| 久久精品一本到99热免费| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 狠狠精品久久久无码中文字幕| 99久久国产主播综合精品| 99热成人精品热久久669| 人妻少妇久久中文字幕一区二区| 伊人久久大香线蕉精品不卡| 久久人人爽人爽人人爽av| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久精品国产欧美日韩| 伊人久久大香线蕉精品| 国产成人无码久久久精品一| 亚洲午夜久久久久久久久电影网| 亚洲欧美国产日韩综合久久| 色青青草原桃花久久综合| 亚洲综合久久久| 亚洲人成精品久久久久| 国产成人久久精品一区二区三区|