tft每日頭條

 > 生活

 > 騰訊旗下有哪些可以聯機的手遊

騰訊旗下有哪些可以聯機的手遊

生活 更新时间:2024-12-16 08:50:48

2015年以來,手機遊戲的市場偏好,逐漸從早期的休閑類、跑酷類、卡牌類遊戲,轉向重度、操作性更強的ARPG 、FPS、MOBA類遊戲。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)1

因此實時對戰這一遊戲玩法,也逐漸成為了手機遊戲的一個核心玩法。

縱觀AppStore暢銷榜前十的遊戲,過半都支持玩家實時的PK或者合作攻關。由于實時對戰有玩家之間自發進行強互動的特點,活躍度和社交強度都是比較高,為遊戲的用戶活躍和流水的提高奠定了堅實的基礎。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)2

騰訊的遊戲開發團隊,很早就觀察到實時對戰這一核心玩法對遊戲生命周期影響的重要性,因此在自研産品方面,加大力度開發圍繞實時對戰這一核心玩法的遊戲,從而誕生了《王者榮耀》、《穿越火線·槍戰王者》、《全民超神》、《全民突擊》、《天天炫鬥》等一大批優秀的作品,其中不乏日活躍過千萬的大作。

而早期的休閑類遊戲如《全民飛機大戰》等,也加入了實時雙打等遊戲特性,所以現在依然可以經常在AppStore暢銷榜前十看到《全民飛機大戰》這款遊戲的身影。

既然實時對戰是一個非常重要的遊戲玩法,為什麼我們現在看到的許多遊戲,都不具備這一的玩法,或者并不是遊戲的主要玩法?其中一個重要的原因,就是開發實時對戰的功能,在技術上需要有一定的門檻。本文希望能向大家分享騰訊是如何跨過這些門檻,解決實時對戰遊戲開發的一系列核心技術難題。

“遊戲數據同步方案”

首先我們介紹實時對戰手遊中最難解決的技術問題——弱網絡下的同步問題。

通過對玩家的遊戲數據進行觀察,發現玩家的遊戲環境存在很大差異,不同玩家會使用不同的2G/3G/4G/Wifi網絡,不同網絡之間的延遲相差很大。另外移動網絡質量不穩定,且都是按流量收費,這些都是需要考慮的問題。手機在網絡間的切換,又會造成底層網絡斷線、地址變化等問題,都是常見的情況。這些問題的統一解決手段,最重要的是通盤考慮各種需求,選擇一個合理的遊戲狀态同步模型。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)3

不同網絡之間的網路延時

騰訊在大量遊戲開發的實踐中,總結出三種遊戲的同步模型:

第一種叫MMOG模式。這種同步模型,在端遊時代就使用的非常廣泛,特别是MMORPG裡面。

它的主要實現要點是:服務器負責計算全部的遊戲邏輯,并且廣播這些計算的結果,客戶端僅僅負責發送玩家的操作,以及表現收到的遊戲結果。一般來說,玩家發送一個操作到服務器上,服務器根據玩家操作去修改内存中的遊戲世界模型,同時運算遊戲世界對這個操作的反應,然後把這些反應都廣播給相關的多個客戶端,每個客戶端負責把這些數據表現出來給玩家看。

這種做法的優點是非常安全,由于整個遊戲邏輯都在服務器上,服務器隻接受合法的玩家操作,一切都經過既定邏輯的運算。另外一個優點是遊戲的邏輯更新很方便,因為主要邏輯都在服務器端。一般的遊戲玩法需要更新,遊戲開發團隊自己更新重啟服務器就可以了,無需讓千萬個手機去下載更新包。

但是這種做法的缺點也很明顯,首先就是用戶的體驗非常依賴網絡質量,如果一個用戶的網速慢,其他玩家都會發現他在遊戲中明顯的變卡。

另外一個缺點就是服務器負責了太多的遊戲邏輯運算。在動作遊戲裡,服務器往往需要針對二維或者三維空間進行運算。

最後,使用這種同步方案,由于每個遊戲表現都要以數據包發往客戶端,所以當一起玩的用戶數量較多,這種廣播的數據包量就會非常大。

因此根據以上的特點,騰訊一般會在那些同局遊戲人數不太多,但講求玩法變化快和安全性高的遊戲中采用這種同步方案。騰訊自研手遊中比較著名的《穿越火線·槍戰王者》、《全民超神》、《炫鬥之王》都是使用這種方案。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)4

關注點

表現

網絡延遲

< 100ms

流量

占用較大,同時遊戲角色越多占用越大

服務器負載

非常高

安全性

很好,能很方便的做反外挂。

第二種方案叫主機模式。這種同步方案的做法是:以參與對戰的一個客戶端為“主機”,其他的客戶端為“副機”。

遊戲邏輯的主要運算由“主機”完成,所有的“副機”把操作指令,通過服務器中轉,集中發送給“主機”;“主機”完成遊戲運算後,把結果指令再通過服務器中轉,廣播給所有的“副機”。

