SlideShare une entreprise Scribd logo
1  sur  31
Azure PlayFab
Unity SDK vs C# SDK
2020/07/26 PlayFab Meetup #4
南 @y_minami
自己紹介
名前 : 南 @_y_minami
所属 : miraibox.inc
仕事 : Game Programmer(Unity + .NET + GCP)
好き : C# .NET Unity Azure PlayFab 紅茶
一緒に働いてくれる C#er を大募集中です!
今日お伝えしたいこと
今日お伝えしたいこと
Unity + PlayFab の開発で使用できる SDK は 2 種類あります。
- 古い Unity やWebGL でも動作する Unity SDK
- API 呼び出しが async/await スタイルで使いやすい C# SDK
実は Unity SDK 一択ではありません。
お好みにあわせてご利用ください。
アジェンダ
- PlayFab には多数の SDK が存在する話
- Unity で使用できる PlayFab SDK の話
- PlayFab C# SDK の導入方法と使用例の紹介
PlayFab には多数の SDK が存在する話
PlayFab には多数の SDK が存在する話
サポートされている言語
C# C++ Java Objective-C Python PHP Lua JavaScript ActionScript
カバーしている範囲が広い!
PlayFab には多数の SDK が存在する話
しかも 1 言語につき 1 SDK ではない
たとえばC++
- Unreal Marketplace Plugin(Unreal Engine 用プラグイン)
- Cocos2d-x SDK(Cocos2d-x 用 SDK)
- XPlat Cpp SDK(汎用的なC++ SDK)
※GSDK や Party SDK のような追加機能用 SDK はここでは省略
たとえば JavaScript
- JavaScript SDK(フロントエンド用 SDK)
- NodeJS SDK(バックエンド用 SDK)
Unity で使用できる PlayFab SDK の話
Unity で使用できる PlayFab SDK の話
使える SDK は 2 種類。
- Unity SDK(Unity 用 SDK)
- C# SDK(汎用的な C# SDK)
Unity で使用できる PlayFab SDK の話
使える SDK は 2 種類。
- Unity SDK(Unity 用 SDK)
- C# SDK(汎用的な C# SDK)
Unity では Unity SDK を使いましょう。
Not Unity なアプリケーションや、サーバーサイドの API や
Azure Functions では C# SDK を使いましょう。
Unity で使用できる PlayFab SDK の話
使える SDK は 2 種類。
- Unity SDK(Unity 用 SDK)
- C# SDK(汎用的な C# SDK)
Unity では Unity SDK を使いましょう。
Not Unity なアプリケーションや、サーバーサイドの API や
Azure Functions では C# SDK を使いましょう。
というのが基本ですが、
今日はここに一石を投じてみたいと思います。
PlayFab Unity SDK の特徴
PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。
かなり古い Unity でも OK!
プラットフォームも PC でも iOS/Android でもWebGL でも OK!
PlayFab Unity SDK の特徴
PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。
かなり古い Unity でも OK!
プラットフォームも PC でも iOS/Android でもWebGL でも OK!
めでたしめでたし!
とはいかず、その代償がある。
代償 = コールバックスタイルのコード
たとえばログインのコード。
public void Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx“ };
PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
}
private void OnLoginSuccess(LoginResult result)
{
Debug.Log("ログイン成功したときの処理をここに書く");
}
private void OnLoginFailure(PlayFabError error)
{
Debug.LogWarning(“ログイン失敗したときの処理をここに書く");
}
代償 = コールバックスタイルのコード
たとえばログインのコード。
public void Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx“ };
PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
}
private void OnLoginSuccess(LoginResult result)
{
Debug.Log("ログイン成功したときの処理をここに書く");
}
private void OnLoginFailure(PlayFabError error)
{
Debug.LogWarning(“ログイン失敗したときの処理をここに書く");
}
代償 = コールバックスタイルのコード
たとえばログインのコード。
public void Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx“ };
PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure);
}
private void OnLoginSuccess(LoginResult result)
{
Debug.Log("ログイン成功したときの処理をここに書く");
}
private void OnLoginFailure(PlayFabError error)
{
Debug.LogWarning(“ログイン失敗したときの処理をここに書く");
}
いわゆるコールバック地獄に陥りやすい…
コールバックスタイルを投げ捨てたい
C# の非同期処理といえば async/await 。
async/await を使えばコールバックスタイルは投げ捨てられる。
コールバックスタイルを投げ捨てたい
C# の非同期処理といえば async/await 。
async/await を使えばコールバックスタイルは投げ捨てられる。
たとえば先ほどのログインのコードを async/await スタイルに。
async Task Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx" };
var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request);
var message = response.Error is null
? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}"
: $"ログイン失敗... {response.Error.ErrorMessage}";
Debug.Log(message);
}
コールバックスタイルを投げ捨てたい
C# の非同期処理といえば async/await 。
async/await を使えばコールバックスタイルは投げ捨てられる。
たとえば先ほどのログインのコードを async/await スタイルに。
async Task Start()
{
var request = new LoginWithCustomIDRequest { CustomId = “xxx" };
var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request);
var message = response.Error is null
? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}"
: $"ログイン失敗... {response.Error.ErrorMessage}";
Debug.Log(message);
} すっきり書けて素敵!
なぜ Unity SDK はコールバックスタイル?
> PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。
Unity 5 系は C# 4.0 しか使えない。
async/await は C# 5.0 で導入された機能。
だから非同期処理をコールバックで処理する必要があった。
なぜ Unity SDK はコールバックスタイル?
> PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。
Unity 5 系は C# 4.0 しか使えない。
async/await は C# 5.0 で導入された機能。
だから非同期処理をコールバックで処理する必要があった。
最近の Unity は C# 7.3 まで使える。
だからきっと C# SDK を使っても大丈夫。
※WebGL 以外のプラットフォームならば
PlayFab C# SDK の
導入方法と使用例の紹介
PlayFab C# SDK の導入方法(Unity の場合)
Docs か GitHub からダウンロード。
https://docs.microsoft.com/ja-jp/gaming/playfab/sdks/c-sharp/
https://github.com/PlayFab/CSharpSDK
ダウンロードした zip を展開して、
PlayFabSDK の source 一式を
適当な Scripts フォルダにまるごと配置。
PlayFab C# SDK の導入方法(Server の場合)
サーバープログラムやAzure Functions で使う場合は NuGet から
PlayFabAllSDK をインストール。
PlayFab C# SDK の使用例(Unity の場合)
使い方は Unity SDK と殆ど変わらない。
- async/await を付ける
- SDK のメソッド名は xxxAsync になる
- API のエラーを判定するときは response.Error をチェック
async Task Start()
{
var request = new LoginWithCustomIDRequest { CustomId = "xxx" };
var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request);
var message = response.Error is null
? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}"
: $"ログイン失敗... {response.Error.ErrorMessage}";
Debug.Log(message);
}
PlayFab C# SDK の使用例(Unity の場合)
UniTask と組み合わせると他の処理との並列処理もすっきり!
async UniTaskVoid Start()
{
var request = new LoginWithCustomIDRequest { CustomId = "xxx" };
var (response, nanikaOmoiSyoriResult) = await (
PlayFabClientAPI.LoginWithCustomIDAsync(request).AsUniTask(),
NanikaOmoiSyoriAsync());
// 以下略
}
async UniTask<string> NanikaOmoiSyoriAsync()
{
// 何か重い処理
return "何か重い処理の結果";
}
PlayFab C# SDK の注意点
WebGL では動きません…😢
理由は C# SDK が HttpClient に依存していてこれが動かないから。
なお Unity で HttpClient を使うと Android 実機で動かないという話も
よく目にしましたが、それは1年ほど前に改善されています。
※当時 Unity 2019.1.13 + iOS 実機 + Android 実機で検証済み
まとめ
まとめ
Unity + PlayFab の開発で使用できる SDK は 2 種類あります。
- 古い Unity やWebGL でも動作する Unity SDK
- API 呼び出しが async/await スタイルで使いやすい C# SDK
実は Unity SDK 一択ではありません。
お好みにあわせてご利用ください。
※ただしターゲットが WebGL の場合は Unity SDK 一択です。
ご清聴ありがとうございました

