Nos nossos dias, na área de desenvolvimento de jogos, é comum ouvir-se o termo game engine, tanto por parte de designers como entre os desenvolvedores de jogos. Mesmo aqui no Techmoz, uma das palavras-chave mais populares é game engine. Mas o que será exactamente game engine? Para que serve uma game engine? Quais as bases para a criação de um jogo em Java ou outra linguagem de programação qualquer? São algumas questões que tentaremos analisar neste artigo.
Estrutura básica de um jogo
Uma das tarefas mais complicadas para programadores que decidem se aventurar na área de desenvolvimento de jogos é, sem dúvida, organizar a execução de todas as tarefas envolvidas no desenvolvimento de um jogo. Na realidade, você pode ler vários tutoriais relacionados á API que pretende usar, fazer alguns exemplos que encontrar por ai, mas estes tutoriais dificilmente te darão o segredo básico sobre onde colocar cada ferramenta para você ter aquele jogo que você deseja. Todos os jogos parecem simples de desenvolver no começo, mas o nível de dificuldade vai aumentando a medida que decidimos acrescentar as funcionalidades neste jogo. Muitos jogos são desenvolvidos usando a mesma lógica no início, tendo as mesmas formas de apresentação visual e detalhes iniciais. Num nível mais alto de organização do processo de desenvolvimento de um jogo de computador, podemos agrupar as tarefas do jogo em 3 componentes principais, que serão requisitados durante a execução do jogo. Estas fases podem ser chamadas de Fase de Inicialização, Fase do Jogo em Acção e Fase de Finalização. Basta entender as responsabilidades de cada uma das fases, para entendermos todo o processo por detrás dos jogos.
Fase de Inicialização do Jogo
Durante a Fase de Inicialização do Jogo, vários elementos necessários para o jogo são carregados para a memória. Estes elementos incluem imagens, sons, arquivos de dados e todos os outros elementos que serão necessários para o jogo ser executado. Todas as classes que serão usadas no jogo devem ser instanciadas e preparadas para uso nesta fase. Este processo chama-se caching e é muito comum em jogos criados para plataformas mais limitadas para jogos, como o PC. Carregar dados do disco durante a execução do jogo pode causar problemas de performance, por isso é sempre aconselhável fazer o cache dos elementos necessários na memória, para futuras necessidades. Plataformas mais específicas para jogos oferecem funcionalidades muito melhores que o caching para esta tarefa.
Fase de Finalização do Jogo
A fase de finalização do jogo faz exactamente o contrário da fase de inicialização do jogo, que é remover todos os elementos da memória, para garantir que a execução do jogo seja terminado com sucesso. Em Java, o programador não precisa se preoupar com a gestão da memória, mas quando se programam jogos em particular, existem outros aspectos a ter em consideração na hora da finalização, como escrever logs, gravar preferências dos usuários, recordes alcançados e todos os elementos que serão usados na próxima execução do jogo.
Fase de Execução do Jogo
Deixamos esta fase para o fim, por ser uma fase um pouco mais complicada que as anteriores. A fase de execução do jogo consiste basicamente em controlar o conceito fundamental da programação de um jogo, chamado ciclo do jogo, ou game loop, na língua dos GRINGOS. O ciclo do jogo é basicamente um ciclo normal, que executa as tarefas do jogo repetidamente até que o utilizador decida terminar o jogo ou o jogo termine por outro motivo qualquer.Basicamente, um ciclo do jogo é composto por 4 fases, assim como as Applets em Java, que vimos a algum tempo atrás aqui no Techmoz, ou então o ciclo geral da animação. Estas fases são: Ler a opção do utilizador, processar esta informação, actualizar o jogo de acordo com esta informação e exibir o resultado na tela.Em termos de algoritmos, poderiamos representar este ciclo da seguinte maneira:
enquanto o jogo não termina:1. Ler o dado do usuário2. Processar3. Actualizar o Jogo4. Exibir alterações
É claro que cada uma destas funções possui muitas outras tarefas para a sua realização. Por exemplo, ler ao ler o dado do usuário, temos de ter em consideração o hardware de entrada destes dados, se é teclado, mouse, ou o sensor do Project Nata! Mas assim já é suficiente para você entender o básico sobre o funcionamento de um jogo, e começar desenvolvendo os seus próprios jogos, em Java ou outra linguagem como Python, C++ e até PHP!
Comentários Recentes