如何用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" />

1
2
3
4
5
6
编译、加载、调试
  完成上述业务代码的补全之后,可以进行编译,生成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实现如下相关功能:

本地多人游戏:自组网,提供低延时(小于50ms)、稳定可靠的传输体验。
离线文件传输:无需流量,可达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
原作者:赵照
————————————————
版权声明:本文为CSDN博主「华为开发者论坛」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44708240/article/details/107467619

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值