如何用Nearby Service讓你的遊戲實現近距離聯機

  複雜的自組網,偶發的長尾時延,沒法鏈接網絡的場景,這些問題是否制約你的遊戲盈利? HMS Nearby Service(近距離通訊服務)提供了便捷的近距離P2P直連通訊,可爲你的遊戲帶來: html

在這裏插入圖片描述

  Nearby Service在遊戲場景下具備以下技術優點:android

  • 綜合使用藍牙、Wi-Fi進行節點發現。你的遊戲集成以後,能夠自動搜索附近打開遊戲的用戶,無需用戶手動打開熱點進行鏈接。
  • 自動選擇最優的組網和傳輸方式。支持點對點、星型、網狀多種拓撲,支持Wi-Fi P2P,無需鏈接到同一個AP。
  • 使用華爲自研傳輸協議,高帶寬,低延時,穩定可靠。

應用開發

  咱們在GitHub上找到一款名爲《Snake Land》的開源貪食蛇遊戲, 以此款遊戲爲例子,集成Nearby Service做爲遊戲的網絡通訊管道,實現聯機對戰功能。《Snake Land》原先使用開源框架Kryonet實現網絡通訊層。Kryonet只支持鏈接同一路由器的手機設備之間互聯。集成Nearby Service後,手機鏈接不一樣Wi-Fi、不鏈接Wi-Fi、或者在沒有網絡等場景下,均可以與附近的手機聯機,實現真正的「靠近即連」。git

開發準備

  集成Nearby Service以前,須要完成如下準備工做github

  • 配置AppGallery Connect
  • 開通近距離通訊服務
  • 集成SDK
  • 配置混淆腳本   詳細信息請參考開發準備

如何使用Nearby Service

  咱們首先來看一下Kryonet與Nearby Service的接口對比:bash

Kryonet
開始廣播 bind
開始掃描 discoverHost
請求鏈接 connect
鏈接成功 connected
鏈接斷開 disconnected
收到數據 received
發送數據 Send

  Nearby Service和 Kryonet的接口是一致的,將Kryonet的接口替換爲Nearby Service的接口,並根據參數類型的差別進行一些參數轉換工做。網絡

權限申請

  由於Nearby Service會用到藍牙發現,WIFI熱點建立等操做,所以須要向用戶顯示申請一些權限。代碼以下:框架

<uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
複製代碼

編譯、加載、調試

  完成上述業務代碼的補全以後,能夠進行編譯,生成apk,安裝到兩臺Android 8以上的安卓手機並運行。詳細開發步驟請參考Codelabide

成果展現

在這裏插入圖片描述
  一方點擊「Creat a Game」,另外一方點擊「Join a Game」,即開始互相發現。發現成功後,主機點擊「GO!」按鈕開始遊戲。滑動屏幕控制綠色小蛇轉向,獲取更多食物,小蛇頭部撞到障礙即失敗。

  若是你對實現方式感興趣,能夠在Github上下載源碼: github.com/HMS-Core/hm…ui

結後語

  基於Nearby Connection, 能夠給你的APP實現以下相關功能:spa

  1. 本地多人遊戲:自組網,提供低延時(小於50ms)、穩定可靠的傳輸體驗。
  2. 離線文件傳輸:無需流量,可達80MB/S的傳輸速度。

更詳細的開發指南參考華爲開發者聯盟官網:developer.huawei.com/consumer/cn…


原文連接:developer.huawei.com/consumer/cn…

原做者:趙照

相關文章
相關標籤/搜索