勉強会のレポート(メモ)です。
参加したのはこちら、「Unity Network 完全に理解した 」
connpass.comハッシュタグ : #UnityNetwork完全に理解した
動画はこちらになります。
- 0. タイムスケジュール
- 1. Unity対応しているmBaaS全部紹介する
- 2. GS2 でネットワーク対応をしよう
- 3. 2018年現在におけるUnity向けリアルタイムネットワークエンジン選定について
- LT2: ※このLTは個人の見解であり所属する組織の公式見解ではありません
- LT1. Photon Cloud ことはじめ
- タイムライン
- 感想
0. タイムスケジュール
内容 | 担当 | |
---|---|---|
19:00 | 受付開始 | - |
19:30 | イントロダクション | - |
19:40 | Unity対応しているmBaaS全部紹介する | @Takaaki_Ichijo |
20:10 | GS2 でネットワーク対応をしよう | @kazutomo |
20:40 | 休憩 | - |
20:45 | 2018年現在におけるUnity向けリアルタイムネットワークエンジン選定について | @izm |
21:15 | LT: Photon Cloud ことはじめ | @torisoup |
21:25 | LT: ※このLTは個人の見解であり所属する組織の公式見解ではありません(仮) | @tnayuki |
21:35 | 懇親会 | - |
22:15 | 片付け | - |
会場提供はミクシィさんです。
懇親会と動画、生放送までしてくれています。
1. Unity対応しているmBaaS全部紹介する
スライド
一條貴彰 といいます。
unityのaudioに関する本を書いています。
mBasSとは何ぞや
モバイルアプリ用のサーバーサイドのサービスです。
DBやログイン管理などを簡単に実装でき、運営管理を丸投げできます。
共通の機能として、
プッシュ通知、DB、課金機能、ログインアウト、サーバー側の処理などなど
GS2
使ったことがないので中の人を呼びました
次の講演をご覧ください。
NCMB
元中の人をやってました。
・強み
実装がわかりやすい、管理画面もわかりやすい(一番いいところ)
日本生まれのサービスなので対応が早い、SDKが軽い。
パスワードの再発行の仕組みがもうある。
・弱み
ゲーム専用ではなく、様々なアプリ用に作られています。
拡張しづらい、定期実行系のサービスがない。
使いやすいがうえにガバる。
詳しい解説の本があるので参照してみてください。
https://www.amazon.co.jp/dp/4802610998
・解説
Unityで『ニーア オートマタ』の義体システムっぽい機能を作る - Qiita
【NCMB】【Unity】ファイルストアでセーブデータ(JSONファイル)のバックアップ - Qiita
Firebase
・強み
天下のgoogle直運営
大型タイトルで使われている
プッシュ通知のみなら無料(なおガバる)
・弱み
ゲーム特化ではない
DBの設計が必要だった(最近変わった)
Unityプラグインがダメ 重いし ビルドが長い
機能追従が遅い
PC/Macビルドでは動作しない
・オススメ資料
FirebaseとUnityでは ソシャゲは作らない方が良い話 - Speaker Deck
GameSparks
・強み
天下のAmazon運営
ゲーム用でカバーしている範囲が広い
管理画面でAPIテスト実行ができる
コンシューマゲーム機にも対応(海外展開では大事)
・弱み
日本語のドキュメントがない
機能が豊富だが、どれ使えばいいかよくわからん
DB機能が途中で変わった(ドキュメントが少ない)
日本での利用事例が少ない
日本の窓口がまだまだ
・お勧めドキュメント
Amazon GameSparks for Unityを触ってみた - Qiita
Amazon GameSparksでUnityゲームにランキング機能を実装する - Qiita
PlayFab
使ってないので所感だけ
・強み
ゲーム内イベントでの運用(特定期間内のランキング上位者に報酬を与えるとか)が根底にある
サーバー側をC#で書けるようになる
コンシューマー対応
日本語化されてます
・弱み
使ってないのでわかりません
・資料
UnityでのPlayFabの導入覚え書き - JackMasaki’s blog
その他
Kii Cloud
IoT クラウドプラットフォーム Kii - Kii株式会社
Lean Cloud(中国)
LeanCloud
Gamebackend(韓国)
まとめ
ncmb:初心者向け
GameSpark:コンシューマーも見据えてしっかり作りたい人向け
Firebase:ただでプッシュ通知したい人向け
2. GS2 でネットワーク対応をしよう
スライド
本日の登壇資料です。実は自社のプロダクトの紹介登壇は初めてでした。 https://t.co/k1eDVLpwqF #UnityNetwork完全に理解した
— kazutomo (@kazutomo) December 11, 2018
提供中のサービス
・ゲーム内通知をプッシュ通知
・イベントと連動したショップやガチャの開催
・特定の期間だけ数回買える商品 など
セットアップの流れ
・アカウント登録
・UnityAsset(SDK)を導入
・IAP(課金石の管理などで依存しています)をインストール
・Editor拡張を有効化(タブに新しい項目が追加されます)クレデンシャルをコピーして有効化
・GS2Accountの追加
Prefabがあるのでシーンに追加
・課金通貨の流れ
これも同じようにやります、Prefabをシーンに追加
ここまでは高レベルSDK
低レベルSDKhaもっと柔軟にできます
利用料金
2パターンあります。
時間ベース
・最初の1年間は月750時間無料
GS2-Moneyは例外
未使用残高が10万円を超えるかAPIko-ruが10万回を超えるまで無料
事例を募集しています
質問
Q : 対応してるプラットフォームは?
動作に関しては何でも動きます、APKがサーバーを呼び出すのであればなんでもいいです。
IAPに関してはAndroid/IOSのみサポートしてます。
Q : レシートのサーバーサイド検証は?
A : IAPからGS2にレシートが投げられる。
APIとしてはレシート検証でのみ残高を増やします。減らすのは別でできる。
Unityエディタでは加算もできます
3. 2018年現在におけるUnity向けリアルタイムネットワークエンジン選定について
スライド(Soeakerdeckをそのまま張り付けると表示がおかしくなるのでリンクのみ)
資料です
— izm (@izm) December 11, 2018
2018年現在におけるUnity向けリアルタイムネットワークエンジン選定について#UnityNetwork完全に理解したhttps://t.co/9SRGKvo9uL
先ほどまではバックエンド系の話でしたが、
ここではリアルタイムについて話します。
リアルタイムネットゲームで使う機能はいろいろありますが
RPCが一番大事です
位置やステータスの動機なども究極的にはRPCで書けちゃうのです。
ネットワークでテストするならまずはRPCからやりましょう。
モノビットの資料が参考になります
Unityネットワーク通信の基盤である「RPC」について、意外と知られていないボトルネックと、その対策法
RPCは攻撃やジャンプの動作の動機に使います。
PUNについて話そうと思いましたがたぶんとりさんが話してくれるでしょ。
UNETは何がいけなかったのか
Photonよりハイレベルだが
ドキュメントが貧弱 サンプルがない
今何を選ぶべきか
まずはPhotonを選ぶべき。
フォーラムもありドキュメントもあり、採用実績もあります。
作りは古いが我慢しましょう。
中東向けとかだとサーバーがないため、リレーサーバーになる。
超多人数のバトルロワイアルはつらい。
オフラインのLANだけで完結させたい場合(イベントや、社内、学校内)
LAN内だとリレーサーバーが使えない。
これだけ覚えて帰って
Mirror
LANない運用ならTCPの方が楽なのでMirrorは結構いい
MirrorはAsset Storeの「uMMO」の作者が書いています。
UNETで苦しんだ方が自前で書いたライブラリなので信用できますよね。
NetworkDiscavaryはないです。
まとめ
オンラインならPUN
オフラインならMirror
新しいUnityNeworkSystemもあります
質問
Q : モダンなものにおいてRPCはどういう体系なの?
A : photonは名前の文字列で送るんです、現代的なのはアトリビュートで送ります。
なので書く時の作法が古いよという感じです。
LT2: ※このLTは個人の見解であり所属する組織の公式見解ではありません
Tiny Unityについて話します
サンプルはこちら
NetworkedSimpleInput
LT中にみんなで接続した時のGIF(同時接続は20人まで)
白が自分で、赤が他プレイヤーです。
Photonを入れてもTinyUnityは読み込んでくれない
なのでdocument.writeでphotonのライブラリを無理やり読ませています
おまけ
ミドルウェア選定のコツ
いろいろありますが、学習することに罪はない。
ただキケンなプロダクトもあります。
オープンソースだと自分でやってくこともできます(Mirrorとか)
あんまり概念などは変わらないので無駄になりません。
いろいろ学んで自分だけのスキルセットを身につけよう。
サンプルソース
魔改造したサンプルのソースですhttps://t.co/yTrBGXnkFA
— tnayuki (@tnayuki) December 11, 2018
#UnityNetwork完全に理解した
LT1. Photon Cloud ことはじめ
スライド
niconare.nicovideo.jp過去にPhotonのゲームを作っているのでその知見を話します。
PUN1を使うためのテクニックや注意点を話します。
Photon Cloudとは
リアルタイム通信のクラウドサービスとUnity向けSDKです
ログイン回りを楽にしたい
・ログインAPIが使いにくい
対策:PhotonRxを使いましょう
async/awaitで書けます(PUN2だと使えません)
姿勢の動機手法
・姿勢の動機
位置と角度スケールなどは、PhotonTransformViewコンポーネントを張り付けるだけで同期してくれます。
・Animatorの動機
同じようにPhotonAnimatorViewコンポーネントで同期します。
トリガーだけは未対応なのでRPCで実装しましょう。
・3dのアバターをvrなどで自由に動かしたいとき
HumanPose
ヒューマノイドアバターの関節角を送って同期します
パフォーマンスチューニング
気をつける要素
・メッセージ数
送った数+受信者の数が送信回数です。
消費数が大事で、同時接続数が多くなればなるほど大変です。
・削減方法
対戦人数を見直しましょう、100人とか無理なので4人くらいに。
差分だけ送る。
数フレームまとめておくる。
そもそも送らない。
・パケットサイズ
オーバーするとお金が発生します。(お金で解決できます)
大きなパケットはラグの原因になります。
MTU
この数値を超えるパケットは分割されます。
どんなに大きくても1500バイト、できるだけ小さくしよう。
・intをshortにする
・boolをまとめる
・同期するパラメータを見直す
型のサイズはリファレンスを読もう。
また、Wiresharkを使うと通信の中身が見れて良い。
HumanPoseの最適化
・floatを削る
・精度を落とす 32から16bitへ
・変換は自前で実装しましょう
精度を落として大丈夫か?
線形補完もあるのであまり気づかないレベルです。
まとめ
Photon使えば簡単です
チューニングする時は数字をちゃんと見ましょう
タイムライン
さて、準備開始しますよ〜!
— もんりぃ先生👨🏫マンガでわかるUnity連載中! (@monry) December 11, 2018
メリークリスマス!#UnityNetwork完全に理解した pic.twitter.com/k7RkS8HS79
早速トレンド入りしてますね! #UnityNetwork完全に理解した pic.twitter.com/OFKl5XtQ6o
— もんりぃ先生👨🏫マンガでわかるUnity連載中! (@monry) December 11, 2018
こないだのunity1weekで対戦機能を初実装したけど、Photonの方を選んで正解だったようだ。(※これは個人の見解です)
— TEMO山田@手持ち花火アプリ作ったよ (@TakaYamada1017) December 11, 2018
テクニックも入手したので要改善。
ユーザーのログイン機能や魔法石があるゲームを今後考えていくなら、GS2もすごく気になる! しかもお安そう。
#UnityNetwork完全に理解した
サポーター様ありがとうございます!
— アズマゴロ―@Unity課金&広告 完全に実装した勉強会 主催 (@azumagoro) December 11, 2018
#UnityNetwork完全に理解した pic.twitter.com/Dnea8uVtPW
次回は1/29(火) 「UnityAudio完全に理解した勉強会」開催ですー!来年もよろしくお願いします! #UnityNetwork完全に理解した
— 青木とと(ˊᗜˋ*) UnityNetwork理解12/11(火) (@lycoris102) December 11, 2018
本日はお足元の悪い中お集まりいただき、まことにありがとうございました!🙇♂️
— もんりぃ先生👨🏫マンガでわかるUnity連載中! (@monry) December 11, 2018
登壇者の皆様、お越しいただいた皆様、会場・懇親会をご提供いただいた mixi さま、運営を手伝っていただいた皆様のお力で、とても良い会にできました!!😆#UnityNetwork完全に理解した
感想
とてもわかりやすい勉強会でした、完全に理解したシリーズの中でも(自分にとって)ちょうどいい難易度でした。
私はネットワークライブラリでいうとNCMBをよく使っていますが、他のmBaaSについてとても詳しく知ることができました。こういうのって自分で試すと時間と労力が半端じゃないので詳しい人に教えてもらえる機会は結構貴重な気がします。
そういえばPhoton Boltも無料化しましたが、あれはどうなんだろう。
PUN2と同じで使ってる人見ない・・・
お寿司おいしい。
お魚食べられない人に配慮してサンドイッチもありました。