Recompia
Pokémon Pokopia (Switch 2) recompiled to run natively on Windows with Linux/Handheld support. Multiplayer included, modding, feature enhancements and more! Join the discord community as well
翻訳待ち
No updates detected yet. GitHub releases will appear here.
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 ↗Lig 4 (Connect Four) multiplayer para jogar pelo celular durante uma palestra: a plateia entra por QR code, joga em duplas e o telão mostra as partidas e o placar em tempo real.
localStorage + um apelido{ roomId, playerId, column } para /api/move| Rota | O que é |
|---|---|
/ | Criar sala / entrar com código de 4 letras |
/sala/ABCD | Partida: 1º a entrar = vermelho, 2º = amarelo, o resto assiste |
/bot | Contra o bot (minimax com poda alfa-beta, 3 níveis, roda só no navegador) |
/telao | Partidas ao vivo + placar, para projetor |
supabase/migrations/0001_init.sql e clique em Run. Isso cria as tabelas, liga o RLS (o cliente só lê) e adiciona rooms e wins ao Realtime.anon / publishable) e a chave secreta (service_role / secret).Requer Node 20.9+.
npm install
cp .env.example .env.local # e preencha as 3 variáveis do Supabase
npm run dev:lan
dev:lan escuta em todas as interfaces, para os celulares no mesmo Wi-Fi acessarem http://IP-DA-MÁQUINA:3000. Em dev, o QR code já usa o IP da rede mesmo se você abrir pelo localhost. Se ele escolher a placa de rede errada, force com LAN_IP=192.168.0.10 npm run dev:lan. No Windows, permita o Node no firewall quando ele perguntar (rede privada).
Sem as variáveis do Supabase o app sobe mesmo assim, só com o modo contra o bot.
npm test # testes da lógica do jogo (vitória, empate, bot)
npm run typecheck
| Variável | Valor |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | URL do projeto Supabase |
NEXT_PUBLIC_SUPABASE_ANON_KEY | chave pública (anon / publishable) |
SUPABASE_SERVICE_ROLE_KEY | chave secreta (service_role / secret). Nunca com prefixo NEXT_PUBLIC_ |
NEXT_PUBLIC_SITE_URL | opcional: URL pública usada no QR (ex.: https://lig4.vercel.app) |
lib/game: playMove, findWinner, isDraw e o bot, sem React nem Supabase. A API e o bot usam o mesmo código.UPDATE da jogada só passa se move_count no banco ainda for o lido. Dois toques ao mesmo tempo → o segundo recebe 409 e o cliente re-sincroniza.rooms (ativas nas últimas 2h) e wins. Os UUIDs dos jogadores ficam em room_seats, que o anon não lê, para ninguém jogar no lugar de outro. Toda escrita usa a service role, só no servidor.