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

UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編NAKAOKU Takahiro
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?UnityTechnologiesJapan002
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜Unity Technologies Japan K.K.
 
Steam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装についてSteam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装についてKLab Inc. / Tech
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~UnityTechnologiesJapan002
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践Yoshifumi Kawai
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例sairoutine
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Daisuke Masubuchi
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~UnityTechnologiesJapan002
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ SEGADevTech
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話torisoup
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説増田 亨
 

Tendances (20)

UniTask入門
UniTask入門UniTask入門
UniTask入門
 
Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編Unityで始めるバージョン管理 Git LFS 入門編
Unityで始めるバージョン管理 Git LFS 入門編
 
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?
【Unite Tokyo 2018】なんとっ!ユナイト!ミリシタをささえる『AKANE大作戦』とは?
 
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
UE4のシーケンサーをもっともっと使いこなそう!最新情報・Tipsをご紹介!
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
【Unity道場】AssetGraph入門 〜ノードを駆使しててUnityの面倒な手作業を自動化する方法〜
 
Steam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装についてSteam ゲーム内購入 サーバーサイド実装について
Steam ゲーム内購入 サーバーサイド実装について
 
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
【Unite 2018 Tokyo】Unityにおける疎結合設計 ~UIへの適用事例から学ぶ、テクニックとメリット~
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
 
Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料Azure PlayFab トレーニング資料
Azure PlayFab トレーニング資料
 
Mask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組みMask Material only in Early Z-passの効果と仕組み
Mask Material only in Early Z-passの効果と仕組み
 
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
【Unite Tokyo 2019】Unityだったら簡単!マルチプレイ用ゲームサーバ開発 ~実践編~
 
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~ CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
CEDEC2021 ダウンロード時間を大幅減!~大量のアセットをさばく高速な実装と運用事例の共有~
 
GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出GitLab から GitLab に移行したときの思い出
GitLab から GitLab に移行したときの思い出
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
 
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
UE4を用いたTPS制作事例 EDF:IR アニメーション作成事例紹介
 

Similaire à Azure PlayFab Unity SDK vs C# SDK

Android studio で行ってみよう!!
Android studio で行ってみよう!!Android studio で行ってみよう!!
Android studio で行ってみよう!!Kazuaki Ueda
 
NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法NPAPIを使ったandroid標準ブラウザの拡張方法
NPAPIを使ったandroid標準ブラウザの拡張方法Naruto TAKAHASHI
 
HelloMC_プラグイン制作講座
HelloMC_プラグイン制作講座HelloMC_プラグイン制作講座
HelloMC_プラグイン制作講座ecolight
 
Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Cordovaコトハジメ( Html5fun×senchUG )
Cordovaコトハジメ( Html5fun×senchUG )Masayuki Abe
 
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートデモで楽しむ Visual Studio 2022 & .NET 6 最新アップデート
デモで楽しむ Visual Studio 2022 & .NET 6 最新アップデートAkira Inoue
 
Visual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiVisual studio 2015 update1 ctpとcsi
Visual studio 2015 update1 ctpとcsiTadahiro Ishisaka
 
改めて C# でできることを振り返る
改めて C# でできることを振り返る改めて C# でできることを振り返る
改めて C# でできることを振り返るYuta Matsumura
 
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 FunctionsYutoNishine
 
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_codespacesIssei Hiraoka
 
ngCore engine for mobage platform
ngCore engine for mobage platformngCore engine for mobage platform
ngCore engine for mobage platformToru Yamaguchi
 
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるNetラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考えるdavid9142
 
App extensionでテストコードを書く
App extensionでテストコードを書くApp extensionでテストコードを書く
App extensionでテストコードを書くYusuke Kita
 
どっちの 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 CodeTakashi Okawa
 
Goで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティGoで作って配布するAzureコマンドラインユーティリティ
Goで作って配布するAzureコマンドラインユーティリティyaegashi
 
Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!Unityゲームにオンラインランキングとゴースト機能を追加しよう!
Unityゲームにオンラインランキングとゴースト機能を追加しよう!史識 川原
 
Jenkinsを使おうよ
Jenkinsを使おうよJenkinsを使おうよ
Jenkinsを使おうよYohei Oda
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!Minoru Naito
 
20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法20121123 アド部定例会 unityアプリに広告を入れる方法
20121123 アド部定例会 unityアプリに広告を入れる方法Yasuyuki Kamata
 
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにWeb制作で培ってきたFlashのリッチな表現力をモバイルアプリに
Web制作で培ってきたFlashのリッチな表現力をモバイルアプリにinvogue
 

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

入門者の方向け Azure PlayFab の簡単な紹介
入門者の方向け Azure PlayFab の簡単な紹介入門者の方向け Azure PlayFab の簡単な紹介
入門者の方向け Azure PlayFab の簡単な紹介YutoNishine
 
ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!YutoNishine
 
C# CloudScript Azure Functions との連携
C# CloudScript Azure Functions との連携C# CloudScript Azure Functions との連携
C# CloudScript Azure Functions との連携YutoNishine
 
ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!ゲーム特化の BaaS! Unity + PlayFab 入門!
ゲーム特化の BaaS! Unity + PlayFab 入門!YutoNishine
 
5分で入門するAzure PlayFab
5分で入門するAzure PlayFab5分で入門するAzure PlayFab
5分で入門するAzure PlayFabYutoNishine
 
リアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたリアルタイムコマンドバトルのゲームで PlayFab を使ってみた
リアルタイムコマンドバトルのゲームで PlayFab を使ってみたYutoNishine
 
誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)誰でも今日から実践できるUnity x PlayFab(Demoパート)
誰でも今日から実践できるUnity x PlayFab(Demoパート)YutoNishine
 
アプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきことアプリエンジニアがサーバーサイドで最初に勉強するべきこと
アプリエンジニアがサーバーサイドで最初に勉強するべきこと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

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 

Dernier (11)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 

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 一択です。