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


  復雜的自組網,偶發的長尾時延,無法連接網絡的場景,這些問題是否制約你的游戲盈利? HMS Nearby Service(近距離通信服務)提供了便捷的近距離P2P直連通信,可為你的游戲帶來:
在這里插入圖片描述

  Nearby Service在游戲場景下具有如下技術優勢:

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

應用開發

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

開發准備

  集成Nearby Service之前,需要完成以下准備工作

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

如何使用Nearby Service

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

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以上的安卓手機並運行。詳細開發步驟請參考Codelab

成果展示

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

  如果你對實現方式感興趣,可以在Github上下載源碼:
https://github.com/HMS-Core/hms-nearby-demo/tree/master/NearbyGameSnake

結后語

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

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

更詳細的開發指南參考華為開發者聯盟官網:https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/introduction-0000001050040566


原文鏈接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0201303654965850166&fid=18
原作者:趙照


免責聲明!

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



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