Tecnologias de Jogos de Vídeo Abel J. P. Gomes & Gonçalo Amador LAB. 1 Departamento de Informática Universidade da Beira Interior Portugal 2013 Copyright 2009-2013 All rights reserved.
LAB. 1 JogAmp e JMOGE INSTALAÇÃO E CONFIGURAÇÃO 1. Objetivos 2. Conceitos 3. JogAmp Instalação e Configuração 4. JMOGE Instalação, Configuração e Introdução
Lab. 1 JogAmp e JMOGE INSTALAÇÃO E CONFIGURAÇÃO Nesta lição prático-laboratorial aprender-se-á instalar e configurar o JogAmp e o motor de jogo JMOGE, em Windows 7 no ambiente de desenvolvimento Netbeans 7.2.1. Serão indicados e brevemente explicados os módulos, ou sub-motores, que constituem o JMOGE. Serão ainda indicados os passos gerais e links para possibilitar fazer a instalação e configuração do JMOGE em outros sistemas operativos, bem como em outros ambientes de desenvolvimento. 1. Objetivos específicos de aprendizagem Terminada esta ficha de trabalho, o aluno deve saber e ser capaz de: 1. Saber instalar e configurar o JogAmp para Netbeans em Windows 7. 2. Saber onde consultar a informação necessária para instalar e configurar o JogAmp em outros ambientes de desenvolvimento que não o Netbeans 7.2.1, e.g., Eclipse, e para outros sistemas operativos (S.O.) que não o Windows 7, e.g., Android, MacOS. 3. Ter uma noção geral da arquitetura do motor de jogo JMOGE, a utilizar para a realização dos distintos projetos. 4. Ser capaz de identificar e explicar minimamente os módulos a alterar para a realização dos distintos projetos. 2. JogAmp Instalação e Configuração O JogAmp é constituído por 4 módulos, de referir, o Joal, o Jocl, o Jogl e o Gluegen. Toda a informação referente a cada um dos módulos, bem como instalar e configurar o JogAmp, encontra-se na Wiki do JogAmp, disponível no link: http://jogamp.org/wiki/index.php/main_page Através destes 4 módulos é possível utilizar nativamente em Java 3 APIs de C/C++, de referir, o OpenGL, o OpenCL, e o OpenAL. Nota: O leitor deve ler cada um dos 4 overviews, disponíveis na Wiki do JogAmp, de forma a saber quais as funcionalidades de cada um dos 4 módulos.
O processo de instalação e configuração do JogAmp em qualquer sistema operativo, e noutros ambientes de desenvolvimento que não o Netbeans 7.2.1 encontra-se disponível na Wiki do JogAmp (indicada previamente). Independentemente do sistema operativo em uso, os passos para a instalação e configuração do JogAmp podem ser resumidos em: 1. Fazer o download do arquivo comprimido com o JogAmp, ( jogampall-platforms.7z ). 2. Adicionar às variáveis de sistema o caminho para as bibliotecas, que se encontram no local para onde arquivo for descomprimido, i.e., o sistema precisa de saber somente a localização das bibliotecas a identificação do sistema operativo (e.g., Windows, Linux, etc) e da versão deste (32 ou 64 bits) é realizada pelo sistema operativo. 3. Configurar o ambiente de desenvolvimento de forma a ter uma biblioteca genérica JogAmp. Esta biblioteca genérica será posteriormente adicionada a cada projeto que queira recorrer ao Jogl, ao Joal, ao Jocl, ou ao Gluegen. Apenas (como já foi referido) será abordada a instalação e configuração do JogAmp em Windows 7 (32 ou 64 bits é igual), para o ambiente de desenvolvimento Netbeans 7.2.1. Para informações sobre outros sistemas operativos ou outros ambientes de desenvolvimento consultar a Wiki do JogAmp (anteriormente indicada). Nota: É importante referir que é possível utilizar somente cada um dos módulos do JogAmp num projeto. Mais especificamente, pode-se inclusivamente somente instalar e configurar módulos específicos do JogAmp para uma arquitetura especifica. No caso particular do JMOGE apenas o Jogl e o Gluegen são efetivamente utilizados. No entanto, por facilitismo a instalação e configuração do JogAmp como um todo será a explicada de seguida, passo-a-passo.
A página principal do JogAmp, encontra-se disponível no link: http://jogamp.org/ No link indicado, fazer o download do arquivo jogamp-all-platforms.7z, genérico para múltiplas arquiteturas (e.g., Windows 32 bits, Windows 64 bits, Linux 32 bits, etc.), como se ilustra na Fig.1: Figure 1: Página principal do JogAmp.
De seguida, descomprimir para a Drive C: o arquivo jogamp-allplatforms.7z, como se ilustra na Fig.2: Figure 2: Diretoria na raiz da drive C: para onde o arquivo do JogAmp deve ser descomprimido. Resta agora adicionar o JogAmp às variáveis de sistema, como ilustrado passo-a-passo nas Fig. 3 e 4: Figure 3: Aceder às definições de sistema no Windows 7.
Figure 4: Adicionar variáveis de sistema no Windows 7. Agora é necessário adicionar as diversas variáveis de sistema requeridas: 1. Adicionar a variável JAVA HOME com o valor C:\Program Files (x86)\java\jdk1.7.0 04 (64 bits) ou C:\Program Files\Java\jdk1.7.0 04 (32 bits). 2. Adicionar a variável JogAmp com o valor C:\jogamp-all-platforms. 3. Adicionar no fim da variável Path (se não existir) um ; seguido de, %JogAmp%\lib ; Nota: A versão do JDK pode ser outra que não a indicada sendo necessário colocar o número correto no fim do texto, e.g., jdk6.23. É ainda importante referir que o JMOGE é compatível com o Java a partir da versão 1.6, i.e., não utiliza algumas das melhorias introduzidas com o Java 1.7. A razão prende-se com a versão 1.6 ser a predominante em equipamentos da UBI.
Resta agora configurar o Netbeans 7.2.1 para reconhecer o JogAmp. Este processo consiste em adicionar o JogAmp às bibliotecas do Ant, como ilustrado nas Figs. 5 a 8: Figure 5: Aceder à configuração das bibliotecas Ant no Netbeans 7.2.1. Figure 6: Adicionar a nova biblioteca JogAmp, no Netbeans 7.2.1.
Figure 7: Selecionar o caminho para os.jar a adicionar à classpath da nova biblioteca JogAmp, no Netbeans 7.2.1. Figure 8: Selecionar os.jar a adicionar à classpath da nova biblioteca JogAmp, no Netbeans 7.2.1.
3. JMOGE Instalação, Configuração, e Introdução Primeiramente vamos proceder à instalação e configuração do motor de jogo JMOGE. O primeiro passo consiste em realizar o download do arquivo do JMOGE, disponível na página da cadeira de tecnologias de jogos de vídeo: http://www.di.ubi.pt/~agomes/tjv/ Após descarregado e descomprimido (para uma localização à sua escolha), procedemos à configuração do projeto do JMOGE. A configuração do projeto do JMOGE consiste em primeiramente carregar o projeto do JMOGE dentro do Netbeans, como ilustrado na Fig. 9: Figure 9: Carregar um novo projeto no Netbeans 7.2.1.
De seguida é expetável que a linkagem a.jars e dependências do projeto, por ele se encontrar numa diretoria de sistema distinta. Os.jars encontram-se na diretoria lib dentro da pasta do projeto do JMOGE. De seguida, supondo que havia erro de linkagem no JogAmp vamos exemplificar como se faria para corrigir o problema. Considerando que o projeto JMOGE já se encontra carregado, clicar com o botão direito na raiz do projeto ( JMOGE ), e efectuar os passos ilustrado nas Figs. 10 a 12: Figure 10: Aceder às propriedades de um projeto no Netbeans 7.2.1.
Figure 11: Remover uma biblioteca das dependências de um projeto no Netbeans 7.2.1. Figure 12: Adicionar uma biblioteca às dependências de um projeto no Netbeans 7.2.1.
Efetuar o mesmo processo para todos.jars que se encontram na diretoria lib do projeto JMOGE, somente se estes apresentarem uma sinal de aviso amarelo. Este sinal significa que também não estão na diretoria indicada aquando a criação ou ultima alteração do projeto. De referir que é importante nas opções de escolha, somente para os.jar utilizar o relative path e não o absolute path. As configurações, e.g., argumentos da linha de comando, que o motor permite são várias. Para as alterar, após selecionar o projeto como principal, via clique direito no projeto ( JMOGE ) e clique esquerdo na opção Main project, é apenas necessário modificar os parâmetros de execução do projeto, indicado na Fig. 13: Figure 13: Alterar o primeiro argumento para pires, aquando uma chamada a um projeto especifico no Netbeans 7.2.1. O motor JMOGE sem argumentos tem um comportamento distinto de se tiver somente um ou mais argumento. Se tiver somente um argumento, este será o nome ou id do jogador que irá ser controlado na máquina em que for executado o JMOGE. Outros casos apenas serão indicados nas (futuras) fichas prático-laboratorias de Inteligência artificial e de redes. Nota: Somente após concluir a ficha número 2 esta funcionalidade estará funcional.
Finalmente falta fazer um breve introdução ao motor e aos módulos que o constituem. Antes de indicar cada um dos módulos, e as respetivas classes de cada, é importante referir que as futuras fichas prático-laboratorias para cada módulo serão projetos separados, de forma a facilitar a compreensão e alteração do módulo referente a cada ficha. Desta forma as alterações a subsequentes projetos deverão ser adicionadas ao projeto JMOGE. Também para cada futura ficha prático-laboratorial será abordado em mais detalhe o módulo abordado e para que serve. Os primeiros módulos a indicar, dos quais algumas classes servirão de auxiliares em futuras fichas prático-laboratorias, são os módulos responsáveis pelo tratamento do input de dados via rato e teclado (Fig. 14), o interpretador de dados no formato Collada para geometria (Fig. 15), e o interface de utilizador (Fig. 16). Figure 14: Módulo de input de periféricos, e.g., rato e teclado.
Figure 15: Módulo de input de formatos de dados geométricos.
Figure 16: Módulo de interface de utilizador. O interface de utilizador realiza o render do jogo, sendo apenas necessário definir a lógica de jogo. Outras classes do interface de utilizador incluem uma câmara genérica que pode ter várias perspetivas (e.g., primeira pessoa) e um contador de frames por segundo (FPS).
Todas as texturas (imagens) e modelos (Collada) encontram-se na diretoria input\data, ilustrado na Fig. 17: Figure 17: Diretorias das texturas e modelos. Todos os módulos indicados de seguida serão abordados mais em detalhe e tema de futuras ficha prático-laboratoriais.
O módulo referente à geometria (Fig. 18) diz respeito tanto à gestão de cena como ao desenho ( render ) da cena e todos os objetos visíveis presentes neste, i.e., jogadores, obstáculos e limites do cenário. Também, é referente à criação e polimento de terrenos e à criação de labirintos. Figure 18: Módulo de geometria.
O módulo de física (Fig. 19), diz respeito a efeitos especais, e.g., a simulação de fluidos (i.e., líquidos e gases), e à cinemática do movimento, i.e., translação e rotação, e à deteção de colisões. Figure 19: Módulo de física.
O módulo de inteligência artificial, ou I.A., (Fig. 20), será utilizado para implementar jogadores controlados automaticamente. Este módulo implementará algoritmos de procura de caminho, percorrimento de caminho. Figure 20: Módulo de I.A..
Finalmente, o módulo de comunicação ou rede (Fig. 21), diz respeito à implementação de uma topologia de rede especifica, e.g., cliente servidor. Figure 21: Módulo de comunicação. Os módulos brevemente indicados estão por ordem de fichas práticolaboratorias a realizar. Tanto para o projeto JMOGE, como para os projetos referentes a ficha prático-laboratorial, a documentação encontra-se na diretoria do projeto, na pasta javadoc. Para a visualizar abrir o ficheiro index.html num browser.