CEDEC 2014 開催から半年ほど経過してしまいましたが
せっかくなので当時のレポートを公開しておこうと思います
概要
スマートフォン向けゲームでも、リアルタイム通信を用いたタイトル開発の需要が増えてきています。
そこで、あらゆるキャリア、あらゆる場所でリアルタイム通信のサンプルプログラムを動かして、
実際にどこまでゲームが成立するか調査、発表します。
3G回線、LTE回線がどこまでリアルタイム通信に対して性能を発揮するのか?
トンネルや電波状況の悪い場所ではどのような通信状況になるのか?
通信キャリアごとの通信品質の違いは?などなど、皆様がモバイル環境でリアルタイム通信を
用いたゲームを企画、開発するときに役立つように、モバイル回線の実力を検証します。
アジェンダ
- 基礎知識編(エンジニアではない人向け)
 - モバイル回線の通信品質を検証実験してみた編
 - まとめ編
 
1.基礎知識編
リアルタイム通信とは
- 複数のプレイヤーが同時に遊ぶゲーム内容
 - 自分のゲーム画面上で、他のプレイヤーが操作するキャラクターが走り回ったり、
 - その相手とチャットができたりするゲーム
 
リアルタイム通信を用いたゲームの同期技術
キー同期による同期方式
- キー情報(コントローラの入力情報)を毎フレーム相手の端末に送る
 - デメリットとしては、通信料を食う、悪い回線だと操作感も悪くなる
 - 回線が常時安定していないと頻繁に画面か操作キャラが止まる
 
最低限のゲーム内容だけ通信する同期方式
- 貧弱かつ不安定な回線でも大人数同時プレイを実現できる方式
 - 一人用ゲームに比べてゲームロジックが大幅に複雑になる
 - 大人数のMOやMMORPGで採用されている
 - ずれても問題ない通信をUDP通信で行う
 - 同期が必要な処理だけTCP通信で行うような同期方式もある
 
P2P型とサーバ/クライアント型
P2P型
- 通信端末同士を直接繋いで通信を行う方式
 - コンシューマゲーム機では標準でP2P対戦を行うためのライブラリが提供されている
 - ゲームサーバを建てなくても良い
 - ホストマシンがシャットダウンされたら全参加者のゲームが強制的に終わってします
 
サーバ/クライアント型
- チートに強い
 - 安定している
 - サーバの開発費用、管理費が…
 
TCPとUDP
TCP
- 通信データが確実に相手に届く事が保証されている
 - UDPに比べて、応答速度や転送速度が低いと言われている
 
UDP
- 通信の安定性を保証しない通信制御プロトコル
 - 応答速度や通信速度でTCPより優れている
 
検証実験してみた編
- モバイル回線を使って何人までの対戦であれば
 - プレイヤーにストレス無くリアルタイム通信のゲームが遊べるのか
 - 基地局を移動したときに回線状態はどうなるのか
 - スマホを常時接続させてしまっても大丈夫なのか
 
テストプログラム
Unityで作ったMO風ビューアプログラム
↑
|光回線
|
計測プログラム(AWS東京リージョン)
|
|モバイル回線
↓
au Xperia Z1
Docomo XperiaZ1
SoftBank AQUOS CRYSTAL
同期方式
- 「キー同期による同期方式」
 - 同期結果が回線の品質に影響されやすいので、回線の善し悪しを視覚的に確認しやすい
 
テストプログラムの内容
- 
データの通信経路および通信料に付いて
- UPデータ量を1として接続人数x1を受信するプログラムとする
 
 - 
1フレーム当たりの1プレイヤーの情報量
- 64byte
 
 - 
フレーム受信に対する反応は?
- 5秒間に周りを2周移動する
 
 - 
接続人数は何人までテスト?
- 128
 
 - 
fpsはどこまでやってみる?
- 30,60,120,240fps
 
 - 
TCPとUDPについて
- それぞれ切り替えてテスト
 
 - 
周波数帯、機種によっての速度差は?
- あくまで参考程度
 
 
平常時のping速度と応答速度を計測
- テスト条件
- 接続人数:4,8,16,32,64,128人
 - FPS:30,60,120,240
 - プロトコル:TCP、UDP
 
 
これらの条件を1つずつ5秒間試して、次の条件に自動的に移行して
最後まで自動テストするプログラムを開発
キャリア docomo
- 
回線 LTE
 - 
通信制限状態 off
 - 
通信データ量(1Pあたり) 64
 - 
UDPの方が早い
 - 
速度差は1.4倍〜1.8倍ほど
 - 
TCPよりUDPの方が平均1.4倍高速
 - 
AUとSoftBankもおおむね同じ結果
 - 
UDPのパケットロスは全く発生しなかった
 - 
前後入れ替えのみ0.04%発生した
 
キャリア au
- 
回線 LTE
 - 
通信制限状態 off
 - 
通信データ量(1Pあたり) 64
 - 
Docomoと同じくTCPよりUDPの方が速い
 - 
パケットロスは全く発生しない
 
キャリア softbank
- 
回線 LTE
 - 
通信制限状態 off
 - 
通信データ量(1Pあたり) 64
 - 
他のキャリアに比べてpingの速度が非常に高速
 - 
実際のデータ転送を含めた応答時間はあまりさがなかった
 - 
パケットロスは全く発生しなかった
 
LTE通信
- 3キャリアともパケットロスは全く発生しなかった
 - TCPよりUDPの方が応答速度が高速
 - fpsは30以上あげても、応答速度的に変化は無かったかもしれないが
値がばらけすぎていて、あまり断定的な事は言えない - もっと回数を重ねてテストすると中間の平均値が撮れるかもしれないが
外部環境に大きく依存するので、あまり意味はないかもしれない 
3G回線
- ドコモが極端に悪い値になってしまったが、値に大きなばらつきがあるので、
一概にドコモの3Gの品質が良くないとは言えない - TCPは100msを軽く超えてしまう
 
まとめ
- 
常時接続型のオンラインゲームをモバイル向けに開発しても大丈夫
 - 
あまり断線を気にする必要はなさそう
 - 
電車に乗っても混雑している駅に行っても回線が途切れる事も無く
IPアドレスが変わる事も無かった - 
応答速度はなかなか厳しい状況
 - 
どのくらいでNAT超えできるかスゴく興味あり