這個方案看起來有點奇怪,但是卻有很明顯的優點:首先是大量的實時動作遊戲,其遊戲過程的邏輯代碼,都是在客戶端上開發和運行的。客戶端的遊戲引擎對于二維、三維空間中的位置運算、碰撞檢測等功能,都有很好的支持。

因此把整個遊戲邏輯由客戶端負責,就能讓服務器端無需再開發這部分功能。服務器隻負責做轉發、廣播的操作,所以能承載的人數和第一種方案有數量級上的差别。由于“主機”客戶端運行遊戲邏輯,所以其體驗是最好的,就算“副機”由于網絡不佳造成體驗下降,對于“主機”來說,隻是發現“副機”動作有點遲緩而已。

在以PVE玩法為主的遊戲中,用戶關注的是自己的體驗,不會太在意同伴的準确動作,這種情況下,主機模式就是一種不錯的同步方案。騰訊的《全民飛機大戰》的雙打模式就是采用這種方式,效果相當不錯。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)5

關注點

表現

網絡延遲

< 400ms

流量

一般,大概為MMOG模式一半

服務器負載

安全性

較差,比較容易通過修改客戶端作假

第三種方案叫幀同步模式,又叫“鎖步模式”。這種模式用形象的比喻來說,就是把所有參與對戰的客戶端,看成是排成一列的囚犯。這些囚犯們的左腳都被鍊子所在一起,因此他們如果要往前走,就隻能同時邁步,如果其中某個人走快了,或者走慢了,都會讓整隊人停下來。

在實現上,一般是以服務器按固定的幀率,來搜集每個客戶端的輸入,然後把這些輸入廣播給所有的客戶端;由于每個操作指令到達所有客戶端的時間(幀)都是一樣的,所以每個客戶端運算的結果也是一樣的,同樣的輸入就會得到同樣的結果。

這就好像:其他玩家通過網絡,把操作手柄接到你的手機。這種同步方案,是傳統單機-局域網遊戲中最常用的。

這種同步模型的最大優點是:強一緻性。每個客戶端的表現是完全一樣的,非常适合高度要求操作技巧的遊戲。由于廣播的僅是玩家的操作,所以數據量很少。不管遊戲中的角色數、狀态量有多大、多複雜,都不會影響廣播的數據量。

但是這個方案也有缺點:對所有玩家的延遲都有要求,一般來說要求在50毫秒以内。如果有一個客戶端網絡卡了,所有的客戶端都要停下來等,大家在玩《星際争霸》就見識過:一個玩家斷線,全部玩家的遊戲都暫停。騰訊遊戲中的《王者榮耀》、《全民突擊》由于競技性非常強,所以采用了這種方案。

另外在幀同步模式中,數據同步的頻率較高,網絡延遲越小越好。由于TCP的滑動窗口機制和重傳機制,導緻延時無法控制,因此幀同步一般采用udp進行網絡傳輸,但udp又會衍生出可靠性問題,對于客戶端,如果某些udp包沒有收到,就會出現丢幀的情況,所以這裡我們自己研發了一套《可靠UDP傳輸》的協議,應用在《王者榮耀》項目。關于《可靠UDP傳輸》的相關技術介紹,後續會作為專題繼續分享給大家。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)6

關注點

表現

網絡延遲

< 50ms

流量

很小

服務器負載

安全性

差,遊戲邏輯主要依賴客戶端

“安全問題”

遊戲外挂,一直是國内遊戲市場的痼疾。在實時對戰的遊戲中,常見的有修改客戶端代碼運行時邏輯、協議破解,以及腳本代替玩家行為等外挂。對此,我們花了很大力氣,從遊戲的内部結構上,對抗這些破壞遊戲性的行為。現在比較常用的手段有四種:

第一種是服務器驅動。在同步模型中的”MMOG模型”中,遊戲邏輯都由服務器控制,所以外挂能攻擊的空間比較小,這是最好的對抗外挂的方法。由于邏輯全部在服務器上運算,所以外挂幾乎無法從遊戲邏輯中得到任何好處,隻能在降低玩家操作難度上想辦法。

但是這種方案的代價也是高昂的:服務器需要保存整個遊戲世界的模型,并演算所有的AI邏輯,這讓服務器消耗大量内存和CPU,增加了服務器端代碼的複雜性。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)7

第二種是MonoSvr抽查回放。這種方法是在第一種服務器驅動方案上的一種簡化:客戶端還是會上傳所有的遊戲操作,但服務器并不完全的演算整個戰鬥邏輯,僅對容易被外挂攻擊的部分,進行驗證。

服務器上僅保留部分世界模型即可,從而降低了服務器的運算量。客戶端并不需要等待服務器的命令回複,就可以先按自己的邏輯去運行,所以體驗上有更好的表現。如果服務器發現了作弊,會事後懲罰相關的帳号。這種做法也有漏洞:因為那些沒有被抽查到的客戶端,或沒有被驗證的邏輯,都可能是外挂攻擊的漏洞。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)8

第三種是柔性反外挂。這種方法的校驗更加簡單,僅僅在服務器上保留了一批預設的校驗規則。這些規則可能是核算玩家的收益和付出是否合理、一些重點操作是否符合規則……。

