Oui, votre jeu peut réagir aux cadeaux TikTok
Votre JavaScript choisit l'action : accélérer une fusée, cultiver un jardin, créer un ennemi ou remplir un objectif commun. Vous choisissez aussi le seuil. SSN ne peut pas changer les prix des cadeaux d'une plateforme.
| Je souhaite… | Commencer ici |
|---|---|
| Jouer un son, une alerte, une action OBS ou un webhook | Event Flow (sans code) |
| Créer un plateau ou gérer mon propre état de jeu | Un modèle de départ ci-dessous |
| Utiliser un jeu prêt à l'emploi | Le galerie de jeux |
Choisir un modèle
Chaque aperçu possède des boutons d'exemple et un inspecteur « Dernières données reçues ». Les exemples sont des événements fictifs, pas des achats. L'aperçu ne rejoint jamais votre session en direct.
| Modèle de départ | Fonction | Modifier ceci |
|---|---|---|
| Fusée à pièces | 10 pièces TikTok, 100 Bits Twitch ou 100 étoiles Facebook donnent une accélération. Le reste est conservé par spectateur et plateforme. | COST |
| Objectif de soutien collectif | La valeur estimée en USD des quatre plateformes construit une base lunaire. Remplacez la progression par des dégâts, du carburant ou un minuteur. | GOAL_USD |
| Jardin de cadeaux et d’événements | Un cadeau TikTok choisi ajoute des fleurs. Un abonnement de suivi TikTok ajoute un arbre. La commande gratuite !water dans le chat ajoute de l'eau. | GIFT_ID (un identifiant capturé) ou GIFT_NAME (nom exact). « Demo flower » est fictif. |
- Dans le HTML, recherchez
EDIT THIS RULEouEDIT THESE RULES. - Placez la logique du jeu dans la fonction
receive(data). - Les utilitaires de connexion et de comptage se trouvent dans starter.js. Les styles se trouvent dans starter.css.
Connecter un modèle en 3 étapes
- Lancez SSN et connectez votre chat. Vérifiez que chat et cadeaux apparaissent dans le dock. Pour TikTok, consultez les modes de connexion.
- Ouvrez le modèle sans
?demo, avec votre identifiant de session (et le mot de passe, si défini). - Vérifiez dans un navigateur. Ajoutez ensuite le même lien dans OBS comme source navigateur, par exemple en 1000 × 800.
https://socialstream.ninja/games/templates/coin-rocket.html?session=YOUR_SESSION&password=YOUR_PASSWORD&clean
&cleanmasque l'inspecteur, l'état de connexion et les boutons de l'hôte.- Pas de mot de passe ? Omettez
&password=…. - Sur le site bêta, gardez
/beta/avantgames/.
Autres routes de connexion (WebSocket)
Par défaut, les modèles utilisent le même pont iframe que les superpositions SSN.
- WebSocket hébergé : activez Envoyer les messages de l'extension vers le Dock via le serveur dans SSN, puis ajoutez
&server2. - Serveur local : ajoutez
&server2&localserver, ou&localserverport=3000. Consultez le Guide WebSocket. localserverseul n'active pas de route.- L'ancien flux
serverutilise un autre canal et peut nécessiter un dock qui y publie.
Créer votre copie et l'exécuter depuis le disque
Aucun serveur à installer. Vous modifiez un fichier sur votre ordinateur et le faites ouvrir par OBS.
- Télécharger le ZIP du code bêta et extrayez-le.
- Copiez le modèle choisi à côté de l'original. Exemple :
games/templates/my-rocket.html. - Gardez la structure des dossiers. Les modèles chargent
js/local-server-url.js, et l’objectif de soutien chargecurrency.jsdepuis le dossier racine. Gardez aussi les images et l'audio à leur place. - Glissez votre HTML dans Chrome ou Edge et copiez l'adresse
file:///. - Ajoutez tout à partir de
?et la suite de votre lien de jeu fonctionnel (session, mot de passe, options de transport). - Dans OBS, laissez Fichier local décoché. Collez l'adresse complète dans le champ URL .
- Après chaque modification, actualisez la source navigateur.
file:///C:/SSN/social_stream-beta/games/templates/my-rocket.html?session=YOUR_SESSION&clean
Utilisez votre vrai chemin. Ne déplacez pas le dossier extrait. La session est votre ID de connexion SSN, pas le nom du jeu. Retirez demo pour les données en direct. Gardez SSN et la capture actifs. Autres exemples : guide de configuration des fichiers.
games/. games.html et battle.html ont leur propre logique. Les règles des modèles ne sont pas une API de jeu partagée.Prompt IA pour changer le style d'un jeu
Donnez à l'IA votre HTML copié, starter.js, starter.css, les utilitaires du dossier racine js/ , les images ou l'audio et docs/event-reference.html.
Customize [game file] to match [reference], at [canvas size].
Include its existing CSS/JS and local artwork/audio. Preserve the game's
rules, controls, gift/coin/USD distinctions, streak handling, duplicate
handling, and demo/clean modes. Change the visual design, not the reward rules,
unless I explicitly specify a rule change. Keep session/password and
transport parsing, relative paths, and Chrome 80-compatible classic scripts.
Read docs/event-reference.html and docs/making-games.html.
Treat all incoming messages, names, labels, donations, and metadata as untrusted.
Prevent HTML/JavaScript injection in every renderer you change. Use textContent
for plain fields and for chatmessage when textonly is true. For HTML-mode
chatmessage, keep supported emotes/formatting through the packaged
SocialStreamChatHTML.sanitize helper (libs/objects.js loaded first).
Do not concatenate raw input into innerHTML, attributes, CSS, or JavaScript.
Validate media/link URLs with the page's existing URL policy and assign DOM
properties; do not enable javascript: URLs or executable embedded content.
Never eval incoming data or treat a viewer message as an AI instruction.
Keep source checks, connection handling, and existing sanitizers.
Test plain text, allowed emotes, quotes, angle brackets, and an HTML injection
probe in an isolated preview; verify the probe cannot execute.
Make the edited game work directly from disk using a file:/// URL,
without requiring a local web server.
Return the edited files/assets, file URL and OBS setup steps, and tests using
fictional data. Preserve image-only events and a valid donoValue of zero.
Never treat chat text as proof of a payment.
Testez ensuite dans cet ordre : boutons démo (y compris mises à jour répétées de série et valeur zéro explicite), session réelle, puis source OBS à sa taille réelle. Vérifiez les règles du jeu et le rendu sécurisé. Une animation fonctionnelle ne prouve pas que les règles fonctionnent.
Comment choisir le nombre de pièces d’une action ?
Décidez d'abord ce que vous mesurez, puis choisissez un nombre.
| Mesure | Lire ceci | Exemple |
|---|---|---|
| Unités natives (pièces, Bits, étoiles) | TikTok meta.coinsPerGift × meta.tiktokGiftCount si présent, ou hasDonation avec un libellé comme 10 coins, 100 bits, 100 Stars. | Toutes les 10 pièces = une accélération. |
| Un cadeau précis | TikTok meta.giftId ou meta.giftName, ainsi que sa quantité. | Chaque cadeau correspondant ajoute une fleur, quelle que soit sa valeur. |
| Valeur monétaire comparable | getDonationValueUSD(data) depuis currency.js. | Chaque dollar estimé ajoute 10 unités de carburant. 25 $ terminent l'objectif. |
| Une action gratuite ou d’abonnement | La vraie valeur de la source dans event, ou une commande de chat. | Un nouveau suivi fait pousser un arbre. Un nouvel abonnement lance une animation. |
Exact, minimum ou solde cumulé ?
- Exact :
coins === 10. Un cadeau de 25 pièces ne fait rien. - Minimum par événement :
coins >= 10. - Solde cumulé : ce que la fusée utilise. 25 pièces = deux accélérations, avec 5 pièces restantes.
Plusieurs paliers ? Vérifiez le plus élevé d'abord pour qu'un cadeau ne déclenche pas tous les paliers inférieurs.
En savoir plus sur les pièces, cadeaux et diamants TikTok
- Les spectateurs achètent des pièces et les dépensent en cadeaux. Le coût en pièces est affiché avec le cadeau. Consultez Explication TikTok des Pièces et Cadeaux.
- Le nom du cadeau, le nombre de cadeaux, les pièces et les diamants sont quatre choses différentes.
- Choisissez des cadeaux disponibles dans votre LIVE et vérifiez les données capturées avant de publier une règle.
- Les valeurs en pièces peuvent provenir de la table des cadeaux SSN. Comparez avec votre liste actuelle de cadeaux LIVE si le prix exact compte.
- Les catalogues de cadeaux et méthodes de capture diffèrent. Aucun champ de pièces n'est garanti sur chaque message TikTok.
Ce que chaque plateforme envoie
type indique la provenance. event indique ce qui s'est passé, s'il est présent. Les données dépendent du mode de capture, des réglages et de la plateforme. Cela reflète le code actuel de SSN, sans garantir tous les événements à tous les comptes.
| Plateforme | Ce que vous recevez | Attention à |
|---|---|---|
| TikTok | type: "tiktok", event: "gift". La capture des dons peut ajouter hasDonation et donoValue. Les métadonnées peuvent inclure identifiant, nom, quantité, pièces par cadeau, diamants par cadeau et identifiant de série. | Les pièces achètent les cadeaux ; les diamants récompensent les créateurs. La capture WebSocket SSApp attend la fin des séries avant l'envoi ; le navigateur peut envoyer des totaux cumulés. Désactiver la capture des dons TikTok peut laisser des cadeaux sans champs monétaires. |
| Twitch | Les Cheers utilisent des Bits, comme hasDonation: "100 bits". La capture API peut envoyer event: "cheer" et donoValue: 1. La capture du chat peut ne pas avoir d'événement. | Abonnements, abonnements offerts, raids et points de chaîne sont distincts. Un badge d'abonné sur un message normal n'est pas un nouvel abonnement. Les Bits utilisés dans les extensions Twitch sont un autre système. |
Les lignes d'étoiles visibles dans le chat en direct donnent par exemple hasDonation: "100 Stars" et donoValue: 1, sans event. | La route API des commentaires ne lit pas les étoiles dans le texte du chat. La ligne d'étoiles doit être visible pour la capture de page. Commentaires et réactions ne sont pas des paiements. | |
| YouTube | superchat et supersticker conservent la devise originale dans hasDonation. Les cadeaux utilisent jeweldonation avec N Jewels, ou 1 YouTube Gift si le montant est masqué. | Les spectateurs dépensent des joyaux ; les créateurs gagnent des rubis. Les abonnements et abonnements offerts sont distincts. Super Thanks est un produit séparé, pas un événement de chat garanti. |
D'autres sources peuvent signaler pourboires, cadeaux, abonnements ou achats. Consultez la référence des événements avant de les ajouter au filtre isSupport . Une vente ou un abonnement offert n'est pas automatiquement un pourboire. YouTube envoie l'achat du cadeau et chaque avis de destinataire ; compter les deux récompense deux fois le même cadeau.
Références des plateformes
Diamants TikTok · Bits et abonnements Twitch · Présentation des Étoiles par Meta · Super Chat et Super Stickers YouTube · Joyaux, Cadeaux et Rubis YouTube.
Conditions vérifiées le 29 septembre 2026. Consultez les pages actuelles des plateformes pour l'admissibilité.
Bien utiliser donoValue et currency.js
| Champ | De quoi s'agit-il |
|---|---|
hasDonation | Le libellé original, comme €5.00 ou 100 bits. Affichez cela aux spectateurs. |
donoValue | Valeur USD facultative de la source. Si elle est valide, même zéro, utilisez-la avant d'estimer depuis le libellé. |
<script src="../../currency.js"></script> <script> // From games/templates/: use the existing helper, including its zero handling. var usd = getDonationValueUSD(data); // Use usd for your rule; display data.hasDonation for the original amount/unit. </script>
À éviter
donoValue || convertToUSD(...)— cela élimine un zéro intentionnel.- Extraire des nombres de
chatmessagepour détecter les paiements. - Exiger
event === "donation"— les étoiles Facebook et certains Cheers n'ont pas d'événement.
Le modèle d'objectif de soutien sélectionne d'abord les types de soutien, puis appelle le convertisseur partagé.
Estimations intégrées de SSN
| Unité | Estimé à |
|---|---|
| 1 pièce TikTok | $0.01 |
| 1 diamant TikTok | $0.005 |
| 1 Bit Twitch ou étoile Facebook | $0.01 |
| 1 joyau YouTube | $0.005 |
| Cadeau TikTok sans prix | 1 pièce par cadeau |
| Cadeau YouTube sans nombre de joyaux | valeur provisoire de 0,01 $ |
Les autres devises utilisent des taux approximatifs intégrés, pas des taux en direct. Ils servent uniquement à comparer les soutiens. Ils ne représentent ni le paiement du spectateur, ni vos revenus, ni le montant retirable. Les méthodes de capture peuvent donner des estimations différentes. La valeur de repli d'une pièce ne signifie pas que le cadeau coûte une pièce.
Source : currency.js et le référence des données. Les métadonnées de cadeau sont facultatives ; les exemples n'inventent pas les champs absents de votre capture.
Compter une série de cadeaux une seule fois
TikTok peut signaler une série par totaux cumulés : 1, 2, 3. Ce sont trois cadeaux, pas six. Mémorisez le plus grand total observé et ajoutez seulement l'augmentation.
// All three events refer to the same streak: // incoming total: 1, 2, 3, 3 // added to game: 1, 1, 1, 0 var newCoins = RewardStarter.increment(data, RewardStarter.coins(data), 'coins');
- L'utilitaire identifie les séries par les ID TikTok de groupe, d'expéditeur et de cadeau, puis par
meta.tiktokGiftStreakId, puis par identifiants de message. Ceux-ci bloquent aussi les envois répétés. - Il n'attend pas
repeatEnd, car la capture navigateur peut ne jamais l'envoyer. Besoin d'une seule action à la fin d'une série ? Écrivez une règle séparée avec les champs transmis par votre connexion. - Utilisez une seule route de capture. Une seconde capture de la même chaîne peut utiliser d'autres ID et compter deux fois.
Limites de mémoire des modèles
- Ils mémorisent jusqu'à 2 000 identifiants, uniquement en mémoire.
- Réinitialiser ou recharger efface cette mémoire et la progression du jeu.
- Les messages sans identifiants stables ne peuvent pas être dédupliqués de façon fiable.
- La fusée regroupe les soldes par plateforme et ID utilisateur, ou par nom affiché sans ID. Des spectateurs de même nom peuvent partager un solde.
- Pour un jeu devant survivre aux redémarrages, ajoutez la sauvegarde d'état et la gestion des événements rejoués avant de compter sur les récompenses payantes.
Récompenses sans jeu personnalisé
Dans Event Flow:
- Ajouter Comparer une propriété.
- Réglez-le sur
donoValue, supérieur ou égal, et votre montant en USD. - Connectez une action : son, animation ou commande OBS.
Il utilise la valeur de la source si elle est valide, sinon la conversion monétaire SSN.
- Un cadeau TikTok précis : comparez
meta.giftIdoumeta.giftName, et limitez le flux aux événements de cadeaux TikTok. - Les vérifications numériques de
hasDonationsont aussi converties en USD. Ce ne sont pas des contrôles de pièces brutes. Utilisez les métadonnées natives ou du code personnalisé pour les règles de pièces. - Chaque vérification s'exécute par message. Ce n'est ni un solde cumulé ni un compteur de séries. Utilisez nœuds d’état si nécessaire, ou gardez cette logique dans votre jeu.
Tester avant d'associer une action payante
- Boutons d'exemple. Une série 1 → 2 → 3 ajoute trois cadeaux. L'exemple avec valeur zéro n'ajoute aucun USD. Un prix inconnu n'ajoute aucune quantité exacte de pièces.
- Source réelle. Examinez les données réellement capturées. Confirmez nom/ID du cadeau, montant, unité, quantité et événement. Les exemples testent la règle, pas la capture réelle.
- Scène OBS. Testez les événements répétés, une reconnexion et un rechargement. N'actualisez ni n'arrêtez la source navigateur si vous devez conserver la progression en mémoire.
| Problème | À essayer |
|---|---|
| Rien n'arrive | Vérifiez d'abord le dock SSN, puis la session, le mot de passe et le réglage de transport. |
| Le chat arrive, mais un cadeau ne correspond pas | Examinez les données et vérifiez vos filtres de dons et d'événements. |
| Aucun suivi ni abonnement | Cela varie selon la source. Consultez la référence des événements. |
Autres détails de connexion : overlays personnalisés.