Ir para conteúdo
Faça parte da equipe! (2024) ×
Conheça nossa Beta Zone! Novas áreas a caminho! ×
  • Quem está por aqui   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.

[Criação de jogos]Tile Mapping + Soucer


~~Surfistinha~~
 Compartilhar

Posts Recomendados

Técnicas de tile mapping são bastante utilizados em jogos que precisem usar imagens muito grandes em dispositivos com uma memória reduzida. Neste artigo eu vou falar um pouco sobre a estrutura destes arquivos e sua respectiva implementação em Delphi (Object Pascal).

 

- O que é tile mapping? -

 

Tile Mapping é uma técnica que consiste em formar imagens 2d grandes a partir de blocos menores, chamados tiles. Uma imagem formada por esta técnica tende a ter várias partes que se repetem, portanto seria desperdício alocar memória para esta mesma parte várias vezes.

 

Tiles são, além de blocos menores de imagem, estruturas que guardam várias informações sobre a imagem que será desenhada, como o tipo de bloco que ele representa, se ele é um obstáculo ou não, se ele possui animações, etc.

 

Você deve estar acostumado a ver jogos usando esta técnica em RPGs, jogos de plataforma 2d e mesmo jogos desenvolvidos para plataformas móveis (GB, GBA, NDS, celulares, …).

 

Exemplo de jogo usando técnicas de tile mapping:

img1.jpg

- Estrutura -

 

Como foi dito antes, a técnica de tile mapping consiste em formar uma imagem grande a partir de blocos menores de imagem. Para isso nós usamos uma matriz bidimensional, o tile map, que indica qual posição cada um desses blocos ocupa.

 

A estrutura abaixo representa um tipo comum de tilemap:

É necessário se cadastrar para acessar o conteúdo.

Como vocês podem ver, as imagens não são armazenadas diretamente nos tiles. Isto acontece porque vários tiles diferentes costumam usar a mesma imagem, neste caso é melhor colocar todas as imagens em um outro lugar e usar apenas um índice para identificá-las. Para isso usamos os tilesets (conjunto de tiles).

 

- Tile sets -

 

Os tilesets normalmente são um grande arquivo bitmap (ou outro formato de imagem) contendo as imagens. Como todos os tiles têm o mesmo tamanho não há problema em colocá-los todos juntos em uma única e grande imagem.

 

Dê uma olhada nesta imagem:

 

Um tileset utilizado por RPGs

 

Quando o programa precisa desenhar umtile, ele pega o índice da imagem, procura por esta imagem no tileset e copia a imagem do tileset para a tela.

 

O código abaixo é apenas um exemplo de uma rotina de desenho de tilemaps.

img2.jpg

É necessário se cadastrar para acessar o conteúdo.

As coisas devem começar a fazer sentido agora. Quando o programa vai desenhar o mapa, ele percorre a matriz, pega a imagem correspondente a cada tile no tileset e copia para a tela. Mas imaginem um mapa de 100 x 100, ou 1000 x 1000, ou até maior! Seria muito demorado percorrer um mapa deste tamanho e seria desperdício de tempo e recursos, afinal, nós não precisamos percorrer um mapa inteiro de 100 x 100 tiles se em nossa tela só cabem 10 x 10 tiles.

 

Então vamos otimizar um pouquinho o código, percorrendo apenas os tiles que estarão visíveis na tela.

É necessário se cadastrar para acessar o conteúdo.

 

- Finalizando -

 

[DOWN]

É necessário se cadastrar para acessar o conteúdo.
[/DOWN]

 

É necessário se cadastrar para acessar o conteúdo.

 

Créditos Pelo soucer: Eu > ~~Surfistinha~~ <

Créditos Pelo codigos: Desconhecido

Link para o comentário
Compartilhar em outros sites

Ótimo!

Vai ajudar bastante.

Tem gente que gosta tanto de brincar de criar joguinhos e isso ai vai ajudar muito estas pessoas.

Créditos são seus?

 

 

Os Créditos do soucer sao meus mas do codigos eu nao sei de quem é

 

Obrigado

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.