Contenu connexe

Tendances

Tendances (20)

DeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using UnityDeNA TechCon2019 How to implement live streaming client using Unity
DeNA TechCon2019 How to implement live streaming client using Unity
 
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
 
猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について猫でも分かる UE4のAnimation Blueprintの運用について
猫でも分かる UE4のAnimation Blueprintの運用について
 
【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap【Unity道場】使って覚えるTileMap
【Unity道場】使って覚えるTileMap
 
UE4におけるエフェクトの基本戦略事例 前半
UE4におけるエフェクトの基本戦略事例  前半UE4におけるエフェクトの基本戦略事例  前半
UE4におけるエフェクトの基本戦略事例 前半
 
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKA
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKAIncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKA
IncrediBuildでビルド時間を最大90%短縮! - インクレディビルドジャパン株式会社 - GTMF 2018 OSAKA
 
Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩
 
【Unity道場教育スペシャル】Cinemachineで教えるゲームの3つの大切なこと
【Unity道場教育スペシャル】Cinemachineで教えるゲームの3つの大切なこと【Unity道場教育スペシャル】Cinemachineで教えるゲームの3つの大切なこと
【Unity道場教育スペシャル】Cinemachineで教えるゲームの3つの大切なこと
 
Unreal Engine最新機能 アニメーション+物理ショーケース!
Unreal Engine最新機能 アニメーション+物理ショーケース!Unreal Engine最新機能 アニメーション+物理ショーケース!
Unreal Engine最新機能 アニメーション+物理ショーケース!
 
