Início / Glossário /
Algoritmo – Trata-se de um conceito básico na área da programação que se refere a conjuntos de instruções (comandos) utilizados para desempenhar uma determinada tarefa. Um algoritmo geralmente é "varrido" seqüencialmente, ou seja, ao ser chamado, ele será executado instrução por instrução até o seu fim. A estrutura de um algoritmo pode sofrer algumas alterações dependendo dos aspectos fundamentais da linguagem em que for implementado.
Aliasing – diz-se da forma "serrilhada" que tomam certas linhas e contornos de imagens em baixa resolução, uma vez que os monitores (e também os televisores) exibem imagens por meio de pixels retangulares;
Allegro – Trata-se de uma biblioteca para programação de jogos em linguagem C/C++ cuja maior vantagem está na alta portabilidade para diversos Sistemas Operacionais. Além disso, ela permite o uso das APIs gráficas do DirectX ou do OpenGL para a parte gráfica da programação, além de ser open source e free. Infelizmente, não se tem notícias de jogos comercialmente viáveis desenvolvidos em Allegro.
Angel / Anjo – pessoa/empresa que se compromete a custear todo o projeto de jogo mediante um contrato que, na maioria das vezes, exige uma certa porcentagem dos royalties do jogo; Pode não ser muito interessante, já que geralmente esses valores são altos;
API – Application Programming Interface, em português, Interface para Programação de Aplicações; Quaisquer ferramentas, bibliotecas ou coisas do tipo que lhe permita criar uma aplicação para uma dada plataforma, como exemplo, podemos citar que você pode, em Windows, usar a API do DirectGraphics ou do OpenGL para a parte gráfica da programação de uma aplicação. A API existe justamente para ser o que ela é: uma "ponte" entre você e o Hardware/Software para que fique mais fácil a programação de aplicações.
Buffer – Espaço de memória usado para armazenar informações; No caso de exibição gráfica, o buffer representa uma superfície na qual são plotadas (desenhadas) as imagens antes de serem exibidas;
Bitmap – Mapeamento de bits, uma das formas de representação mais comum de imagens, em que cada posição de um mapa de bits guardará as informações quanto a cor e brilho da referente posição da imagem. Vantagem: fácil leitura e interpretação; Desvantagem: necessidade de grande espaço de armazenamento, dependendo do tamanho da imagem a ser armazenada. Há diversas formas de mapeamento de bits, cada uma com a sua própria forma de compactação/armazenamento de dados de uma imagem:
· bmp à mais conhecida, guarda as informações da forma acima discutida, podendo trabalhar de forma um pouco interessante quando usamos paletas de 256 cores para a imagem, ocupando um espaço bem menor em relação a bmps de 16, 24 ou 32 bits de cor;
· gif à possuem até 256 cores pré-definidas e pode trabalhar com animações (diversas imagens exibidas seqüencialmente), ocupando um espaço consideravelmente menor que o anterior;
· png à um dos formatos mais recentes e com relativo uso na internet devido ao seu tamanho reduzido, pode ser trabalhado com mapeamento de bits ou vetorialmente, suporta transparência;
· pcx à algo como um aprimoramento do formato bmp, também com fácil leitura e tamanho relativamente menor, perdendo muito pouco em qualidade;
· jpg ou jpeg à algoritmos de compressão deste formato possuem algo relativamente diferente e interessante em relação aos anteriores: ele guarda informações sobre as cores de uma imagem por "área", ou seja, somente as informações de certas regiões são guardadas, podendo então ser escolhido o grau de compressão (quanto maior a compressão, menor a qualidade);
Canvas – uma determinada superfície utilizada para armazenar informações que serão exibidas em algum componente;
CDX – é um GDK (Game Development Kit) criado para o desenvolvimento de jogos em Windows baseado no DirectX. Ele é free e, como o nome sugere, foi desenvolvido para auxiliar os programadores C++.
Cel Shading – técnica utilizada em jogos e vídeos 3D que faz com que objetos e cenários ganhe a aparência de "desenhados à mão", ou aparência de cartoon, se preferir; Os modelos parecem apresentar contornos mais bem-definidos e as texturas e cores também se apresentam como em um desenho.
Cliente-Servidor – Arquitetura de sistemas em que uma aplicação cliente envia suas informações (dados locais) para o servidor, que as processa e envia novas informações (dados globais). Muito utilizado no desenvolvimento de jogos multiplayer, quer seja para redes locais, quer seja para a internet.
Clipping – Técnica de tratamento de imagens de forma que somente "apareça aquilo que deve aparecer". Geralmente quando se desenha para a superfície que será lida pelo vídeo, pode-se ultrapassar os limites realmente cabíveis por aquela resolução de vídeo, essa técnica visa descartar essas regiões, evitando falhas na renderização gráfica.
Culling – Processo onde fazemos uma seleção do que será ou não renderizado/visto pelo espectador (por exemplo, um cubo que será visto somente sua parte frontal, não precisa ter sua parte de trás renderizada, então fazemos a seleção do que vai ser renderizado na cena).
Detecção de Colisões – Métodos utilizados para verificar se dois ou mais objetos estão em "contato", ou seja, se um objeto está invadindo uma área já ocupada por outro objeto. Há diversas formas de efetuar a detecção de Colisões:
· Colisões de Sprites: os dois métodos mais conhecidos são:
o "Por caixa": tomam-se as coordenadas Topo, Esquerda, Fundo, Direita de cada Sprite para verificar se há intersecção entre elas; Vantagem: seu cálculo é rápido e simples; Desvantagem: As Sprites não possuem formas de retângulo e por isso podem-se observar falhas no cálculo da colisão;
o "Por pixel" ou perfeita: geralmente, após a colisão por caixa, pode-se pegar a área de intersecção das sprites e verificar pixel por pixel se um pixel não-transparente de um choca com um pixel não-transparente da outra, o que representa uma colisão real; Vantagem: o cálculo é simples e o resultado é preciso; Desvantagem: a depender da área a se verificar, pode-se demorar muito na verificação da colisão por este método;
· Colisão de Objetos 3D: há dois métodos mais conhecidos:
o "Por Box": similar ao "Por Caixa" apresentado anteriormente;
o "Por Polígono": similar ao "Por Pixel", após saber qual a região no espaço é a intersecção dos objetos, verifica-se se algum polígono de um deles (pertencente à região) "choca" com um polígono do outro objeto (também pertencente à região da intersecção);
DirectX – conjunto de APIs desenvolvidas pela Microsoft para incentivar o desenvolvimento e utilização de aplicações multimídia no sistema Windows. Vantagem: o Direct3D pode ser emulado por software, o Microsoft DirectX SDK poderá ajudá-lo razoavelmente e em se tratando de jogos comerciais, ainda são vendidos mais jogos para Windows do que para os outros SOs; Desvantagem: seu jogo só funcionará em sistema Windows ou outro que apresenta o DirectX instalado. Algumas de suas APIs são:
· DirectGraphics à seria a fusão do Direct3D com o DirectDraw, mas pouco se ouve falar sobre isso. É a API gráfica;
· DirectInput à API para entrada de dados, por mouse, teclado, joystick, etc, e mapeamento de ações para tais "chaves";
· DirectMusic e Direct Sound -> APIs sonoras;
· DirectPlay à API para comunicação de computadores;
· DirectShow à API para arquivos multimídia, como vídeo e áudio;
Doublebuffering – Técnica em que utilizam-se dois buffers e flipping para que os gráficos apareçam com um tempo de processamento menor e qualidade interessante;
Engine – Conjunto de rotinas, funções e variáveis para o controle principal de seu jogo. O pessoal confunde muito e questiona: o que é uma engine? Seria um executável? Todo o meu código? Uma biblioteca? Pode ser qualquer uma dessas coisas, basta que ela lhe forneça o máximo de coisas interessantes para o seu jogo. O padrão de uma engine de jogo atualmente é que ela suporte:
· Renderização gráfica do cenário;
· Suporte a diversos formatos de arquivos de áudio, objetos 3d animados ou não, de imagens e de vídeo;
· Comunicação com outros computadores;
· Cálculos gerais necessários para o controle da parte gráfica;
Na verdade, uma engine deve oferecer muito mais que isso!
Environment Map – Técnica em que a textura aplicada em uma superfície pode ser alterada de acordo com a sua posição e reflexão da luz, utilizado, por exemplo, em superfícies de carros para dar a impressão de refletirem a luz, e imagens do céu e do ambiente.
Face – Na modelagem 3D, corresponde a um triângulo.
Flicking – Aquele efeito de "piscada" quando fazemos uma animação. Isso ocorre por que o tempo de atualização da imagem não corresponde com a freqüência do monitor, pois jogamos toda a animação diretamente ao vídeo. Utilizam-se técnicas de double buffering ou triple buffering para minimizar esse problema.
Flipping / "Flipagem" (troca) de superfícies – técnica de substituição de uma superfície por outra; Muito utilizado para obter bons resultados na exibição de gráficos; Por exemplo, enquanto se exibe a superficie1, desenha-se na superficie2 e, ao terminar, efetua-se o flipping, exibindo-se agora a superficie2 e passando a desenhar sobre a superficie1, e assim o processo repete-se indefinidamente;
FOV (Field Of View) – Campo de visão; determinado por uma aberta de ângulo e distância.
Frames Per Second (FPS) – Refere-se à taxa de atualização de vídeo, ou seja, um determinado número de quadros ("telas") que podem ser desenhadas por segundo.
Frustum – Palavra em latim, "volume". É o volume de visão de uma projeção em perspectiva, formando uma espécie de "pirâmide", onde a base é o finito da visão e o topo dessa pirâmide é cortada e parte da visão de quem está olhando.
Game Design – Ramo da indústria de jogos que se preocupa com o projeto de um jogo como um todo, levando-se sempre em consideração o impacto que o mesmo irá causar sobre o jogador e sobre a comunidade em que o mesmo está inserido. Um bom game design deve preocupar-se com a forma como o jogador deverá interagir com o sistema e como o mesmo deve responder, de forma a buscar maximizar a experiência do usuário.
GDK – "conjunto para desenvolvimento de jogos"; trata-se de bibliotecas, ferramentas e/ou APIs que facilitam o desenvolvimento de um jogo; Na verdade, são similares a SDKs, só que voltados para jogos;
Glut – Se bem me lembro, é uma biblioteca de funções e rotinas complementar à biblioteca da OpenGL para melhor aproveitamento das capacidades gráficas oferecidas por essa API e assim sendo facilitar a nossa vida;
HeightMap – Tradução: mapa de alturas. Muito utilizado na criação e renderização de terrenos. Uma forma de representação do mesmo é uma imagem bitmap em tons de cinza (256 cores), onde cada pixel da imagem indica qual a altura dessa região no terreno por meio da intensidade da cor.
IA – Inteligência Artificial. Isso é que é tesão! Diz-se do ramo de ciência da computação que estuda todas as formas de se "implementar" em sistemas artificiais reações obtidas normalmente pelos sistemas naturais (seres vivos) em determinadas situações, ou seja, IA abrange todas as abordagens possíveis de se implementar em hardware ou software aquilo que somente seria concebível por seres vivos uma vez q somente estes apresentam a capacidade de raciocínio lógico em mundo real. Poutz! Ficou lindo mesmo isso!!! Vou anotar para quando eu estiver fazendo mestrado, eu vou colocar isso em minha monografia!
Imagem Vetorial – Diferente de imagens bitmap, as informações de uma imagem vetorial não são armazenadas pixel por pixel. Neste caso, tudo o que é armazenado são informações e cálculos matemáticos para que um programa (que seja capaz de compreender aquela imagem vetorial) exiba os gráficos.
Por exemplo, para desenhar um segmento da reta, o arquivo da imagem armazenaria posição inicial e final do segmento, cor e grau de transparência.
A maior vantagem em relação aos bitmaps é o fato de possui um tamanho bem menor para o desenvolvimento de animações e imagens simples. A maior desvantagem é que imagens que possuam um alto grau de detalhamento (como fotografias, por exemplo) podem custar muito mais processamento e espaço para armazenamento, quando vetorizadas, uma vez que não há um cálculo matemático específico para gerá-las. Uma solução que vem sendo, então, adotada por ferramentas de gráficos vetoriais é a possibilidade de importar e manter imagens bitmap em sua estrutura.
Dentre os diversos programas existentes, Corel Draw e Macromedia Flash são bons exemplos de programas que trabalham com imagens vetoriais: o primeiro com imagens estáticas e o segundo possibilitando a criação de animações.
Isométrica (visão) – diz-se de jogos com gráficos 2D cuja perspectiva da câmera dá a impressão um ambiente 3D; Um ótimo exemplo de jogo nesse estilo é o Super Mario RPG, lançado para SNES; Percebe-se nesses tipos de jogos que paredes de construção e outros elementos verticais formam um determinado ângulo com uma linha horizontal qualquer, o que os difere de jogos com visão top-down; É costume nesses tipos de jogos trabalhar-se com pixel art bem finalizada e com imagens pré-renderizadas, trazendo um maior realismo ao cenário; É também chamada 2D e 1/2;]
Level Design – "Design" de Níveis, ou seja, é o planejamento e modelagem de Níveis (mapas, cenários, formação de um mapa de tiles para um cenário, etc) para um jogo;
Mesh – Superfície ou malha 3D. Uma grande jogada atualmente pq a animação por mesh ocupa menos espaço em memória e é mais rápida qto ao tratamento em si do q a animação por objetos (ou seja, vários objetos diferentes seqüencialmente compondo uma animação). Pode representar todo um objeto 3D ou uma parte dele.
Normals (Vetor Normal a um polígono) – Vetor (é, desses mesmos que vemos em Álgebra Linear) utilizado para definir o sentido de renderização de um polígono, por exemplo, o que irá identificar qual lado do polígono é "visível" daquela posição de câmera. Além disso, a normal de um polígono é utilizada para saber como a luz deverá ser refletida ao incidir sobre o mesmo.
NURBS – de NonUniform Rational B-Spline. Está relacionado à curvas e superfícies. Existem algoritmos para cálculos de curvas, como Splines e Bézier. Na verdade, curvas e superfícies Bézier são membros da família Splines.
OpenAL – é uma API (Open Source) para áudio 3D multi-plataforma, pode ser usada juntamente com OpenGL (garantindo assim a portabilidade do jogo);
OpenGL – API Gráfica 3D (podendo tb trabalhar 2D) muito utilizada no desenvolvimento de aplicações multimídia com grande necessidade quanto a gráficos. Vantagem: Multiplataforma. Desvantagem: Somente trabalha a parte gráfica, vc terá q procurar outras APIs para trabalhar as outras partes, necessidade de placa 3D para funcionar legal mesmo;
Parallax (Scrolling) – Tipo de scrolling em que várias camadas (formadas por tiles, bitmaps ou outras entidades gráficas) movem-se em velocidades diferentes, dando a impressão de pertencerem a profundidades diferentes; Um exemplo de jogo em que se pode observar essa técnica é Super Mario World;
Polígono (Polygon) – Na matemática qualquer objeto (formado por um conjunto de arestas e vértices fechado) é um polígono. Mas quando se trata de objetos 3D em um ambiente 3D, um polígono é um quadrado.
Ponto a Ponto – Arquitetura de redes para sistemas na qual as informações de um computador é enviada para um (ou mais) computador sem a necessidade de um servidor intermediário. Interessante no desenvolvimento de jogos locais simples, de baixa complexidade e que não necessitem enviar muitas mensagens.
Protótipo – Versão do software ainda incompleta, utilizada para avaliação de suas funcionalidades. A liberação de protótipos durante o desenvolvimento de um jogo é muito interessante, pois permite que o usuário final (jogadores pertinentes ao público-alvo daquele jogo) possa testar as suas capacidades, dar sugestões, informar sobre possíveis erros e dificuldades encontrados, etc.
Publisher / Publicador – Empresa que cuida da divulgação e distribuição de um jogo;
Renderização – Processo de geração de informações (sonoras, gráficas, etc.) que serão transmitidas ao usuário final. Renderização 3D é portanto o processo de criação de imagens gráficas 2D a partir de modelos 3D.
Remake – Jogo cujo objetivo principal é ser uma recriação (melhorada ou não) de um jogo já existente; A maior vantagem em começar o aprendizado desenvolvendo um remake é porque você já possui algo em que se basear, facilitando a confecção do documento de game design e até mesmo ajudando a encontrar algoritmos que solucionem os diversos problemas encontrados;
RGB – Red, Green, Blue. Definição de cores, variando de 0…255, onde a combinação desses valores podem resultar em novas cores, por exemplo, R=255, G=255, B=0 resulta em amarelo.
RGBA – Red, Green, Blue, Alpha. Idem ao RGB, porém com um canal extra, Alpha, que indica o nível de transparência / opacidade da cor.
SDL – Simple DirectMedia Layer; trata-se de um conjunto de bibliotecas para programação de aplicações multimídia multi-plataforma que se utiliza de instruções nativas de cada SO (por exemplo, em Windows a SDL pode utilizar-se da GDI ou do DirectGraphics para a parte gráfica) e permite também o uso de OpenGL e OpenAL, o que torna a aplicação mais portável;
Sprite – Representação gráfica de algo na tela, geralmente 2D. Pode ser composta por tiles, como é o caso das Sprites do Game Boy Advanced. Geralmente, trabalhamos com sprites para tudo aquilo em jogo que pode se "mexer", "sair do lugar", tem uma animação "viva", como: personagens e alguns objetos.
Superfície – espaço na memória utilizado para armazenar uma ou mais imagens;
Teste do Jogo – Trata-se da busca de falhas na execução ou de pontos fracos no jogo possíveis de serem verificados durante a execução do mesmo. Para cada ponto a ser avaliado no jogo há uma forma diferente de se avaliar o sistema desenvolvido. Normalmente, designa-se duas fases de testes:
· Alpha testing à fase em que as versões liberadas são para avaliação pela própria equipe desenvolvedora, normalmente o software ainda está cheia de falhas (bugs) e poucas funcionalidades disponíveis; O ponto mais importante aqui é desenvolver uma estrutura básica para o jogo, resolver os erros na mesma e implementar as funcionalidades primárias do jogo;
· Beta Testing à fase em que versões são liberadas para um grupo escolhido dentre o futuro público-alvo para avaliar o software principalmente quanto à jogabilidade e diversão promovida pelo mesmo; Erros ainda são esperados, mas o ponto-base agora é desenvolver todas as funcionalidades que faltam para o sistema;
Textura – imagem 2D aplicada sobre uma superfície 3D; uma boa texturização é essencial, uma vez que os modelos 3D de um jogo devem ser low-poly (conter o menor número possível de polígonos).
Tile – Representação gráfica de algo na tela, é um conjunto de tiles que formará uma imagem maior, como o cenário, o que geralmente representará uma redução de uso de memória e armazenamento em disco que utilizar um único bitmap para a tela inteira. Geralmente, trabalhar com tiles para as partes fixas do cenário ou com pouca mobilidade, por exemplo: paredes e chão de um cenário, objetos como baús e outras coisas q não se "mexem" muito e inclusive a água, havendo então uma troca seqüencial das tiles que fazem parte da água de forma a dar a impressão de movimentação desta;
Top-Down (Visão) – diz-se de jogos com gráficos 2D cuja perspectiva da câmera, como o nome sugere, dá a impressão de se estar vendo todo o cenário a partir de um ponto bem alto; Um ótimo exemplo de jogo nesse estilo é Final Fantasy 3, lançado para SNES; A maior vantagem nesse estilo de trabalho é a facilidade de cálculo de posicionamento e colisão com tiles (já que as mesmas são retangulares não-isométricas);
Triple Buffering – Funciona similar ao Double Buffering, com uma vantagem: uma vez que trabalha com três buffers no lugar de dois, permite que comece a se desenhar no terceiro buffer enquanto ainda está sendo feito o flipping entre os outros dois buffers (ou seja, reduz ainda mais a perda de tempo);
Vértice (Vertex) – É a representação de um ponto, geralmente em ambiente 3D. Uma face é formada por três vértices interligados por arestas, dando origem, assim, à possibilidade de representação gráfica de diversos objetos 3D.
Wireframe – É um modo de visualização de todo um cenário 3D levando-se em consideração somente os vértices e arestas que o compõem.