复杂的自组网,偶发的长尾时延,无法连接网络的场景,这些问题是否制约你的游戏盈利? 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

如何用Nearby Service让你的游戏实现近距离联机相关推荐

  1. 如何用Nearby Service开发针对附近人群的精准广告推送功能

      当你想找一家餐厅吃饭,却不知道去哪家,这时候手机跳出一条通知,为你自动推送附近优质餐厅的信息,你会点击查看吗?当你还在店内纠结于是否买下一双球鞋时,手机应用给了你发放了老顾客5折优惠券,这样的广告 ...

  2. 教你集成Nearby Service实现一键Wi-Fi分享功能

    前言 朋友来家里做客.顾客到店里用餐-当他们想要给自己的手机链接Wi-Fi时,总免不了询问Wi-Fi名称和密码.这种问密码和给密码的过程十分麻烦,常常还会有听错或者输错密码的情况,更重要的是无意间会造 ...

  3. 如何用scratch实现打色子的游戏

    如何用scratch实现打色子的游戏      一.学习目标: 1.题目要求,见下图 Devin和Dee在派对上玩掷色子的游戏 (背景为party).Devin的色子是白色的,Dee的色子是蓝色的.按 ...

  4. Nearby Service为影音娱乐类APP提供“零”流量极速分享功能

    华为Nearby Service是HMS Core的一项重要特性,为开发者提供无需互联网的近距离高速数据传输能力,传输速度可超60MBps,能让您实现App内的音视频分享,让用户告别电脑中转的麻烦和节 ...

  5. unity3d游戏3d局域网联机吃球游戏完整项目源码分享

    unity3d游戏3d局域网联机吃球游戏完整项目源码分享 免费下载地址: 链接:https://pan.baidu.com/s/1APlOCmoK9aUfiVJD48dBQA 提取码:p5nl 复制这 ...

  6. 教你如何用Unity和Cardboard把3D游戏做成VR游戏

    原网址 随着Oculus宣布1月6日开启预售,2016年很可能成为VR游戏元年,但很多的调研显示,手游设备才是市场增长的关键,SuperData发布的报告显示,2016年全球VR游戏市场规模预计在51 ...

  7. 如何用python写汉诺塔游戏的辅助

    今天我来分享如何用python写一个游戏的辅助 大游戏的外挂我们写不了但是我们可以写个小游戏–汉诺塔 的外挂,这个游戏相信很多同学都玩过. 开始是三层,还很简单,四层还好,五层六层就有点费脑壳了. 话 ...

  8. 教你如何用DEV-C++实现迷你世界热门游戏——抢滩登陆(双人)

    在开始今天的内容之前,我要先和大家说声"对不起",因为最近有点忙,所以我一直没更新,今天终于写完了抢滩登陆双人版1.0(其实我原来要写密室逃脱的,但写一半文件没了,所以只好重写了这 ...

  9. 老司机教你如何用Unity和Cardboard把3D游戏做成VR游戏

    原网址 随着Oculus宣布1月6日开启预售,2016年很可能成为VR游戏元年,但很多的调研显示,手游设备才是市场增长的关键,SuperData发布的报告显示,2016年全球VR游戏市场规模预计在51 ...

最新文章

  1. 微软开源 Quantum Katas,领先的量子编程解决方案
  2. 算法知识点总结——算法分析基础
  3. powerdns mysql_安装PowerDNS(使用MySQL后端)和Poweradmin在Debian Lenny
  4. 【另类见解】那些要保证缓存和数据库数据一致性的最后怎么了?
  5. 将状态机模式实现为流处理器
  6. 线段树||BZOJ1593: [Usaco2008 Feb]Hotel 旅馆||Luogu P2894 [USACO08FEB]酒店Hotel
  7. arch 还原pacman_如何使用Pacman在Arch Linux中安装Go
  8. Centos开放查看端口 防火墙关闭打开
  9. echarts grid的样式位置_CSS Grid 系列(下)-使用Grid布局构建网站首页
  10. 你是否还在写try-catch-finally?来使用try-with-resources优雅地关闭流吧
  11. Springboot 统一maper 和逆向工程
  12. 搭搭云中如何创建表单
  13. 计算机技术 安防 工程师考试,2020年上半年信息安全工程师考试报考指南
  14. 启发式算法 Heuristic
  15. css写三角兼容ie6
  16. html的size属性,HTML size属性用法及代码示例
  17. 聚观早报 | 百度文心一言被用户挤爆;贝莱德准备竞购瑞信
  18. C# 使用Redis实现粉丝好友互粉数据存储和查询
  19. 免费申请国外大学edu教育邮箱安装微软office全家桶
  20. iphone手游模拟器_如何将iPhone用作手电筒

热门文章

  1. IDA*对A*的改进
  2. pyplot散点图标记大小
  3. visual pushing grasping 模型部分 Q值怎么来的
  4. mipi csi丢帧
  5. 5个自媒体写作必备的免费工具,助你提高写作能力
  6. springboot基于微信小程序的校园外卖系统 毕业设计-附源码091024
  7. 【每日新闻】对抗微软双屏Surface 苹果将推出可折叠iPad
  8. HTTP中request详解
  9. 物联网感知——无线传感网WSN
  10. Android monkey使用简略