猫でも分かるUMG
猫でも分かるUMG猫でも分かるUMG
猫でも分かるUMG
 
UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介UE4アセットリダクション手法紹介
UE4アセットリダクション手法紹介
 
日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4日本一詳しい人が教えるUE4
日本一詳しい人が教えるUE4
 
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DDUE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
UE4 MultiPlayer Online Deep Dive 実践編2 (ソレイユ株式会社様ご講演) #UE4DD
 
UE4におけるエフェクトの基本戦略事例 後半
UE4におけるエフェクトの基本戦略事例  後半UE4におけるエフェクトの基本戦略事例  後半
UE4におけるエフェクトの基本戦略事例 後半
 
UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法UE4で作成するUIと最適化手法
UE4で作成するUIと最適化手法
 
GTMF 2016:Perforce HelixによるGit環境の改善と拡張 株式会社東陽テクニカ(Perforce Helix)
GTMF 2016:Perforce HelixによるGit環境の改善と拡張 株式会社東陽テクニカ(Perforce Helix)GTMF 2016:Perforce HelixによるGit環境の改善と拡張 株式会社東陽テクニカ(Perforce Helix)
GTMF 2016:Perforce HelixによるGit環境の改善と拡張 株式会社東陽テクニカ(Perforce Helix)
 
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
【Unite Tokyo 2019】今すぐ現場で覚えておきたい最適化技法 ~「ゲシュタルト・オーディン」開発における最適化事例~
 
そうだPostProcess Materialで見た目を変えよう
そうだPostProcess Materialで見た目を変えようそうだPostProcess Materialで見た目を変えよう
そうだPostProcess Materialで見た目を変えよう
 
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
ガルガンチュア on Oculus Quest - 72FPSへの挑戦 -
 
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
「Press Button, Drink Coffee」 UE4における ビルドパイプラインとメンテナンスの全体像
 

Similaire à Azure PlayFab Unity SDK vs C# SDK

NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
Naruto TAKAHASHI
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
佑介 九岡
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
david9142
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
Yohei Oda
 

Similaire à Azure PlayFab Unity SDK vs C# SDK (20)

Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法
 
HelloMC_プラグイン制作講座
HelloMC_プラグイン制作講座HelloMC_プラグイン制作講座
HelloMC_プラグイン制作講座
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsi
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返る
 
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
2014/12/13 第1回 Scala関西勉強会 play2-memcached supports Play 2.4 ~Play 2.4モジュールのつく...
 
Unity + PlayFab + Azure Functions
Unity + PlayFab + Azure FunctionsUnity + PlayFab + Azure Functions
Unity + PlayFab + Azure Functions
 
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platform
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
 
App extensionでテストコードを書く
App extensionでテストコードを書くApp extensionでテストコードを書く
App extensionでテストコードを書く
 
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Codeどっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
どっちの VS ショー / 伝統の Visual Studio 2019、人気の Visual Studio Code
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティ
 
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよ
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法
 
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにWeb制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
 

Plus de YutoNishine

リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
YutoNishine
 

Plus de YutoNishine (9)

入門者の方向け Azure PlayFab の簡単な紹介
入門者の方向け Azure PlayFab の簡単な紹介入門者の方向け Azure PlayFab の簡単な紹介
入門者の方向け Azure PlayFab の簡単な紹介
 
ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!
 
C# CloudScript Azure Functions との連携
C# CloudScript Azure Functions との連携C# CloudScript Azure Functions との連携
C# CloudScript Azure Functions との連携
 
ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!
 
