Ficha Técnica
Papel
Criador e desenvolvedor
Stack
Em Produção é um jogo web multiplayer 2D que satiriza o dia a dia de um time de desenvolvimento: cada jogador assume um papel — Dev, Ops, QA, Designer, RH ou Gerente — e circula por um escritório completando tasks de sprint via mini-games, enquanto lida com incidentes escalando, bloqueadores ("o café acabou", "build quebrado"), sabotagem entre colegas e a gloriosa Release Night final. Tasks incluem clássicos como centralizar div, funciona na minha máquina e deploy na sexta.
O conceito
É um "Among Us de escritório de software": partidas em salas, papéis sorteados, sprints com timer de 3 minutos, votação de performance entre sprints (com direito a warning, suspensão e demissão → vira espectador) e um desfecho calculado — SUCCESS, ROLLBACK ou DISASTER — baseado nas tasks críticas entregues e nos incidentes deixados pra trás.
Arquitetura
Cliente-servidor autoritativo: o servidor é a fonte da verdade (spawn de tasks, escalação de urgência, scoring, fases); o cliente Phaser renderiza e envia inputs. O contrato inteiro do protocolo é tipado num pacote compartilhado — cliente e servidor importam os mesmos tipos, então dessincronia de payload vira erro de compilação.
Visão de componentes:
Fluxo de uma partida:
Decisões técnicas que valem a pena contar
Dependências cross-player como mecânica de colaboração. A task do Dev pode bloquear a do QA — de propósito. O gerador de sprint aplica regras de dependência ligando tasks de categorias diferentes e tenta empurrar dependente e dependência para jogadores distintos, forçando comunicação. O desbloqueio é tolerante (libera por id exato ou por categoria concluída), evitando deadlock de sprint.
Reconexão sem banco de dados. Todo o estado vive em memória no servidor. Um refresh de página não pode destruir a partida: um sessionId estável no localStorage permite o rejoin, o jogador desconectado fica "cinza" por 30 segundos antes de ter as tasks redistribuídas, e salas vazias em jogo têm TTL de 2 minutos antes do garbage collection.
Incidentes que escalam sozinhos. Cada item interativo é uma máquina de estados com timer próprio: normal → alerta → erro → crítico. A lógica de escalação é desacoplada do transporte via callback — o gerenciador de estado não sabe que Socket.io existe.
Ritmo que escala com a mesa. Partida de 2 jogadores não pode durar o mesmo que uma de 8: número de sprints, duração da release e quantidade de tasks (4 × jogadores, entre 4 e 12) são declarativos, definidos por tabela de formato por contagem de jogadores.
Stack
TypeScript · Phaser 3 · Socket.io · Node + Express · monorepo pnpm com pacote shared de tipos · Vite · Web Audio API (SFX procedural) · GitHub Actions + Railway · editor de mapa visual próprio.
Status
Jogável e avançado: lobby, avatares, sprints, 20+ mini-games, incidentes, sabotagem, votação e release funcionando. Em aberto: tasks colaborativas simultâneas (deploy exigindo Dev + Ops juntos, code review pareado) e mapas adicionais — a arquitetura já suporta múltiplos via registry.
Curtiu o projeto?
Se quiser conversar sobre esse projeto, arquitetura ou uma oportunidade de trabalho, é só me chamar. 🚀
contato@racoelho.com.br