WortalとGamesnack SDKの実装ベストプラクティス
このガイドでは、WortalとGamesnack SDKの統合におけるベストプラクティスを説明します。ゲームの初期化、イベントハンドリング、ライフサイクル管理について、スムーズで信頼性の高い体験を提供するための手法を紹介します。
1. ゲームの初期化
まず、ゲームはWortalが適切に初期化されたことを確認した後、Wortal.startGameAsync()を呼び出す必要があります。これにより、Gamesnack SDKのgame.readyがトリガーされ、ゲームが準備完了としてマークされます。
使用例
async function initializeWortal(wortalInstance: Wortal) {
try {
await wortalInstance.initializeAsync();
// SDKが準備完了。読み込み進捗を100%に設定して、ゲームを開始します。
wortalInstance.setLoadingProgress(100);
await wortalInstance.startGameAsync();
console.log("Wortalが正常に初期化されました");
} catch (error) {
console.error("Wortalの初期化中にエラーが発生しました:", error);
}
}
// 使用例
const wortalInstance = new Wortal();
initializeWortal(wortalInstance);
重要なポイント
- Wortalが完全に初期化されていることを確認してから、
startGameAsyncを呼び出す。 - 初期化中に問題が発生した場合はエラーハンドリングを使用する。
2. プラットフォームのオーディオ設定のリスニング
ゲームは、最適なユーザー体験を提供するために、GameSnackプラットフォームのオーディオ設定に従うべきです。Wortal.session.onAudioStatusChange を活用してオーディオステータスを常に確認し、ゲーム内オーディオを自動調整します。
使用例
// プラットフォームのオーディオ設定の変更を検出し、それに応じてゲームオーディオを適切に調整します。
Wortal.session.onAudioStatusChange((isAudioEnabled: boolean) => {
// プラットフォームのオーディオ設定に基づいて背景音楽をミュートまたはアンミュート
BGMManager.muteBGM(!isAudioEnabled);
// プラットフォームのオーディオ設定に基づいて効果音をミュートまたはアンミュート
SFXManager.muteSFX(!isAudioEnabled);
});
代替チェック
Wortal.session.isAudioEnabledを使用してオーディオステータスを手動で確認できますが、オーディオ設定が同期されるように、Wortal.session.onAudioStatusChangeを使用することをお勧めします。
3. アプリライフサイクルイベントの処理
アプリライフサイクルイベントを処理するには、ゲームがバックグラウンドまたはフォアグラウンドに移行した際にゲーム状態を管理するために、Wortal.onPause()とWortal.onResume()を使用します。
使用例
// ゲームプレイが一時停止されたときにWortal.onPause()を呼び出す
function pauseGame() {
// ゲームプレイやアニメーションを一時停止
Game.pause();
// ゲームが一時停止したことをプラットフォームに通知
Wortal.onPause();
}
// ゲームプレイが再開されたときにWortal.onResume()を呼び出す
function resumeGame() {
// ゲームプレイやアニメーションを再開
Game.resume();
// ゲームが再開されたことをプラットフォームに通知
Wortal.onResume();
}
重要なポイント
- ゲームプレイが一時停止された際には、
Wortal.onPause()を呼び出し、必要に応じてアニメーションや時間に敏感なロジックを停止します。 - ゲームプレイが再開された際には、
Wortal.onResume()を呼び出し、プレイヤーが中断した場所から続けられるようにし、一時停止されたロジックを再開します。
4. ゲームイベントのログ
gameOverやlevelCompleteなどのイベントをログに記録することは重要です。ゲームプレイの結果を記録するために、Wortal.analytics.logLevelEnd()を使用します。
使用例
// レベル失敗によるゲームオーバー
Wortal.analytics.logLevelEnd("1", "100", false);
// レベル成功によるゲームオーバー
Wortal.analytics.logLevelEnd("1", "100", true);
重要なポイント
- 各ゲームプレイセッションの終了時に
Wortal.analytics.logLevelEnd()を呼び出してください。 - エンドレスゲームの場合、ダミーのレベル文字列を使用し、
wasCompletedが成功か失敗かを正確に反映するようにしてください。
5. ハイスコアと進行状況の更新
リーダーボードなどの機能を有効にするためには、Wortal.stats.postStatsAsync()を使用して、ゲームプレイセッション終了時やハイスコア更新時にスコアや進行状況を更新することが必要です。このステップはGameSnacks互換性のために必須です。
使用例
// 各セッション終了時にスコアや進行状況を更新
Wortal.stats.postStatsAsync("Level", myScore) .then(() => {
console.log("ハイスコアが正常に投稿されました");
}) .catch((error) => {
console.error("ハイスコアの投稿に失敗しました:", error);
});
重要なポイント
- 必須: 各ゲームプレイセッション終了時またはハイスコア更新時に
Wortal.stats.postStatsAsync()を呼び出して、GameSnacks上でスコアを最新の状態に保ちます。 - レベル: 実際のレベルを最初のパラメータとして使用します。ゲームにレベルがない場合は、プレースホルダー文字列(例: "Level")を渡してください。
- エラーハンドリング: スコア更新に関する問題を特定するために、エラーをログに記録してください。
これらのベストプラクティスに従うことで、WortalとGamesnack SDKの統合がスムーズに行われ、プレイヤー体験が向上し、貴重なプラットフォーム機能を有効に活用できます。
注意
上記の使用例はTypeScriptで記載されていますが、WortalはUnity、Cocos、GameMaker、Construct、Defoldなど、さまざまなゲームエンジンのSDKもサポートしています。使用しているエンジンに合わせて、正しいイベント関数を実装するために、各エンジン向けの実装ガイドを参照してください。コアの関数はエンジンごとに共通ですが、実装構文は異なる場合があります。