日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《穿越火线:枪战王者》手游客户端技术方案: 实时同步与手感优化

發(fā)布時間:2024/8/26 编程问答 75 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《穿越火线:枪战王者》手游客户端技术方案: 实时同步与手感优化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、項目背景

CF手游的團隊有著相當豐富的FPS游戲制作經(jīng)驗,但是移動端開發(fā)經(jīng)驗相對匱乏。團隊面對的挑戰(zhàn)很大,我們需要在手機端完美還原CF十多個游戲模式,上百把槍械手感。

雖然我們有實時對戰(zhàn)FPS游戲開發(fā)經(jīng)驗,但是手游網(wǎng)絡(luò)質(zhì)量很差,我們需要保證在高Ping值,高丟包率的弱網(wǎng)絡(luò)環(huán)境下流暢同步,并且避免外掛的出現(xiàn)。CF端游用戶量很大,手游也會是一個高在線的游戲。對于后臺我們希望能大幅度地提高負載,節(jié)省成本。

二、解決方案

1.移動端實時同步技術(shù)

1.1 CF手游的C/S架構(gòu)

CF手游是競技向的手游,為了杜絕外掛,弱網(wǎng)絡(luò)下有良好表現(xiàn),注重游戲的時效性,最終選擇基于C/S架構(gòu)使用可靠UDP作為網(wǎng)絡(luò)層的同步方案:
?

圖CF手游網(wǎng)絡(luò)架構(gòu)


引擎層:Unity的物理引擎是Physx。為了保證兩邊物理算法一致,我們搭建了基于Physx的物理服務(wù)器,并對其作出優(yōu)化,同時集成了Recast Navigation等高性能引擎組件為服務(wù)器提供基礎(chǔ)功能。

數(shù)據(jù)層:基于我們的關(guān)卡工具導(dǎo)出碰撞模型和關(guān)卡數(shù)據(jù)提供給服務(wù)器,保證數(shù)據(jù)一致。

游戲邏輯層:客戶端使用C#編寫,服務(wù)器為了高性能使用C++,保證核心運算一致。客戶端和服務(wù)器都會維護一致的邏輯實體,兩邊都做移動計算,服務(wù)器會在同樣的位置進行命中傷害計算,并且通知客戶端做表現(xiàn)。服務(wù)器永遠是權(quán)威,客戶端是啞終端,借此達到高強度的反外掛。

整體C/S架構(gòu)基于我們實現(xiàn)的UDP網(wǎng)絡(luò)層進行快速傳輸。

1.2高性能的Dedicated Server與服務(wù)器負載優(yōu)化
?

圖CF手游服務(wù)器物理世界還原


CFM的即時對戰(zhàn)服務(wù)端(DS)是依賴虛幻3引擎開發(fā)過程中積累的經(jīng)驗,完全為手游重寫的。DS基于PhysX和Recast開源組件開發(fā),對程序性能有良好的控制。在騰訊標準M1機型配置下,單機綜合承載可以達到8000人。DS反外掛強度接近端游,單機性能比同類端游提高7-8倍。

1.3高時效的UDP網(wǎng)絡(luò)層

游戲?qū)W(wǎng)絡(luò)有實時性要求高,帶寬要求小的特點。TCP雖然提供了可靠傳輸,但是內(nèi)置的復(fù)雜擁塞控制算法并不是專為實時性優(yōu)化的,也沒有提供較好的方法讓業(yè)務(wù)定制化。CF手游實現(xiàn)了自定義的RUDP協(xié)議方案,使用UDP保證協(xié)議實時性,同時通過自定義重傳策略兼顧可靠性,取得了很好效果,主要技術(shù)要點包括:

數(shù)據(jù)傳輸分類

CF手游中并非所有數(shù)據(jù)都要求可靠,按游戲邏輯需要,只有不到50%的協(xié)議有可靠性需求,RUDP中只對這部分協(xié)議提供可靠性保證。而非可靠包則保證盡快到達,以滿足游戲的實時性需求。對玩家移動狀態(tài)等信息,由業(yè)務(wù)層定時冗余重傳。
?

圖CF手游網(wǎng)絡(luò)數(shù)據(jù)傳輸分類


