如何用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…

原做者:赵照

相关文章
相关标签/搜索