Contenu connexe
Similaire à Unity + PlayFab + Azure Functions (20)
Unity + PlayFab + Azure Functions
- 1. Unity + PlayFab + Azure Functions
C# で統一されたゲーム開発を行う TIPS
南 @_y_minami
2020.04.25 PlayFab Meetup #3
- 4. 本日の内容
PlayFab の Cloud Script と Azure Functions の統合回りのお話。
• Cloud Script とは
• Azure Functions とは
• PlayFab の Azure Functions 統合の導入方法
• Unity + PlayFab + Azure Functions を便利に使うための TIPS
1. Unity と Azure Functions でコードを共有して楽をしよう
2. Azure Functions でモデルバインディングを使って楽をしよう
3. Azure Functions のコールドスタートを回避しよう
• まとめ
- 5. 本日の内容
PlayFab の Cloud Script と Azure Functions の統合回りのお話。
• Cloud Script とは
• Azure Functions とは
• PlayFab の Azure Functions 統合の導入方法
• Unity + PlayFab + Azure Functions を便利に使うための TIPS
1. Unity と Azure Functions でコードを共有して楽をしよう
2. Azure Functions でモデルバインディングを使って楽をしよう
3. Azure Functions のコールドスタートを回避しよう
• まとめ
Cloud Script を投げ捨てて便利な Azure Functions を使おう。
Azure Functions をもっと便利に使うための TIPS を紹介。
- 7. Cloud Script とは
• PlayFab の主要な機能の一つ
• PlayFab は基本的にはクライアントから API を呼ぶだけで
本来はサーバーが必要なゲームを作れる
• しかし PlayFab の機能でまかなうことができない場合もある
• その場合は PlayFab 内に自分で書いた Script を登録して
それを呼び出して処理することができる
• FaaS(Function as a Service) のような感覚で使える
• 利用料金は PlayFab の料金に含まれる(つまり無料)
• 言語は JavaScript のみに対応
• JavaScript のみに対応…😭
- 9. Azure Functions とは(Cloud Script との違い)
• Azure の主要な機能の一つ
• FaaS
• いくつかの料金プランがあるが無料から利用可能
• 従量課金プラン(Consumption Plan)は月100万回は無料で実行可能
• 多くの言語に対応
• C# JavaScript F# Java PowerShell Python TypeScript
• Visual Studio などでローカルデバッグも可能
• リアルタイムでオンラインのログのモニタリングも可能
- 10. Azure Functions とは(Cloud Script との違い)
• Azure の主要な機能の一つ
• FaaS
• いくつかの料金プランがあるが無料から利用可能
• 従量課金プラン(Consumption Plan)は月100万回は無料で実行可能
• 多くの言語に対応
• C# JavaScript F# Java PowerShell Python TypeScript
• Visual Studio などでローカルデバッグも可能
• リアルタイムでオンラインのログのモニタリングも可能
Azure Functions は良いところがたくさん。
特にクライアント/サーバーを C# で統一できることが最高。
Cloud Script は投げ捨てて Azure Functions を使っていこう。
(まだプレビューだけど)
- 12. PlayFab + Azure Functions の導入方法
時間がないのでスキップ!
公式ドキュメントか、以下のブログがわかりやすくておすすめ。
PlayFab アカウントだけでなく Azure アカウントが必要なので
そちらの取得も忘れずに。
• ねこじょーかーさん
【PlayFab】Azure関数でCloudScriptを実行する方法
https://playfab-master.com/playfab-azure-cloudscript
• Simplestarさん
Unity オンラインゲームに Microsoft Azure Functions C# と PlayFab はいかが?
https://qiita.com/simplestar/items/ea909e37b82731a91ffe
- 15. Unity と Azure Functions で
コードを共有して楽をしよう
Unity と Azure Functions はどちらも C# で書ける。
それならコードを共有しない手はない。
やり方はいくつかあるが自分が好きな方法を紹介。
最初の環境構築手順がやや複雑だがとても便利。
- 16. 完成系のプロジェクト構成
- Assembly-Csharp
- PlayFab
- PlayFabEditorExtensions
- PlayFabSDKEditor
この4つは Unity 側のプロジェクト。
- YourTitle.AF
これは Azure Functions のプロジェクト。
- YourTitle.Shared
これは Unity と AF 両方で使うクラスライ
ブラリ。実態は Unity 側にある。
- 36. Docs の Azure Functions のサンプルコード
パラメータを HttpRequest で受け取って
中身の string(json)を FunctionExecutionContext<dynamic> にデシリアライズして
FunctionArgument を dynamic のままごにょごにょしてdynamic で返している
つらそうなコード…(´・ω・`)
- 43. コールドスタート is 何?
• Azure Functions の従量課金プランで発生する事象。
• ある程度の期間(20分?) Azure Functions を実行しなかった場合、
その次の呼び出しの応答は通常より時間がかかる。(10秒程度)
- 44. コールドスタート is 何?
• Azure Functions の従量課金プランで発生する事象。
• ある程度の期間(20分?) Azure Functions を実行しなかった場合、
その次の呼び出しの応答は通常より時間がかかる。(10秒程度)
PlayFab から Azure Functions を呼んだときのタイムアウトは10秒。
開発中タイトルやユーザーが極端に少ないタイトルでは
タイムアウトエラーによるが発生してしまう。
- 45. コールドスタートへの向き合い方
• Azure Function を Premium か App Service Plan で使う
→ コールドスタートさせないオプションが使える。正攻法。
→ そこそこのお金がかかる。
• タイムアウトのリトライ処理を書いて我慢する
→ エラーは抑制できても10秒以上待たせるユーザー体験は NG。
• Function を定期的に実行してコールドさせない
→ 実は Azure Functions の Timer Trigger を使えば簡単。
- 46. コールドスタートへの向き合い方
• Azure Function を Premium か App Service Plan で使う
→ コールドスタートさせないオプションが使える。正攻法。
→ そこそこのお金がかかる。
• タイムアウトのリトライ処理を書いて我慢する
→ エラーは抑制できても10秒以上待たせるユーザー体験は NG。
• Function を定期的に実行してコールドさせない
→ 実は Azure Functions の Timer Trigger を使えば簡単。
↑ 採用
- 49. Timer Trigger の Azure Function を追加
Timer trigger を選択して OK。
Schedule はデフォルトで5分毎
なのでそのままで大丈夫。
- 50. Timer Trigger の Azure Function を追加
Timer Trigger の Function が追加された。
これをデプロイすると
Azure Functions はコールドスタートしなくなる。
お手軽!