Arquivo da categoria: Desenvolvimento de Jogos

AABB – uma árvore para controle espacial e otimização de colisão

Vou começar alguns posts sobre “árvores de controle espacial e otimização de colisão”. Espacial nesse caso nada tem a ver com o universo, é espaço mesmo, ou seja, uma estrutura de dados que tem como objetivo organizar e otimizar os objetos espalhados em um determinado espaço.

Quando você aplica certo controle dos objetos no espaço, e essas estruturas de dados garantem isso, a implementação de diversas tecnicas de computação grafica se tornam viavies.

A primeira arvore que vou tratar é a arvore AABB (Axis Aligned Boundary Box). É uma das mais simples de implementar e que, nos meus projetinhos, já garantiram funcionalidades interessantes, como a “seleção de objetos 3D com o mouse”.

Figura 1 – Exemplo de AABB Tree – Existem caixas de volume para cada objeto, mas também caixas de volume que englobam as organizações hierárquicas de pai e filhos. Na figura, a cena tem dois filhos e um de seus filhos possui um filho também (confira a árvore de cena à esquerda)

Ela também pode ser usada para otimizar detecção de colisões. É possível refina-la em um nivel que, mesmo ela sendo alinhada ao eixo, garanta uma forma acurada de detecção de colisão

Figura 2 – É possível refinar a AABB para o mesmo objeto, aumentando assim a precisão em um possível teste de colisão. Fonte da Imagem: http://www.cgal.org/Manual/latest/doc_html/cgal_manual/AABB_tree/Chapter_main.html

Continuar lendo

Deixe um comentário

Arquivado em 3D, Computação Gráfica, Desenvolvimento, Desenvolvimento de Jogos

Arrows Engine – Lições aprendidas em um projeto fracassado de engine de jogos

Aee pessoal,

Como meus progressos no kinect estão lento (estou fazendo refactoring no código, e também estou sem muito saco para programar depois do trabalho), vou postar sobre o que aprendi (em outras palavras, O QUE NAO FAZER) no desenvolvimento abortado da minha engine de jogos.

Antes de mais nada, que fique claro que este post não dá lições de como você criar sua engine, mas lições que podem ser util no processo de desenvolvimento da engine!

O projeto em questão era criar uma engine de jogos 3D, ou seja, tanto o motor como um ambiente de criação de jogos. O nome que eu dei para ela era Arrows Engine, em homenagem à equipe de F1 Arrows.  Abaixo segue uma foto da suíte de criação de jogos:

Suite de criação de Cena - (Clique para ver em tamanho real) Nesse programa era possivel adicionar os modelos na cena a partir da biblioteca de modelos. Era possivel também posiciona-los na cena. Ele compunha a biblioteca com importações de modelos 3DS. Note que a organização da cena, no lado esquero, era para ser feito em celulas, carregadas via streaming pela proximidade (Sonho Meu!!!)

Esse foi um projeto que comecei para saciar meu sonho de produzir um jogo e que abandonei entre 2006 e 2007  inacabado(2º e 3º ano da faculdade). Mas acho que posso passar um pouco de “lições aprendidas” sobre o processo de desenvolvimento de uma engine de jogos que pode ajudar quem quer começar a fazer a sua ou em qualquer projetinho pessoal. Muitas das lições parecem quem contrariam o que aprendemos e lemos sobre desenvolvimento de software, mas utilizei varias delas em meu mestrado e obtive um bom resultado. 😉

Continuar lendo

Deixe um comentário

Arquivado em 3D, Computação Gráfica, Desenvolvimento, Desenvolvimento de Jogos, Geek

Técnicas de Jogos 1 – Tile Based Rendering

Sempre que puder, vou tentar postar algum material que produzi sobre algumas técnicas utilizadas em jogos.

Tile Based Rendering (em jogos 2D)

Essa técnica consiste em representar toda a cena e seus objetos através de blocos de pixels (comumente  8×8 pixels, que doravante será usado como tamanho referencia para os exemplos que seguem) chamados de tiles. Esses blocos são armazenados na memória de vídeo e o framebuffer é composto por uma matriz (de tamanho W/8 e H/8 sendo W a largura da tela em pixel e H a altura da tela em pixel) que indexará o conjunto de tiles.

Continuar lendo

Deixe um comentário

Arquivado em 2D, Computação Gráfica, Desenvolvimento, Desenvolvimento de Jogos, Geek, Jogos