SlideShare a Scribd company logo
1
モバイル通信を使わない
近接端末間通信対戦のレシピ
Bluetoothの現状と使い所をさぐる
2
このセッションはスマフォなどでの撮影OKです、た
だし、無音のカメラアプリを使うなど他の人の迷惑に
ならないようにしてください
SNSなども積極的に投稿OKなのでシェアをどんどん
してください。発表資料なども講演後アップされると
思いますので、シェアよろしくお願いします。
3
Mercari R4D XR所属のxR Research
Engineer。Mercariで、xRの技術リサー
チをしながら、XJIGENという会社名義で
AR/VRやスマフォアプリの開発の仕事も受
けています
中村 太郎@nakatarotaro
4
● リアルタイム同期をして近くにいるプレイヤ同士のキャラを動かすアクシ
ョンゲーム
● 画面上に同時に同期するキャラ数は4キャラ程度
● 2プレイヤで対戦形式または、協力プレイなどのゲーム
今回のBluetooth通信をするにあたって想定しているシーン
5
ここでちょっと質問
何かしらのBluetooth通信の実装をやったことがある方はどのくらいいますか?
6
現状でよく使われているBluetoothデバイスとBluetoothの通信
の種類とBLEの基礎知識
アジェンダ
スマートフォン間通信の実装サンプル
相手方の端末を選ばせる工夫
Android特有の問題
02
03
04
01
まとめ06
iOS特有の問題05
7
● 心拍センサー
● ケーデンス(自転車の車輪の回転数等)センサー
● 気圧センサー
● バッテリーレベル
● 血圧センサー
など
The Bluetooth Special Interest Group (Bluetooth SIG)が仕様を決めてい
ます。
現状でよく使われているデバイス(主にIoT製品)
8
詳しくはwww.bluetooth.com
https://www.bluetooth.com/specifications/gatt/characteristics/
9
通信方法については2種類
シリアル通信
SPP(Serial Port Profile)によるBluetooth通信、Bluetoothの初期のころからある通
信で、スマートフォンで使われている通信プロトコルはRFCOMMと呼ばれています。
シリアル通信をエミュレートしたものでAndroidだけがAndroid2.0のころからサポート
している
BLE(Bluetooth Low Energy)通信
低消費電力のBluetooth通信を目指したもので、デバイス的にBluetooth4.0からサポ
ート,OSとしては、Android4.3から、iOS6以降からサポート
現状使えるBluetoothの通信方法の種類
10
BLEにも、ネットワーク通信でいうサーバ(ホスト)、クライアント(ゲスト)の概念
があり、
Peripheral
ホストの役割、アドバタイズすることにより、データを提供するサービスとして、
Centralに発見できるようにしてデータを伝える
Central
ゲストの役割、データを要求したり書き込みを要求したりする
蛇足ですが、もちろん、シリアル通信にもホスト、ゲストの概念はあります
BLEの基礎知識
11
スマートフォン間通信の実装
01 Android-Android(Serial通信)
02 Android-Android(BLE通信)
03 Android(Host)-iOS(BLE通信)
04 iOS(Host)-Android(BLE通信)
05 iOS-iOS(BLE通信)
12
通信速度まとめ
通信の種類 Host側デバイス Guest側デバイス 速度(HOST) 速度(Guest)
Serial Android Android 6000byte/s~7000byte/s 6000byte/s~7000byte/s
BLE Android Android 2000byte/s 100byte/s~150byte/s
BLE Android iOS 700byte/s 2000byte/s
BLE iOS Android 1500byte/s 1000byte/s
BLE iOS iOS 800byte/s~1000byte/s 800byte/s~1000byte/s
13
相手方の端末を選ばせる工夫
● 実際のゲームでは、先程の動画のようにデバイスをユーザ
ーに選択させるのはナンセンス
● ユーザーに選択させない方法でつなぐにしても相手先がわ
からないので、相手に通信して解決する方法が、、、
14
どうしたらいいでしょうか?
15
解決策
BLEには、Advertizingするときにキーを指定して値を入れ込んで送ること
ができます。
キーを仕込む方法は、Androidはサポートしてますが、iOSではサポートし
てません(泣)
ただし、iOSでも値は取得できます
iOSの場合Advertizingするときの名前を設定できるので、そこに値をいれ
こむことで解決することは可能です
Android同士のシリアル通信のときにもiOSと似たことができて名前を設定
することができるのでそこに値を仕込むことが可能です
16
具体的には
1. ホスト側でUUIDなどでユニークな値を生成
2. 先頭の6文字程度の値を整数化してホストを見ているユーザーに見せる
3. 先頭の6文字程度を名前としてまたは、BLEの機能を使って送り込む
4. ゲスト側でのユーザーがホストのユーザーから値を教えてもらう
5. その値をゲストに入力をうながす
6. 入力された値をもとに戻し、ホストを特定し、接続しにいく
17
18
Android特有の問題
● Androidでは、BLEを使用するときにAndroid6から、位置のパーミ
ッションが必要
● ユーザーによっては、なぜ位置情報が必要か怪しまれる可能性がある
● 端末によっては、位置情報をオンを促すとアドレス帳のデータを取得
されると警告する端末がある
19
iOS特有の問題
● ホスト側で接続が切断されたことが検知できない
● Androidではできる、MTUの設定が柔軟に設定できないので、速度の
高速化を柔軟には行えない(ただしこのあたりはOSが自動でやってく
れるようである)
20
まとめ
● 各OS間のBluetooth速度の違いをみてきました
● その違いによってどの通信を使うか選定ができるようになりました
● 通信速度の具合がわかったので、キャラクターの情報を送るときの通
信量の目処がわかりました
● 接続する際にユーザーに負担になる選択をさせない方法を学びました
21
ソースコード
今回作成したソースコードを公開しました
現状ライセンス表記はしてないですがMITライセンスを
適応するつもりです。
Unity用テストプログラム
https://github.com/tarotaro/BluetoothNetTest.git
iOSライブラリ
https://github.com/tarotaro/btsocketlib.git
Androidライブラリ
https://github.com/tarotaro/btlib.git
22
ご清聴ありがとうございました

