Vue d'ensemble & événements SDK v2
Le SDK Ludikafrik connecte ton jeu au portail : suivi du temps de jeu, remontée des scores, contexte du joueur, et — nouveau en v2 — le droit de jouer accordé par le portail.
Ludikafrik n'affiche aucune publicité. Notre modèle repose sur le temps de jeu réel et les pass mobile money. Ton SDK sert donc à : mesurer honnêtement l'engagement (qui alimente ta part du pool), remonter les scores au classement, et respecter les décisions du portail (gratuité, pass, quotas).
💡 Ton jeu tourne dans un cadre isolé sur le portail. Le SDK communique avec Ludikafrik par messages validés — tu n'as jamais à manipuler d'API directement ni de clé secrète.
🔑 Principe v2 : ton jeu ne connaît aucune règle. Il demande le droit de jouer, obéit à la réponse, et rapporte ses événements. Toute la logique (quotas, murs, prix, durée) vit côté portail. Résultat : quand nous changeons une règle, tu n'as rien à re-livrer. Les écrans de blocage (mur d'inscription, « pass épuisé ») sont affichés par le portail, pas par ton jeu.
Les événements du SDK
LudikafrikSDK.init()
Initialise le SDK. Renvoie une promesse avec le contexte du joueur : { connecte, pass, essai }. Ton jeu peut s'y adapter (mode complet, essai limité, invitation à s'abonner).
LudikafrikSDK.gameLoadingFinished()
À appeler quand ton jeu a fini de charger ses ressources.
LudikafrikSDK.requestPlay() v2
Demande au portail le droit de démarrer une partie. Renvoie une promesse avec le verdict : { decision, motif, message } où decision ∈ autorise | refuse | termine. Ne démarre la partie que si decision === 'autorise'.
LudikafrikSDK.onVerdict(cb) v2
S'abonne aux ordres du portail. cb reçoit { decision, motif, message }. Le portail peut t'ordonner d'arrêter à tout moment (ex. pass_epuise, temps_ecoule). À la réception d'un termine/refuse : arrête le gameplay et rends la main — le portail affiche l'écran adéquat.
LudikafrikSDK.reportEvent(type, données) v2
Rapporte un fait de jeu ; le portail décide. type est une chaîne libre : vie_perdue, partie_finie, niveau_fini, pause, reprise, abandon, erreur_jeu… Le portail peut répondre par un verdict (via onVerdict).
LudikafrikSDK.gameplayStart()
À appeler quand le joueur commence réellement à jouer (début de niveau, reprise après pause). Démarre le chrono de temps de jeu — la mesure au cœur de la répartition des revenus.
LudikafrikSDK.gameplayStop()
À appeler quand le gameplay s'arrête (pause, fin de niveau, game over, retour au menu).
LudikafrikSDK.submitScore(score, { victoire })
Remonte le score de la partie. À appeler en fin de partie. Exemple : submitScore(490, { victoire: true }).
LudikafrikSDK.getContexte()
Renvoie le contexte joueur connu à tout moment : { connecte, pass, essai }.
Séquence typique (v2)
// au démarrage du jeu
await LudikafrikSDK.init();
LudikafrikSDK.gameLoadingFinished();
// obéir aux ordres du portail à tout moment
LudikafrikSDK.onVerdict(function(v) {
if (v.decision !== 'autorise') { /* arrête et rends la main */ }
});
// le joueur veut lancer une partie : DEMANDER d'abord
var v = await LudikafrikSDK.requestPlay();
if (v.decision === 'autorise') {
LudikafrikSDK.gameplayStart();
// … le joueur joue … puis :
LudikafrikSDK.reportEvent('partie_finie');
LudikafrikSDK.gameplayStop();
LudikafrikSDK.submitScore(490, { victoire: true });
}
// sinon : ne démarre pas — le portail affiche le message (mur, pass épuisé…)
↩ Compatibilité : les jeux écrits pour le SDK v1 continuent de fonctionner sans modification. Le v2 n'enlève rien ; il ajoute requestPlay, onVerdict et reportEvent.
SDK : HTML5 / JavaScript
L'intégration native, pour tout jeu web (JavaScript, Canvas, WebGL manuel…).
1. Inclure le SDK
Ajoute cette ligne dans le <head> de ton index.html :
<script src="https://ludikafrik.com/sdk/ludikafrik-sdk.js"></script>
Utilise toujours cette URL officielle. Ainsi, ton jeu profite automatiquement des améliorations du SDK, sans rien changer.
2. Initialiser
Au chargement de ton jeu, initialise le SDK et récupère le contexte du joueur :
LudikafrikSDK.init().then(function(ctx) {
// ctx = { connecte: true/false, pass: 'semaine'|null, essai: true/false }
if (ctx.essai) {
// mode essai : limite la durée, propose un pass…
}
});
3. Signaler la fin du chargement
// une fois tes ressources chargées
LudikafrikSDK.gameLoadingFinished();
4. Encadrer le gameplay
C'est l'étape la plus importante : elle mesure le temps de jeu réel.
// le joueur clique pour commencer / reprend après une pause
LudikafrikSDK.gameplayStart();
// le joueur met en pause, perd, ou finit un niveau
LudikafrikSDK.gameplayStop();
⚠ Appelle gameplayStart() quand le joueur joue vraiment, pas pendant les menus. Un temps de jeu honnête, c'est ce qui protège ta part du pool — et notre système vérifie chaque session côté serveur.
5. Remonter le score
// à la fin d'une partie
LudikafrikSDK.submitScore(monScore, { victoire: aGagne });
Exemple complet minimal
<script src="https://ludikafrik.com/sdk/ludikafrik-sdk.js"></script>
<script>
LudikafrikSDK.init().then(function(ctx) {
chargerMonJeu();
LudikafrikSDK.gameLoadingFinished();
});
function demarrerPartie() {
LudikafrikSDK.gameplayStart();
}
function finPartie(score, gagne) {
LudikafrikSDK.gameplayStop();
LudikafrikSDK.submitScore(score, { victoire: gagne });
}
</script>
C'est tout ! Le portail gère le classement, l'anti-fraude, le calcul de tes revenus et l'affichage. Soumets ton jeu depuis ton
espace studio.
SDK : Unity (WebGL)
Guide de principe pour appeler le SDK depuis un build Unity WebGL.
⚠ Guide de principe. Un plugin Unity officiel arrive. En attendant, voici comment appeler le SDK JavaScript depuis Unity — la méthode fonctionne dès aujourd'hui.
Le principe
Unity exporte ton jeu en WebGL, qui tourne dans le navigateur. Depuis ton code C#, tu peux appeler le SDK JavaScript grâce à un fichier .jslib.
1. Créer le pont .jslib
Dans Assets/Plugins/Ludikafrik.jslib :
mergeInto(LibraryManager.library, {
LudikGameplayStart: function() { LudikafrikSDK.gameplayStart(); },
LudikGameplayStop: function() { LudikafrikSDK.gameplayStop(); },
LudikLoadingDone: function() { LudikafrikSDK.gameLoadingFinished(); },
LudikSubmitScore: function(score, victoire) {
LudikafrikSDK.submitScore(score, { victoire: !!victoire });
}
});
2. Déclarer les fonctions en C#
using System.Runtime.InteropServices;
public class Ludikafrik : MonoBehaviour {
[DllImport("__Internal")] private static extern void LudikGameplayStart();
[DllImport("__Internal")] private static extern void LudikGameplayStop();
[DllImport("__Internal")] private static extern void LudikLoadingDone();
[DllImport("__Internal")] private static extern void LudikSubmitScore(int score, int victoire);
}
3. Appeler aux bons moments
Appelle LudikLoadingDone() à la fin du chargement, LudikGameplayStart() au début d'une partie, LudikGameplayStop() à la pause/fin, et LudikSubmitScore(score, 1) en fin de partie.
Assure-toi que la page hôte du build WebGL inclut bien le <script src="https://ludikafrik.com/sdk/ludikafrik-sdk.js">. Lors de la soumission, notre équipe t'aide à configurer ça.
SDK : Godot (WebGL)
Guide de principe pour appeler le SDK depuis un export Godot HTML5.
⚠ Guide de principe. Godot permet d'appeler du JavaScript via la classe JavaScriptBridge.
Le principe
Depuis GDScript, tu appelles directement les fonctions du SDK JavaScript :
# à la fin du chargement
JavaScriptBridge.eval("LudikafrikSDK.gameLoadingFinished()")
# début de partie
JavaScriptBridge.eval("LudikafrikSDK.gameplayStart()")
# fin de partie
JavaScriptBridge.eval("LudikafrikSDK.gameplayStop()")
var score = 490
JavaScriptBridge.eval("LudikafrikSDK.submitScore(%d, { victoire: true })" % score)
Exporte ton jeu en Web (HTML5) depuis Godot, et inclus le SDK dans le fichier HTML d'export. Notre équipe t'accompagne à la soumission.
SDK : Phaser 3
Guide de principe pour un jeu Phaser 3 (JavaScript).
⚠ Guide de principe. Phaser étant du JavaScript, l'intégration est directe — comme HTML5.
Le principe
Phaser tourne en JavaScript : tu appelles le SDK directement depuis tes scènes.
// dans la scène de préchargement, méthode create()
create() {
LudikafrikSDK.gameLoadingFinished();
}
// scène de jeu : au lancement
create() {
LudikafrikSDK.gameplayStart();
}
// game over
gameOver() {
LudikafrikSDK.gameplayStop();
LudikafrikSDK.submitScore(this.score, { victoire: this.win });
}
N'oublie pas d'inclure le <script src="https://ludikafrik.com/sdk/ludikafrik-sdk.js"> dans la page qui héberge ton jeu Phaser.