No Build Your Empire nao existe um unico arquivo de imagem para os graficos do jogo. Sem sprites, sem texture atlases, sem PNGs de edificios. Tudo e desenhado em tempo real com codigo.
A ideia
Inspirados nos jogos da Kairosoft (Game Dev Story, Mega Mall Story), queriamos um estilo pixel art, mas com uma vantagem: graficos completamente dinamicos. A torre do jogador precisava crescer visualmente ao contratar funcionarios. Os edificios rivais precisavam refletir seu progresso real.
Como funciona
Usamos @shopify/react-native-skia para desenhar em um Canvas nativo. A unidade base e um bloco de 8x8 pixels:
function PlayerTower({ x, y, employees }) {
const level = calculateLevel(employees); // 1-8 andares
const floors = [];
for (let i = 0; i < level; i++) {
floors.push({ x, y: y - i * BLOCK, w: 2 * BLOCK, h: BLOCK, color: '#5b8dd9' });
if (i % 2 === 0) {
floors.push({ x: x + 2, y: y - i * BLOCK + 2, w: 4, h: 4, color: '#f4c26b' });
}
}
floors.push({ x: x + 2, y: y - level * BLOCK, w: BLOCK, h: 4, color: '#f4c26b' });
return floors;
}
A paleta
Apenas 7 cores definem toda a cena:
| Cor | Hex | Uso |
|---|---|---|
| Ceu roxo | #1a0a3e | Ceu superior |
| Por do sol | #e8956b | Ceu medio |
| Dourado | #f4c26b | Ceu inferior, destaques |
| Azul torre | #5b8dd9 | Edificio do jogador |
| Verde terreno | #2d5a27 | Terreno |
| Roxo UI | #0d0820 | Fundo da interface |
| Branco janela | #ffffff | Janelas iluminadas |
Vantagens da abordagem procedural
- Bundle minimo — sem assets graficos, app mais leve
- 100% dinamico — edificios refletem o estado real do jogo
- Facil de modificar — mudar uma cor ou proporcao significa mudar uma constante
- Sem conflitos de resolucao — sem escalonamento de bitmap, sempre nitido
- Generativo — cada partida pode ter variacoes visuais
Quando NAO usar essa abordagem
- Personagens com animacoes complexas (melhor com sprites)
- Estilos visuais que exigem texturas ou gradientes organicos
- Jogos com muitos objetos distintos (codigo escala pior que um atlas)
O resultado
Uma cena completa — ceu com gradiente, 7 edificios, arvores, pessoas e terreno — renderizada a 60fps em um iPhone SE. Tudo com menos de 300 linhas de codigo de desenho.