Imported from Luiznunvoa/projeto-de-software (
AGENTS.md). Install upstream withnpx skills add Luiznunvoa/projeto-de-software. Copyright stays with the author.
Guia de Agentes IA
Objetivo do projeto
Este projeto implementa digitalmente o jogo Ethnos usando TypeScript + Phaser.
Direcao tecnica
- Priorizar simplicidade: solucoes pequenas, diretas e faceis de manter.
- Priorizar legibilidade: nomes claros, funcoes curtas e fluxo facil de seguir.
- Priorizar padronizacao: manter estilo consistente em estrutura, estado e nomenclatura.
- Evitar complexidade desnecessaria: sem over-engineering.
Direcao visual
- Estilo grafico pixelado.
- Uso de imagens de stock footage com filtro pixelado.
- Ambientacao fantastica medieval como identidade artistica principal.
- Manter consistencia visual entre personagens, cenarios, UI e efeitos.
- Fonte principal para a maioria dos textos: Jersey (TTF).
Stack e comandos
- Runtime e scripts:
bun - Motor de jogo:
phaser - Build/dev:
vite - Linguagem:
typescript(strict) - Qualidade:
bun run devbun run buildbun run lintbun run fixbun run formatbun run check
Estrutura base
src/game/scenes/: cenas de jogo do Phasersrc/game/scenes/base/: cenas abstratassrc/game/state/: estado do dominio (jogo, jogador, regiao, turno, mesa etc.)src/types/: tipos globais do jogo- Alias:
@/* -> src/*
Regras para agentes
- Ler contexto antes de editar (arquitetura, tipos e estado).
- Propor mudancas pequenas e incrementais.
- Nao quebrar APIs existentes sem justificativa explicita.
- Reaproveitar tipos e funcoes antes de criar novos artefatos.
- Preservar consistencia com o padrao atual do projeto.
- Evitar dependencias novas sem necessidade real.
- Sempre validar com lint/build quando possivel.
Convencoes de implementacao
- Use nomes explicitos e orientados ao dominio de Ethnos.
- Evite funcoes muito grandes; prefira passos pequenos.
- Mantenha logica de jogo separada da logica de renderizacao.
- Prefira tipos explicitos nos limites do dominio.
- Trate estados invalidos de forma defensiva.
- Ao implementar apresentacao, preservar a direcao visual pixelada e fantastica medieval.
Regras de dominio atuais (inferidas do state)
- Setup de jogadores: cada jogador inicia com 10 cartas de aliado na mao.
- Limite de mao:
MAX_HAND_SIZE = 10. - Compra de cartas na mesa:
- Se o deck acabar, embaralhar descarte no deck.
- Se deck e descarte estiverem vazios, erro de estado.
- Carta dragao comprada com
drawDragons = truevai para area de dragoes e nao entra na mao. - Carta dragao com
drawDragons = falsee reinserida no fundo ate sair um aliado.
- Turno:
- Fases existentes:
ChooseAction,Draw,BandCommand,PowerCommand. - Proximo turno avanca jogador por modulo da quantidade de jogadores e reinicia em
ChooseAction.
- Fases existentes:
- Bando:
tribedo bando e derivada da carta lider (leaderIndex).- Bando guarda
targetRegion,playerId, cartas e lider. - Contrato de tipo diz que cartas do bando devem ser da mesma tribo.
- Regioes:
- Regiao valida adjacencia por lista de vizinhos.
- Regiao exige tamanho minimo de bando (
bandSize). - Regiao limita tokens por
tokenLimit.
Especificacoes que ainda faltam fechar
- Ordem oficial e validacoes de transicao entre fases do turno.
- Condicoes de vitoria por era e pontuacao detalhada.
- Regras completas de comando de bando (movimento, conquista, desempate).
- Efeitos de tribo e calculo de poder (
triggerTribePowerecalcPowerainda TODO). - Regras de dragoes e ativacao de bandeiras no fluxo de turno.
- Definicao inicial obrigatoria para
currentTurn,currentAgeemarkerHistory. - Regras de inicializacao de
markersLeftecontrolTokenspor jogador. - Validacao explicita de bando monotribo e faixa valida de
leaderIndex. - Politica de aleatoriedade (deterministica por seed ou nao) para embaralhamento.
Fluxo sugerido para tarefas
- Entender o pedido e listar impacto em arquivos.
- Definir criterio de aceitacao objetivo.
- Implementar em passos pequenos.
- Executar checks (
lint,buildquando cabivel). - Entregar resumo com:
- o que mudou
- por que mudou
- riscos e proximos passos
Definition of Done
- Funcionalidade implementada conforme pedido.
- Codigo legivel e consistente com o projeto.
- Sem erros de lint introduzidos pela mudanca.
- Sem regressao evidente no fluxo principal.
- Mudancas documentadas quando alterarem regras/comportamento.
Escopo e limites
- Foco atual: implementacao funcional e clara de Ethnos.
- Se houver conflito entre "ser completo" e "ser simples", escolher simplicidade.
- Regras avancadas podem ser adicionadas depois, com base em iteracoes.