教你利用工具将单机游戏改造成对战网游
前言:本Demo原來(lái)是Cocos Creator官方的一個(gè)Demo,本文章利用了第三方聯(lián)網(wǎng)插件工具M(jìn)atchvs將其改造成了一個(gè)三人對(duì)戰(zhàn)的Demo(點(diǎn)擊文末閱讀原文,可獲取在線體驗(yàn)地址)。
注意:
1.游戲滿(mǎn)三人才可以開(kāi)啟,匹配成功后,玩家通過(guò)鍵盤(pán)AD鍵操縱小怪物向左向右移動(dòng)搶摘星星。
2.下載Demo源碼后,需用Cocos Creator打開(kāi)工程(建議使用1.7.0及以上版本)。
游戲配置
Demo運(yùn)行之前需要去Matchvs 官網(wǎng)配置游戲相關(guān)信息,以獲取Demo運(yùn)行所需要的GameID、AppKey、SecretID。如圖:
?
獲取到相關(guān)游戲信息之后,運(yùn)行Demo,即可進(jìn)入房間,準(zhǔn)備開(kāi)始游戲,如圖所示:
?
初始化SDK
在引入SDK之后,在初始化前需要先調(diào)用Matchvs.MatchvsEngine.getInstance()獲取一個(gè)Matchvs引擎對(duì)象實(shí)例:
?
另外我們需要定義一個(gè)對(duì)象,該對(duì)象定義一些回調(diào)方法,用于獲取游戲中玩家加入、離開(kāi)房間、數(shù)據(jù)收發(fā)的信息,這些方法在特定的時(shí)刻會(huì)被SDK調(diào)用。
?
為方便使用,我們把engine和reponse放到單獨(dú)的文件Mvs.js中,使用module.exports將它們作為全局變量使用:
?
其他文件可以用require函數(shù)引入engine和reponse:
?
完成以上步驟后,我們可以調(diào)用初始化接口建立相關(guān)資源。
?
注意 在整個(gè)應(yīng)用全局,開(kāi)發(fā)者只需要對(duì)引擎做一次初始化。
建立連接
接下來(lái),我們就可以從Matchvs獲取一個(gè)合法的用戶(hù)ID,通過(guò)該ID連接至Matchvs服務(wù)端。
獲取用戶(hù)ID:
?
用戶(hù)信息需要保存起來(lái),我們使用一個(gè)類(lèi)型為對(duì)象的全局變量GLB來(lái)存儲(chǔ):
?
登錄:
?
加入房間
成功連接至Matchvs后,二手手游出售立即隨機(jī)匹配加入一個(gè)房間進(jìn)行游戲。
代碼如下:
停止加入
我們?cè)O(shè)定如果有3個(gè)玩家匹配成功則滿(mǎn)足開(kāi)始條件且游戲設(shè)計(jì)中不提供中途加入,此時(shí)需告訴Matchvs不要再向房間里加人。
代碼如下:
?
在這里需要記下房間的用戶(hù)列表,記入到全局變量GLB.playerUserIds中,后面要使用到。
發(fā)出游戲開(kāi)始通知
如果收到服務(wù)端的房間關(guān)閉成功的消息,就可以通知游戲開(kāi)始了。
?
游戲數(shù)據(jù)傳輸
游戲進(jìn)行中在創(chuàng)建星星、玩家進(jìn)行向左、向右操作時(shí),我們將這些操作廣播給房間內(nèi)其他玩家。界面上同步展示各個(gè)玩家的狀態(tài)變化。
其中星星是房主創(chuàng)建和展示,然后通知其他玩家,其他玩家收到消息后展示,相關(guān)的代碼如下:
?
玩家進(jìn)行向左、向右操作時(shí),這些消息會(huì)發(fā)送給其他玩家:
?
考慮到數(shù)據(jù)同步會(huì)有延遲,不同客戶(hù)端收到的數(shù)據(jù)的延遲也會(huì)有差異,如果只在同步玩家左右移動(dòng)的操作數(shù)據(jù),那么過(guò)一段時(shí)間之后,不同客戶(hù)端的小怪物位置可能會(huì)不一樣,因此每隔一段時(shí)間還是需要再同步一次小怪物的位置、速度和加速度數(shù)據(jù):
?
最終效果如下:
?
搞定。
總結(jié)
以上是生活随笔為你收集整理的教你利用工具将单机游戏改造成对战网游的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 当人工智能遇到游戏
- 下一篇: 关于低分辨率像素游戏下显示非防锯齿中文