天天看點

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

事先說明:

此篇文章重在介紹:"操前準備",實際操作會在下篇介紹.

裡面用的遊戲開發引擎是unity,使用騰訊雲遊戲對戰引擎,接入得是騰訊雲中得日志服務CLS.

此操作得用處:

遊戲聯機對戰引擎 MGOBE 的采集的實時伺服器日志将上報到 日志服務 CLS,開發者可登入 日志服務控制台 檢視。

那麼我們首先該怎麼使用呢?如果你隻是想嘗試一下産品的話,那麼你可以登陸 這個網址 中檢視免費的使用.如果覺得合适,你就可以付費使用.

登陸這個網址之後會見到如下界面:

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

如果你想要去看其他的産品,點選對應的按鈕即可,那麼這裡,我來示範一下如何接入騰訊雲遊戲對戰引擎 MGOBE,并擷取裡面的日志消息.

首先我們點選騰訊雲遊戲對戰引擎 MGOBE的按鈕

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

進到介紹:如何使用實時伺服器日志,那麼在使用之前,得有兩個必要條件,首先是要有一個遊戲在騰訊雲中正在跑,還有一個必要條件就是你已經有了一個實力得伺服器,如果你沒有,那也不用擔心,騰訊雲會給你一個可以使用得示例伺服器,也可以拿來測試一下.

那麼首先,我們先開通并建立一個遊戲服務:

在騰訊雲的官網上直接搜尋:"對戰引擎",第一個就是,點選立即使用就可以來到控制台,如果你是第一次使用,那麼它會提示你一些需要勾選一些條款.勾選之後,你就可以建立一個自己的遊戲了

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

那麼選擇你要做的遊戲,每一種遊戲提供的服務是不一樣的.我這裡選擇的是unity類型的遊戲,建好了之後,會看到具體的資訊:

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

最重要的就是前3個資訊,一定要儲存好,不能洩露,如果洩露了,别人會根據你的這個資訊來使用你的流量.當我做完這個功能,我就會删除這個遊戲,大家也不用記錄.

裡面的計費方式:

遊戲聯機對戰引擎 MGOBE 于2019年8月12日正式開啟公測,使用者在此期間可免費使用。免費期限截止于2019年12月31日,從2020年1月1日開始正式計費。

遊戲聯機對戰引擎 MGOBE 按遊戲 DAU 以及流量用量計費,日結後付費。

您可以在遊戲聯機對戰引擎 MGOBE 的控制台内使用雲開發 TCB 服務,TCB 的計費與 MGOBE 互相獨立。

DAU 定價

付費類型 DAU 範圍 單價(元/DAU/日)
國内站價格
DAU ≤ 500
500 < DAU ≤ 8000 0.0031
8000 < DAU ≤ 2W 0.0027
2W < DAU ≤ 5W 0.0025
5W < DAU ≤ 10W 0.0024
DAU > 10W 聯系商務報價
注意:
  • 玩家初始化成功即算作 DAU,DAU 按照一個遊戲一天内的 player ID 去重計算(player ID 是遊戲内使用者的唯一辨別符,一個遊戲内的一個使用者對應一個 player ID)。
  • DAU 計費模式為從免費額度開始,享受累進階梯價,即每段 DAU 使用一個單價,每個階梯内的用量與該階梯的單價相乘,累加後得出總價。

流量定價

免費流量(活動期間)

遊戲聯機對戰引擎 MGOBE 活動期間(從即日起至2021年12月31日)向您贈送部分流量,贈送規則如下:

  • 每個遊戲贈送流量額度為1GB/天,贈送流量僅可用于遊戲聯機對戰引擎。當天産生的贈送額度當天有效。
  • 若當天流量消耗超過贈送額度,超額部分需要按流量定價标準按量付費。

流量定價标準

付費類型 單價(元/GB)
國内站價格 0.8

注意:

上述所有“流量”均表示出流量;入流量不産生流量費用。

費用示例

某遊戲一天的 DAU 資料為2560,産生2GB流量。

贈送流量額度:1GB

該遊戲當天的費用分為兩部分:

  • DAU 費用:500 × 0 + (2560 - 500) × 0.0031 = 6.386元
  • 流量費用:(2GB - 1GB) × 0.8 = 0.8元

該遊戲當天産生的總費用為:6.386 + 0.8 = 7.186元

當然,如果你是一個測試的使用者,那麼這些免費額度足夠你來測試了.

那麼我們再來做第二個必要條件:實時伺服器,也許,你沒有這樣的伺服器,那你也不用擔心,因為騰訊雲中提供了一個完整的架構,你隻需要下載下傳并且在裡面修改即可.

下載下傳位址

其實這個伺服器的功能并不是要和CLS對接産生日志,其實它是一個遊戲伺服器的一個"擴充",比如遊戲服務端拓展邏輯,如儲存玩家資料,遊戲狀态同步等.

那麼下載下傳下來之後檢視裡面的檔案:

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

需要我們自己動手修改的,大部分都在index檔案中.我們先嘗試着打開這個檔案來檢視裡面的代碼:

import { mgobexsInterface } from './mgobexsInterface';

