Apostila · Skills de IA, volume VI de VI

Jogos:
tudo o resto,
mais o motor

Este domínio reúne as dificuldades dos três volumes temáticos — código e convenções, direcção de arte em milhares de recursos, desenho de sistemas — e acrescenta duas próprias. O motor é um mundo com regras que mudam entre versões. E «está bom» significa «é divertido», que não se compila, não se mede por contraste, e não tem teste automático. É o melhor teste de tudo o que a série ensinou.

12 capítulosdo motor ao balanço dos seis volumes
1 demo ao vivode um inimigo com seis problemas silenciosos
5 fontesem ficha padronizada e datada

↓ role para começar

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 volumeO que traz
III · produtoCódigo, convenções, arquitectura, verificação
IV · marcaDirecção de arte, paleta, consistência visual em milhares de recursos
V · pensarDesenho de sistemas, balanceamento, decisões de design
E duas dificuldades próprias

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

TarefaSkillPorquê
Convenções do motor e da equipaExcelenteÉ convenção local, o caso ideal (volume III, cap. 1.1)
API correcta da versão em usoExcelenteReferência com leitura obrigatória
Desempenho: o que nunca se faz no cicloExcelenteProibições concretas e verificáveis
Consistência de recursosBoaNomenclatura, escala, formatos, pipeline
Estrutura de sistemas de jogoMédiaPadrões conhecidos; o ajuste é do domínio
BalancearFracaExige jogar. Números plausíveis não são números bons
Saber se é divertidoNenhumaSó se descobre com pessoas a jogar

1.3 A linha que este volume não atravessa

Dito à cabeça

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

Volume VI de seis — e o fim da série

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.

Exercício 1.1 — Onde está o seu tempo

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 sintoma que quem trabalha com motores conhece

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.
As três instruções que a fazem funcionar

«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.

Porque isto é significativo para lá da Unity

É 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).

Exercício 2.1 — As três armadilhas

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.

Porque isto muda a forma de escrever a skill

«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.
«O pior fotograma, não a média»

É 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:

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.

Exercício 3.1 — Do conselho à proibição

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.
Porque o validador é obrigatório

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:

A instrução que evita a colecção de peças soltas

«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.

Exercício 4.1 — O validador de recursos

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

ÁreaO que a skill fixa
Dados fora do códigoValores de balanceamento em ficheiros de dados, nunca embutidos. É o que permite ajustar sem recompilar
EstadosMáquinas de estado explícitas em vez de encadeados de condições
EventosQuem publica, quem subscreve, e a proibição de dependências circulares
Gravar e carregarVersão do formato desde o primeiro dia, e migração — é irreversível (volume III, cap. 3.2)
EntradaAbstraída do dispositivo, sempre. Reconfigurável desde o início
A primeira linha é a que mais rende

«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

O único erro verdadeiramente irreversível de um jogo

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.

O que a skill pode fazer, e é bastante
  • 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.

Exercício 5.1 — Os valores embutidos

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çãoAutomatizável
Compila e os testes passamSim
O pior fotograma cabe no orçamentoSim — perfil em cena representativa
Nenhum recurso viola o pipelineSim — validador (cap. 4.1)
A gravação de todas as versões carregaSim — e é obrigatório (cap. 5.2)
Elementos interactivos com contraste suficienteSim — por captura de cena
O nível é completávelParcialmente — agente automático a percorrer
Nenhuma opção domina todasParcialmente — por cálculo (cap. 5.3)
É divertidoNão
A conclusão prática

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:

É 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.

Exercício 6.1 — As seis automatizáveis

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

O padrão do roteador, aplicado a sério

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.
A última proibição é a mais importante

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):

Exercício 7.1 — O seu roteador

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

FalhaSintomaCorreção
1 · API de outra versãoCódigo que compila e se comporta malReferência com versão declarada e leitura obrigatória (cap. 2.2)
2 · Padrão transferido entre motoresFunciona, e mal — de forma subtilProibição explícita no roteador (cap. 7.3)
3 · Desempenho medido pela médiaPassa nos testes e treme a jogarReportar o pior fotograma (cap. 3.2)
4 · Recursos avulsosColecção de peças que não parecem do mesmo mundoProduzir famílias, verificar na cena (cap. 4.2)
5 · Balanceamento plausívelNúmeros que parecem certos e não jogam bemNenhuma. Exige jogar (cap. 5.3)
6 · Lista de verificação como aprovaçãoPassa nos cinco passos e é aborrecidoDizê-lo na própria skill (cap. 6.3)

8.2 A quinta não tem correcção, e é importante admiti-lo

Números plausíveis não são números bons

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

8.4 A revisão trimestral

Quatro perguntas, específicas deste domínio

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.

Exercício 8.1 — A declaração honesta

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.

Sem skills

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.

Camada 1 — a versão

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.

Camada 2 — desempenho

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.

Camada 3 — dados

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.3detectá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.

Camada 4 — recursos

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ê.

O que fica

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 é.

Exercício 9.1 — As seis camadas

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

referência → bloqueio → modelação → UV → textura │ │ └────────── direcção de arte ────────────────┘ │ exportação → importação no motor → cena │ │ convenções validação

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.
Porque estas em particular

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.

Ver 3D em Tempo Real e Computação Gráfica & Three.js.

Exercício 10.1 — O validador de exportação

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

Instalar setenta skills

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

Exercício 11.1 — As armadilhas, hoje

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

Como ler

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.

A favor
  • 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
Contra
  • 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.

https://github.com/Unity-Technologies/skills ·licença Ver repositório (licença não padrão)·verificado em setembro de 2026

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.

A favor
  • 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
Contra
  • 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.

https://github.com/gamedev-skills/awesome-gamedev-agent-skills ·licença Apache-2.0·verificado em setembro de 2026

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.

A favor
  • Licença MIT, clara
  • Distribuição como pacote de projeto, o que resolve a partilha na equipa
  • Manutenção activa à data de verificação
Contra
  • 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)

https://github.com/Besty0728/Unity-Skills ·licença MIT·verificado em setembro de 2026

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.

A favor
  • 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
Contra
  • 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).

https://github.com/anthropics/skills/tree/main/skills/webapp-testing ·licença Source-available · ver LICENSE.txt·verificado em setembro de 2026

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.

A favor
  • 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
Contra
  • 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.

https://agentskills.io/skill-creation/best-practices ·licença —·verificado em setembro de 2026

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.

O fio que atravessa os seis

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

Exercício 12.1 — A tarde que ganhou

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.