OhMyGame
OhMyGame은 AI로 게임을 만들 수 있는 오픈소스 스튜디오로, 디자인·구축·플레이테스트·출판을 하나의 앱에서 모델 키와 함께 수행합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Une plateforme de quiz multijoueur en temps réel, façon Kahoot. Le présentateur affiche les questions sur la TV / le vidéoprojecteur, les invités jouent depuis leur téléphone en scannant un QR code.
La plateforme héberge plusieurs quiz indépendants (chacun avec sa propre salle, son code PIN et son QR) :
/) : présentation + choix du quiz./quiz/<id>/host) : QR code, code PIN, liste des joueurs,
questions, compte à rebours, classement et podium final avec confettis./quiz/<id>) : on saisit son prénom, on touche une des 4 tuiles
colorées, on voit la bonne réponse, son score et son classement.(identifiants <id> : parents, blind, blind80, blindfilm, blinddisney, culture, clement)
Le dépôt contient un blueprint render.yaml : clique le bouton, connecte ton
compte Render, valide → tu obtiens une URL publique stable
https://quiz-julien.onrender.com (accueil sur /, puis choix du quiz).
Prérequis : Node.js 18+.
npm install
npm start
Le serveur démarre sur le port 3000 (configurable via PORT). La console
affiche les adresses à utiliser, par exemple :
Accueil : http://192.168.1.42:3000/
• Stéphane & Marie → http://192.168.1.42:3000/quiz/parents/host (code ABC123)
• Clément & Charlotte → http://192.168.1.42:3000/quiz/clement/host (code XYZ789)
Ouvre / (accueil) pour choisir un quiz, ou va directement sur
/quiz/<id>/host pour l'écran de présentation. Les joueurs, eux, scannent
simplement le QR code affiché.
npm start.http://<IP-DE-TON-PC>:3000/ (accueil) et choisis un quiz → écran
présentateur (l'IP est affichée dans la console au démarrage, ex. 192.168.1.42).http://<IP>:3000 + saisir
le code PIN.)💡 Pour trouver ton IP locale manuellement :
- macOS / Linux :
ipconfig getifaddr en0ouhostname -I- Windows :
ipconfig→ « Adresse IPv4 »
Le QR code encode automatiquement l'URL de connexion. Le serveur détecte
host/port tout seul ; tu peux forcer l'URL avec la variable d'environnement
PUBLIC_URL (voir ci-dessous).
Si les invités ne sont pas tous sur le même Wi-Fi (ou pour éviter les soucis de réseau), expose l'appli sur Internet. Deux options :
Lance d'abord l'appli (npm start), puis dans un second terminal :
Avec Cloudflare Tunnel (cloudflared) — recommandé, gratuit, sans compte :
# Installation (macOS) : brew install cloudflared
# Installation (Linux) : voir https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/downloads/
cloudflared tunnel --url http://localhost:3000
Cloudflared affiche une URL publique du type https://xxx-yyy-zzz.trycloudflare.com.
Relance alors le serveur en lui passant cette URL pour que le QR code pointe au
bon endroit :
PUBLIC_URL="https://xxx-yyy-zzz.trycloudflare.com" npm start
Avec ngrok (sans compte pour un usage rapide) :
# Installation : https://ngrok.com/download
ngrok http 3000
ngrok affiche une URL https://xxxx.ngrok-free.app. De même :
PUBLIC_URL="https://xxxx.ngrok-free.app" npm start
ℹ️ L'ordre conseillé : ouvrir le tunnel d'abord pour connaître l'URL, puis relancer
npm startavecPUBLIC_URLafin que le QR encode la bonne adresse publique. Garde le terminal du tunnel ouvert pendant toute la soirée.
Idéal si tu veux une URL stable préparée à l'avance.
Render (https://render.com) :
Nodenpm installnpm starthttps://ton-quiz.onrender.com. Le serveur détecte
automatiquement l'URL publique (en-têtes du proxy), donc le QR code sera bon.
Au besoin, ajoute une variable d'environnement PUBLIC_URL avec cette URL.https://ton-quiz.onrender.com/ (accueil), puis choisis un quiz.Railway (https://railway.app) :
npm install / npm start).https://ton-quiz.up.railway.app.PUBLIC_URL = cette URL.https://ton-quiz.up.railway.app/ (puis choix du quiz).⚠️ Sur l'offre gratuite de Render, le service peut se « mettre en veille » après inactivité : ouvre la page quelques minutes avant la soirée pour le réveiller.
Dans le lobby, le bouton « ✏️ Questions » ouvre l'éditeur : énoncé, 2 à 4 réponses, bonne réponse cochée, durée (et artiste/titre pour un blind test). Ajout, suppression, réordonnancement, puis « 💾 Enregistrer ».
✱ quand des questions personnalisées sont actives.Chaque quiz a son propre fichier de questions, facile à éditer :
questions.js → quiz Stéphane & Marie (parents)questions-clement.js → quiz Clément & Charlotte (clement) (exemples à remplacer)Chaque question a un énoncé, 4 options et l'index de la bonne réponse :
{
text: "Ma question ?",
options: ["Réponse A", "Réponse B", "Réponse C", "Réponse D"],
correct: 2, // 0 = A, 1 = B, 2 = C, 3 = D
time: 40, // durée en secondes (optionnel, 40 par défaut)
}
L'ordre des options détermine la couleur/forme de la tuile :
0 → 🔺 rouge, 1 → 🔷 bleu, 2 → 🟡 rond jaune, 3 → 🟩 carré vert.
🔀 L'ordre des questions est mélangé aléatoirement à chaque partie. En revanche, l'ordre des réponses reste fixe (celui du fichier) : pratique pour les réponses récurrentes (ex. « Stéphane » toujours à gauche, « Marie » à droite). Tu peux mettre 2, 3 ou 4 options par question (une question à 2 options s'affiche avec 2 tuiles, comme un vrai/faux).
La playlist est dans questions-blind.js. Chaque entrée est une question normale,
plus un bloc music qui sert à retrouver l'extrait :
music: { artist: "Indochine", title: "L'Aventurier" }
Le serveur interroge le catalogue iTunes (gratuit, sans compte) et récupère un extrait de 30 s, joué automatiquement sur l'écran présentateur uniquement (les téléphones restent muets). La lecture vocale des questions est désactivée sur ce quiz.
Pour forcer un morceau précis, dépose un fichier dans public/audio/ et ajoute :
music: { artist: "…", title: "…", audio: "/audio/ma-chanson.mp3" }
Il existe quatre blind tests : questions-blind.js (variété), questions-blind80.js,
questions-blindfilm.js et questions-blinddisney.js.
✅ À faire avant la soirée : ouvre
/api/blind-checkpour vérifier que chaque chanson trouve bien son extrait — la page teste tous les blind tests et liste les morceaux introuvables (/api/blind-check?quiz=blind80pour n'en tester qu'un). Si un extrait manque, le présentateur affiche un avertissement et la question reste jouable.
Crée un fichier questions-monquiz.js, puis déclare-le dans server.js (objet
QUIZ_DEFS) avec un id, les deux prénoms et le fichier de questions. Il apparaîtra
automatiquement sur la page d'accueil.
500 points + jusqu'à 500 points de bonus selon la
rapidité (plus tu réponds vite, plus le bonus est élevé).0 point.L'écran présentateur demande un code, une seule fois par appareil. Sans lui, impossible de piloter la partie — et le serveur vérifie que chaque commande (démarrer, révéler, exclure…) vient bien du présentateur : un invité ne peut rien déclencher depuis son téléphone. Après 8 codes faux en 10 minutes depuis une même adresse, les essais sont bloqués 10 minutes ; le présentateur déjà connecté n'est jamais concerné.
⚠️ Le dépôt GitHub est public : le code par défaut (
mirabelle) y est visible. Pour un vrai secret, définis la variableHOST_CODEdans Render (service → Environment → Add Environment Variable).
Bouton « 👥 Équipes » dans le lobby : 2 à 6 équipes de couleur, renommables. Chaque invité choisit son équipe sur son téléphone (effectifs affichés en direct) ; ceux qui n'ont pas choisi — et les retardataires — sont placés automatiquement dans l'équipe la moins nombreuse. Le classement se fait à la moyenne de points par joueur, pour qu'une grande table ne gagne pas d'office. Il apparaît à chaque révélation, au podium, sur les téléphones et dans le PDF.
Au podium, les trophées de la partie s'affichent sous les marches, calculés automatiquement d'après les réponses de chacun : 🏆 Numéro 1, 🎯 Sniper (meilleure précision), ⚡ Gâchette (bonnes réponses les plus rapides), 🔥 Série en or, 🚀 Remontada, 🤔 Mûre réflexion, 💥 Tête brûlée, 👥 Équipe championne.
Le bouton « 📊 Analyse de la partie » (podium) ou « 📊 Mémoire » (lobby) ouvre la mémoire des quiz :
Les parties au-delà des 3 dernières non épinglées sont effacées à l'enregistrement de la partie suivante (un avertissement prévient dans la mémoire). Une partie où personne n'a répondu n'est pas gardée.
À la fin de la partie, l'écran podium propose « 📄 Résultats en PDF » : chiffres clés, podium, équipes, trophées, film de la partie, faits marquants, classement complet (avec bonnes réponses et précision) et le détail de chaque question (taux de réussite, temps moyen, réponse piège). Le PDF de chaque partie en mémoire se retélécharge depuis la mémoire (bouton « 📄 PDF »).
ℹ️ La mémoire est propre à ce navigateur et à cet ordinateur. Le serveur, lui, ne garde rien de façon durable (offre gratuite Render) : pense donc à utiliser toujours le même poste pour présenter, ou à télécharger le PDF après la partie.
Disponible aussi en API : /api/results?quiz=<id> (JSON) et /api/results.pdf?quiz=<id>.
Un joueur qui ferme le site par erreur peut rejoindre en cours de partie :
| Variable | Rôle | Défaut |
|---|---|---|
PORT | Port d'écoute du serveur | 3000 |
PUBLIC_URL | Force l'URL publique encodée dans le QR code | (auto) |
HOST_CODE | Code présentateur (insensible à la casse) | mirabelle |
Bonne soirée ! 🥂