Más contenido relacionado
La actualidad más candente (20)
Similar a Azure PlayFab Unity SDK vs C# SDK (20)
Azure PlayFab Unity SDK vs C# SDK
- 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 一択ではありません。
お好みにあわせてご利用ください。
- 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)
- 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(“ログイン失敗したときの処理をここに書く");
}
いわゆるコールバック地獄に陥りやすい…
- 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 以外のプラットフォームならば
- 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 一択です。