騰訊雲要逆天,一個人也能開發復雜的網絡游戲,深圳騰訊雲沙龍發來的報到!


本篇文章要感謝「銀笑的尤里」從9月28日騰訊雲深圳「游戲開發的超“音”“速”」沙龍發來了重磅消息,下面 Shawn 重點介紹對個人開發者驚喜的“MGOBE” 聯機對戰引擎。

一、什么是聯機對戰引擎

我們先看騰訊雲官方對“聯機對戰引擎”的介紹:

小游戲聯機對戰引擎(Mini Game Online Battle Engine,MGOBE)為游戲提供房間管理、在線匹配、幀同步、狀態同步等網絡通信服務,幫助開發者快速搭建多人交互游戲。開發者無需關注底層網絡架構、網絡通信、服務器擴縮容、運維等,即可獲得就近接入、低延遲、實時擴容的高性能聯機對戰服務,讓玩家在網絡上互通、對戰、自由暢玩。MGOBE 適用於回合制、策略類、實時會話(休閑對戰、MOBA、FPS)等游戲。

二、聯機對戰引擎快速上手

費話少說,我們還是直接上代碼,就知道有多么的爽了。

1. 導入SDK

// 導入 MGOBE.js
import "./js/libs/MGOBE.js";
// 獲取 Room、Listener 對象
const { Room, Listener } = MGOBE;

file

H5游戲輕松接入SDK,真的是太Easy了。

2. 初始化監聽

在使用API之前還需要到騰訊雲上開通 MGOBE 的使用權限,拿到 gameId、secretKey、url 等信息,然后就可能使用代碼初始化聯機對戰引擎,代碼如下:

const gameInfo = {
     // 替換 為控制台上的“游戲ID”
     gameId: "xxxxxxxx",
     // 玩家 openId
     openId: 'openid_123_test',
     // 替換 為控制台上的“密鑰”
     secretKey: 'BjU3QBZLFxxxxxxxxxxxxxxxxxx',
 };
 
 const config = {
     // 替換 為控制台上的“域名”
     url: 'xxxxxxxx.wxlagame.com',
     reconnectMaxTimes: 5,
     reconnectInterval: 1000,
     resendInterval: 1000,
     resendTimeout: 10000,
 };
 
// 初始化 Listener
Listener.init(gameInfo, config, event => {
     if (event.code === 0) {
         console.log("初始化成功");
         // 初始化成功之后才能調用其他 API
         // ...
     }
 });

3. 實例化房間、匹配玩家

// 實例化 Room 對象
const room = new Room();
Listener.init(gameInfo, config, event => {
    if (event.code === MGOBE.ErrCode.EC_OK) {
        console.log("初始化成功");
        // 初始化后才能添加監聽
        Listener.add(room);
    } else {
        console.log("初始化失敗");
    }
});

//調用房間匹配 API
const playerInfo = {
    name: "Tom",
    customPlayerStatus: 1,
    customProfile: "https://xxx.com/icon.png",
};

const matchRoomPara = {
    playerInfo,
    maxPlayers: 5,
    roomType: "1",
};

room.matchRoom(matchRoomPara, event => {
    if (event.code !== 0) {
        console.log("匹配失敗", event.code);
    }
});

// 廣播:房間有新玩家加入
room.onJoinRoom = (event) => { 
    console.log("新玩家加入", event.data.joinPlayerId);
}
// 廣播:房間有玩家退出
room.onLeaveRoom = (event) => {
    console.log("玩家退出", event.data.leavePlayerId);
}

4. 房間內的消息通信

//消息參數
const sendToClientPara = {
    recvType: MGOBE.ENUM.RecvType.ROOM_SOME,
    recvPlayerList: ["xxxxxxxx1", "xxxxxxxx2"],
    msg: "hello",
};

//發送到客戶端 API
room.sendToClient(sendToClientPara, event => console.log(event));

//客戶端接收消息 API
room.onRecvFromClient = (event) => {
    console.log("新消息", event.data.msg);
};

5. 幀同步

//開始幀同步
room.startFrameSync({}, event => {
    if (event.code === 0) {
        console.log("開始幀同步成功");
    }
});

//開始幀同步廣播回調
room.onStartFrameSync = (event) => { 
    console.log("開始幀同步");
}

發送幀消息

const frame = {cmd: "xxxxxxxx", id: "xxxxxxxx" };
const sendFramePara = { data: frame };
room.sendFrame(sendFramePara, event => console.log(event));

房間幀消息廣播回調

room.onRecvFrame = event => {
    console.log("幀廣播", event.data.frame);
};

狀態同步機制稍微點復雜,這里就不展開了,通過上面的內容,不知道大家有沒有感覺到很興奮呢?

三、應用加速&語音多媒體

沙龍上除了聯機對戰引擎外,騰訊雲還帶來了有

全球應用加速 GAAP

全球應用加速(Global Application Acceleration Platform,GAAP)依賴全球節點之間的高速通道、轉發集群及智能路由技術,實現各地用戶的就近接入,通過高速通道直達源站區域,幫助業務解決全球用戶訪問卡頓或者延遲過高的問題。GAAP 提供圖形化配置界面,只需幾分鍾,您就可以創建並使用高速通道訪問您的業務源站,並通過控制台查看通道的運行情況。

file

下面是 「銀笑的尤里」帶回來的現場景圖片
file

游戲多媒體引擎 GME 簡介

騰訊雲游戲多媒體引擎(Gaming Multimedia Engine,GME)提供一站式游戲語音解決方案。針對不同游戲場景進行深度優化,覆蓋休閑社交、MOBA、MMORPG、FPS 等多種游戲類型;支持多人實時語音、3D位置語音、語音消息和語音轉文本等功能;功能完備,接入門檻低,一個 SDK 即可滿足多樣化的游戲語音需求。

file
file

H5全支持,而且還支持 Cocos2dx、Unity、Unreal 三大引擎,以及七大平台,看上圖能猜出是那七大平台嗎?看圖標,Shawn 猜了很久還是被猜到了!

  1. 兩個桌面操作系統:Mac、Windows
  2. 兩個移動操作系統:iOS、Android
  3. 三個游戲主機平台:Nintendo switch、PS4、Xbox

file

在公眾號回復【騰訊雲開發】可查看到關於 MGOBE、GAAP、GME 三大雲技術的文檔資料!

四、還有驚喜

Shawn 這邊得到的消息,騰訊雲10月在還有兩場沙龍分別是

  • 10月18號:北京站
  • 10月26號:上海站

感興趣的伙伴可關注公眾號報名參加,感謝大家的支持!

file


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM