zoukankan      html  css  js  c++  java
  • 如何用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
    原作者:赵照

  • 相关阅读:
    将Emacs Org mode用于GTD任务管理
    以Emacs Org mode为核心的任务管理方案
    Epson L4158打印机安装与配置
    使用wget命令下载网络资源
    Apt下载安装包时Hash校验和不符
    Deep Learning专栏--FFM+Recurrent Entity Network的端到端方案
    Deep Learning专栏--强化学习之从 Policy Gradient 到 A3C(3)
    Deep Learning专栏--强化学习之MDP、Bellman方程(1)
    Deep Learning基础--Softmax求导过程
    Deep Learning基础--随时间反向传播 (BackPropagation Through Time,BPTT)推导
  • 原文地址:https://www.cnblogs.com/developer-huawei/p/13346258.html
Copyright © 2011-2022 走看看