Como criar arte e jogabilidade com tilemaps 2D
Saiba como o sistema Unity Tilemap é usado no Happy Harvest, um exemplo de jogo de simulação agrícola 2D de cima para baixo criado com o Unity 2022 LTS.
Encontre essas técnicas, e muitas outras para arte e animação, no e-book Arte, animação e iluminação de jogos 2D para artistas.
Leia os outros artigos desta série para saber como reproduzir os efeitos e visuais do Happy Harvest:
- Técnicas de luz e sombra 2D no Pipeline de Renderização Universal
- Como animar personagens 2D no Unity 2022 LTS
- Efeitos especiais 2D com o VFX Graph e o Shader Graph (disponível em breve)
Baixar Colheita feliz na Unity Asset Store hoje mesmo.
O sistema Tilemap do Unity permite que você crie um mundo de jogo usando blocos, que são pequenos sprites colocados em uma grade. Em vez de projetar um nível como uma imagem grande, você pode dividi-la em peças semelhantes a tijolos que se repetem ao longo de todo o nível. Isso é especialmente útil para jogos com grandes áreas que podem ser percorridas, como um simulador ou RPG.
Os mapas de blocos podem ajudar a economizar tempo na criação de arte, bem como no uso da memória e da CPU. Isso ocorre porque os blocos podem ser renderizados por um renderizador dedicado, e os blocos não visíveis na tela podem ser desativados. Uma ferramenta de pincel torna eficiente a pintura de blocos em uma grade, e eles podem ser programados para usar regras de pintura. Eles também vêm com geração automática de colisões para testes e edições mais eficientes.
Ao criar folhas de ladrilhos, é importante evitar a combinação de mapas de ladrilhos em camadas quando eles não forem necessários, pois isso ajuda a reduzir o excesso de desenho. No Happy Harvest, todos os mapas de ladrilhos ficam sob o Grid GameObject. Você pode ver como o tilemap chamado GroundBas contémtoda a arte do solo. Todos esses blocos são agrupados ao mesmo tempo, definindo o modo de renderização como Chunk no Tilemap Renderer. Isso pode ajudar a otimizar o desempenho.
O caminho de paralelepípedos na amostra poderia ter sido criado com camadas de arte em azulejo: Um para o paralelepípedo e outro para a grama. Isso pode parecer conveniente do ponto de vista da criação artística, mas teria menos desempenho devido às camadas de pixels sobrepostos. Crie tilemaps separados somente quando necessário, como nos casos em que você precisa de planos de profundidade distintos.
Para obter uma introdução abrangente sobre como o sistema Tilemap do Unity funciona, baixe o e-book Arte, animação e iluminação de jogos 2D para artistas.
Os blocos do Happy Harvest foram criados em seções, com prioridade para os blocos usados extensivamente no jogo, como o caminho principal ou as áreas de grama. Esses mapas exigem mais blocos porque são usados para criar caminhos de formas variadas. Por outro lado, os pinheiros de fundo, dispostos como mosaicos quadrados, exigem menos mosaicos.
Geralmente, os adereços que são verticais e renderizados na frente ou atrás do personagem são separados em GameObjects em outra camada de classificação. No entanto, o GameObject Brush, um recurso incluído no pacote 2D Tilemap Extras, é usado para colocar alguns desses objetos, como cercas de madeira, em uma grade de tilemap. Para dispersar esses adereços em um padrão mais orgânico, você pode colocá-los em um GameObject na Hierarchy fora do tilemap.
Texturas secundárias para tilemaps
Cada tilemap na pasta Tilemaps tem contrapartes chamadas texturas de mapa normal e mapa de máscara. Eles compartilham as mesmas dimensões e o mesmo layout, mas são pintados para exibir a iluminação. Leia o artigo "Técnicas de luz e sombra 2D no Pipeline de Renderização Universal" para saber como a iluminação foi criada na amostra.
As texturas do mapa normal e do mapa de máscara são adicionadas à textura principal do conjunto de blocos no Sprite Editor. Em Happy Harvest, os mapas de máscara são usados para criar efeitos de silhueta de luz de borda para o personagem e os adereços. No entanto, como a maioria dos ladrilhos é usada no chão, eles não precisam de uma luz de borda. É por isso que a maior parte da textura desse conjunto de ladrilhos é preta, para evitar refletir qualquer luz criada para o efeito de borda. Uma exceção são as telhas de construção usadas nos telhados, em que as bordas dessas telhas são destacadas.
A ferramenta Tile Palette é usada no Happy Harvest para preencher com eficiência a grade de cada mapa de blocos com blocos. A colocação manual das bordas ou cantos das formas de caminho pode ser demorada e propensa a erros. Você precisaria repetir o trabalho manual toda vez que fizesse alterações no caminho ou em qualquer outra forma baseada em ladrilhos. Você pode usar o recurso Rule Tile para evitar isso.
O Rule Tile pinta os ladrilhos de borda corretos com base nos ladrilhos vizinhos da forma. Na pasta do projeto do Happy Harvest, você encontrará uma paleta de blocos chamada Palette_Tiles. A primeira linha da paleta contém blocos usados com frequência, como o solo com grama. Esses são blocos de regras. Selecione o GameObject no Inspector para mostrar o ativo na visualização do projeto. Em seguida, você pode selecionar esse ativo para ver a configuração desse Rule Tile.
Se for aplicável ao seu projeto, você poderá economizar tempo reutilizando esses ativos de ladrilho ou pintando sobre as texturas.
Todos os blocos da amostra têm o mesmo tamanho e formato e estão contidos no mesmo Grid GameObject. Isso ajuda a manter o número de mapas de blocos baixo. Um componente chamado Terrain Manager é anexado ao Grid GameObject, oferecendo possibilidades de jogo que explicaremos na seção a seguir.
Alguns dos mapas de blocos no Grid GameObject incluem:
- UnderwaterTiles: Eles são usados para ladrilhos subaquáticos, para o penhasco e como solo verde para a área do lago.
- Água: Esses blocos usam um shader diferente dos outros, chamado Sprite-Lit-Material, que é criado no Shader Graph para simular a animação da água.
- GroundBase: Essa é a arte do solo, que inclui ladrilhos para os caminhos, grama, lama e pedra para preencher os espaços dos ladrilhos de elevação.
- ObjectsInTiles: É usado para GameObjects pintados em um mapa de ladrilhos com o GameObject Brush da paleta Tile, como as cercas.
- TilledTilemap: Esses blocos são usados no código para detectar blocos onde as sementes podem ser plantadas.
- WateredTileLayer: Isso é usado pela lógica do jogo para fazer com que os blocos pareçam úmidos. Quando os ladrilhos secam, os ladrilhos "úmidos" são removidos.
- Warehouse, House: Esses mapas de ladrilhos são usados para criar o armazém e a casa. A criação dos edifícios com mapas de blocos deu ao artista a flexibilidade de remodelá-los e redimensioná-los com mais eficiência, além de economizar espaço de textura, pois partes do edifício usam a mesma textura.
- Colheita: Isso agrupa todas as plantas em um GameObject e também é usado pelo Terrain Manager.
O script Terrain Manager anexado ao Grid GameObject lida com as alterações de ladrilhos e usa ladrilhos para manter o controle das plantações. Ele usa a API Tilemap, que pode ser útil para configurar a jogabilidade baseada em grade, ajudando a identificar mais facilmente a posição dos itens em 2D.
Essa classe MonoBehaviour cria duas classes genéricas chamadas GroundData e CropData. Elas incluem variáveis relacionadas à jogabilidade, como o tempo em que os ladrilhos parecem úmidos, a velocidade de crescimento de uma planta ou o tempo que ela dura sem ser colhida antes de morrer.
O script do Terrain Manager faz referência aos mapas de blocos e blocos usados para fins de jogo, incluindo:
- Mapa de ladrilhos do solo: Isso faz referência ao mapa de ladrilhos que contém ladrilhos de solo que indicam onde o jogador pode cavar e plantar sementes. Se você cavar em qualquer ladrilho fora desse mapa de ladrilhos, nada acontecerá.
- Crop Tilemap: Isso faz referência ao Tilemap GameObject que é o objeto pai das plantações. Usar a API Tilemap aqui permite que você coloque, atualize e remova blocos de corte.
- Mapa de água: Use isso para pintar sobre os ladrilhos de solo arado com água simulada, comunicando visualmente ao jogador que esses ladrilhos estão prontos para o plantio e o crescimento.
- Azulejo regado: Esse é um bloco de substituição de regra com o gráfico de água, que permite criar blocos com variações de um bloco de regra sem definir novas regras.
- Telha lavrável: Isso é usado para identificar as peças que o jogador pode usar para cavar.
- Ladrilho: Esse é o Rule Tile usado para pintar o visual do solo cultivado.
O script do Terrain Manager inclui funções que usam a API Tilemap para ler as informações do bloco em um formato de localização Vector3int e atualizar os blocos de acordo. Essas funções são chamadas a partir das diferentes ferramentas quando o PlayerController aciona a função nelas.
Para garantir visuais de boa aparência, evite a aparência de sangramento ou pequenos espaços entre os blocos devido à interpolação e à suavização das bordas. Isso é algo que não acontece em jogos de pixel art, nos quais os sprites não são suavizados, pois o Modo de filtro é definido como Ponto (sem filtro). No Happy Harvest, os sprites de blocos são embalados com o Sprite Atlas, que oferece melhor organização, desempenho e controle do projeto por meio de uma configuração simples.
Se não estiver usando uma folha de ladrilhos, é recomendável usar o Sprite Atlas para ajudar com as costuras e a classificação interna no Tilemap Renderer. Algumas configurações padrão funcionam para a maioria dos sprites, mas os mosaicos podem exigir um pouco de ajuste. Recursos como evitar a rotação de sprites quando compactados ou a dilatação alfa ajudam os blocos a manter as bordas mais nítidas.
Aprender a criar blocos que se conectem perfeitamente, evitando a repetição e mantendo a cena legível, pode ser uma experiência de tentativa e erro. Saiba mais sobre o sistema Tilemap no livro eletrônico Arte de jogos 2D, animação e iluminação para artistas.
As seguintes publicações do blog destacam jogos 2D retrô feitos com Unity e fornecem mais dicas de desenvolvimento 2D:
- 2D Pixel Perfect para uma conquista nítida em Skul: O Caçador de Heróis
- Como configurar seu projeto Unity para jogos retrô de 16 bits
- Como configurar seu projeto Unity para jogos retrô de 8 bits
- Uma rodada relâmpago de ótimas dicas para jogos 2D
Além disso, confira nossas outras demonstrações em 2D, The Lost Crypt e Dragon Crashers.
Você encontrará mais recursos para programadores, artistas, artistas técnicos e designers avançados no hub de práticas recomendadas do Unity.