5分で入門するAzure PlayFab
5分で入門するAzure PlayFab5分で入門するAzure PlayFab
5分で入門するAzure PlayFab
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
 
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)
 
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
 
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたいリアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
 

Dernier

Dernier (7)

LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Azure PlayFab Unity SDK vs C# SDK

  • 1. Azure PlayFab Unity SDK vs C# SDK 2020/07/26 PlayFab Meetup #4 南 @y_minami
  • 2. 自己紹介 名前 : 南 @_y_minami 所属 : miraibox.inc 仕事 : Game Programmer(Unity + .NET + GCP) 好き : C# .NET Unity Azure PlayFab 紅茶 一緒に働いてくれる C#er を大募集中です!
  • 4. 今日お伝えしたいこと Unity + PlayFab の開発で使用できる SDK は 2 種類あります。 - 古い Unity やWebGL でも動作する Unity SDK - API 呼び出しが async/await スタイルで使いやすい C# SDK 実は Unity SDK 一択ではありません。 お好みにあわせてご利用ください。
  • 5. アジェンダ - PlayFab には多数の SDK が存在する話 - Unity で使用できる PlayFab SDK の話 - PlayFab C# SDK の導入方法と使用例の紹介
  • 6. PlayFab には多数の SDK が存在する話
  • 7. PlayFab には多数の SDK が存在する話 サポートされている言語 C# C++ Java Objective-C Python PHP Lua JavaScript ActionScript カバーしている範囲が広い!
  • 8. PlayFab には多数の SDK が存在する話 しかも 1 言語につき 1 SDK ではない たとえばC++ - Unreal Marketplace Plugin(Unreal Engine 用プラグイン) - Cocos2d-x SDK(Cocos2d-x 用 SDK) - XPlat Cpp SDK(汎用的なC++ SDK) ※GSDK や Party SDK のような追加機能用 SDK はここでは省略 たとえば JavaScript - JavaScript SDK(フロントエンド用 SDK) - NodeJS SDK(バックエンド用 SDK)
  • 10. Unity で使用できる PlayFab SDK の話 使える SDK は 2 種類。 - Unity SDK(Unity 用 SDK) - C# SDK(汎用的な C# SDK)
  • 11. Unity で使用できる PlayFab SDK の話 使える SDK は 2 種類。 - Unity SDK(Unity 用 SDK) - C# SDK(汎用的な C# SDK) Unity では Unity SDK を使いましょう。 Not Unity なアプリケーションや、サーバーサイドの API や Azure Functions では C# SDK を使いましょう。
  • 12. Unity で使用できる PlayFab SDK の話 使える SDK は 2 種類。 - Unity SDK(Unity 用 SDK) - C# SDK(汎用的な C# SDK) Unity では Unity SDK を使いましょう。 Not Unity なアプリケーションや、サーバーサイドの API や Azure Functions では C# SDK を使いましょう。 というのが基本ですが、 今日はここに一石を投じてみたいと思います。
  • 13. PlayFab Unity SDK の特徴 PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。 かなり古い Unity でも OK! プラットフォームも PC でも iOS/Android でもWebGL でも OK!
  • 14. PlayFab Unity SDK の特徴 PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。 かなり古い Unity でも OK! プラットフォームも PC でも iOS/Android でもWebGL でも OK! めでたしめでたし! とはいかず、その代償がある。
  • 15. 代償 = コールバックスタイルのコード たとえばログインのコード。 public void Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx“ }; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure); } private void OnLoginSuccess(LoginResult result) { Debug.Log("ログイン成功したときの処理をここに書く"); } private void OnLoginFailure(PlayFabError error) { Debug.LogWarning(“ログイン失敗したときの処理をここに書く"); }
  • 16. 代償 = コールバックスタイルのコード たとえばログインのコード。 public void Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx“ }; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure); } private void OnLoginSuccess(LoginResult result) { Debug.Log("ログイン成功したときの処理をここに書く"); } private void OnLoginFailure(PlayFabError error) { Debug.LogWarning(“ログイン失敗したときの処理をここに書く"); }
  • 17. 代償 = コールバックスタイルのコード たとえばログインのコード。 public void Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx“ }; PlayFabClientAPI.LoginWithCustomID(request, OnLoginSuccess, OnLoginFailure); } private void OnLoginSuccess(LoginResult result) { Debug.Log("ログイン成功したときの処理をここに書く"); } private void OnLoginFailure(PlayFabError error) { Debug.LogWarning(“ログイン失敗したときの処理をここに書く"); } いわゆるコールバック地獄に陥りやすい…
  • 18. コールバックスタイルを投げ捨てたい C# の非同期処理といえば async/await 。 async/await を使えばコールバックスタイルは投げ捨てられる。
  • 19. コールバックスタイルを投げ捨てたい C# の非同期処理といえば async/await 。 async/await を使えばコールバックスタイルは投げ捨てられる。 たとえば先ほどのログインのコードを async/await スタイルに。 async Task Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx" }; var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request); var message = response.Error is null ? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}" : $"ログイン失敗... {response.Error.ErrorMessage}"; Debug.Log(message); }
  • 20. コールバックスタイルを投げ捨てたい C# の非同期処理といえば async/await 。 async/await を使えばコールバックスタイルは投げ捨てられる。 たとえば先ほどのログインのコードを async/await スタイルに。 async Task Start() { var request = new LoginWithCustomIDRequest { CustomId = “xxx" }; var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request); var message = response.Error is null ? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}" : $"ログイン失敗... {response.Error.ErrorMessage}"; Debug.Log(message); } すっきり書けて素敵!
  • 21. なぜ Unity SDK はコールバックスタイル? > PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。 Unity 5 系は C# 4.0 しか使えない。 async/await は C# 5.0 で導入された機能。 だから非同期処理をコールバックで処理する必要があった。
  • 22. なぜ Unity SDK はコールバックスタイル? > PlayFab Unity SDK は Unity 5.3 以降 で動作が保証されている。 Unity 5 系は C# 4.0 しか使えない。 async/await は C# 5.0 で導入された機能。 だから非同期処理をコールバックで処理する必要があった。 最近の Unity は C# 7.3 まで使える。 だからきっと C# SDK を使っても大丈夫。 ※WebGL 以外のプラットフォームならば
  • 23. PlayFab C# SDK の 導入方法と使用例の紹介
  • 24. PlayFab C# SDK の導入方法(Unity の場合) Docs か GitHub からダウンロード。 https://docs.microsoft.com/ja-jp/gaming/playfab/sdks/c-sharp/ https://github.com/PlayFab/CSharpSDK ダウンロードした zip を展開して、 PlayFabSDK の source 一式を 適当な Scripts フォルダにまるごと配置。
  • 25. PlayFab C# SDK の導入方法(Server の場合) サーバープログラムやAzure Functions で使う場合は NuGet から PlayFabAllSDK をインストール。
  • 26. PlayFab C# SDK の使用例(Unity の場合) 使い方は Unity SDK と殆ど変わらない。 - async/await を付ける - SDK のメソッド名は xxxAsync になる - API のエラーを判定するときは response.Error をチェック async Task Start() { var request = new LoginWithCustomIDRequest { CustomId = "xxx" }; var response = await PlayFabClientAPI.LoginWithCustomIDAsync(request); var message = response.Error is null ? $"ログイン成功! My PlayFabID is {response.Result.PlayFabId}" : $"ログイン失敗... {response.Error.ErrorMessage}"; Debug.Log(message); }
  • 27. PlayFab C# SDK の使用例(Unity の場合) UniTask と組み合わせると他の処理との並列処理もすっきり! async UniTaskVoid Start() { var request = new LoginWithCustomIDRequest { CustomId = "xxx" }; var (response, nanikaOmoiSyoriResult) = await ( PlayFabClientAPI.LoginWithCustomIDAsync(request).AsUniTask(), NanikaOmoiSyoriAsync()); // 以下略 } async UniTask<string> NanikaOmoiSyoriAsync() { // 何か重い処理 return "何か重い処理の結果"; }
  • 28. PlayFab C# SDK の注意点 WebGL では動きません…😢 理由は C# SDK が HttpClient に依存していてこれが動かないから。 なお Unity で HttpClient を使うと Android 実機で動かないという話も よく目にしましたが、それは1年ほど前に改善されています。 ※当時 Unity 2019.1.13 + iOS 実機 + Android 実機で検証済み
  • 30. まとめ Unity + PlayFab の開発で使用できる SDK は 2 種類あります。 - 古い Unity やWebGL でも動作する Unity SDK - API 呼び出しが async/await スタイルで使いやすい C# SDK 実は Unity SDK 一択ではありません。 お好みにあわせてご利用ください。 ※ただしターゲットが WebGL の場合は Unity SDK 一択です。