OhMyGame
OhMyGame은 AI로 게임을 만들 수 있는 오픈소스 스튜디오로, 디자인·구축·플레이테스트·출판을 하나의 앱에서 모델 키와 함께 수행합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
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.