More Related Content

What's hot

新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会
新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会
新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会
モノビット エンジン
 
Hubsカスタマイズ 行動ログ取得やバックエンドの話
Hubsカスタマイズ 行動ログ取得やバックエンドの話Hubsカスタマイズ 行動ログ取得やバックエンドの話
Hubsカスタマイズ 行動ログ取得やバックエンドの話
hironroinakae
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
UnityTechnologiesJapan002
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
Yuta Imai
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
infinite_loop
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
Unity Technologies Japan K.K.
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
Mixed Reality Toolkit V3について
Mixed Reality Toolkit V3についてMixed Reality Toolkit V3について
Mixed Reality Toolkit V3について
Takahiro Miyaura
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
モノビット エンジン
 
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
Takahiro Miyaura
 
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめUnreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
エピック・ゲームズ・ジャパン Epic Games Japan
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料
Daisuke Masubuchi
 
Azure Spatial Anchors V2概要 ~空間情報の共有~
Azure Spatial Anchors V2概要 ~空間情報の共有~Azure Spatial Anchors V2概要 ~空間情報の共有~
Azure Spatial Anchors V2概要 ~空間情報の共有~
Takahiro Miyaura
 
これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~
これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~
これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~
MicroAd, Inc.(Engineer)
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解した
torisoup
 
TDPT + VMCプロトコル on WebRTC
TDPT + VMCプロトコル on WebRTCTDPT + VMCプロトコル on WebRTC
TDPT + VMCプロトコル on WebRTC
hironroinakae
 
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
Mori Ken
 
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
Game Tools & Middleware Forum
 
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
UnityTechnologiesJapan002
 

What's hot (20)

新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会
新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会
新しくなったモノビットエンジンを使って10万人規模のサーバを構築するノウハウを公開!2017年10月27日モノビットエンジン勉強会
 
Hubsカスタマイズ 行動ログ取得やバックエンドの話
Hubsカスタマイズ 行動ログ取得やバックエンドの話Hubsカスタマイズ 行動ログ取得やバックエンドの話
Hubsカスタマイズ 行動ログ取得やバックエンドの話
 
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
 
オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫オンラインゲームの仕組みと工夫
オンラインゲームの仕組みと工夫
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
Cinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作るCinemachineで見下ろし視点のカメラを作る
Cinemachineで見下ろし視点のカメラを作る
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 
Mixed Reality Toolkit V3について
Mixed Reality Toolkit V3についてMixed Reality Toolkit V3について
Mixed Reality Toolkit V3について
 
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
MRU : Monobit Reliable UDP ~5G世代のモバイルゲームに最適な通信プロトコルを目指して~
 
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
 
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめUnreal Engine 4.27 ノンゲーム向け新機能まとめ
Unreal Engine 4.27 ノンゲーム向け新機能まとめ
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料
 
Azure Spatial Anchors V2概要 ~空間情報の共有~
Azure Spatial Anchors V2概要 ~空間情報の共有~Azure Spatial Anchors V2概要 ~空間情報の共有~
Azure Spatial Anchors V2概要 ~空間情報の共有~
 
これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~
これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~
これから機械学習エンジニアとして戦っていくみなさんへ ~MLOps というマインドセットについて~
 
UniRx完全に理解した
UniRx完全に理解したUniRx完全に理解した
UniRx完全に理解した
 
TDPT + VMCプロトコル on WebRTC
TDPT + VMCプロトコル on WebRTCTDPT + VMCプロトコル on WebRTC
TDPT + VMCプロトコル on WebRTC
 
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
02 第3.1節-第3.5節 ROS2の基本機能(1/2) ROS2勉強合宿 @別府温泉
 
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYOFINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
FINAL FANTASY XVにおけるPhoton利用事例 - Photon運営事務局 GTMF 2018 OSAKA / TOKYO
 
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
【Unite Tokyo 2019】バンダイナムコスタジオ流Unityの使い方
 

Similar to モバイル通信を使わない 近接端末間通信対戦のレシピ

クロスプラットフォーム開発としての「Mixed Reality Toolkit V2」が持つ可能性
クロスプラットフォーム開発としての「Mixed Reality Toolkit V2」が持つ可能性クロスプラットフォーム開発としての「Mixed Reality Toolkit V2」が持つ可能性
クロスプラットフォーム開発としての「Mixed Reality Toolkit V2」が持つ可能性
Takahiro Miyaura
 
プログラミング生放送20160213
プログラミング生放送20160213プログラミング生放送20160213
プログラミング生放送20160213
雅希 森
 
HoloLens 2 TutorialをMobileARで動かす
HoloLens 2 TutorialをMobileARで動かすHoloLens 2 TutorialをMobileARで動かす
HoloLens 2 TutorialをMobileARで動かす
Takahiro Miyaura
 
Mixed Reality Toolkit V2.2.0のMobile対応について
Mixed Reality Toolkit V2.2.0のMobile対応についてMixed Reality Toolkit V2.2.0のMobile対応について
Mixed Reality Toolkit V2.2.0のMobile対応について
Takahiro Miyaura
 
Way-Findingをやってやった ~ Azure Spatial Anchorsでね~
Way-Findingをやってやった ~ Azure Spatial Anchorsでね~Way-Findingをやってやった ~ Azure Spatial Anchorsでね~
Way-Findingをやってやった ~ Azure Spatial Anchorsでね~
Takahiro Miyaura
 
MRTK V2のHand MenuをHoloLens1でつかう方法
MRTK V2のHand MenuをHoloLens1でつかう方法MRTK V2のHand MenuをHoloLens1でつかう方法
MRTK V2のHand MenuをHoloLens1でつかう方法
Takahiro Miyaura
 
だんグラで「Mixed Reality Toolkit V2」のサンプルを動かしてみた
だんグラで「Mixed Reality Toolkit V2」のサンプルを動かしてみただんグラで「Mixed Reality Toolkit V2」のサンプルを動かしてみた
だんグラで「Mixed Reality Toolkit V2」のサンプルを動かしてみた
Takahiro Miyaura
 
World Locking Toolsについて調べている話(2020/04/22)
 World Locking Toolsについて調べている話(2020/04/22) World Locking Toolsについて調べている話(2020/04/22)
