Capítulo 01 Fundamento
Porque os jogos são o domínio mais exigente
Reúne todas as dificuldades dos volumes anteriores e acrescenta duas próprias — o que faz dele o melhor teste de tudo o que a série ensinou.
1.1 O que se acumula
| Do volume | O que traz |
|---|---|
| III · produto | Código, convenções, arquitectura, verificação |
| IV · marca | Direcção de arte, paleta, consistência visual em milhares de recursos |
| V · pensar | Desenho de sistemas, balanceamento, decisões de design |
1 · O motor é um mundo com regras próprias. Unity, Unreal, Godot e os outros têm ciclos de vida, convenções e armadilhas que mudam entre versões. É o caso extremo do problema de corte de conhecimento do volume III, cap. 3.3: o modelo escreve com confiança a API de três versões atrás.
2 · A verificação é intrinsecamente difícil. «Está bom?» num jogo significa é divertido — e isso não se compila, não se mede por contraste, e não tem teste automático. É o problema do volume V em forma de produto.
1.2 O que uma skill resolve, e o que não
| Tarefa | Skill | Porquê |
|---|---|---|
| Convenções do motor e da equipa | Excelente | É convenção local, o caso ideal (volume III, cap. 1.1) |
| API correcta da versão em uso | Excelente | Referência com leitura obrigatória |
| Desempenho: o que nunca se faz no ciclo | Excelente | Proibições concretas e verificáveis |
| Consistência de recursos | Boa | Nomenclatura, escala, formatos, pipeline |
| Estrutura de sistemas de jogo | Média | Padrões conhecidos; o ajuste é do domínio |
| Balancear | Fraca | Exige jogar. Números plausíveis não são números bons |
| Saber se é divertido | Nenhuma | Só se descobre com pessoas a jogar |
1.3 A linha que este volume não atravessa
Nenhuma skill diz se um jogo é bom. Isso descobre-se com pessoas a jogar e a desistir — é playtesting, e é o assunto de Game Design, cap. 12.2.
O que as skills fazem é libertar tempo para isso: se o agente trata da convenção, da API certa, dos recursos consistentes e das armadilhas de desempenho, sobra tempo para a parte que só pessoas fazem. É a divisão certa do trabalho, e é a tese deste volume.
1.4 Delimitação
Skills para jogos, Unity e produção 3D. Pressupõe os volumes I e II, e usa os três temáticos.
Não ensina game design nem Unity. Isso está em Game Design, Unity, Blender 3D, Computação Gráfica & Three.js e 3D em Tempo Real.
Reparta uma semana de trabalho entre convenção e repetição e decisões de design. A primeira fatia é o que este volume pode reduzir; a segunda é o que ele liberta.
Capítulo 02 Núcleo
A skill de motor: versão, API e armadilhas
É a mais valiosa do domínio, e a razão é aritmética: os motores mudam depressa e o modelo tem uma data de corte.
2.1 O problema, em concreto
O agente escreve código com uma API que foi substituída, com um componente que foi renomeado, ou com um padrão que deixou de ser recomendado — e com toda a confiança, porque era assim na versão que conhecia.
Em desenvolvimento web isto é irritante. Em motores é pior, porque as mudanças entre versões maiores são profundas e frequentemente silenciosas: o código compila e comporta-se de forma diferente.
2.2 A skill de referência de motor
---
name: unity-api
description: Referência da API da versão de Unity deste projeto, com as
mudanças face a versões anteriores e as armadilhas conhecidas.
LEIA references/API.md ANTES de escrever qualquer código de Unity
— não presuma pela memória, mesmo que pareça uma linha só.
compatibility: Específica da versão indicada em references/VERSAO.md.
---
# API desta versão
## Versão em uso
Ver `references/VERSAO.md`. Se o projeto usar outra versão,
pare e avise — este ficheiro não se aplica.
## Antes de escrever
1. Confirmar a versão.
2. Ler a secção correspondente em `references/API.md`.
3. Se o que precisa não estiver lá, diga que não sabe em vez
de escrever pela memória.
## Armadilhas conhecidas nesta versão
Ver `references/ARMADILHAS.md` — uma entrada por cada vez que
nos mordeu, com a data e o sintoma.
«Mesmo que pareça uma linha só» — é nos casos triviais que o passo é saltado, e é aí que o erro passa.
«Se usar outra versão, pare e avise» — evita aplicar referência errada, que é pior que nenhuma.
«Diga que não sabe» — é a instrução mais difícil de fazer cumprir e a mais valiosa. Um modelo preenche lacunas por omissão; autorizá-lo explicitamente a não saber muda o comportamento.
2.3 O ficheiro de armadilhas
É o que distingue uma skill útil de documentação copiada. Uma entrada por cada vez que a equipa foi mordida:
# Armadilhas — Unity, projeto X
## Instanciar dentro do ciclo de actualização — 2026-03
Sintoma: quebras de fotogramas de dois em dois segundos.
Causa: alocação por fotograma a disparar o colector de lixo.
Nunca instanciar em Update. Usar um conjunto pré-alocado.
Ver `Scripts/Pooling/`.
## Referência procurada por nome — 2026-05
Sintoma: funciona no editor, falha na compilação.
Causa: procura por nome depende da hierarquia da cena.
Nunca procurar por nome. Referência serializada, sempre.
## Coroutine em objecto desactivado — 2026-07
Sintoma: lógica que pára silenciosamente, sem erro.
Nunca assumir que continua. Verificar o estado antes.
Este ficheiro não se escreve de uma vez — cresce. E cada entrada representa horas que não se voltam a perder.
2.4 As skills oficiais da Unity
A Unity publica uma colecção oficial de skills para agentes de código — cerca de vinte e duas, focadas por tarefa: criar projeto, os três sistemas de interface, física e colisões, serviços multijogador, compras integradas, localização, otimização de áudio, de web e de texto, nós personalizados de shader, editor de sprites e a linha de comandos.
É um fabricante de motor a publicar skills oficiais — conhecimento de primeira mão em vez de terceira, e o padrão que outras plataformas vão seguir (já há equivalente para frameworks web e para plataformas de dados).
E note a decomposição: vinte e duas skills focadas por tarefa, não uma grande de «desenvolvimento Unity». É o padrão do volume III, cap. 7.3, aplicado por quem tem mais contexto para o fazer.
Cuidado prático: instalar as vinte e duas tem custo de contexto permanente. Escolha as do seu tipo de jogo (volume II, cap. 8.4).
Escreva as três últimas vezes em que o motor vos mordeu, com sintoma, causa e a proibição. É o ficheiro de armadilhas na sua primeira versão — e é a parte da skill que nenhuma colecção de terceiros pode ter.
Capítulo 03 Núcleo
Desempenho: proibições, não conselhos
É o domínio onde a distinção entre conselho e proibição tem consequência mais directa — porque o orçamento é por fotograma e não se negoceia.
3.1 O orçamento
Um jogo a 60 fotogramas por segundo tem cerca de 16 milissegundos por fotograma para tudo: lógica, física, animação, som e desenho. A 30, tem 33. É um orçamento duro — ultrapassá-lo não torna o jogo mais lento, torna-o entrecortado, que é qualitativamente pior.
«Escreva código eficiente» não instrui nada. «Nunca alocar dentro do ciclo de actualização» instrui, verifica-se, e é a causa da maior parte das quebras de fotograma em motores com colector de lixo.
3.2 A skill de desempenho
# Regras de desempenho — verificar em cada alteração
## Nunca, no ciclo por fotograma
- Nunca alocar (nova lista, nova cadeia de texto, boxing).
- Nunca procurar objectos por nome ou por tipo.
- Nunca usar reflexão.
- Nunca concatenar texto para depuração — usar guarda de compilação.
- Nunca aceder a componentes por procura; guardar a referência.
## Sempre
- Conjuntos pré-alocados para tudo o que se cria e destrói.
- Estruturas de dados reutilizadas entre fotogramas.
- Trabalho pesado distribuído por vários fotogramas, ou fora do
fio principal.
## Antes de considerar terminado
Correr `scripts/perfil.sh` numa cena representativa.
Reportar o pior fotograma, não a média.
Se o pior passar o orçamento, não está terminado.
É a instrução mais importante do bloco, e vem directamente de Estatística I, cap. 5: uma média de 12 ms com picos de 40 é um jogo que treme, e a média não o revela.
Num jogo, a experiência é definida pelos percentis altos — o jogador não sente os fotogramas bons, sente os maus. Uma skill que reporta médias está a medir a coisa errada.
3.3 O perfil por plataforma
O mesmo jogo tem orçamentos diferentes conforme onde corre, e a skill deve dizê-lo:
- Telemóvel — orçamento térmico além do de tempo: o dispositivo abranda ao aquecer. Um jogo que corre bem dois minutos pode ser injogável aos dez.
- Web — memória limitada, arranque lento, e o tamanho da transferência conta como experiência.
- Consola — orçamento fixo e conhecido, com requisitos de certificação.
- Realidade virtual — o mais duro: 90 fotogramas por segundo, e falhar não é desconforto visual, é enjoo.
Uma proibição que é conselho num alvo pode ser obrigatória noutro — e a skill tem de declarar para qual foi escrita, no campo compatibility.
Pegue nas cinco regras de desempenho que a sua equipa repete e reescreva-as como proibições verificáveis. Para cada uma, escreva como se detecta a violação. As que não conseguir detectar continuam a ser conselhos.
Capítulo 04 Prática
Recursos: o pipeline que impede o caos
Um jogo tem milhares de ficheiros feitos por várias pessoas ao longo de meses. É onde a consistência se perde primeiro, e onde uma skill a recupera quase por completo.
4.1 O que codificar
# Recursos
## Nomenclatura
`<tipo>_<nome>_<variante>` em minúsculas, sem acentos, sem espaços.
`tex_barril_madeira` `mesh_barril_lod0` `snd_porta_abrir`
Nunca `Barril_Final_v2_REAL.fbx`.
## Escala e orientação
1 unidade = 1 metro. Eixo Y para cima. Origem na base do objecto,
centrada em X e Z. Nunca exportar com transformação por aplicar.
## Texturas
Potências de dois. Máximo 2048 em objectos de cenário, 1024 em
adereços, 512 em pequenos. Nunca 4096 sem aprovação.
## Malhas
Orçamento de triângulos por categoria em `references/ORCAMENTOS.md`.
Níveis de detalhe obrigatórios acima de 5000 triângulos.
## Antes de integrar
Correr `scripts/validar-recurso.py`. Verifica nome, escala,
orientação, dimensão de textura, contagem de triângulos e
transformações por aplicar. Falha com a razão exacta.
Todas estas regras são deterministas e verificáveis por programa — é o caso perfeito para script (volume I, cap. 6.1). E são também as que mais se esquecem, porque são aborrecidas e nenhuma delas quebra nada imediatamente.
O custo aparece três meses depois, quando alguém tenta perceber porque é que o barril tem quatro vezes a resolução da personagem principal.
4.2 Direcção de arte, e a família de recursos
Este é o ponto onde o volume IV entra no volume VI. Um jogo não precisa de recursos bonitos — precisa de recursos que pareçam do mesmo mundo:
- Paleta fechada, com a proibição de introduzir valores novos (volume IV, cap. 2).
- Densidade de textura consistente — píxeis por unidade. É o que mais denuncia recursos de origens diferentes.
- Vocabulário de formas. Se o mundo é feito de formas arredondadas, um adereço anguloso salta.
- Nível de detalhe coerente. Um objecto muito mais detalhado que os vizinhos lê-se como erro, não como qualidade.
«Nunca produza um recurso isolado. Produza uma família de três ao mesmo tempo e verifique que se leem como do mesmo mundo.»
É a diferença entre gerar imagens e construir direcção de arte — e é o padrão que colecções sérias de skills de jogos adoptam: fixar um alvo visual, construir famílias, normalizar de forma determinista e verificar dentro do jogo, em vez de gerações avulsas.
A última parte é a que mais falta: verificar dentro do jogo. Um recurso que parece bem no visualizador pode ser ilegível na iluminação real da cena.
4.3 A legibilidade é um requisito, não uma preferência
Em jogos, a cor tem uma função que não tem noutros meios: separar o que é jogável do que é cenário. Um objecto com que se interage tem de se distinguir de um que é decoração — e isso é uma regra verificável:
## Legibilidade de jogo
- Elementos interactivos: contraste mínimo de 3:1 contra o cenário
imediatamente atrás, na iluminação real da cena.
- Perigo nunca depende só de matiz — sempre matiz + forma ou
movimento (jogadores com deficiência de visão de cores).
- Testar cada cena em escala de cinzentos: a hierarquia do que é
importante ainda se lê?
Correr `scripts/verificar-legibilidade.py` com capturas da cena.
É o teste de Cor, secção 5.8, caso 4, aplicado a jogabilidade em vez de a identidade — e aqui não é acessibilidade apenas, é jogabilidade.
Escreva o script que verifica nome, escala e dimensão de textura. Corra-o sobre a pasta de recursos actual e conte as violações. É o número que mede a deriva acumulada — e cada uma custa a alguém, mais tarde.
Capítulo 05 Prática
Sistemas de jogo e a estrutura que os aguenta
Onde as skills de arquitectura valem, e o limite claro a partir do qual deixam de valer.
5.1 O que codificar
| Área | O que a skill fixa |
|---|---|
| Dados fora do código | Valores de balanceamento em ficheiros de dados, nunca embutidos. É o que permite ajustar sem recompilar |
| Estados | Máquinas de estado explícitas em vez de encadeados de condições |
| Eventos | Quem publica, quem subscreve, e a proibição de dependências circulares |
| Gravar e carregar | Versão do formato desde o primeiro dia, e migração — é irreversível (volume III, cap. 3.2) |
| Entrada | Abstraída do dispositivo, sempre. Reconfigurável desde o início |
«Nunca embutir um valor de balanceamento no código.» Parece uma regra de arrumação e é uma decisão de método: balancear exige centenas de iterações, e cada uma que precise de recompilar é uma iteração que não se faz.
É a regra que determina se o jogo pode ser afinado por quem desenha em vez de por quem programa — e portanto quantas vezes o é.
5.2 A skill de gravação, que é a mais crítica
Um jogo publicado tem jogadores com progresso guardado. Uma alteração ao formato que não os consiga ler destrói dezenas de horas de trabalho de outra pessoa — e não há reversão possível.
## Gravação — regras absolutas
- Número de versão no ficheiro, desde o primeiro dia.
- Nunca remover um campo. Marcar como obsoleto e ignorar.
- Nunca mudar o significado de um campo. Criar um novo.
- Toda a alteração de formato traz migração da versão anterior,
e teste com um ficheiro real dessa versão.
- Nunca gravar por cima do único ficheiro: gravar noutro e trocar.
## Antes de qualquer alteração ao formato
Correr `scripts/testar-migracao.sh`, que carrega ficheiros de
todas as versões publicadas. Falha se alguma não carregar.
É o mesmo raciocínio do expandir-migrar-contrair de Código Legado, cap. 7, com uma diferença: aqui os dados estão em máquinas que não controla.
5.3 O limite: balancear
Uma skill pode estruturar o balanceamento — onde vivem os valores, que curvas se usam, como se documenta uma alteração. Não pode dizer se o número está certo, porque isso depende de como se sente a jogar.
- Verificar coerência interna: a arma de nível 3 é melhor que a de nível 2 em todas as dimensões? Se sim, o nível 2 é inútil.
- Detectar dominância: existe uma opção que é melhor que todas as outras em tudo? É um defeito de desenho, e é detectável por cálculo.
- Exigir registo: toda a alteração de valor com a razão e a data — para se poder voltar atrás com conhecimento.
- Gerar as tabelas de comparação que tornam os desequilíbrios visíveis.
Nada disto substitui jogar — e tudo isto torna cada sessão de jogo mais informativa, porque as perguntas chegam já filtradas.
Procure no seu código os números de balanceamento embutidos. Conte. Mova-os para dados. É a alteração que mais aumenta o número de iterações de afinação que a equipa consegue fazer por semana.
Capítulo 06 Núcleo
Verificar um jogo
A verificação automática cobre menos aqui do que em qualquer outro domínio — e, precisamente por isso, vale a pena cobrir tudo o que for coberto.
6.1 O que é automatizável
| Verificação | Automatizável |
|---|---|
| Compila e os testes passam | Sim |
| O pior fotograma cabe no orçamento | Sim — perfil em cena representativa |
| Nenhum recurso viola o pipeline | Sim — validador (cap. 4.1) |
| A gravação de todas as versões carrega | Sim — e é obrigatório (cap. 5.2) |
| Elementos interactivos com contraste suficiente | Sim — por captura de cena |
| O nível é completável | Parcialmente — agente automático a percorrer |
| Nenhuma opção domina todas | Parcialmente — por cálculo (cap. 5.3) |
| É divertido | Não |
Seis das oito são automatizáveis, e nenhuma delas é a que interessa mais. É exactamente por isso que compensa automatizá-las todas: cada verificação mecânica que a máquina faz é tempo de playtesting que fica livre para a pergunta que só pessoas respondem.
É a tese do capítulo 1.3, agora com uma lista concreta.
6.2 O agente que joga
Um agente automático que percorre um nível — anda, salta, interage — não avalia diversão e detecta uma classe inteira de problemas:
- Sítios onde se fica preso — geometria mal fechada, colisões em falta.
- Percursos não previstos — o atalho que salta metade do nível.
- Estados impossíveis — a porta que fecha com o jogador do lado errado.
- Regressões — o nível que era completável na semana passada e já não é.
É o equivalente do webapp-testing do volume III, cap. 4, aplicado a jogo: não diz se está bom, diz se está partido — e é a distinção que torna a verificação automática útil sem prometer o que não pode dar.
6.3 A instrução que fecha o ciclo
## Antes de considerar terminado
1. `scripts/verificar.sh` — compila, testes, validador de recursos
2. `scripts/perfil.sh` na cena representativa
→ reportar o pior fotograma, não a média
3. `scripts/testar-migracao.sh` se tocou na gravação
4. `scripts/percorrer-nivel.sh` se tocou em geometria ou colisões
5. Capturar a cena e verificar legibilidade dos interactivos
Se qualquer passo falhar, corrigir e repetir.
Nenhum destes passos avalia se o jogo é bom. Isso é playtesting,
e é o que fica para as pessoas.
A última linha está lá de propósito: impede que a lista de verificação seja confundida com aprovação. Um nível que passa nos cinco passos pode ser aborrecido, e a skill diz isso em vez de o esconder.
Das seis verificações automatizáveis de 6.1, conte quantas já corre. Implemente a mais barata que falte. Depois meça: quanto tempo de sessão de jogo é que isso liberta por semana?
Capítulo 07 Prática
Muitos motores, e o padrão do roteador
Quem trabalha com mais de um motor enfrenta o problema de escala de skills na sua forma mais aguda — e a solução já existe e está publicada.
7.1 O problema
Dez motores, cada um com dez tarefas — física, interface, animação, som, publicação — são cem skills possíveis. Instalar cem descrições em contexto permanente é impossível (volume II, cap. 8.4): a listagem estoura o orçamento, e as skills começam a desaparecer ou a perder descrição.
7.2 A solução: uma skill que escolhe skills
Existe uma colecção pública com cerca de setenta skills de desenvolvimento de jogos, cobrindo Godot, Unity, Unreal, Phaser, PixiJS, three.js, Bevy, pygame, LÖVE e Roblox — e o que a torna utilizável não são as setenta skills: é o roteador.
Em vez de setenta descrições permanentes, há uma: o roteador detecta o motor e a tarefa a partir do pedido e do projeto, e carrega apenas as duas ou três que se aplicam. É o padrão do volume III, cap. 7.2, num caso onde é claramente obrigatório.
7.3 Como se escreve um roteador
---
name: gamedev
description: Ponto de entrada para desenvolvimento de jogos. Detecta o
motor e a tarefa e indica que skills específicas carregar. Use em
qualquer pedido sobre jogos, motores, física de jogo, interface de
jogo, animação, som, níveis, ou publicação de jogos.
---
# Encaminhamento
## 1. Detectar o motor
Procure, por esta ordem: ficheiro de projeto do motor na raiz,
ficheiro de dependências, extensões de ficheiro dominantes.
Se não for claro, PERGUNTE. Nunca presuma o motor.
## 2. Detectar a tarefa
Física · interface · animação · som · nível · desempenho ·
publicação · dados · rede
## 3. Carregar
Leia `references/<motor>/<tarefa>.md`. Só esse ficheiro.
Se a combinação não existir, diga-o em vez de improvisar
com conhecimento de outro motor.
## Nunca
- Nunca aplicar um padrão de um motor a outro sem verificar.
São modelos de execução diferentes, não dialectos.
Motores diferentes têm modelos de execução genuinamente diferentes — ciclos de vida, sistemas de componentes, gestão de memória. Um padrão correcto num é frequentemente errado noutro, e o erro é subtil: o código funciona e comporta-se mal.
Um agente que conhece bem um motor transfere padrões por analogia, com confiança. A proibição explícita é o que trava isso.
7.4 O que verificar numa colecção grande
Antes de instalar setenta skills de terceiros (volume I, cap. 11):
- Estão fixadas a uma versão do motor? Uma skill sem versão declarada é uma armadilha (cap. 2.2).
- Há validação? Colecções sérias correm um validador sobre as próprias skills.
- Vêm da documentação primária ou de posts de blogue de origem incerta?
- Há roteador? Sem ele, a colecção não é instalável em conjunto.
- Que licença? Verificar antes de uso comercial.
Se trabalha com mais de um motor ou mais de um tipo de projeto, escreva o roteador de 7.3 com os seus. Meça a listagem antes e depois — e confirme que ele pergunta quando o motor não é evidente.
Capítulo 08 Crítica
Onde falha, e o que nunca delegar
Seis modos de falha específicos, e a lista curta do que não muda por muito boa que a skill seja.
8.1 Os seis
| Falha | Sintoma | Correção |
|---|---|---|
| 1 · API de outra versão | Código que compila e se comporta mal | Referência com versão declarada e leitura obrigatória (cap. 2.2) |
| 2 · Padrão transferido entre motores | Funciona, e mal — de forma subtil | Proibição explícita no roteador (cap. 7.3) |
| 3 · Desempenho medido pela média | Passa nos testes e treme a jogar | Reportar o pior fotograma (cap. 3.2) |
| 4 · Recursos avulsos | Colecção de peças que não parecem do mesmo mundo | Produzir famílias, verificar na cena (cap. 4.2) |
| 5 · Balanceamento plausível | Números que parecem certos e não jogam bem | Nenhuma. Exige jogar (cap. 5.3) |
| 6 · Lista de verificação como aprovação | Passa nos cinco passos e é aborrecido | Dizê-lo na própria skill (cap. 6.3) |
8.2 A quinta não tem correcção, e é importante admiti-lo
Um modelo produz valores de balanceamento que parecem razoáveis: a espada custa 50, faz 12 de dano, o inimigo tem 40 de vida. Tudo coerente, e não há nenhuma forma de saber se é divertido sem jogar.
É o modo de falha mais perigoso deste volume porque parece resolvido. Uma tabela de balanceamento completa e coerente dá a sensação de trabalho feito — e o trabalho ainda nem começou.
A skill honesta di-lo: «estes valores são um ponto de partida coerente, não um balanceamento. Nenhum foi validado a jogar.»
8.3 O que nunca delegar
- Saber se é divertido. Só com pessoas a jogar, e sobretudo a desistir (Game Design, cap. 12.2).
- A curva de dificuldade. Depende de como se sente falhar, e isso não está em nenhum número.
- O que se corta. A decisão mais difícil de um jogo é o que fica de fora, e exige saber o que o jogo é.
- A direcção de arte. Aplicá-la, sim; decidi-la, não (volume IV, cap. 1.1).
- O julgamento sobre representação — de pessoas, culturas, temas sensíveis. Exige contexto que não está em texto.
8.4 A revisão trimestral
1) A versão do motor declarada nas referências ainda é a que usamos? 2) O ficheiro de armadilhas cresceu — ou deixámos de o alimentar? 3) Os orçamentos de desempenho ainda correspondem às plataformas alvo? 4) O validador de recursos ainda passa em tudo o que entrou?
A pergunta 1 é a que mais falha, e a que mais estragos causa: uma referência de versão errada é pior que nenhuma referência.
Acrescente à sua skill de balanceamento a frase de 8.2 — que os valores são um ponto de partida e não um balanceamento validado. É uma linha, e evita que uma tabela coerente seja confundida com trabalho terminado.
Capítulo 09 Método aplicado · Demo
Um inimigo novo, do pedido ao nível
Role devagar. Um pedido comum — «acrescenta um inimigo que dispara à distância» — e as seis camadas que separam código que corre de trabalho integrado.
Compila, corre, e traz seis problemas — nenhum deles dá erro
Alocação por fotograma, procura por nome, valores embutidos, textura desproporcionada, cor fora da paleta e API obsoleta. Cada um destes é invisível até doer, e quatro deles só doem semanas depois.
É a acumulação das dificuldades do capítulo 1.1: um único pedido toca em código, desempenho, dados, arte e versão do motor.
Deixou de escrever pela memória
A referência com leitura obrigatória (cap. 2.2) substitui a chamada obsoleta pela actual. E a instrução mais difícil de fazer cumprir faz o seu trabalho: quando não encontra a resposta, o agente diz que não sabe em vez de preencher a lacuna.
De 31 ms para 14 ms no pior fotograma
Duas proibições — não alocar no ciclo, não procurar por nome — e o pior fotograma passa a caber no orçamento de 16,6 ms (cap. 3.2).
Note que a média nunca teria denunciado isto: os 31 ms só aconteciam nos fotogramas com disparo. É o argumento dos percentis contra a média, num caso onde a diferença é sentida directamente pelo jogador.
E o cálculo revelou um defeito de desenho
Mover os valores para dados permite afinar sem recompilar (cap. 5.1). Mas o achado é outro: a tabela de comparação mostra que o atirador domina o inimigo corpo-a-corpo em todas as dimensões, o que torna o segundo inútil.
É a dominância do capítulo 5.3 — detectável por cálculo, ao contrário de quase tudo o resto em balanceamento. A skill não sabe se 1,5 segundos é divertido, e sabe que uma opção que ganha sempre é um defeito.
O jogador não via o projéctil
O validador apanha textura, nome e cor (cap. 4.1). E a verificação de legibilidade apanha o que mais importa: o projéctil tem 1,9:1 de contraste contra o cenário — abaixo do mínimo de 3:1.
Este não é um problema estético, é de jogabilidade (cap. 4.3): um jogador que não vê o tiro não pode desviar-se, e vai concluir que o jogo é injusto sem saber porquê.
Seis resolvidos por máquina, três por responder por pessoas
A cadência é divertida? O inimigo obriga a mudar de posição ou só a esperar? Vale a pena existir? Nenhuma skill responde a estas, e são as que decidem se o inimigo fica no jogo.
É a tese do volume inteiro: as skills não tornam ninguém melhor a desenhar jogos. Tratam da convenção, da versão, do desempenho, dos recursos e da consistência — e devolvem a tarde que essa verificação toda teria consumido, para ser gasta com pessoas a jogar.
É a divisão certa do trabalho: a máquina faz o que é verificável; as pessoas fazem o que não é.
Peça ao agente uma funcionalidade pequena sem skills e conte os problemas que teria de corrigir. Cada um é uma linha de skill por escrever — e a soma é o tempo de playtesting que está a perder.
Capítulo 10 Prática
Produção 3D e o pipeline de recursos
A parte do trabalho que está fora do motor, e onde as skills têm o perfil mais parecido com o volume III: convenções e verificação.
10.1 O caminho de um recurso
Cada seta é um sítio onde a consistência se perde, e as duas últimas são as que uma skill resolve quase por completo — porque são deterministas.
10.2 As regras de exportação
# Exportação
## Sempre
- Aplicar todas as transformações antes de exportar.
- Congelar escala a 1. Rotação a zero.
- Origem na base, centrada em X e Z.
- Triangular na exportação, não no ficheiro de origem.
- Nomes das malhas iguais aos do objecto — sem sufixos automáticos.
## Nunca
- Nunca exportar com modificadores por aplicar.
- Nunca exportar câmaras, luzes ou objectos auxiliares.
- Nunca incluir histórico de construção.
## Verificar
`scripts/validar-export.py` — falha com a razão exacta e a linha.
São as que não dão erro na exportação e dão problema no motor: a escala não congelada que faz a física comportar-se mal, a origem no centro que faz o objecto flutuar, os objectos auxiliares que engordam o ficheiro sem se ver.
Todas verificáveis por programa, todas esquecidas com regularidade, e todas caras de descobrir tarde.
10.3 Orçamentos por categoria
Um ficheiro de referência que a skill consulta, em vez de um número no corpo:
# Orçamentos — references/ORCAMENTOS.md
| Categoria | Triângulos | Textura | Níveis de detalhe |
| Personagem principal | 40 000 | 2048 | 3 |
| Personagem secundária | 12 000 | 1024 | 2 |
| Cenário grande | 8 000 | 2048 | 3 |
| Adereço | 2 000 | 512 | 1 |
| Adereço pequeno | 500 | 256 | 0 |
Estes números são deste projeto e desta plataforma alvo.
Ver `VERSAO.md` para a plataforma. Não aplicar a outro projeto.
A última nota é a que impede o erro mais comum ao reutilizar skills entre projetos: orçamentos são específicos da plataforma, e aplicá-los à cega é pior que não os ter.
10.4 O 3D em tempo real fora de jogos
Muito do mesmo se aplica a 3D na web, visualização e motion — com um orçamento diferente e frequentemente mais apertado: o tamanho da transferência conta como experiência, e o dispositivo é desconhecido.
- Compressão de malha e de textura como regra, não como otimização final.
- Orçamento total da cena em megabytes, além do de triângulos.
- Degradação declarada — o que se corta primeiro num dispositivo fraco.
- Verificar em ligação lenta, não só em rede local (Redes, cap. 7).
Ver 3D em Tempo Real e Computação Gráfica & Three.js.
Escreva o script que verifica transformações aplicadas, escala congelada e ausência de objectos auxiliares. Corra-o sobre os recursos já integrados. As violações que encontrar já estão no jogo.
Capítulo 11 Prática
Começar, e as quatro primeiras
A ordem que produz efeito na primeira semana num projeto de jogo já a decorrer.
11.1 As quatro
1 · Armadilhas. As três últimas vezes em que o motor vos mordeu, com sintoma, causa e proibição. Vinte minutos, e é a de maior retorno (cap. 2.3).
2 · Versão e referência do motor. Que versão, e a instrução de ler antes de escrever (cap. 2.2).
3 · Desempenho. As proibições do ciclo por fotograma, e reportar o pior fotograma (cap. 3.2).
4 · Validador de recursos. Nome, escala, textura, triângulos (cap. 4.1).
Cerca de cem linhas e dois scripts. As duas primeiras escrevem-se numa manhã e resolvem a classe de erro mais cara deste domínio.
11.2 O erro de começar
A tentação é instalar uma colecção grande e ficar com tudo coberto. Resultado previsível: a listagem estoura o orçamento, skills começam a desaparecer, e o agente passa a ter pior desempenho do que antes de instalar nada (volume II, cap. 8.4).
Instale três ou quatro do seu motor, mais as suas quatro de 11.1. E se a colecção tiver roteador, instale o roteador em vez das setenta.
11.3 Como saber que resultou
- Menos correcções de API em revisão. O indicador mais directo.
- Menos quebras de fotograma novas. Mensurável pelo perfil.
- O validador de recursos devolve menos violações ao longo do trimestre.
- Mais tempo de playtesting por semana. É o indicador que interessa — e o único que mede o que este volume promete.
Reúna a equipa vinte minutos e escrevam as cinco últimas armadilhas do motor, com sintoma e proibição. Ponham no repositório. É a coisa mais valiosa que este volume pede, e não depende de skill nenhuma de terceiros.
Capítulo 12 Ofício · Catálogo
O que fica, e o fim da série
As regras deste domínio, o catálogo comentado, e o balanço dos seis volumes.
12.1 As sete regras
1 · A versão é a primeira coisa
Uma referência de versão errada é pior que nenhuma. Declarar, e parar se não corresponder.
2 · O ficheiro de armadilhas
Uma entrada por cada vez que doeu. É o que nenhuma colecção de fora pode ter.
3 · O pior fotograma, não a média
O jogador não sente os fotogramas bons. Sente os maus.
4 · Famílias, não peças
Três recursos ao mesmo tempo, verificados na cena real. Nunca um isolado.
5 · Legibilidade é jogabilidade
Contraste dos interactivos não é acessibilidade apenas — é poder jogar.
6 · Dados fora do código
Determina quantas iterações de balanceamento a equipa consegue fazer.
7 · Roteador acima de vinte skills
Uma descrição em contexto em vez de setenta.
E uma oitava
Nenhuma skill diz se o jogo é bom. O que fazem é libertar a tarde para descobrir.
12.2 Catálogo: cinco fontes para jogos e 3D
Formato fixo em toda a série, com data de verificação. Aplique o volume I, cap. 11 antes de instalar — e neste domínio verifique também a que versão de motor cada skill corresponde, que é a falha número um (cap. 8.1).
Unity-Technologies/skills
Unity Technologies · oficial
Colecção oficial de skills da Unity para agentes de código: cerca de 22, focadas por tarefa — criar projeto, os três sistemas de interface (UGUI, UI Toolkit, IMGUI), física e colisões 3D, serviços multijogador, voz, compras integradas, localização, navegação, otimização de áudio, web e texto, nós personalizados de Shader Graph, editor de sprites, gestão de pacotes e linha de comandos.
Porque importa: É um fabricante de motor a publicar skills oficiais — conhecimento de primeira mão em vez de terceira, e o padrão que outras plataformas estão a seguir. Para quem trabalha em Unity, resolve directamente o problema de versão do capítulo 2.
- Fonte oficial: sai de quem faz o motor
- 22 skills focadas por tarefa em vez de uma grande — boa decomposição
- Cobre áreas onde o modelo erra mais: serviços, otimização e ferramentas do editor
- Licença não padrão — verificar antes de uso comercial
- Instalar as 22 tem custo de contexto permanente: escolher as do seu tipo de jogo
- O alinhamento com versões da Unity exige atenção — confirmar antes de confiar
Instale três ou quatro, não as 22. E confirme a versão a que correspondem.
awesome-gamedev-agent-skills
gamedev-skills · comunidade
Cerca de setenta skills de desenvolvimento de jogos com um roteador, cobrindo Godot, Unity, Unreal, Phaser, PixiJS, three.js, Bevy, pygame, LÖVE e Roblox. Inclui um fluxo de direcção de arte e produção de recursos.
Porque importa: É o melhor exemplo público do padrão do roteador (cap. 7.2): setenta skills seriam impossíveis de instalar em conjunto, e uma skill de entrada que detecta motor e tarefa torna a colecção utilizável. E declara três coisas que quase nenhuma colecção declara: escrita a partir de documentação primária, fixada a versões de motor, e verificada por um validador.
- Roteador — resolve o problema de escala que este domínio tem na forma mais aguda
- Versões de motor fixadas e declaradas, que é a falha nº 1 do capítulo 8.1
- Validador próprio sobre as skills, o que é raro
- Apache-2.0, permissiva e clara
- O fluxo de arte segue o padrão certo: alvo visual, famílias, normalização, verificação no jogo
- Colecção da comunidade: aplicar o volume I, cap. 11, apesar da boa aparência
- Dez motores é muita superfície — a profundidade varia entre eles
- Requer confiar no roteador para escolher bem; convém verificar o que ele carrega
Estude o roteador mesmo que não trabalhe com jogos. É o exemplo mais completo do padrão.
Besty0728/Unity-Skills
Besty0728 · comunidade
Skills de automação especificamente desenhadas para Unity, distribuídas como pacote instalável dentro do projeto.
Porque importa: Complementa a colecção oficial pelo lado da automação de tarefas do editor — a parte repetitiva que consome tempo e não exige julgamento, que é exactamente o perfil ideal para uma skill.
- Licença MIT, clara
- Distribuição como pacote de projeto, o que resolve a partilha na equipa
- Manutenção activa à data de verificação
- Comunidade: sem garantia de alinhamento com versões futuras da Unity
- Sobreposição com a colecção oficial — verificar antes de instalar ambas
- Automação do editor pode ter permissões amplas: rever
allowed-tools(volume III, cap. 8.3)
webapp-testing (aplicada a jogos web)
Anthropic · repositório oficial
Interage com aplicações web locais via Playwright: verifica funcionalidade, captura o ecrã e lê os registos do navegador.
Porque importa: Para jogos em três.js, Phaser ou PixiJS é directamente aplicável e resolve metade da verificação do capítulo 6: captura a cena para verificar legibilidade, lê erros de consola, e percorre fluxos. É o mais próximo de um agente que joga disponível sem construir de raiz.
- Aplica-se sem adaptação a jogos que corram no navegador
- A captura de ecrã serve a verificação de legibilidade do cap. 4.3
- Curta e fácil de compor com skills de construção
- Só serve para jogos web — não se aplica a Unity, Unreal ou Godot nativos
- Verifica que funciona, não que é jogável
- Exige Playwright; não corre no contentor da API
Para motores nativos, o equivalente tem de ser construído — ver o agente que percorre o nível (cap. 6.2).
As suas: motor, armadilhas, orçamentos
— (as suas)
As três que nenhuma colecção de terceiros pode ter: a versão exacta do motor deste projeto, o ficheiro de armadilhas com uma entrada por cada vez que a equipa foi mordida, e os orçamentos de desempenho e de recursos da sua plataforma alvo.
Porque importa: São o conteúdo específico que faz a diferença — e crescem com o projeto. O ficheiro de armadilhas é o mais valioso de todos: cada entrada representa horas que não se voltam a perder, e nenhuma delas está em documentação nenhuma.
- Cada entrada vem de um problema real, com data e sintoma
- Crescem naturalmente — não se escrevem de uma vez
- Duplicam como documentação de entrada para quem chega à equipa
- Impossíveis de obter de fora
- Exigem disciplina de escrever no momento em que dói, não depois
- A versão declarada tem de ser mantida (a falha nº 1 do cap. 8.4)
- Os orçamentos são específicos da plataforma — não reutilizar entre projetos
Comece pelo ficheiro de armadilhas. Três entradas, escritas hoje, valem mais que setenta skills genéricas.
12.3 O balanço dos seis volumes
I · Fundamentos
Uma skill vale o que tem de específico da sua casa. E o passo que quase toda a gente salta é fazer commit dela.
II · As ferramentas
Nada sincroniza — nem entre fornecedores, nem entre superfícies do mesmo. Uma fonte, cópias derivadas.
III · Produto digital
A skill que verifica rende mais que a que constrói. E as zonas proibidas evitam o maior estrago.
IV · Marca e identidade
Medíocres a decidir, excelentes a aplicar. Excluir produz mais distinção que pedir originalidade.
V · Pensar
Impor processo, não dar respostas. Se a análise nunca muda a decisão, é justificação.
VI · Jogos e 3D
Reúne tudo o resto e acrescenta o motor e a impossibilidade de verificar diversão.
Em todos os volumes, a skill de maior retorno não foi a que produz — foi a que verifica. E em todos, o conteúdo que faz diferença não veio de fora: veio do que só se sabe cá dentro — a convenção, a zona proibida, a armadilha, o passo que a equipa salta.
Skills de terceiros dão andaime e método. O que muda o trabalho cabe, quase sempre, em cem linhas de Markdown escritas por quem já foi mordido.
12.4 Leituras a par
- A série completa: I · II · III · IV · V.
- Game Design — o playtesting que as skills libertam tempo para fazer.
- Unity e Blender 3D — o ofício.
- 3D em Tempo Real e Computação Gráfica & Three.js.
- O Futuro dos Jogos — para onde isto vai.
Depois de instalar as quatro de 11.1, meça durante um mês quanto tempo de playtesting a equipa consegue fazer por semana, contra o mês anterior. É a única medida que interessa neste volume — e é a promessa que ele faz.