給大家科普一下藍獅娛樂怎么注冊(2022已更新(今日/知乎)
作者:郭智
一、項目背景
CF手游的團隊有著相當豐富的FPS游戲制作經(jīng)驗,但是移動端開發(fā)經(jīng)驗相對匱乏。團隊面對的挑戰(zhàn)很大,我們需要在手機端完美還原CF十多個游戲模式,上百把槍械手感。
雖然我們有實時對戰(zhàn)FPS游戲開發(fā)經(jīng)驗,但是手游網(wǎng)絡質(zhì)量很差,我們需要保證在高Ping值,高丟包率的弱網(wǎng)絡環(huán)境下流暢同步,并且避免外掛的出現(xiàn)。CF端游用戶量很大,手游也會是一個高在線的游戲。對于后臺我們希望能大幅度地提高負載,節(jié)省成本。
二、解決方案
1. 移動端實時同步技術
1.1 CF手游的C/S架構
CF手游是競技向的手游,為了杜絕外掛,弱網(wǎng)絡下有良好表現(xiàn),注重游戲的時效性,最終選擇基于 C/S架構使用可靠UDP作為網(wǎng)絡層的同步方案:

引擎層:Unity的物理引擎是Physx。為了保證兩邊物理算法一致,我們搭建了基于Physx的物理服務器,并對其作出優(yōu)化,同時集成了Recast Navigation等高性能引擎組件為服務器提供基礎功能。
數(shù)據(jù)層:基于我們的關卡工具導出碰撞模型和關卡數(shù)據(jù)提供給服務器,保證數(shù)據(jù)一致。
游戲邏輯層:客戶端使用C#編寫,服務器為了高性能使用C++,保證核心運算一致。 客戶端和服務器都會維護一致的邏輯實體,兩邊都做移動計算,服務器會在同樣的位置進行命中傷害計算,并且通知客戶端做表現(xiàn)。服務器永遠是權威,客戶端是啞終端,借此達到高強度的反外掛。
整體C/S架構基于我們實現(xiàn)的UDP網(wǎng)絡層進行快速傳輸。
1.2 高性能的Dedicated Server與服務器負載優(yōu)化

CFM的即時對戰(zhàn)服務端(DS)是依賴虛幻3引擎開發(fā)過程中積累的經(jīng)驗,完全為手游重寫的。DS基于PhysX和Recast開源組件開發(fā),對程序性能有良好的控制。在騰訊標準M1機型配置下,單機綜合承載可以達到8000人。DS反外掛強度接近端游,單機性能比同類端游提高7-8倍。
1.3 高時效的UDP網(wǎng)絡層
游戲?qū)W(wǎng)絡有實時性要求高,帶寬要求小的特點。TCP雖然提供了可靠傳輸,但是內(nèi)置的復雜擁塞控制算法并不是專為實時性優(yōu)化的,也沒有提供較好的方法讓業(yè)務定制化。CF手游實現(xiàn)了自定義的RUDP協(xié)議方案,使用UDP保證協(xié)議實時性,同時通過自定義重傳策略兼顧可靠性,取得了很好效果,主要技術要點包括:
數(shù)據(jù)傳輸分類
CF手游中并非所有數(shù)據(jù)都要求可靠,按游戲邏輯需要,只有不到50%的協(xié)議有可靠性需求,RUDP中只對這部分協(xié)議提供可靠性保證。而非可靠包則保證盡快到達,以滿足游戲的實時性需求。對玩家移動狀態(tài)等信息,由業(yè)務層定時冗余重傳。

客戶端與服務器的交互時序如下:

快速發(fā)送
發(fā)送方不維護發(fā)送窗口,不等待前面包是否ack,有數(shù)據(jù)需要發(fā)送時立即發(fā)送。
快速重傳
CF手游使用比TCP更高精度,響應速度更快的重傳策略以保證實時性。

帶寬優(yōu)化
主要思路是有損服務和降低不必要開銷。CFM持續(xù)進行了多輪流量優(yōu)化,包括:
1.MTU設計為500+字節(jié),應用邏輯保證數(shù)據(jù)包大小不超過MTU,避免拆包。
2.減小包頭,8字節(jié)。
3.小包合并。同一幀發(fā)往同一個目標的多個小數(shù)據(jù)包合并為大包,減少包數(shù)量。
4.降低服務端幀率和位置精度,但不影響玩家體驗。
1.4 弱網(wǎng)絡移動同步方案
PVP實時玩家同步
CFM采用C/S架構,服務器上會執(zhí)行完整的游戲邏輯。在移動同步上,玩家的位置也是以服務器的位置為準,客戶端1P視角和3P視角分別進行同步和模擬。