這種方案服務器的壓力非常的輕。由于驗算的過程大大的加快了,玩家的體驗也會很好。不過這種方法的漏洞更加多,一旦外挂熟悉了這些預設的校驗規則,就很容易進行針對性的攻擊。

騰訊旗下有哪些可以聯機的手遊(騰訊如何打造一款實時對戰手遊)9

第四種是舉報系統。這種方法簡單來說就是人民戰争,讓玩家發起舉報請求,然後服務器再搜集模拟被舉報者的行為證據,進行針對性的驗證和懲罰。但這種民不舉官不究的做法,很容易被有意識的互刷所利用。這種方案有一定的漏報幾率,因此往往是作為其他幾種驗證機制的後備機制,一起使用。

以上四種,在騰訊的遊戲中,往往都是結合起來使用。在實時對戰遊戲中,我們除了要關注驗證的準确性外,同時還需要平衡遊戲體驗。因此往往需要在很多地方做妥協,但是隻要我們有足夠多的手段複合使用,真正的漏網之魚還是很少的。

版本更新問題

手機遊戲的版本更新問題由來已久,讓用戶升級手機上的程序是非常不容易的。經常會出現以下問題:

  • 手機内存小,更新的過程較容易崩潰;

  • 移動設備的網絡環境很不穩定。經常下載到一半,用戶走出了wifi範圍或者進了電梯,網絡中斷了。

  • 應用商店的版本審核。什麼時候能審核通過往往不能預測,對于緊急的BUG來說更是遠水救不了近火。

然而,實時對戰遊戲由于強調競技性,所以玩法邏輯常常需要進行小的調整優化。并且實時對戰的玩法内容需要持續更新,所以經常都需要更新很多程序,在現有的條件下,如果隻是簡單的按部就班發版本,估計玩家早就跑光了。

從一些自研遊戲發版本時的運營數據來看,如果在遊戲内進行資源更新,可以做到99.5%以上的成功率的。但是,如果要發布一個程序包版本的更新,成功率往往就會跌至90%以下。

所以每次發布版本,一些遊戲的在線人數會下降10%,這對于遊戲運營來說,是一個巨大而持久的損失。因此,熱更新技術是現在的主流版本更新方式。把程序代碼,以腳本來編寫,然後使用一個優秀的腳本解析器來運行,就能讓程序代碼以文本資源的形式,和圖片、聲音等其他遊戲資源一樣更新下載了。

我們自己開發了一個xLua執行庫,這個庫能在Unity3D引擎中運行lua腳本,并且其執行的效率非常高,還能無縫的在腳本中調用遊戲引擎的API。這樣,我們就可以盡量少的發布新的程序版本,大部分的遊戲内容玩法調整,都使用lua腳本更新來實現。

由于使用了資源更新的方式來更新遊戲,現在遊戲的更新成功率普遍可以達到99.8%左右,并且避免了應用商店的審核,使iOS和Android用戶同時玩上遊戲的最新版本。

“玩家實時溝通”

在傳統的端遊中,玩家在遊戲過程中往往會通過鍵盤打字溝通。後來有一些第三方語音聊天軟件,充當了遊戲過程中實時溝通的工具。在實時對戰的遊戲中,和隊友的配合往往是遊戲的重要樂趣來源,因此實時的溝通非常重要。

所謂的“開黑”,就是表示一個溝通良好的遊戲夥伴小組,一起和其他玩家對戰,順暢的溝通能帶給玩家巨大的競技優勢。然而,在手機遊戲中,屏幕一般都比較小,不可能有空間來讓玩家打字輸入,況且如此激烈的實時戰鬥,也沒有時間去慢慢的打字。因此自然很多人想到像PC上一樣,運行一些實時聊天的語音軟件,來輔助遊戲溝通。

但是手機操作系統和Windows不一樣,在手機上運行的後台軟件,除了會嚴重降低手機運行性能外,還可能被操作系統暫停和關閉。所以遊戲 語音工具的路子是走不通的。這時,就需要遊戲開發團隊,為玩家在遊戲中,直接提供實時語音的服務。

騰訊自研的兩款大作《王者榮耀》、《穿越火線手遊》為了改善玩家在PVP對戰時的溝通體驗,率先使用了騰訊内部的實時遊戲語音服務。從上線後玩家反饋的效果來看,這一功能對維持用戶活躍非常有價值。

從運營統計數據來分析,有30%的玩家會主動說話,每人單局的語音會超過30秒,累計用過語音的玩家超過85%——這些數據都說明了語音服務是實時對戰遊戲玩家需要的功能。所以騰訊後續在所有32款對戰遊戲中,都加入了遊戲實時語音服務。後面騰訊也會開放出這一技術為所有遊戲開發者服務。

“結束語”

實時對戰遊戲的核心技術難點,主要是解決數據同步問題及弱網絡下玩家的遊戲體驗優化。沒有一款通用模型可以用于所有遊戲,根據自己遊戲的模型,設計出合理的遊戲架構,才能讓遊戲的PVP體驗趨于完美。

本文為51CTO授權發布

轉載請申請授權

更多幹貨分享請關注《騰訊遊戲服務》公衆号

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved