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

            的筆記

            隨時(shí)隨地編輯

            游戲能力預(yù)測(cè)概述(機(jī)器翻譯版)

            游戲能力預(yù)測(cè)概述(機(jī)器翻譯版)

            高級(jí)別目標(biāo):

            在GameplayAbility級(jí)別(實(shí)施能力)預(yù)測(cè)是透明的。說一個(gè)能力“Do X> Y-> Z”,我們會(huì)自動(dòng)預(yù)測(cè)我們可以做的部分。
            我們希望避免在能力本身中有諸如“如果權(quán)限:做X否則:X的預(yù)測(cè)版本”的邏輯。

            在這一點(diǎn)上,并不是所有的案例都得到解決,但是我們有一個(gè)非常堅(jiān)實(shí)的框架來處理客戶端預(yù)測(cè)。

            當(dāng)我們說“客戶端預(yù)測(cè)”時(shí),我們真的意味著客戶端預(yù)測(cè)游戲模擬狀態(tài)。事情仍然可以“完全是客戶端”,而不必在預(yù)測(cè)系統(tǒng)中工作。
            例如,腳本完全是客戶端,不會(huì)與此系統(tǒng)交互。但是,當(dāng)他們施放法術(shù)時(shí),預(yù)測(cè)法術(shù)力從100到90的客戶是“客戶端預(yù)測(cè)”。

            我們目前預(yù)測(cè)的是什么?
            活力激活

            • 觸發(fā)事件
              -GameplayEffect應(yīng)用程序:
              -Attribute修改(EXCEPTIONS:執(zhí)行當(dāng)前不預(yù)測(cè),只有屬性修飾符)
              -GameplayTag修改
            • 游戲提示事件(均來自預(yù)測(cè)游戲效果和自己)

            -Montages

            • 運(yùn)動(dòng)(內(nèi)置于UE4 UCharacterMovement)

            有些事情我們無法預(yù)測(cè)(我們大多數(shù)可能,但目前還沒有):
            -GameplayEffect刪除
            -GameplayEffect定期效果(點(diǎn)滴)

            我們?cè)噲D解決的問題:
            “我可以做嗎?”基本預(yù)測(cè)協(xié)議。
            2.“撤消”當(dāng)預(yù)測(cè)失敗時(shí)如何撤消副作用。
            3.“重做”如何避免重播本地預(yù)測(cè)的副作用,但也可從服務(wù)器復(fù)制。
            4.“完整性”如何確定我們/真的/預(yù)測(cè)所有的副作用。
            5.“依賴關(guān)系”如何管理依賴預(yù)測(cè)和預(yù)測(cè)事件鏈。
            6.“覆蓋”如何預(yù)先覆蓋狀態(tài),否則由服務(wù)器復(fù)制/擁有。


            實(shí)施細(xì)節(jié)

            PredictionKey

            該系統(tǒng)中的一個(gè)基本概念是預(yù)測(cè)鍵(FPredictionKey)。它自己的預(yù)測(cè)鍵只是在客戶端的中心位置生成的唯一ID。客戶端將其預(yù)測(cè)密鑰發(fā)送到服務(wù)器,
            并與預(yù)測(cè)動(dòng)作和副作用相關(guān)聯(lián)。服務(wù)器可以對(duì)預(yù)測(cè)密鑰進(jìn)行接受/拒絕來響應(yīng),并且還將服務(wù)器端創(chuàng)建的副作用與該預(yù)測(cè)密鑰相關(guān)聯(lián)。

            (重要)FPredictionKey始終復(fù)制客戶端 - >服務(wù)器,但是當(dāng)復(fù)制服務(wù)器 - >客戶端時(shí),它們首先將發(fā)送預(yù)測(cè)密鑰的客戶端復(fù)制到服務(wù)器。
            這在FPredictionKey :: NetSerialize中發(fā)生。當(dāng)從客戶端發(fā)送的預(yù)測(cè)密鑰通過復(fù)制的屬性被復(fù)制時(shí),所有其他客戶端將接收到無效(0)預(yù)測(cè)密鑰。

            能力激活

            能力激活是一流的預(yù)測(cè)行動(dòng)。每當(dāng)客戶端預(yù)測(cè)性地激活能力時(shí),他明確地要求服務(wù)器和服務(wù)器明確地做出響應(yīng)。一旦有了能力
            預(yù)測(cè)性地激活,客戶端具有有效的“預(yù)測(cè)窗口”,其中預(yù)測(cè)性副作用可能發(fā)生,這些未明確地被“詢問”。 (例如,我們沒有明確提出“我可以減少法力,我可以嗎
            把這個(gè)能力放在冷卻時(shí)間。這些行為被認(rèn)為是邏輯原子的,激活一個(gè)能力)。

            AbilitySystemComponent提供了一組用于在客戶端和服務(wù)器之間進(jìn)行通信能力激活的功能:TryActivateAbility - > ServerTryActivateAbility - > ClientActivateAbility(Failed / Succeed)。

            1.客戶端調(diào)用TryActivateAbility生成新的FPredictionKey并調(diào)用ServerTryActivateAbility。
            2.客戶端繼續(xù)(在從服務(wù)器回來之前),并使用與能力的ActivationInfo關(guān)聯(lián)的生成的PredictionKey調(diào)用ActivateAbility。
            在ActivatAbility調(diào)用之前/之前發(fā)生的任何副作用/生成的FPredictionKey與它們相關(guān)聯(lián)。
            4.服務(wù)器決定ServerTryActivateAbility中是否發(fā)生了這種能力,調(diào)用ClientActivateAbility(Failed / Succeed),并將UAbilitySystemComponent :: ReplicatedPredictionKey設(shè)置為已發(fā)送的生成的密鑰。
            5.如果客戶端接收到ClientAbilityFailed,則立即殺死該能力并回滾與預(yù)測(cè)密鑰相關(guān)聯(lián)的副作用。
            5A。 “回滾”通過FPredictionKeyDelegates和FPredictionKey :: NewRejectedDelegate / NewCaughtUpDelegate / NewRejectOrCaughtUpDelegate完成。

            在TryActivateAbility中注冊(cè)回調(diào):

            //如果此PredictionKey被拒絕,我們將調(diào)用OnClientActivateAbilityFailed。
            ThisPredictionKey.NewRejectedDelegate()。BindUObject(this,&UAbilitySystemComponent :: OnClientActivateAbilityFailed,Handle,ThisPredictionKey.Current);

            在ClientActivateAbilityFailed_Implementation中調(diào)用回調(diào)函數(shù):
            FPredictionKeyDe

            posted on 2017-05-10 11:31 的筆記 閱讀(366) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久久久久久久久免免费精品| 亚洲国产天堂久久综合| 伊人久久大香线蕉综合影院首页| 综合久久精品色| 亚洲乱码精品久久久久..| 久久精品国产精品国产精品污| 成人亚洲欧美久久久久| AV无码久久久久不卡蜜桃| 国产免费久久久久久无码| 2020国产成人久久精品| 久久99久久99小草精品免视看| 综合人妻久久一区二区精品| 久久精品国产第一区二区| 国产亚洲精品美女久久久| 欧美日韩久久中文字幕| 久久夜色撩人精品国产小说| 国产精品18久久久久久vr| 99久久精品免费看国产一区二区三区| 国产—久久香蕉国产线看观看| 国产精品久久久久久| 久久久久成人精品无码中文字幕| 亚洲国产成人精品91久久久 | 97久久精品人妻人人搡人人玩| 久久只有这里有精品4| 国内精品久久久久影院网站| 久久精品国产亚洲AV电影| 亚洲国产精品无码久久一区二区| 亚洲日本va午夜中文字幕久久| 国产精品美女久久久免费| 国内精品久久久久久不卡影院| 久久久91精品国产一区二区三区| 久久国产精品99精品国产| 久久亚洲中文字幕精品有坂深雪| 狠狠色丁香久久婷婷综合| 精品伊人久久大线蕉色首页| 亚洲欧洲久久av| 亚洲伊人久久精品影院| 色欲久久久天天天综合网精品| 性做久久久久久久| 国内精品久久久久影院一蜜桃| 香蕉久久夜色精品国产小说|