CrazyGames SDKを統合する
Wonderland Engineは、高性能な3Dウェブゲームを構築するのに最適な選択であり、高速な読み込みとiOS Safariでの優れたパフォーマンスを発揮します。
このチュートリアルでは、CrazyGamesプラットフォームサービスの統合方法について説明します(ドキュメントはこちら)。
前提条件
npmを介してUniversal Platform SDK (UPSDK)と CrazyGamesプロバイダー、 およびユーザーがログインしていない場合のセーブゲームのフォールバックとして local storageプロバイダーをインストールします。
npm i --save @wonderlandengine/upsdk \
@wonderlandengine/upsdk-provider-crazygames \
@wonderlandengine/upsdk-provider-localstorage Developer PortalでCrazyGames開発者アカウントを作成します。
セットアップ
プロバイダーが正しく設定されていることを確認するために、app.jsファイル(アプリケーションバンドルのエントリーポイント)で一度登録する必要があります。できるだけ早い段階でこれを行ってください。
import {
extra,
ads,
user,
saveGame,
analytics,
leaderboards,
} from '@wonderlandengine/upsdk';
import {CrazyGamesProvider} from '@wonderlandengine/upsdk-provider-crazygames';
import {LocalStorageProvider} from '@wonderlandengine/upsdk-provider-localstorage';
/* 使用したいすべてのサービスのプロバイダーとしてCrazyGamesを登録 */
const cg = new CrazyGamesProvider();
ads.registerProvider(cg);
analytics.registerProvider(cg);
saveGame.registerProvider(cg);
extra.registerProvider(cg);
user.registerProvider(cg);
extra.registerProvider(cg);
cg.onReady.then(() => analytics.trackLoadingStart());
/* ユーザーがログインしていない場合など、CrazyGamesがセーブゲームサービスを提供できないときは、
* フォールバックのプロバイダーとしてローカルストレージをセーブゲームに登録します。 */
saveGame.registerProvider(new LocalStorageProvider());
/* wle:auto-constants:start */
// ... 追加の設定は必要ありません。一旦CrazyGamesのウェブサイトで公開すると、SDKにコンテキストが提供されます。
サービスの使用
CrazyGamesは、基本的な分析、セーブゲーム、クールな”祝賀”効果、報酬広告と中間広告、ユーザー名とプロフィール画像を提供します。
CrazyGamesに公開するには、少なくともロードおよびゲームプレイ時間のための分析を実装する必要があります。
分析
app.jsでメインシーンのロードを追跡します。
try {
await engine.loadMainScene(`${Constants.ProjectName}.bin`);
+ analytics.trackLoadingStop();
} catch (e) {
console.error(e);
+ analytics.trackLoadingStop();
window.GameAnalytics.addErrorEvent(
ErrorSeverity.Critical,
`Failed to load ${Constants.ProjectName}.bin: ${e.message}\n${e.stack || ''}`
);
window.alert(`Failed to load ${Constants.ProjectName}.bin:`, e);
} 注意: ロードの開始は、セットアップで追加したコードスニペットで追跡されています。
広告
ビデオ広告を表示するには、ユーザーのジェスチャー(クリック、タッチ、キー押下など)に反応し、イベントをSDKに渡す必要があります。 ここではカーソルターゲットを使用した例です。
import {ads} from `@wonderlandengine/upsdk`;
const cursorTarget = this.object.getComponent(CursorTarget);
cursorTarget.onClick.add((object, cursor, event) => {
ads.showRewardedAd(event).then(() => {
/* On reward */
}).catch(e => {
switch (e.status) {
case 'unfilled':
case 'ads-unavailable':
case 'network-error':
case 'no-zoneid':
case 'ad-maximum':
case 'ad-blocker':
case 'ad-violation':
case 'cors-error':
console.error(e.status);
default:
console.log('User canceled watching the ad');
}
})
}); 中間広告を表示するには、ads.showMidgameAd(event)を使用してください。
イベントは、カーソルとカーソルターゲットシステム、wonderland-react-ui、 およびHTML要素からのバニラDOMイベントによって転送されます。
QAツールでのテスト
CrazyGames Developer Portalにアクセスしてサインアップします。
ゲームの提出を開始します:
- ゲーム名を設定します
- “Game engine”に
Externally hosted (iframe)を選択します。 - Wonderland Editorで使用される
http://localhost:<port>を使用します。 - 保存ゲームサービスにCrazyGamesProviderを使用する場合、“Yes, using the Data Module from the CrazyGames SDK”を選択します。
- モバイルデバイスをサポートする予定がある場合は、“The game supports mobile devices”を選択します。
次にPreviewをクリックすると、CrazyGamesのすべてのサービスが利用できるlocalhostの埋め込みバージョンが表示されます。
ここで広告がトリガーされ、他のすべてのサービスが正しく機能するかテストできます。
公開
ゲームをiframeまたはウェブファイルのzipとして提出できます。リリース前に Discord Communityを通じてご相談いただくことをお勧めします。場合によっては、立ち上げに関してサポートできるかもしれません。