如上圖所示,客戶端1P根據(jù)玩家的輸入調(diào)整移動方向和速度,并把相關信息上報到服務器。服務器對上報的信息進行合法性檢驗之后更新玩家的移動狀態(tài),并在每個邏輯幀下發(fā)移動信息到所有客戶端??蛻舳嗽谑盏椒掌飨掳l(fā)的移動信息,使用適當?shù)耐剿惴▽ν婕业囊苿舆M行模擬,達到實時流暢的同步效果。其技術要點如下:
客戶端1P即時預表現(xiàn),避免網(wǎng)絡延遲帶來的操作手感遲滯的問題。
客戶端在接受玩家輸入后,會即時更新本地的移動狀態(tài),并上報服務器。在收到服務器回包之前,客戶端1P就會按照新的狀態(tài)進行移動,保證玩家的操作在第一時間得到響應。客戶端與服務器物理世界的一致性則保證了客戶端1P預表現(xiàn)的結(jié)果和服務器的移動結(jié)果是一致的。
客戶端3P進行延遲補償和預測同步,消除網(wǎng)絡因素引入的位置誤差。
在3P的同步模擬上,CFM參考了DR算法(Dead Reckoning)和影子跟隨算法等方案,并針對移動弱網(wǎng)絡的特點,加入了延遲補償和預測同步的特性,解決了在網(wǎng)絡抖動的情況下同步位置差距大和移動過程卡頓等關鍵問題??蛻舳耸盏椒掌鞯囊苿有畔⒑?,會對服務器的移動路點進行過濾和合并,然后構造出3P同步模擬的移動路徑。同時,客戶端會根據(jù)當前與服務器的位置差距以及當前的網(wǎng)絡延遲對模擬移動時的運動速度進行補償,從而保證客戶端3P經(jīng)過SimulateTime時間的模擬移動后與服務器的位置達到一致。
另外,在移動弱網(wǎng)環(huán)境下,網(wǎng)絡抖動會導致游戲過程中網(wǎng)絡瞬時延遲變大,客戶端在3P同步模擬過程中可能出現(xiàn)服務器下發(fā)的移動信息丟失或者延遲到達的問題。在這種情況下,3P模擬的移動過程就會被打斷,出現(xiàn)走走停停的卡頓現(xiàn)象。為此,CFM在同步模擬的過程中加入了預測同步,在沒有收到服務器信息的情況下,會根據(jù)玩家之前的移動狀態(tài)繼續(xù)預測移動,預測時間為2倍的網(wǎng)絡延遲。在預測移動過程中,如果收到來自服務器的移動信息,則會自動恢復為正常的同步模擬過程,從而保證了3P同步模擬過程中移動的流暢性和連續(xù)性。
服務器延時、丟包補償
丟包時,服務端可能由于移動路徑不連貫而卡在拐角處,需要有補償機制。因為傳輸延遲,從客戶端向服務器發(fā)起移動請求,到服務器開始模擬有時間差。CF手游服務端需要回溯到移動包的歷史時間,再追到當前時間。這樣允許最多減少100-200ms內(nèi)的C/S不同步現(xiàn)象。另外當客戶端移動路徑部分丟失后,服務端根據(jù)歷史數(shù)據(jù),嘗試推算可能的移動路徑。通過嘗試繞路策略避開障礙,在較小范圍內(nèi)近似模擬客戶端路徑。
應用平滑插值和物理力學。
在移動弱網(wǎng)環(huán)境出現(xiàn)抖動時,服務器的移動信息可能會延遲到達或者扎堆到達,導致客戶端3P同步模擬過程中速度陡變,移動過程忽快忽慢等問題。因此,CFM對同步模擬過程中速度的變化進行了平滑插值,保證速度的變化符合玩家對現(xiàn)實世界變速的認知,提高游戲的真實感。另外,在進行大角度變向過程中,根據(jù)物理力學規(guī)律,玩家角色應該遵循先減速再逆向加速的物理過程。CFM在同步模擬過程中對玩家的此類行為進行了分析判定,并實現(xiàn)了相應的物理模型,避免玩家在變向移動時速度過快難以命中的問題,增強了游戲體驗。

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

