Cursos / Jogos Digitais / Introdução a Jogos Digitais / Aula

arrow_back Aula 10 - Motores de Jogos II

2 - Principais Componentes de um Motor de Jogos

2.2 - Física

O motor de física é o componente responsável por realizar as simulações de como as forças físicas e os movimentos dos objetos do jogo ocorrem. Imagine aquela fase do Megaman, com 10 inimigos vindo na sua direção, balas para todos os lados, fazendo você dar pulos duplos pelas paredes…

Megaman voando nas costas de um cachorro robô, enquanto luta contra pássaros cibernéticos. Because physics, right?

Pulos duplos? Pois é, a simulação de física dos jogos não precisa ser necessariamente realista, apenas coerente para que o jogador entenda como os elementos do jogo se comportam. Até porque uma simulação física realista envolve tantas variáveis que seria extremamente complexo (e custoso) calcular um cenário de um jogo, ocasionando uma enorme perda de desempenho. E a regra nos jogos é: tudo para ganhar desempenho! Uma facilidade que o motor de física fornece para o desenvolvedor é que ele não precisa se preocupar em codificar rotinas para cada elemento do jogo, visto que o motor possui algoritmos padrões para simular os eventos e aplicá-los para todos os objetos de uma fase ou cenário.

Uma das principais funções da parte física é a detecção de colisões entre os elementos do jogo. Será que o golpe/tiro bateu no adversário? Será que ele cai na plataforma ou escorrega pela ponta? Para resolver essas situações, é necessário que o jogo consiga entender se dois objetos colidiram, ou seja, se eles se tocaram. Existem diferentes técnicas para se detectar colisões nos jogos: o Bounding Box desenha uma caixa em volta do objeto do jogo, e se as caixas de dois objetos ocuparem o mesmo lugar no espaço, houve uma colisão. A vantagem desse método é a simplicidade em testar se houve uma colisão ou não (testa se os quadrados interseccionam), porém, ele não é muito preciso, além de ser comum vermos problemas como “colisões fantasmas” (os objetos batem sem se tocar!). Um método mais refinado é o Convex Hull, ou envoltório convexo: nele, a área de colisão segue a forma do objeto, como se tivéssemos embrulhado-o num papel de presente. Dessa forma, a colisão pode ser feita em relação a partes do objeto, como os braços do boneco ou a sua cabeça. Apesar de ser mais complexo, esse método permite a detecção de colisões de forma mais precisa, inclusive criando efeitos diferenciados dependendo do ponto da colisão.

Está vendo a figura abaixo? Na imagem à esquerda temos um exemplo de como funciona o Bound Box, enquanto que na imagem à direita temos um exemplo de como funciona o Convex Hull.

Uma otimização muito importante que o motor faz é a de “congelar” objetos que não estão dentro do raio de interação do jogador. Imagine um mapa imenso, cheio de adversários, como os do jogo Far Cry, por exemplo: se a cada instante o jogo precisasse calcular a física da movimentação de todos esses objetos, era capaz de até mesmo o mais potente computador “suar” para rodar o jogo! Para que isso não ocorra, o motor de física realiza a simulação apenas dos elementos que são de interesse para o jogador, enquanto outros que não estão visíveis ou próximos a ele ficam em um estado adormecido, não consumindo processamento da plataforma. Eu já falei que nos jogos era tudo pelo desempenho? :)

Versão 5.3 - Todos os Direitos reservados