客戶端與服務(wù)器的交互時序如下:
?

圖CF手游網(wǎng)絡(luò)數(shù)據(jù)交互時序


快速發(fā)送

發(fā)送方不維護發(fā)送窗口,不等待前面包是否ack,有數(shù)據(jù)需要發(fā)送時立即發(fā)送。

快速重傳

CF手游使用比TCP更高精度,響應(yīng)速度更快的重傳策略以保證實時性。
?

表RUDP快速重傳策略


帶寬優(yōu)化

主要思路是有損服務(wù)和降低不必要開銷。CFM持續(xù)進行了多輪流量優(yōu)化,包括:

1.MTU設(shè)計為500+字節(jié),應(yīng)用邏輯保證數(shù)據(jù)包大小不超過MTU,避免拆包。

2.減小包頭,8字節(jié)。

3.小包合并。同一幀發(fā)往同一個目標的多個小數(shù)據(jù)包合并為大包,減少包數(shù)量。

4.降低服務(wù)端幀率和位置精度,但不影響玩家體驗。

1.4弱網(wǎng)絡(luò)移動同步方案

PVP實時玩家同步

CFM采用C/S架構(gòu),服務(wù)器上會執(zhí)行完整的游戲邏輯。在移動同步上,玩家的位置也是以服務(wù)器的位置為準,客戶端1P視角和3P視角分別進行同步和模擬。
?

圖CF手游玩家實時同步方案


如上圖所示,客戶端1P根據(jù)玩家的輸入調(diào)整移動方向和速度,并把相關(guān)信息上報到服務(wù)器。服務(wù)器對上報的信息進行合法性檢驗之后更新玩家的移動狀態(tài),并在每個邏輯幀下發(fā)移動信息到所有客戶端。客戶端在收到服務(wù)器下發(fā)的移動信息,使用適當?shù)耐剿惴▽ν婕业囊苿舆M行模擬,達到實時流暢的同步效果。其技術(shù)要點如下:

客戶端1P即時預(yù)表現(xiàn),避免網(wǎng)絡(luò)延遲帶來的操作手感遲滯的問題。

客戶端在接受玩家輸入后,會即時更新本地的移動狀態(tài),并上報服務(wù)器。在收到服務(wù)器回包之前,客戶端1P就會按照新的狀態(tài)進行移動,保證玩家的操作在第一時間得到響應(yīng)。客戶端與服務(wù)器物理世界的一致性則保證了客戶端1P預(yù)表現(xiàn)的結(jié)果和服務(wù)器的移動結(jié)果是一致的。

客戶端3P進行延遲補償和預(yù)測同步,消除網(wǎng)絡(luò)因素引入的位置誤差。

在3P的同步模擬上,CFM參考了DR算法(Dead Reckoning)和影子跟隨算法等方案,并針對移動弱網(wǎng)絡(luò)的特點,加入了延遲補償和預(yù)測同步的特性,解決了在網(wǎng)絡(luò)抖動的情況下同步位置差距大和移動過程卡頓等關(guān)鍵問題。客戶端收到服務(wù)器的移動信息后,會對服務(wù)器的移動路點進行過濾和合并,然后構(gòu)造出3P同步模擬的移動路徑。同時,客戶端會根據(jù)當前與服務(wù)器的位置差距以及當前的網(wǎng)絡(luò)延遲對模擬移動時的運動速度進行補償,從而保證客戶端3P經(jīng)過SimulateTime時間的模擬移動后與服務(wù)器的位置達到一致。

另外,在移動弱網(wǎng)環(huán)境下,網(wǎng)絡(luò)抖動會導(dǎo)致游戲過程中網(wǎng)絡(luò)瞬時延遲變大,客戶端在3P同步模擬過程中可能出現(xiàn)服務(wù)器下發(fā)的移動信息丟失或者延遲到達的問題。在這種情況下,3P模擬的移動過程就會被打斷,出現(xiàn)走走停停的卡頓現(xiàn)象。為此,CFM在同步模擬的過程中加入了預(yù)測同步,在沒有收到服務(wù)器信息的情況下,會根據(jù)玩家之前的移動狀態(tài)繼續(xù)預(yù)測移動,預(yù)測時間為2倍的網(wǎng)絡(luò)延遲。在預(yù)測移動過程中,如果收到來自服務(wù)器的移動信息,則會自動恢復(fù)為正常的同步模擬過程,從而保證了3P同步模擬過程中移動的流暢性和連續(xù)性。

服務(wù)器延時、丟包補償

丟包時,服務(wù)端可能由于移動路徑不連貫而卡在拐角處,需要有補償機制。因為傳輸延遲,從客戶端向服務(wù)器發(fā)起移動請求,到服務(wù)器開始模擬有時間差。CF手游服務(wù)端需要回溯到移動包的歷史時間,再追到當前時間。這樣允許最多減少100-200ms內(nèi)的C/S不同步現(xiàn)象。另外當客戶端移動路徑部分丟失后,服務(wù)端根據(jù)歷史數(shù)據(jù),嘗試推算可能的移動路徑。通過嘗試繞路策略避開障礙,在較小范圍內(nèi)近似模擬客戶端路徑。

應(yīng)用平滑插值和物理力學(xué)

在移動弱網(wǎng)環(huán)境出現(xiàn)抖動時,服務(wù)器的移動信息可能會延遲到達或者扎堆到達,導(dǎo)致客戶端3P同步模擬過程中速度陡變,移動過程忽快忽慢等問題。因此,CFM對同步模擬過程中速度的變化進行了平滑插值,保證速度的變化符合玩家對現(xiàn)實世界變速的認知,提高游戲的真實感。另外,在進行大角度變向過程中,根據(jù)物理力學(xué)規(guī)律,玩家角色應(yīng)該遵循先減速再逆向加速的物理過程。CFM在同步模擬過程中對玩家的此類行為進行了分析判定,并實現(xiàn)了相應(yīng)的物理模型,避免玩家在變向移動時速度過快難以命中的問題,增強了游戲體驗。
?


PVE大規(guī)模怪物同步

CFM的多人PVE模式以末日逃生,僵尸圍城為設(shè)定,為了更好地表現(xiàn)尸潮圍堵的感覺,提高玩家闖關(guān)過程中的爽快感,必須支持大規(guī)模的怪物行為同步。面對大量怪物帶來的流量消耗及客戶端性能壓力,CFM針對PVE怪物行為的特點重新設(shè)計了低誤差,低流量消耗,支持復(fù)雜行為的同步方案。
?

圖CFM指令式怪物AI同步方案


支持上百AI單位的實時同步,核心問題:
?

  • 服務(wù)器傷害邏輯與客戶端行為表現(xiàn)一致性;
  • 怪物群體行為與移動同步;
  • 大規(guī)模怪物同步流量控制;
  • AI命令按需發(fā)送,降低流量消耗。



在CFM的多人PVE模式中,怪物的移動信息只會在怪物移動路徑變更時進行同步,而不是傳統(tǒng)方案中的每幀同步。怪物路徑更新的頻率約為1~2秒/次,其同步流量消耗只有傳統(tǒng)方案的1/8左右。

通用怪物行為建模,對復(fù)雜怪物行為進行抽象。

CFM中怪物種類多樣,怪物行為特別是BOSS技能流程復(fù)雜,包括各種連續(xù)技和組合技。CFM怪物同步方案中對怪物的行為進行了抽象,把怪物的行為規(guī)范到統(tǒng)一的流程中,通過對服務(wù)器下發(fā)的技能指令進行解釋,生成客戶端技能狀態(tài)機,驅(qū)動怪物的復(fù)雜行為表現(xiàn)。

PVE大量怪物同步:群體行為

難點

?常規(guī)尋路導(dǎo)致怪物位置重疊;
?純客戶端方案導(dǎo)致位置差異大;

解決

?服務(wù)器計算怪物群體力,構(gòu)造移動路徑;
?客戶端根據(jù)下發(fā)路徑進行移動模擬;

效果

?保證服務(wù)器與客戶端路徑一致;
?路徑合包下發(fā),節(jié)省流量;
?避免客戶端尋路與碰撞計算,提高性能;

2.移動FPS游戲手感

2.1移動端操作手感