const gameServer: mgobexsInterface.GameServer.IGameServer = {
	mode: 'sync',
	onInitGameData: function (): mgobexsInterface.GameData {
		return {};
	},
	onRecvFromClient: function onRecvFromClient({ actionData, gameData, SDK, room, exports }: mgobexsInterface.ActionArgs<mgobexsInterface.UserDefinedData>) {
		gameData.pos = Math.floor(Math.random() * 2000);
		SDK.logger.debug('onRecvFromClient', gameData, actionData);
		setTimeout(() => {
			SDK.sendData({ playerIdList: [], data: { data: gameData, ts: new Date().toISOString() } }, { timeout: 2000, maxTry: 3 });
			SDK.exitAction();
		}, gameData.pos);
	},
	onJoinRoom: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onJoinRoom',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onCreateRoom: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onCreateRoom',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onLeaveRoom: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onLeaveRoom',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onRemovePlayer: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onRemovePlayer',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onDestroyRoom: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onDestroyRoom',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onChangeRoom: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onChangeRoom',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onChangeCustomPlayerStatus: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onChangeCustomPlayerStatus',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onChangePlayerNetworkState: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onChangePlayerNetworkState',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onStartFrameSync: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onStartFrameSync',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onStopFrameSync: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onStopFrameSync',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
	onChangeRoomPlayerProfile: function ({ actionData, gameData, SDK, room, exports }) {
		SDK.logger.debug(
			'onChangeRoomPlayerProfile',
			'actionData:', actionData,
			'gameData:', gameData,
			'room:', room
		);
	},
};

// 伺服器初始化時調用
function onInitGameServer(tcb: any) {
	// 如需要,可以在此初始化 TCB
	const tcbApp = tcb.init({
		secretId: "請填寫騰訊雲API密鑰ID",
		secretKey: "請填寫騰訊雲API密鑰KEY",
		env: "請填寫雲開發環境ID",
		serviceUrl: 'http://tcb-admin.tencentyun.com/admin',
		timeout: 5000,
	});

	// ...
}

export const mgobexsCode: mgobexsInterface.mgobexsCode = {
	logLevel: 'error+',
	logLevelSDK: 'error+',
	gameInfo: {
		gameId: "請填寫遊戲ID",
		serverKey: "請填寫後端密鑰",
	},
	onInitGameServer,
	gameServer
}
           

複制

那麼會看到裡面有房間相關的,玩家狀态相關的,還有一些幀同步相關的.當然,裡面還有一些需要你填寫你的,那麼我們先把這個填好,然後再次壓縮成zip檔案.

部署實時伺服器

登入 遊戲聯機對戰引擎控制台,單擊左側菜單【自定義服務邏輯】>【實時伺服器】。

單擊【建立服務】,進入建立服務界面。

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

裡面有幾個選項需要說明的是:

  • 選擇是否打通 VPC 網絡。打通騰訊雲的 VPC 網絡,可以通路您 VPC 下的資料庫和存儲,開通後不可變更。
  • 若您選擇打通 VPC ,而 VPC 下拉菜單為空,則您需要先去 私有網絡 建立一個 VPC;建議您在上海地區建立 VPC,如在其他地區建立,則需通過 對等連接配接 實作 VPC 跨地域通信(上海和其他地區),并為對等連接配接付費。

設定執行個體數量範圍,最大值為20。預設為自動調節,即在設定的執行個體範圍内自動調節,不會超出該設定範圍。

然後,點選部署,即可完成,那麼到這裡,我們的一個基本介紹與操前準備就完成了

繼續往下做,那麼要把index.js檔案中的需要填好的資訊填好,比如:

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

gameid和serverKey,這兩個字段都可以在你的遊戲對戰引擎控制台找到它,複制過去就可以了.

那麼接下來要填寫的是:

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

那麼這幾個需要填寫,首先前兩個都好說:

點選雲API擷取連接配接“https://console.cloud.tencent.com/cam/capi”,登入騰訊雲賬号,顯示如下:

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

擷取密鑰

然後最後一個env代表的是雲開發環境ID,那麼這個就需要到另外一個地方來擷取了.

https://console.cloud.tencent.com/tcb/env/index?rid=4,建立一個

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

然後點選下一步

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

然後你就會獲得一個雲開發環境ID,當然這個也是先用後付費.

把修改好的檔案儲存,并再次将它打包成zip格式.

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

然後回到日志部署的控制台,然後将此zip包上傳就好.

修改好之後點選部署,稍微等待一下即可

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

那麼這個時候就已經部署好了,你隻需要運作你的遊戲,然後就會在cls中看到日志.具體的日志就是index.js中的那些方法中所需要生成的日志.

然後運作你的遊戲

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

如果你沒有現成的遊戲,你同樣可以在騰訊雲上找到一個完整的例子,這裡給騰訊雲點個贊,因為他們的努力,給我們省了不僅僅是一點的事.

那麼具體的方法詳見我的另外一個系列的文章:

https://cloud.tencent.com/developer/article/1809023,這是系列的第一篇,有需要的可以翻翻看.

等待大概30s-1分鐘之後,會有日志資訊:

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS

添加描述

看,是不是超級自動化.這也和cls的介紹中說的一樣,隻需要點幾下滑鼠,即可完成部署.

enjoy it !

【日志服務CLS】騰訊雲遊戲對戰引擎 MGOBE接入CLS