① vr特警2雙人怎麼打
在使用VR特警2進行雙人游戲時,一個玩家可以使用滑鼠進行控制,而另一個玩家則可以使用鍵盤進行操作。
② 如何做一款網路聯機的游戲
在上一篇文章中,我們構建了一個能夠匹配玩家進行1V1對戰的系統,利用騰訊聯機對戰引擎(MGOBE)。現在,我們將在此基礎上開發一個雙人聯機游戲。為了實現游戲邏輯,首先需要確定游戲同步的方式。同步方式主要有兩種:幀同步和狀態同步。幀同步允許玩家A有規律地向玩家B發送「幀數據」,這些數據包含A的操作,如移動、攻擊等。B收到這些幀數據後,根據其中的指令,在本地進行模擬操作,從而確保游戲數據和顯示的一致性。而狀態同步則不同,玩家A發出某個指令時,將其上報給伺服器。伺服器根據該指令更新游戲的整體狀態,並將游戲狀態發送給所有玩家,以供他們渲染屏幕。從這兩種方式的描述中,我們可以看到它們的主要區別:幀同步不需要伺服器,只需要客戶端之間彼此交換數據即可,而狀態同步需要伺服器作為整局游戲的「裁判」,它保存游戲狀態,客戶端則只是向伺服器報告玩家行為,然後在伺服器的指導下渲染畫面。幀同步實現起來更簡單,而狀態同步的整個通訊系統、數據交換會更加復雜龐大。幀同步對操作順序和網路穩定性要求較高,而狀態同步更安全。關於游戲同步和狀態同步的更詳細知識,可參考相關資料鏈接。我們採用開發起來較簡單的幀同步方式實現游戲同步。
在這個案例中,我們將編寫一個非常簡單的聯機小游戲:場上共有9張牌,其中1張是炸彈牌。雙方輪流翻牌,哪方先翻中炸彈,就輸掉游戲,另一方則獲得勝利。完整項目代碼可以通過「煥煥騎士」公眾號後台回復「聯機案例」獲取。我們已經知道,幀同步中的每一個客戶端都是一個獨立運行的游戲狀態。因此,讓我們暫時忘掉「聯機游戲」這回事兒,先專注編寫好單機游戲的基本邏輯,然後在執行玩家指令的位置插入「發送幀數據」的代碼即可。
首先,讓我們添加一些場景節點,如下布置。在總腳本(掛在Game Manager節點上)中,添加一些初始的游戲數據到onLoad()末尾。然後,給所有9個Card均綁定一個Button組件,並使它們被點擊後觸發reportClick()函數。打開調試進行測試,點擊第六張卡片就會結束游戲,其他卡片都是安全的。現在我們已經實現了一個客戶端上的游戲邏輯了!
下一步,我們需要在腳本中添加發送幀和接收幀的函數。首先,每當玩家進行一次操作後,我們需要將該操作報告到幀數據里,發送給其他玩家。在這個游戲中,點擊卡片顯然是最容易想到的玩家操作。在函數reportClick()中相應位置添加用於發送幀的代碼。代碼中的framePara.data需要給出足夠的信息,至少能夠讓對方接收後可以在它的程序中精確復制這一操作。然後,我們還需要設置一個監聽函數來不斷接收來自他人的幀數據。編寫一個這樣的函數。這個函數接收的event.data包含當前時間點的所有幀信息。MGOBE每隔一段時間搜集所有玩家上傳的幀數據,把它們集合打包、增加封裝,再發送給所有玩家(包括每個發送者自己)。你可以列印出函數里的event參數和frameItems變數的值,找找我們之前發送的framePara內容被藏在event這個大數據包的哪個角落了?把這個監聽函數綁定到room對象上即可使之生效。
至此,點擊卡片的操作就同步完成了!最後,再優化一下游戲流程:讓游戲啟動後先展示「匹配」相關按鈕,匹配成功後再進入游戲界面,同時啟動幀數據的交換(在startMatch()中匹配成功的位置添加如下代碼)。
好了,現在先後打開兩個調試窗口,試試操作是否同步了!
在以上的成果中,我們會發現兩個嚴重的問題:說好的輪流翻牌呢?而且只要一個人選中炸彈,雙方都會判定失敗!要解決這些問題,我們只需要增加回合控制。回合是聯機游戲中常見的概念,要在這個案例中設置回合,第一步要考慮的便是:哪一方先開始回合?我們已經知道,在幀同步中,每一個客戶端都是一個獨立且平等的游戲進程,那麼我們便需要一個第三方裁判——服務端,由它來決定首個回合的分配!
讓伺服器做決策並分發游戲數據,這其實是狀態同步的思想了。另外,既然我們已經邀請伺服器來決定起始回合了,為什麼不順便讓它也打亂一下卡片的順序呢?每局比賽開始時,也可由伺服器確定九張牌中炸彈牌的位置,將該數據下發給各個客戶端,這樣一來,雙方每新開一局都能在同一張「未知的新地圖」上進行游戲了。
我們來看看服務端代碼。服務端代碼中的gameData對象就是游戲數據容器,它在gameServer的onInitGameData()中初始化,這個函數return的內容就會被賦給gameData。
現在,讓我們重新梳理一下匹配成功後到游戲正式開始前需做的工作:
匹配成功後,雙方客戶端均向服務端發起一次通信,要求獲取服務端的游戲起始數據(這個案例里就是起始回合和卡片順序);服務端收到客戶端來信後,將已經生成好的數據下發給各個客戶端。客戶端收到數據後,再依照該數據執行本地的初始化,並開始幀同步。
圖中的4個函數中onInitGameData()已經寫好了,接下來讓我們依次落實其他三個。
1. 匹配成功後,客戶端向服務端發送請求。將原先的startMatch()中sendToGameServerPara變數如下修改,並刪除原本啟動游戲的相關代碼:
2. 服務端代碼的onRecvFromClient()函數修改如下:
3. 伺服器消息發回到客戶端後,客戶端的消息接收介面onRecvFromGameSvr()也應增加處理代碼。我們將該處理函數單獨寫成一個函數:
最後,將MGOBE初始化處的room.onRecvFromGameSvr替換成這個函數:
至此,游戲的初始化也已經全部完成了!我們可以重復刷新幾次調試窗口,看看每局的炸彈牌位置是否都不一樣;並檢查下console結果中的startTurn值是否是隨機的一方為true、另一方為false。
我們已經實現了分配起始回合,客戶端再加上一點點代碼,就可以實現回合交替!
1. 在客戶端使用一個inTurn的布爾變數就可以實現回合控制。思考一下回合切換的時機:那就是每次發生卡片被翻之後。我們在reportClick()的相應位置添加以下代碼:
函數setTurnStatus()是為了增加視覺提示,告知玩家是否輪到ta的回合了,定義如下:
記得在_onRecvFromGameSvr()中的相應位置也添加調用這一函數。
2. 當前客戶端是否具有回合行動權,還會決定玩家是否能翻牌、以及翻牌後的勝敗情況。這些控制點也可以加在reportClick()中實現:
根據回合情況修改結束頁文本:
至此,所有基本功能就全部實現了。我們已經成功用幀同步實現了一個雙人聯機小游戲!
最後,還有一些其他拓展主題也值得聯機游戲開發新手學習掌握,包括機器人、回合限時、斷線處理、房間管理等,它們將被整理在本系列的「補充篇」中。
歡迎關注我的微信公眾號「Kita游戲小基地」,分享我的游戲資訊,以及有用的開發經驗!
③ 高清流暢舒適 Pico G2 小怪獸2 VR一體機評測
【IT168 評測】如今,隨著高通驍龍等移動平台對於VR的大力支持,目前各大VR硬體廠商的產品配置堪比旗艦手機。盡管如今VR一體機處理器相比手機總是要晚上一代,但是其性能也不容小覷,而隨著VR硬體和內容的高速發展,我相信不久的將來,像驍龍845這樣的頂級平台將會為VR留一部分名額的。今天我為大家帶來的是一款搭載驍龍835處理器的VR一體機——Pico G2 小怪獸2。
此前,我們已經鑒賞過該機的外觀,詳情點擊《配置堪比頂級旗艦手機 Pico G2 小怪獸2 VR一體機圖賞》
,在這里就不贅述了,今天主要來談一下體驗。
優缺點一覽:
優點:
1、頭盔相比上一代更輕,同時電池後置設計讓重量分配更均衡,佩戴自然更舒適;
2、3K解析度,在保證片源質量的前提下更加清晰,完全沒有顆粒感或者噪點,影院大片感受;
3、90Hz高刷新率,能夠有效減弱眩暈,不過在一些快速移動的畫面下還是會有一些;
4、驍龍835+4G+32G,主流手機配置,流暢無卡頓;
5、觀看全景視頻和玩游戲時沉浸感很強,瞬間代入感好。
缺點:
1、特別愛出汗的人戴眼鏡體驗時眼鏡片會產生霧氣,希望未來對此進行改進,當然這是目前VR頭戴產品的通病,盡管一些品牌正在注意調整;
2、視頻內容相對豐富,但是游戲資源仍然相對較少,即使內置了多家應用。
3、偶爾還是會出現暈眩感。
硬體設計回顧:輕巧便攜,驍龍835+3K解析度是亮點
在之前的圖賞中我們已經介紹過Pico G2的外觀和簡單的配置,在這里我們進行一個重點設計的簡單回顧。Pico G2左右兩塊屏幕解析度均為1440*1600,其最終形成的雙眼解析度則為2880*1600(3K),而其屏幕刷新率則為90Hz,有效減弱了用戶第一視角移動時產生的眩暈高,不過在實際體驗中一些高速移動環境下還是會有些許眩暈。而硬體配置上,Pico G2則搭載了驍龍535處理器,存儲組合為4G+32G,整體體驗非常流暢。
外觀方面,Pico G2與第一代在整體結構設計上大致相同,但外觀看起來更加時尚,而最重要的是Pico G2重量相比前代輕了40%左右,重量約為268g,比目前市面上的大多數一體機的重量都要輕,極大減輕了頭部的負擔。而為了令頭部受力更加均勻,Pico G2首次將電池後置,位於腦後,這樣便令腦前腦後受力均勻,減少頭部負擔。
按鍵和手柄方面,Pico G2既滿足無手柄操作,也支持3DOF體感的單手柄。Pico G2將主要操作按鍵(返回鍵、確認鍵、Home鍵)放於頭盔右側位置,而音箱加減和開關機鍵則位於頭盔右側下方,滿足人體工學設計,用戶完全可以脫離手柄操作,但是這樣唯一的不方便的地方便是頭部需要隨時轉動。
Pico G2手柄依舊為三自由度,完全能夠滿足用戶日常影音游戲需求,深度探索虛擬世界
舒適度:佩戴舒適,常規使用無眩暈感
VR舒適度總共包含兩部分,分別為佩戴舒適度和眼部舒適度,眼部舒適度則包含有無霧氣、是否眩暈等。在前文我們已經提到了,為了減輕頭部負擔,Pico G2將電池後置,放在腦後,配合輕至268g的重量,讓佩戴更舒適。
同時,Pico G2眼部位置採用柔軟舒適、可拆卸可清洗的超纖布質泡棉,實際體驗雖然仍能感受一些重量,但是整體舒適感確實在同定位產品中算是出色的了,海綿舒適,而自帶松緊的綳帶也不會有夾頭感。
而眼部舒適度方面,由於我戴眼鏡的緣故,臉部也比較容易出汗,因此在某些環境下眼鏡鏡片會出現霧氣,比較影響體驗,而這個問題也是目前很多VR頭盔共同的一個缺點,希望未來可以通過鏡片材質或者散熱等方式有所改進。
至於Pico G2是否眩暈,這個還要因人而異,Pico G2屏幕解析度為3K,刷新率高達90Hz,這對於防眩暈來說非常重要。而實際體驗中,在一些場景變換比較快的環境下會有眩暈感,比如高速過山車的VR視頻體驗,會有一些暈眩感,而其餘常規視頻體驗和游戲體驗是完全沒有問題的。
內容體驗:視頻豐富,游戲好玩但尚少
體驗過很多的VR,目前VR游戲資源相比視頻資源還是少很多,稍微好玩一些的都要花錢,這算是目前VR內容的一個不小的BUG。不過,Pico作為一家老牌VR硬體廠商,在內容方面可以說是目前VR一體機產品中比較豐富的了。
首先視頻資源豐富,其融合了愛奇藝、優酷、視頻TV等一線視頻平台,擁有超過萬部VR視頻;而游戲方面則有100+款游戲,應用商城則同時支持Pico Store和VIVE PORT,不過在實際體驗中,我個人仍然認為視頻完全夠了,而游戲資源仍然有些過少,但是游戲體驗還是非常不錯的,沉浸感很強。
在體驗過程中,我剛好趕上了PUI的系統版本升級,正式升級到了基於安卓8.1的PUI 3.0.1版本,此版本相比之前版本最大的區別便是屏幕截圖會全屏,而不是左右兩側,同時其在一些UI設計細節上有所調整,並修復一些BUG。
版本升級的一些BUG修復
背景變換依然是三個,但之前版本在屏幕後方,需要轉身設置,屬於彩蛋,而如今增加了單獨模塊「場景管理」。
VR視頻體驗:
Pico G2內部擁有豐富的視頻資源,其視頻種類數量在目前VR一體機中算是最多的了,無論是宅男喜歡的美女VR視頻,還是令人緊張的僵屍恐怖片,Pico VR都會為你提供,沉浸感和畫質都非常不錯。此外,Pico G2還內置了LightVR 8K播放器,雖然片源只有一個,但是其清晰度是其他視頻無法能比的,同時也能夠帶來更強的沉浸感,相信未來Pico會提供更多的8K視頻資源。
LightVR 8K播放器
游戲體驗:
闖關類射擊游戲屬於VR游戲中比較熱門和常見的,Pico G2的整體代入感是非常不錯的,3DOF手柄都能帶來較為真實的射擊感,沉浸感不錯。當然,Pico G2還包含了非常多熱門游戲,比如《Hunter Gate》、《Spark of Light》。《Hunter Gate》仍然是一款VR射擊類游戲,大作畫風和細膩渲染帶來了出色游戲體驗,其最大的特色便是支持聯機模式,可以雙人協同作戰;而《Spark of Light》則是闖關類游戲,體驗同樣不錯,憑借動人的故事和感人的畫質,其被眾多玩家和媒體稱為「移動VR游戲中的3A作品」,喜歡的小夥伴不妨體驗一下。
《Hunter Gate》
《Spark of Light》
個人認為,相比VR視頻,Pico G2 VR游戲資源仍然偏少,雖然其擁有一些游戲大作,整體游戲體驗和沉浸感也還不錯,但是在游戲內容豐富度和可玩度方面仍然需要提升。
評測總結:
Pico G2作為目前市面上極具競爭力的VR一體機,其高顏值的外觀、舒適的佩戴感、以及豐富好玩的VR內容資源,讓我們真正感受到虛擬世界的快感。目前,Pico G2在京東上售價為1999元,喜歡的小夥伴不妨關注一下。【京東商城】