Integration des CrazyGames SDK

Wonderland Engine ist eine ausgezeichnete Wahl für den Bau hochleistungsfähiger 3D-Webspiele, da sie optimiert ist, schnell zu laden und sogar auf iOS Safari gut läuft. Dieses Tutorial behandelt die Integration der CrazyGames-Plattformdienste.

Wonderland Engine x CrazyGames Integration Banner

Wonderland Engine ist eine ausgezeichnete Wahl für den Bau hochleistungsfähiger 3D-Webspiele, da sie optimiert ist, schnell zu laden und sogar auf iOS Safari gut läuft.

Dieses Tutorial behandelt die Integration der CrazyGames-Plattformdienste (finde ihre Dokumentation hier):

Voraussetzungen 

Installiere unser Universal Platform SDK (UPSDK) über npm zusammen mit dem CrazyGames Provider und dem local storage provider als Fallback für Spielstände, falls ein Benutzer nicht eingeloggt ist:

npm i --save @wonderlandengine/upsdk \
    @wonderlandengine/upsdk-provider-crazygames \
    @wonderlandengine/upsdk-provider-localstorage

Erstelle ein CrazyGames-Entwicklerkonto im Developer Portal.

Einrichtung 

Um sicherzustellen, dass die Provider konfiguriert sind, musst du sie einmal in deiner app.js-Datei (Einstiegspunkt des Application-Bundles) registrieren, so früh wie möglich:

import {
    extra,
    ads,
    user,
    saveGame,
    analytics,
    leaderboards,
} from '@wonderlandengine/upsdk';

import {CrazyGamesProvider} from '@wonderlandengine/upsdk-provider-crazygames';
import {LocalStorageProvider} from '@wonderlandengine/upsdk-provider-localstorage';


/* Registriere CrazyGames als Provider für alle Dienste, die du verwenden möchtest */
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());


/* Registriere lokalen Speicher als Fallback-Provider für Spielstände,
 * falls CrazyGames den Speicherdienst nicht bereitstellen kann (z.B. Benutzer ist nicht eingeloggt). */
saveGame.registerProvider(new LocalStorageProvider());

/* wle:auto-constants:start */
// ...

Keine zusätzliche Konfiguration ist erforderlich, da der Kontext dem SDK von der CrazyGames-Website selbst bereitgestellt wird, sobald du es dort veröffentlicht hast.

Dienste nutzen 

CrazyGames bietet grundlegende Analysen, Spielstände, einen coolen “Feier”-Effekt, belohnte und Midroll-Anzeigen, Benutzernamen und Profilbilder.

Um auf CrazyGames zu veröffentlichen, ist es erforderlich, mindestens die Analysen für Lade- und Spielzeiten zu implementieren.

Analytik 

In app.js, verfolge das Laden der Hauptszene.

 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);
 }

Hinweis: Der Start des Ladens wird im Code-Snippet verfolgt, das wir für die Einrichtung hinzugefügt haben.

Anzeigen 

Um ein Video-Werbung anzuzeigen, musst du auf eine Benutzeraktion reagieren (ein Klick, Berührung, Tastendruck usw.) und das Ereignis an das SDK weitergeben, wie hier mit einem Cursorziel demonstriert:

import {ads} from `@wonderlandengine/upsdk`;

const cursorTarget = this.object.getComponent(CursorTarget);
cursorTarget.onClick.add((object, cursor, event) => {
    ads.showRewardedAd(event).then(() => {
        /* Bei Belohnung */
    }).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('Benutzer hat das Ansehen der Werbung abgebrochen');
        }
    })
});

Um stattdessen eine Midroll-Anzeige zu zeigen, verwende ads.showMidgameAd(event).

Ereignisse werden vom Cursor und dem CursorTarget-System weitergeleitet, wonderland-react-ui und von Vanilla-DOM-Ereignissen von HTML-Elementen.

Testen mit dem QA-Tool 

Gehe zum CrazyGames Developer Portal und melde dich an.

Beginne mit der Einreichung deines Spiels:

  • Lege einen Spielnamen fest
  • Wähle Externally hosted (iframe) als deine “Spiel-Engine”.
  • Verwende http://localhost:<port>, dieselbe URL, die vom Wonderland Editor verwendet wird.
  • Wenn du den CrazyGamesProvider für den Spielständedienst verwendest, wähle “Ja, unter Verwendung des Datenmoduls aus dem CrazyGames SDK”.
  • Wenn du mobile Geräte unterstützen möchtest, wähle “Das Spiel unterstützt mobile Geräte”.

Klicke nun auf Vorschau, was eine eingebettete Version von localhost mit allen verfügbaren CrazyGames-Diensten anzeigt. Hier kannst du testen, ob deine Anzeigen triggern und ob alle anderen Dienste ordnungsgemäß funktionieren.

Veröffentlichung 

Du kannst dann dein Spiel als iframe oder als Zip der Web-Dateien einreichen. Wir schlagen vor, über unsere Discord-Community Kontakt aufzunehmen, bevor du startest, da wir dich bei deinem Launch eventuell unterstützen können.