Anterior FunOrb Central: Parte 3 - A ascensão dos gráficos do FunOrb

FunOrb Central - Diário de desenvolvimento - Banner

22 de julho de 2009 - A ascensão dos gráficos do FunOrb

Algumas das novas tecnologias que estamos integrando a FunOrb Central são melhorias nas bibliotecas de gráficos.

Até agora, todos os jogos do FunOrb exibem gráficos usando software de renderização. Isto significa que o processador do computador é responsável por todos os desenhos que o jogo requer, configurando cada pixel de uma vez.

Isto, certamente, confere aos jogos do FunOrb grande controle sobre os gráficos e é rápido o bastante para a maioria dos propósitos. Mas isso também significa que nossos jogos são "fill-rate limited", pois cada pixel que alteramos requer (mais ou menos) uma linha de Java para ser executada. Sendo assim, a performance dos nossos jogos é limitada principalmente pela quantidade de pixels que precisamos para desenhar cada quadro.

Entre outras coisas, isto limita a resolução que nossos jogos podem usar. Para se ter uma ideia, pense em um jogo normal do FunOrb, com uma janela de 640x480 pixel (que dá um total aproximado de 300 mil pixels) e, em meu computador, o jogo consegue redesenhar o jogo 30 vezes por segundo (30fps). Calculando, meu computador pode "desenhar" aproximadamente 9 milhões de pixels por segundo. (Cá entre nós, isso é garantido se cada pixel for somente desenhado uma vez - mas nem sempre é muito lógico conseguir isto.)

Agora vamos balancear as coisas. O próximo tamanho de janela padrão que temos disponível é 800x600. Para desenhar nossos jogos na tela, nós temos que escrever quase 500 mil pixels por quadro. Com meu computador conseguindo rodar 9 milhões de pixels/seg, nós agora estamos gerando 19fps - o que está começando a ficar um pouco mais lento. No tamanho seguinte (1024x768) temos 12fps e quando atingirmos a alta tecnologia de resolução de jogos (1680x1050: 5fps) as coisas, aí sim, ficariam muito mais lentas.

Alta resolução - Ofensiva Galática
Alta resolução - Ofensiva Galática.
Clique aqui para ver uma versão maior desta imagem.

Como parte dos nossos planos de ampliar os jogos do FunOrb para essas resoluções mais altas, precisamos mudar nossa abordagem. Há uma peça de hardware instalada em computadores modernos chamada de GPU (em tradução livre, Unidade de Processamento de Gráficos), que acelera a habilidade de processamento de gráficos do seu computador. Ele é usado por jogos mais modernos (inclusive por RuneScape HD) para rodar em alta resolução e em alta velocidade. Nós pretendemos usar este hardware a nosso favor para que os novos jogos do FunOrb rodem assim na Central.

A melhor vantagem de se usar aceleradores de hardware (como GPU) é que eles são capazes de descarregar o trabalho do processador principal (CPU). Enquanto um jogo do FunOrb, no momento, precisa copiar individualmente cada pixel de, por exemplo, textura dos campos de Kickabout League, o processador poderia apenas solicitar que a GPU fizesse uma cópia e a CPU poderia ser usado, enquanto isso, para os cálculos de física da bola. Além disso, como a GPU é uma peça de hardware especializada e roda sem o overhead de um sistema operacional ou ambiente Java, ele pode trabalhar muito mais por quadro (frame).

Uma das coisas que gostaríamos de fazer, portanto, é ajustar os nossos jogos atuais para que eles façam uso desta tecnologia que permite resoluções mais altas, começando por 800x600. Também estaríamos particularmente interessados em eventualmente suportar modos de tela widescreen para os jogos do FunOrb.

Kickabout League no modo widescreen
Um exemplo de Kickabout League no modo widescreen.
Clique aqui para ver a imagem maior.

Como você deve supor, há boas razões para ainda não termos feito isso. Há dois problemas principais ligados ao uso de hardwares de aceleradores de gráficos, até mesmo quando somos tecnicamente capazes de usá-los. A primeira é que muitos dos GPUs no mercado são aqueles chamados de "fixed-function", isto é, com um número limitado de operações capacitados a realizar (ao contrário da CPU, multiuso - que pode ser programado para fazer quase tudo). Alguns jogos funcionam perfeitamente usando isto. Arcanistas, por exemplo, só precisa de algumas imagens copiadas para a tela, que cabe completamente dentro da capacidade da maioria dos aceleradores mais básicos. Porém, jogos como Canhão Estelar usam efeitos mais avançados como contornos, manchas, brilhos ou distorção. Casos como estes exigem mais esforço, pois temos que decidir se o efeito atual pode ser reproduzido ou, se precisarmos substituí-lo, o que precisa ser usado no lugar dele para fazer uso do restante da capacidade do hardware.

O outro grande problema é compatibilidade. Se você já visitou o menu de opções de Java no site do FunOrb, deve ter notado que há uma opção para escolher entre aplicativos assinados ou não. Os aplicativos assinados, partindo do princípio que você pode rodá-los em sua máquina, exercem um pouco mais de controle sobre o seu computador, inclusive a habilidade de acessar o seu acelerador de gráficos, caso tenha um. Para aqueles jogadores que não podem rodar aplicativos assinados (normalmente em lugares como escritórios ou bibliotecas, onde o sistema de segurança do computador não permite) ou jogadores que não possuem o hardware adequado, nós precisamos nos certificar de que a qualidade do software do FunOrb é a melhor possível, mas isso pode gerar mais tempo para criar, desenvolver e testar.

Acho que as vantagens realmente valem a pena. Apesar de provavelmente não ser possível lançar o FunOrb Central e ter, imediatamente, todos os jogos rodando em uma resolução mais alta, o trabalho que estamos fazendo no momento, com certeza servirá de base para isso. Como desenvolvedor e jogador, mal posso esperar para ter mais espaço na tela para jogar, além da possibilidade de conseguir modos com mais detalhes. Só para sentir o gostinho, veja as imagens de Kickabout League e Ofensiva Galática.

Mod Artifice
Desenvolvedor do FunOrb


Voltar ao topo