World Locking Toolsについて調べている話(2020/04/22)
Takahiro Miyaura
 
「Mixed Reality Toolkit V1」のあの機能ってV2では?~ 空間マッピングとTagalong ~
「Mixed Reality Toolkit V1」のあの機能ってV2では?~ 空間マッピングとTagalong ~「Mixed Reality Toolkit V1」のあの機能ってV2では?~ 空間マッピングとTagalong ~
「Mixed Reality Toolkit V1」のあの機能ってV2では?~ 空間マッピングとTagalong ~
Takahiro Miyaura
 
World Locking Toolについて
World Locking ToolについてWorld Locking Toolについて
World Locking Toolについて
Takahiro Miyaura
 
Arxan導入前後で変わったこと
Arxan導入前後で変わったことArxan導入前後で変わったこと
Arxan導入前後で変わったこと
Yusuke Shirakawa
 
2016 0914 iotlt勉強会_レーザー加工機のすすめ
2016 0914 iotlt勉強会_レーザー加工機のすすめ2016 0914 iotlt勉強会_レーザー加工機のすすめ
2016 0914 iotlt勉強会_レーザー加工機のすすめ
yasuyuki_suzuki
 
UIデザイン設計から開発をつなぐ「MRTK Figma Bridge for Unity」を使ってみよう
UIデザイン設計から開発をつなぐ「MRTK Figma Bridge for Unity」を使ってみようUIデザイン設計から開発をつなぐ「MRTK Figma Bridge for Unity」を使ってみよう
UIデザイン設計から開発をつなぐ「MRTK Figma Bridge for Unity」を使ってみよう
Takahiro Miyaura
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみました
Tomohiro Suzuki
 
Couchbase x unity
Couchbase x unityCouchbase x unity
Couchbase x unity
MakotoItoh
 
IoT関連のAzureを使い倒して お部屋の空気観測装置を作った話
IoT関連のAzureを使い倒して お部屋の空気観測装置を作った話IoT関連のAzureを使い倒して お部屋の空気観測装置を作った話
IoT関連のAzureを使い倒して お部屋の空気観測装置を作った話
Takahiro Miyaura
 
モンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれモンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれ
Yusuke Shirakawa
 
Azure Remote Renderingを試す
Azure Remote Renderingを試すAzure Remote Renderingを試す
Azure Remote Renderingを試す
Takahiro Miyaura
 
MRTK3を調べてみた
MRTK3を調べてみたMRTK3を調べてみた
MRTK3を調べてみた
Takahiro Miyaura
 
HoloLens1アプリをHoloLens2アプリに変換できるかチャレンジ
HoloLens1アプリをHoloLens2アプリに変換できるかチャレンジHoloLens1アプリをHoloLens2アプリに変換できるかチャレンジ
HoloLens1アプリをHoloLens2アプリに変換できるかチャレンジ
Takahiro Miyaura
 

Similar to モバイル通信を使わない 近接端末間通信対戦のレシピ (20)

クロスプラットフォーム開発としての「Mixed Reality Toolkit V2」が持つ可能性
クロスプラットフォーム開発としての「Mixed Reality Toolkit V2」が持つ可能性クロスプラットフォーム開発としての「Mixed Reality Toolkit V2」が持つ可能性
クロスプラットフォーム開発としての「Mixed Reality Toolkit V2」が持つ可能性
 
プログラミング生放送20160213
プログラミング生放送20160213プログラミング生放送20160213
プログラミング生放送20160213
 
HoloLens 2 TutorialをMobileARで動かす
HoloLens 2 TutorialをMobileARで動かすHoloLens 2 TutorialをMobileARで動かす
HoloLens 2 TutorialをMobileARで動かす
 
Mixed Reality Toolkit V2.2.0のMobile対応について
Mixed Reality Toolkit V2.2.0のMobile対応についてMixed Reality Toolkit V2.2.0のMobile対応について
Mixed Reality Toolkit V2.2.0のMobile対応について
 
