Relato da criação de um webgame que é desenvolvido e implantado automaticamente todos os dias com base nas opiniões dos usuários
(blog.frogred8.dev)Criei um webgame com o conceito de reunir os itens de feedback dos usuários e implantá-los no dia seguinte.
Foi um projeto que fiz para me familiarizar com ferramentas de IA, e o GitHub também está público, então fique à vontade para explorar.
game: https://spiralwave.frogred8.dev
github: https://github.com/frogred8/SpiralWave
- Visão geral e planejamento do projeto
- Motivação e objetivo: experimento de vibe coding usando ferramentas de IA avançadas (como Gemini) e tentativa de desenvolver um webgame aplicando tecnologias que eu ainda não tinha usado.
- Direção de desenvolvimento: definido como um mini webgame de 'coleta de recursos com limite de tempo', no qual as opiniões dos usuários são refletidas automaticamente todos os dias.
- Criação do protótipo inicial
- Conceito principal: jogo de coleta de recursos e montagem de árvore de habilidades sem competição nem perdas.
- Uso de IA: converti um esboço em papel em prompt e implementei em 30 minutos a estrutura básica do jogo com TypeScript, Vite e Phaser.
- Limites da implementação de lógica complexa e solução manual
- Desenvolvimento da árvore de habilidades: a lógica básica de pré-requisitos foi implementada com IA, mas a lógica complexa em que, ao cancelar um nó intermediário, os nós inferiores são cancelados em cadeia não pôde ser resolvida pela IA, então implementei isso manualmente.
- Omissão de código de teste: devido às frequentes mudanças de design e à alta velocidade de desenvolvimento, avancei intencionalmente sem escrever testes.
- Grande refatoração e características da depuração com IA
- Separação da UI: separei o código da UI porque um único arquivo estava ficando grande demais, mas a consistência e a satisfação com a estrutura foram baixas; confirmei que, em trabalhos grandes, reforçar o prompt e refazer a tarefa é uma abordagem eficaz.
- Bug de ordem de execução: em relação a um erro de runtime surgido após a refatoração (inversão entre a atualização de estado e a ordem de exibição da UI), a IA apenas exagerou no uso de guard clauses; no fim, o desenvolvedor humano entendeu o fluxo e resolveu o problema de forma simples corrigindo diretamente duas linhas de código.
- Tive a sensação curiosa de que os erros da IA eram relativamente humanos.
- Aplicação de auto commit no Git e de guias
- Criação de guia de prompts: para reduzir o incômodo de instruções repetitivas, adotei um arquivo de diretrizes (GEMINI.md) que organiza a stack técnica e o modo de funcionamento.
- Workflow de automação: configurei para que, após a conclusão do trabalho no código, fosse gerada automaticamente uma mensagem de commit com o tempo de execução do agente, o prompt de instrução e um resumo da tarefa, reduzindo o esforço de revisão simples.
- Projeto da arquitetura de atualização automática e otimização
- Mudança na forma de implantação: abandonei a ideia inicial de implantação automática em tempo real a cada 2 horas devido à alta taxa de bugs em runtime (cerca de 25%), que comprometia a estabilidade do build, e decidi por criar e implantar separadamente um build diário de teste.
- Workflow com Cron: usando node:cron, construí um processo de automação monolítico que segue o fluxo 'coleta de feedback → refinamento → geração de código → build e criação de release → implantação'.
- Atualização das notas de release: compartilhei o arquivo de lista de servidores entre instâncias Docker por meio de um volume comum e apliquei cache com expiração de 5 minutos para controlar a carga; além disso, implementei a exibição das notas de release refinando primeiro os pedidos multilíngues dos usuários para inglês e depois traduzindo-os novamente.
- Funcionalidades que foram descartadas durante o desenvolvimento
- Função de recomendação (Like) para opiniões no leaderboard (ausência de identificador e custo das chamadas de API).
- Ferramenta sofisticada de gerenciamento de dados de habilidades (limites da imaginação e maior eficiência em editar JSON diretamente).
- Construção de um ambiente Docker distribuído por serviço (integrado em uma única imagem para minimizar a complexidade de operação e gerenciamento).
- Função de notificação por e-mail quando a opinião do usuário for refletida (validade da coleta de e-mails sem cadastro e risco de uso indevido).
- Inclusão de anúncios laterais (fadiga com o processo de aprovação da plataforma e efeito insuficiente em relação ao baixo valor pago).
- Impressões sobre desenvolvimento com IA
- Trade-off entre produtividade e testes: a velocidade de implementação aumentou cerca de 10 vezes, mas enfrentei o limite de que o tempo e a fadiga gastos com validação (QA) crescem proporcionalmente.
- Características da qualidade do código: a completude no nível de função é alta, mas a legibilidade é baixa, o que dificulta entender o fluxo geral; também notei uma tendência de introduzir padrões de generalização desnecessariamente inchados mesmo em situações em que um hard coding pontual seria mais vantajoso.
1 comentários
Interessante.