FPS競技類游戲,對玩家操作的反應(yīng)和準確性要求極高,如何在移動端實現(xiàn)良好的操作手感是個很大的挑戰(zhàn)。我們從移動、瞄準和射擊三個維度進行了深度探索和優(yōu)化,不斷嘗試了幾十種手感方案,上百套參數(shù)調(diào)整,最終得到了目前的操作手感解決方案。

適配多樣屏幕的操作數(shù)學(xué)模型

我們獲取玩家的觸屏輸入Touch,通過計算Touch的位置和DeltaPosition,轉(zhuǎn)換為角色的移動加速度和視角轉(zhuǎn)向角度等。

由于屏幕的密度和手機分辨率各不一樣,相同的滑屏物理距離會得到不一樣的DeltaPos,因此CFM在操作模型計算中加入了移動設(shè)備的dpi和分辨率因子來解決一致性問題。

抖動手感數(shù)學(xué)模型

抖動的主要因素有兩個:一是觸摸的不精確性,另一個是游戲幀率的抖動。觸摸的不精確性,是由于我們手指與屏幕的接觸是一塊區(qū)域,但程序中獲取的卻是一個像素點,并且各個系統(tǒng)的實現(xiàn)也各不一致。

3D Touch

在蘋果推出的新一代多點觸控技術(shù)3D Touch后,我們立刻進行了相關(guān)的技術(shù)預(yù)研,最終實現(xiàn)了一種能完美解決操作體驗的手感方案,也成為了首款支持3D Touch的FPS手游,并申請技術(shù)專利。我們在跟隨開火的基礎(chǔ)上,加入了按壓力度來觸發(fā)開火(即3D Touch)。在iOS上,我們通過Hook UIKit的事件分發(fā),從而把按壓力度轉(zhuǎn)發(fā)到C#層來實現(xiàn)。
?

圖CF手游3D Touch


2.2槍械射擊手感

作為經(jīng)典第一人稱射擊游戲CF在移動平臺上的延續(xù),CFM力求為玩家還原最真實的槍械手感。CFM結(jié)合移動客戶端上玩家的操作方式進行優(yōu)化,創(chuàng)新性的設(shè)計自身的槍械彈道數(shù)學(xué)模型,此模型成為射擊游戲的標桿:

T字彈道模型

槍械射擊時,子彈射出的最終方向主要由三個因素決定,一是槍射當前瞄準的方向,即玩家希望射擊的位置;二是槍械后座力引起的槍口上抬和左右偏向,形成T字形的主彈道;三是槍管震動和環(huán)境因素對子彈彈道形成的輕微擾動,即子彈彈道的散發(fā)。
?

圖CF手游槍械彈道模型


槍械后座力模型

槍械每次射出的子彈的反作用力都會導(dǎo)致槍口上抬和左右偏向,上抬和搖晃的幅度與槍械當前連發(fā)數(shù)成正比,槍口隨著連發(fā)數(shù)的增加逐步上抬,二手QQ交易平臺到達最大上抬幅度后轉(zhuǎn)為隨機方向的左右擺動。

在槍械停止射擊后,游戲模擬槍口位置在玩家控制下從上抬位置恢復(fù)到初始位置,恢復(fù)的過程使用彈簧模型,遵循胡克定律。

子彈彈道散發(fā)模型

現(xiàn)實中子彈射出的時候受各種環(huán)境因素影響,會出現(xiàn)小幅度的隨機偏向,子彈的最終射出方向即是在后座力計算后的前向方向疊加上散發(fā)的偏差,彈道散發(fā)的幅度和方向符合高斯正態(tài)分布。因此CFM在實現(xiàn)槍械散發(fā)模型時也使用高斯隨機數(shù)實現(xiàn)。

創(chuàng)新輔助瞄準機制


CFM在射擊上創(chuàng)新性地設(shè)計了一套輔助瞄準機制,幫助玩家自動瞄準靜止和低速運動的目標,降低新手玩家的操作門檻,提高新手玩家的樂趣。同時,輔助瞄準在面對快速移動和轉(zhuǎn)向目標時將失去效用,以此保證高手玩家的技術(shù)優(yōu)勢,提高玩家對技術(shù)提升的追求。

總結(jié)

以上是生活随笔為你收集整理的《穿越火线:枪战王者》手游客户端技术方案: 实时同步与手感优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。