Way-Findingをやってやった ~ Azure Spatial Anchorsでね~
Way-Findingをやってやった ~ Azure Spatial Anchorsでね~Way-Findingをやってやった ~ Azure Spatial Anchorsでね~
Way-Findingをやってやった ~ Azure Spatial Anchorsでね~
 
MRTK V2のHand MenuをHoloLens1でつかう方法
MRTK V2のHand MenuをHoloLens1でつかう方法MRTK V2のHand MenuをHoloLens1でつかう方法
MRTK V2のHand MenuをHoloLens1でつかう方法
 
だんグラで「Mixed Reality Toolkit V2」のサンプルを動かしてみた
だんグラで「Mixed Reality Toolkit V2」のサンプルを動かしてみただんグラで「Mixed Reality Toolkit V2」のサンプルを動かしてみた
だんグラで「Mixed Reality Toolkit V2」のサンプルを動かしてみた
 
World Locking Toolsについて調べている話(2020/04/22)
 World Locking Toolsについて調べている話(2020/04/22) World Locking Toolsについて調べている話(2020/04/22)
World Locking Toolsについて調べている話(2020/04/22)
 
「Mixed Reality Toolkit V1」のあの機能ってV2では?~ 空間マッピングとTagalong ~
「Mixed Reality Toolkit V1」のあの機能ってV2では?~ 空間マッピングとTagalong ~「Mixed Reality Toolkit V1」のあの機能ってV2では?~ 空間マッピングとTagalong ~
「Mixed Reality Toolkit V1」のあの機能ってV2では?~ 空間マッピングとTagalong ~
 
World Locking Toolについて
World Locking ToolについてWorld Locking Toolについて
World Locking Toolについて
 
Arxan導入前後で変わったこと
Arxan導入前後で変わったことArxan導入前後で変わったこと
Arxan導入前後で変わったこと
 
2016 0914 iotlt勉強会_レーザー加工機のすすめ
2016 0914 iotlt勉強会_レーザー加工機のすすめ2016 0914 iotlt勉強会_レーザー加工機のすすめ
2016 0914 iotlt勉強会_レーザー加工機のすすめ
 
UIデザイン設計から開発をつなぐ「MRTK Figma Bridge for Unity」を使ってみよう
UIデザイン設計から開発をつなぐ「MRTK Figma Bridge for Unity」を使ってみようUIデザイン設計から開発をつなぐ「MRTK Figma Bridge for Unity」を使ってみよう
UIデザイン設計から開発をつなぐ「MRTK Figma Bridge for Unity」を使ってみよう
 
Cocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみましたCocos sharpでゲーム開発してみました
Cocos sharpでゲーム開発してみました
 
Couchbase x unity
Couchbase x unityCouchbase x unity
Couchbase x unity
 
IoT関連のAzureを使い倒して お部屋の空気観測装置を作った話
IoT関連のAzureを使い倒して お部屋の空気観測装置を作った話IoT関連のAzureを使い倒して お部屋の空気観測装置を作った話
IoT関連のAzureを使い倒して お部屋の空気観測装置を作った話
 
モンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれモンスターストライクにおける監視システムのあれこれ
モンスターストライクにおける監視システムのあれこれ
 
Azure Remote Renderingを試す
Azure Remote Renderingを試すAzure Remote Renderingを試す
Azure Remote Renderingを試す
 
MRTK3を調べてみた
MRTK3を調べてみたMRTK3を調べてみた
MRTK3を調べてみた
 
HoloLens1アプリをHoloLens2アプリに変換できるかチャレンジ
HoloLens1アプリをHoloLens2アプリに変換できるかチャレンジHoloLens1アプリをHoloLens2アプリに変換できるかチャレンジ
HoloLens1アプリをHoloLens2アプリに変換できるかチャレンジ
 

モバイル通信を使わない 近接端末間通信対戦のレシピ

