Jogatina

É até engraçado. Uma das áreas mais complicadas da programação é justamente a de construção de aplicações pra crianças e adolescentes. Entretenimento. Programas pra brincadeiras.

A razão é que as brincadeiras são difíceis. Jogos fáceis não são muito complicados de programar. A conversa muda de rumo quando o quesito realístico entra na jogada. Aí sim a porca torce o rabo e diz miau.

É claro que o mais difícil mesmo é ter uma boa ideia. Quem tem uma é só fazer as trouxas e se mandar pra Califórnia.



Animação

O enfoque aqui não será dado em como se fazer e sim em como popularmente se faz.
Há possibilidades inimagináveis a serem exploradas. A maneira comercial de se fazer jogos pra computador é através de animação.
Pode-se dizer que os jogos são filmes interativos. A interatividade se dá pelas entradas→ teclados, controles e ponteiros.

Filmes (do tipo MPG, AVI, WMV, etc), cursores animados (ANI), GIF animados, entre tantos outros formatos, são montados como uma sequência de imagens. O tocador (player) vai exibindo sequencialmente essas imagens (conhecidas por frames), onde cada imagem atual sobrepôs a anteriormente mostrada.
Ou seja, o mesmo processo usado por projetores de filmes nos cinemas. O rolo de filme é uma sequência de fotos (quadros ou frames).

É assim que se faz um jogo.
Monta-se um cenário (com polígonos texturizados, imagens 2D, etc), captura entrada (do teclado, controle, etc), transforma ele (projeção, translação, rotação, escala) e o mostra transformado.
Esse processo fica em repetição a pequeno intervalo de tempo.
A diferença de tempo entre o cenário mostrado atualmente e o anterior indica o intervalo entre quadros. A unidade mais adotada é o FPS (frames per second).
Quanto melhor é o computador maior é a sua capacidade de FPS. Ou seja, ele conseguirá mostrar os quadros mais rapidamente.
É porisso que determinados jogos requerem uma boa placa gráfica. Eles precisam completar o ciclo de montar, capturar, transformar e mostrar em curtos intervalos de tempo.

O Direct3D e o OpenGL trabalham com frame buffer. Todo o processo de montar e transformar é feito em buffer. O de mostrar consiste simplesmente em copiar esse buffer pra memória de desenho da placa gráfica.

Um cenário gráfico 3D é comumente composto de polígonos texturizados, curvas de bezier e billboards.
Polígonos 3D são usados pra montar os modelos e o mundo.
Curvas de bezier costumam ser usados na construção de terrenos.
Billboards são instantâneos (screenshots) de objetos 3D. Ou seja, imagens 2D tiradas de polígonos texturizados. Geralmente são aquelas paisagens bem distantes colocadas estrategicamente (árvores, prédios, nuvens, montanhas, etc). O usuário, por mais que se movimente no cenário, só verá um determinado ângulo e mesmo assim tendo impressão de ver uma imagem 3D. Em jogos de futebol o público mais distante nas arquibancadas costuma ser uma animação de billboards.



Colisão

Colisão é uma das coisas mais importantes pra programação de jogos. É uma tarefa em contínuo aprimoramento e que depende muito do tipo do jogo ou duma determinada fase do jogo.

O que é colisão?
A colisão ocorre quando dois objetos se interceptam.
Os objetos podem ser vetores, planos e primitivas.

Existe uma grande diferença entre detectar uma colisão (collision detection) e reagir a essa colisão.
Técnicas de detecção de colisão são processos matemáticos bem difundidos e fornecidos pelos motores (engines) de jogos.
Avançar nessa área é mais coisa pra matemáticos e físicos.
Agora reagir ao evento de colisão é diferente.
Todos os jogos inovadores basicamente inovam em respostas às colisões. Do contrário o público vai sair falando É, os gráficos são legais, mas o jogo em si tá muito parecio com aquele tal....

Quando a câmera dum jogo em primeira pessoa (tipo Half-life 2) se aproxima dum botão de elevador até encostar, ocorre aí uma colisão e uma reação.
A colisão pode ter sido detectada por meio dum vetor (ou dum plano) entre algum referencial da câmera e o modelo que representa o botão.
A reação poderia consistir de três tarefas→ disparar um som qualquer, animar o botão e animar a abertura da porta do elevador.
E se fosse tudo dentro da água? E se fosse no topo dum arranha-céu com um vento forte? E fosse no exterior duma construção qualquer na lua?
Fatores físicos (como temperatura, atmosfera, gravidade, magnetismo, peso, velocidade, tipo de material, etc) interferem nas reações de colisão de acordo com a proposta de cada jogo.
Porisso acaba sendo uma tarefa de grande mutabilidade e inovação.
Mesmo com todos os motores à disposição, o programador se preocupa é em reagir às colisões que surgem no projeto do jogo.




http://transeberiano.brinkster.net