OhMyGame
OhMyGame is the open-source studio for making games with AI. Design, build, playtest, and publish games in one app, with your own model keys.
Create a room and share the link to play a wolf‑themed online game
AI summary · website content
GamesPLpgSQL · TypeScriptGitHub @AlfonsoVLOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Web app de partidas sociales de deducción con varias temáticas (La Aldea Maldita y Alien), inspirada en el clásico juego de los hombres lobo. Cada jugador usa su móvil: recibe su rol en secreto, actúa de noche cuando le toca y vota de día. Quien crea la sala también juega, pasa los turnos y su móvil hace de narrador. El sonido viene activado en su móvil y desactivado en el de los demás, que pueden activarlo para oír también la narración en cada fase.
Funciona solo con servicios gratuitos: Astro + React + Tailwind en Vercel (plan Hobby) y Supabase (plan Free). El diseño y las reglas confirmadas están en docs/arquitectura.md.
En el modo clásico hacen falta al menos 6 jugadores. En la portada hay un enlace a la ayuda con las reglas y la ficha de cada rol.
localStorage. No se muestra nunca en la interfaz.iniciar_partida, solo el creador). La tabla
roles_privados tiene RLS y ningún acceso para anon; obtener_mi_rol devuelve solo el
rol de quien llama (y sus compañeros si es malo). Los roles nunca se envían por Broadcast
ni por Presence ni en los datos generales de la sala.anon no puede leerlas
ni escribirlas. Todo pasa por funciones SECURITY DEFINER que comprueban el token. Por eso
el asesor de Supabase avisa de que anon puede ejecutar esas funciones: es intencionado.anon o publishable) de Supabase,
nunca la service role. El archivo .env está en .gitignore: no lo subas nunca.Crea un proyecto gratuito en Supabase.
En SQL Editor, ejecuta en orden los archivos de supabase/migrations:
20261025000000_esquema_inicial.sql20261025010000_avanzar_fase.sql20261025020000_noche_dia.sql20261025030000_lobos_acuerdo.sql20261029000000_cancelar_sala.sql20261029010000_historial.sql20261029020000_reacciones_y_tiempos.sql20261101000000_volver_a_jugar.sql20261101010000_avanzar_noche.sql20261101020000_lobos_legendarios.sql20261101030000_aldeanos_legendarios.sql20261101040000_salvador_y_comediante.sqlCon la CLI de Supabase también puedes hacer
supabase link y supabase db push.
En Project Settings → API copia la URL del proyecto y la clave pública (anon o
publishable). No hace falta configurar Realtime: los canales públicos vienen activados.
Importa el repositorio en Vercel. Detecta Astro solo; no cambies los comandos de build.
En Settings → Environment Variables añade:
| Variable | Valor |
|---|---|
PUBLIC_SUPABASE_URL | URL del proyecto de Supabase |
PUBLIC_SUPABASE_ANON_KEY | Clave pública (anon o publishable) |
Si conectas el proyecto con la integración de Supabase de Vercel no hace falta crearlas: la
app también lee las que crea la integración (NEXT_PUBLIC_SUPABASE_URL,
NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_ANON_KEY, etc.).
No definas PUBLIC_MODO_PRUEBAS en producción.
Despliega. Cada cambio en main se publica solo y cada pull request tiene su propia
preview.
Para probar con menos de 6 móviles, define PUBLIC_MODO_PRUEBAS=true (en .env o solo en
el entorno Preview de Vercel). Así el modo clásico permite empezar con 2 jugadores, con 1
malo y hasta 2 roles especiales. Si no se define, la app exige el mínimo normal.
npm install
cp .env.example .env # y rellena la URL y la clave pública
npm run dev # http://localhost:4321
Crea una sala y abre el enlace en otras pestañas o móviles de la misma red. La cámara solo
funciona en localhost o con HTTPS.
npm run typecheck
npm test # motor, temáticas, narración y tiempo real
npm run build
scripts/test-vercel-function.sh # la función de Vercel arranca sin el node_modules del proyecto
Las migraciones y sus tests SQL se prueban en un Postgres local vacío:
createdb lobos_test
DATABASE_URL="postgresql://localhost/lobos_test" scripts/test-sql.sh
GitHub Actions ejecuta todo esto en cada pull request.
| Carpeta | Contenido |
|---|---|
src/lib/game | Motor de la partida (composición, Ladrón, narración), sin UI |
src/lib/tematicas | Temáticas en JSON: roles, textos y audios |
src/lib/realtime | Cliente de Supabase, RPC, canal de la sala y token |
src/components | Islas de React: crear sala, sala de espera, partida, noche, ayuda |
supabase/migrations | Esquema, funciones RPC y tests SQL (supabase/tests) |
public/audio/{tematica} | Narración en MP3 (ElevenLabs). Si falta un audio, se usa la voz del navegador |
public/avatares | Avatares de rol (licencias) |
Los textos y los nombres exactos de los MP3 están en src/lib/tematicas/{tematica}.json
(campo audio). Copia cada MP3 a public/audio/{tematica}/ con ese nombre. Hoy están los de
La Aldea Maldita; Alien usa la voz del navegador hasta que se añadan los suyos.