Editor's Notes

  1. 本日は、モバイル通信を使わない近接端末間通信対戦のレシピと題して bluetoothに関する発表をさせていただきます。
  2. まずは自己紹介ですが 中村太郎といいます twitterIDは @nakatarotaroです。 MercariのR4D XR所属1年強 技術リサーチなどをしています、 個人で、XJIGENという会社をもっていて、 副業としてVR/AR/Game スマフォアプリ などの受託開発/技術支援もしています そのなかで得られた知見を今回は話させていただきます。
  3. 本日は、(題目を読む) このような感じのながれで発表していきます
  4. 現状、よく使われるbluetoothのデバイスとして、主にIoT系のデバイスが多いのですが 心拍センサー、スポーツ系の自転車のツーリングで使われるケーデンスセンサー 気圧センサー バッテリーレベル 血圧センサーなどのデバイスが BluetoothSIGという機関で通信のプロトコルなどが決められています
  5. 詳しくは、bluetooth.comを見てみてください、いろいろな面白いセンサーなどの仕様が載っているかと思います
  6. スマートフォンの通信方法には2通りの通信方法が用意されています、 一つはシリアル通信という方法でRFCOMMというプロトコルを使って通信です。 Android2.0でサポートされており、通常のiOS開発者にはサポートされていません。 もう一つは、BLEという通信方法で、低電力の通信を目指したもので、 Androidは、4.3からiOSはバージョン6からサポートされています。
  7. BLEにも、ネットワーク通信でいうサーバ、クライアントの概念があます、 サーバ側になるのがPeripheralというもので、繋がれるよーというのを発信することするのをアドバタイズというのですが、それを行い クライアントから発見されて繋がれるようにします、主にデータを発信する側に使われていて、先ほどのIoTデバイスのほとんどはこちら側です。 クライアントのほうは、CentralといいPeripheralに接続をしデータを要求したり、書き込みを要求したりします。
  8. それでは、実際にスマートフォン間通信の実装してみて実験してみました それぞれAndroid,iOSにおいて、どちらかがHostになったりGuestになったり、Androidの場合はシリアル通信もできるので合計5つの場合を確認していきましょう。
  9. 通信速度をそれぞれの通信プロトコル、OS、,HOST、Guest に分けて表にまとめてみました Android Androidシリアル通信が速度がずば抜けていますね Android Android BLE接続は、それぞれの固有端末に影響を受けているみたいです iOSとAndroidのBLEでは、iOSをHost側にした方が速度は出るようです
  10. 次に、ゲームなどで実際に接続する場合の方法についてお話します 実際のゲームをプレイするユーザーにとって考えると、動画のようにデバイスを選択させて接続させるのは、ちょっとナンセンスですよね、 しかし、接続前なのでデバイスの情報を送るのは普通に考えると難しそうです。
  11. どうしたらいいでしょうか
  12. なんと、BLEには、Advertizingするときにキーを指定して値を入れ込んで送ることができます。 しかし、残念ながら、Androidではサポートしてますが、iOSではサポートしてません。ではどうしたらいいかというと、 iOSの場合は、Advertizingするときに名前を設定できるので、そこの名前のプロパティに値を入レこむことで解決することができそうです。 速度が早いので、Android同士はBLEではなくシリアル通信を使いたいと思いますが、シリアル通信の時にもデバイスに名前を設定できるので、 それで解決できそうです。
  13. 具体的には、1ー6までを読んでいく
  14. 文字だけではわかりにくいので、図にしてみました
  15. そして、それぞれのOSで特有の問題があります Androidでは、意味がよくわからないのですが、BLEを使用する時に位置パーミッションが必要です。 ユーザーによっては、位置情報使わないのに位置情報を使うので、怪しいアプリではないかと怪しまれるクレームを入れる可能性があります。 また、端末によっては、位置情報をオンを促すと、アドレス帳のデータが取られると警告する端末もあるそうです。
  16. iOSの方でも特有の問題があります、ホスト側の方で接続が切断されたことが検知できません、なのでデータが長い時間送られてこなかったら、切断されたなどの処理が必要になりそうです 次にこれはあまり大きな問題でもないのですが、Androidの方では、MTUと呼ばれる速度のパラメータを調整ができる値を手動で設定できるのですが iOSの方ではできません。
  17. まとめです それぞれを読む
  18. 今回接続するためのBluetoothのUnity用のiOSおよびAndroidのライブラリを作成したもののソースコードおよびテスト用のコードを公開しています。 ご自分の端末でぜひ試してみてください
  19. ご静聴ありがとうございました。