支持上百AI單位的實時同步,核心問題:
服務器傷害邏輯與客戶端行為表現(xiàn)一致性;
怪物群體行為與移動同步;
大規(guī)模怪物同步流量控制;
AI命令按需發(fā)送,降低流量消耗。
在CFM的多人PVE模式中,怪物的移動信息只會在怪物移動路徑變更時進行同步,而不是傳統(tǒng)方案中的每幀同步。怪物路徑更新的頻率約為1~2秒/次,其同步流量消耗只有傳統(tǒng)方案的1/8左右。
通用怪物行為建模,對復雜怪物行為進行抽象。
CFM中怪物種類多樣,怪物行為特別是BOSS技能流程復雜,包括各種連續(xù)技和組合技。CFM怪物同步方案中對怪物的行為進行了抽象,把怪物的行為規(guī)范到統(tǒng)一的流程中,通過對服務器下發(fā)的技能指令進行解釋,生成客戶端技能狀態(tài)機,驅(qū)動怪物的復雜行為表現(xiàn)。
PVE大量怪物同步:群體行為
難點:
? 常規(guī)尋路導致怪物位置重疊;
? 純客戶端方案導致位置差異大;
解決:
? 服務器計算怪物群體力,構造移動路徑;
? 客戶端根據(jù)下發(fā)路徑進行移動模擬;
效果:
? 保證服務器與客戶端路徑一致;
? 路徑合包下發(fā),節(jié)省流量;
? 避免客戶端尋路與碰撞計算,提高性能;
2. 移動FPS游戲手感
2.1移動端操作手感
FPS競技類游戲,對玩家操作的反應和準確性要求極高,如何在移動端實現(xiàn)良好的操作手感是個很大的挑戰(zhàn)。我們從移動、瞄準和射擊三個維度進行了深度探索和優(yōu)化,不斷嘗試了幾十種手感方案,上百套參數(shù)調(diào)整,最終得到了目前的操作手感解決方案。
適配多樣屏幕的操作數(shù)學模型
我們獲取玩家的觸屏輸入Touch,通過計算Touch的位置和DeltaPosition,轉(zhuǎn)換為角色的移動加速度和視角轉(zhuǎn)向角度等。
由于屏幕的密度和手機分辨率各不一樣,相同的滑屏物理距離會得到不一樣的DeltaPos,因此CFM在操作模型計算中加入了移動設備的dpi和分辨率因子來解決一致性問題。
抖動手感數(shù)學模型
抖動的主要因素有兩個:一是觸摸的不精確性,另一個是游戲幀率的抖動。觸摸的不精確性,是由于我們手指與屏幕的接觸是一塊區(qū)域,但程序中獲取的卻是一個像素點,并且各個系統(tǒng)的實現(xiàn)也各不一致。
3D Touch
在蘋果推出的新一代多點觸控技術3D Touch后,我們立刻進行了相關的技術預研,最終實現(xiàn)了一種能完美解決操作體驗的手感方案,也成為了首款支持3D Touch的FPS手游,并申請技術專利。我們在跟隨開火的基礎上,加入了按壓力度來觸發(fā)開火(即3D Touch)。在iOS上,我們通過Hook UIKit的事件分發(fā),從而把按壓力度轉(zhuǎn)發(fā)到C#層來實現(xiàn)。

2.2槍械射擊手感
作為經(jīng)典第一人稱射擊游戲CF在移動平臺上的延續(xù),CFM力求為玩家還原最真實的槍械手感。CFM結(jié)合移動客戶端上玩家的操作方式進行優(yōu)化,創(chuàng)新性的設計自身的槍械彈道數(shù)學模型,此模型成為射擊游戲的標桿:
T字彈道模型
槍械射擊時,子彈射出的最終方向主要由三個因素決定,一是槍射當前瞄準的方向,即玩家希望射擊的位置;二是槍械后座力引起的槍口上抬和左右偏向,形成T字形的主彈道;三是槍管震動和環(huán)境因素對子彈彈道形成的輕微擾動,即子彈彈道的散發(fā)。

槍械后座力模型
槍械每次射出的子彈的反作用力都會導致槍口上抬和左右偏向,上抬和搖晃的幅度與槍械當前連發(fā)數(shù)成正比,槍口隨著連發(fā)數(shù)的增加逐步上抬,到達最大上抬幅度后轉(zhuǎn)為隨機方向的左右擺動。
在槍械停止射擊后,游戲模擬槍口位置在玩家控制下從上抬位置恢復到初始位置,恢復的過程使用彈簧模型,遵循胡克定律。
子彈彈道散發(fā)模型
現(xiàn)實中子彈射出的時候受各種環(huán)境因素影響,會出現(xiàn)小幅度的隨機偏向,子彈的最終射出方向即是在后座力計算后的前向方向疊加上散發(fā)的偏差,彈道散發(fā)的幅度和方向符合高斯正態(tài)分布。因此CFM在實現(xiàn)槍械散發(fā)模型時也使用高斯隨機數(shù)實現(xiàn)。
創(chuàng)新輔助瞄準機制
CFM在射擊上創(chuàng)新性地設計了一套輔助瞄準機制,幫助玩家自動瞄準靜止和低速運動的目標,降低新手玩家的操作門檻,提高新手玩家的樂趣。同時,輔助瞄準在面對快速移動和轉(zhuǎn)向目標時將失去效用,以此保證高手玩家的技術優(yōu)勢,提高玩家對技術提升的追求。
本文節(jié)選自《2018騰訊移動游戲技術評審標準與實踐案例》手冊,點擊閱讀完整手冊。
掃描二維碼推送至手機訪問。
版權聲明:本文由財神資訊-領先的體育資訊互動媒體轉(zhuǎn)載發(fā)布,如需刪除請聯(lián)系。