Uma Nova Concepção para a Criação de Jogos Educativos Esteban Walter Gonzalez Clua1, João Ricardo Bittencourt2 1 ICAD – IGames / VisionLab Departamento de Informática – PUC – Rio Rio de Janeiro/RJ [email protected] 2 Centro de Ciências Naturais e Tecnológicas UNIFRA - Centro Universitário Franciscano Santa Maria/RS [email protected] Resumo: Este documento apresenta uma discussão sobre a possível utilização de jogos computadorizados na educação de jovens e está dividido em três partes: 1) Introdução e motivação, onde se apresentam os principais argumentos sobre a conveniência de utilizar jogos de computadores no processo de ensinoaprendizagem; 2) Ferramentas, onde se apresentam resumidamente os processos necessários para se confeccionar um game 3D, focando especialmente os softwares e programas necessários para tal e 3) as tendências futuras, onde se apresentam os caminhos para onde o desenvolvimento de games tende a ir nos próximos anos, procurando discutir como estes rumos poderão ajudar e melhorar o processo educacional. Como apêndice ao documento encontra-se um tutorial breve sobre um engine comercial, que pode ser utilizado para a construção de jogos computadorizados com fins didáticos. 1. Introdução e motivação O mercado de jogos para computadores está crescendo de forma rápida, surpreendendo até os visionários mais otimistas. Enquanto em 2000 o faturamento da indústria mundial de jogos computadorizados não ultrapassou os US$ 10 bilhões, o ano de 2003 terminou com um faturamento equivalente a US$ 28,8 bilhões, o que equivale a quase três vezes a receita gerada pela indústria cinematográfica. Atualmente mais de duzentos títulos são lançados por ano e apenas nos Estados Unidos mais de 225 milhões de jogos foram vendidos em 2003 (valor superior ao total de ingressos vendidos pela NBA no mesmo ano). O investimento que empresas de desenvolvimento estão fazendo também estão atingindo cifras astronômicas: a Square, por exemplo, gastou mais de US$ 10 milhões na produção do bem sucedido Final Fantasy XI. Estas cifras altas apenas retratam o grande interesse e entusiasmo que os games produzem em diferentes públicos - crianças, adolescentes e adultos jovens. No Brasil, o número de LAN Houses abertas em apenas dois anos está próximo de 10 mil, sendo que em alguns bairros das grandes cidades é tão comum encontrar estes estabelecimentos, como encontrar uma padaria ou uma farmácia. O número de títulos de revistas sobre games nas bancas de jornal é superior a qualquer outro tema específico, o número de sites dedicados ao assunto é incontável. Não é para menos: numa pesquisa realizada no Rio de Janeiro com garotos de classe média e na faixa etária de 10 a 17 anos registrou que 38% dos garotos (sexo masculino) jogam mais de 20 horas por semana, durante o ano letivo [CLU 02]. Os jogos educacionais computadorizados são uma das modalidades de CAI (Computer Assisted Instruction) proposto por Coburn, Kelman, Roberts et al [COB 88] e são elaborados para divertir os alunos, desta forma aumentando a chance de aprenderem os conceitos, o conteúdo ou as habilidades embutidas no jogo. Os jogos educacionais podem ser bastante simples como os de exercícios e práticas, mas podem ser ambientes de aprendizagem ricos e complexos, denominados por alguns de micromundos, porque estes fornecem um mundo imaginário para ser explorado pelo aluno. Para Papert apud Kafai [KAF 95] micromundos são ambientes de aprendizagem interativos baseados em computador na qual os pré-requisitos estão construídos no sistema e os aprendizes podem se tornar ativos, construindo sua própria aprendizagem. Para Amory [AMO 01], os jogos educativos requerem enredos atraentes. Para o autor é muito importante utilizar os jogos computadorizados no processo educacional pelo fato dos jogos afetarem a motivação, as funções cognitivas e a curiosidade do aprendiz, pois estes jogos permitem a experimentação e a exploração do usuário. Um dos grandes problemas dos jogos educativos é apresentar para o aprendiz uma coleção de enigmas sem nenhuma ligação, tornando o jogo desinteressante. Por isto é interessante acrescentar nestes jogos princípios narrativos que estabeleçam início, meio e fim. Por último, Amory acredita que os jogos computadorizados educativos disponibilizam uma forma onde o aprendiz pode estar imerso em micromundos construtivistas. Para Kafai [KAF 01], basicamente existem duas abordagens para o desenvolvimento de jogos com propósitos educacionais. A abordagem instrucional e a construtivista. A abordagem instrucional consiste da maioria dos jogos voltados para ensinar. A criança aprende algo enquanto faz uma determinada atividade, pois existe uma integração do conteúdo que será ensinado com a idéia do jogo. A outra abordagem é a construtivista, os jogos são usados para aprender. As crianças constroem seus mundos utilizando ferramentas computacionais, muitas vezes linguagem de programação, tais como LOGO. Kafai [KAF 95] realizou um projeto com crianças de 10 anos de idade para o desenvolvimento de jogos computadorizados visando o ensino de frações para alunos que estavam cursando o ensino fundamental. O projeto dos jogos foi extremamente desafiador para os aprendizes que tiveram que planejar, resolver problemas, projetar, ensinar e revisar diversos conteúdos sobre frações. Segundo Jenson & Castel [JEN 02], a meta principal do educador é engajar os aprendizes como agentes e arquitetos de sua própria educação. O maior desafio dos jogos com propósitos educacionais é oferecer para o aprendiz um ambiente que propicie a imersão onde os usuários queiram estar, explorar e aprender da mesma forma que os aprendizes fazem nos jogos computadorizados comerciais. Estes autores também concordam com a premissa que os jogos comerciais são extremamente atraentes para as crianças e jovens, com alta qualidade técnica. Mas infelizmente são considerados pela sociedade como jogos sem valor educacional que consideram o jogador como um mero comprador. Já os jogos educativos em geral não são atrativos, pois não criam uma sensação de imersão, trata o jogador como um estudante, pois possui uma forte abordagem educacional. Os jogos didáticos devem seguir a rota do sucesso dos chamados jogos comerciais pelo fato que estes permitem uma maior imersão, uma exploração do espaço e permite que o aprendiz interprete um personagem e explore um mundo virtual. Os autores coordenam o projeto Ludus Vitae que consiste de um ambiente imersivo de jogo on-line focado no personagem com várias áreas e caminhos que podem ser explorados livremente pelo aluno. Tanto professores quanto aprendizes colaboram na construção deste mundo. Cria-se a idéia de uma comunidade, independente das fronteiras curriculares. Não é necessário muito esforço para se concluir que diante deste contexto, os games possuem – e seguindo as tendências de mercado, irão possuir muito mais nos próximos anos – uma forte influência na forma de pensar, no comportamento social, psicológico e educacional dos jovens. Surgem daí algumas perguntas: esta influência é positiva? Como educar os jovens dentro desta nova realidade? Os jovens nascidos neste contexto de expansão das telecomunicações e das tecnologias da informação estão sendo preparados para uma sociedade futura? De forma pragmática, a escola está apta para preparar os jovens atuais para exercer sua cidadania e atuarem no mercado de trabalho em 2021? 1.2 Causas da atratividade dos jogos para computadores Apesar dos jogos apresentarem vários níveis de conceitos de razoável complexidade, surge uma pergunta: como usuários com faixas de idade entre 10 e 17 anos conseguem não só aprender estes conceitos, mas, em especial, se interessar por aprendê-los, quando muitas vezes não apresentam o mesmo interesse para aprender conceitos de mesmo nível de complexidade abordados em disciplinas escolares? A resposta pode estar associada a fatores como atração e desafio. Numa pesquisa realizada por um dos autores, uma das perguntas feitas foi a seguinte: - “Porquê você gosta de jogos para computadores?” A maioria das pessoas respondeu que sentem atração devido ao desafio imposto pelo mesmo. Uma parcela considerável também respondeu que gosta dos jogos devido à história e à qualidade gráfica do mesmo. De fato, um dos principais componentes para que um jogo seja atrativo consiste no fato de colocar o jogador perante um desafio. Quanto maior for este desafio, maior será a vontade de ganhar e, portanto, mais atração trará ao jogador. É por isso que jogos de futebol com times difíceis ou rivais (Brasil x Argentina ou Flamengo x Vasco) sempre causam mais atração e chamam um público maior do que outras partidas mais fáceis (Flamengo x Bangu). Jogos para computadores usualmente fornecem ambientes dotados de interfaces com alta interatividade e visual sofisticado composto por várias mídias integradas, podendo assim criar ambientes muito imersivos e, portanto, bastante desafiadores, dado o realismo imposto. Por exemplo, Metal Gear Solid II ou Resident Evil: Code Veronica. Além disso, os jogos possuem a possibilidade de contar histórias ricas, com roteiros originais, por exemplo, Shenmue ou Final Fantasy. Percebeu-se neste trabalho que desafio e histórias bem contadas são fatores críticos de sucesso no desenvolvimento de jogos com um forte poder educativo. Thomas Malone identificou três características que tornam os jogos computadorizados intrinsecamente motivadores [COB 88]: desafio, fantasia e curiosidade. Para Greenfield [GRE 88], os jogos computadorizados são atraentes para as crianças porque estas desenvolveram preferências pelas imagens visuais dinâmicas e animadas devido à experiência televisiva e devido à interatividade, pois a criança pode agir no jogo. Assim diante deste contexto devemos repensar o significado dos “jogos computadorizados educativos”. Como foi apresentado anteriormente criou-se uma divisão entre jogos comerciais e jogos educativos. Primeiramente tal denominação já estabelece um pressuposto que os jogos educativos não podem ser comerciais e viceversa. Sabe que o primeiro grupo possui um forte apelo para os jovens, alta qualidade técnica e um conteúdo de puro entretenimento, enquanto que o segundo tem um fraco apelo entre os jovens, baixa qualidade e um enfoque altamente conteudista. Battaiola [BAT 00] e Bates [BAT 01] consideram jogos educativos como uma modalidade de jogo computadorizado. Nestes jogos existe uma proposta pedagógica explícita, seu principal objetivo é ensinar algo de uma forma lúdica. Tal modalidade é conhecida como eduntainment [BAT 00]. Para Rollings & Morris [ROL 04], existem os estilos de jogos e estes não são categorizados em um único grupo, ou seja, em geral os jogos apresentam características de diferentes estilos. Um dos estilos propostos por Rolling & Morris é o estilo educacional, cujo aprendizado é efetuado através da prática. Baseandose nesta concepção de Rollings & Morris que permite que os jogos assumam diferentes estilos pode-se afirmar que os jogos podem ser desenvolvidos com um estilo educativo. Assim, por exemplo, podem existir jogos de ação, de estratégia, de RPG, de esporte educativos. Na Figura 1 estão representados estes conceitos. Independente de um jogo computadorizado possuir objetivos pedagógicos explícitos os jogos podem ser considerados educativos pelo fato de desenvolver habilidades cognitivas importantes para o processo de aprendizagem - resolução de problemas, percepção, criatividade, raciocínio rápido, entre outras habilidades. Caso o jogo desde seu planejamento tenha especificado propósitos conteudistas e para ser utilizado dentro do âmbito escolar denomina-se tal jogo como didático. Se este jogo não possui objetivos pedagógicos explicítos, foram desenvolvidos enfatizando o entretenimento, denomina-se tais jogos de entretenimento. Jogos E du cat i vos Jogos de E n t r et en i m en t o Jogos D i dát i cos Figura 1: Esquema comparativo dos jogos de entretenimento e jogos didáticos Um ponto importante que precisa ser destacado para compreensão desta questão é a diferenciação entre a mecânica de um jogo e o seu conteúdo e que ambas possuem caráter educativo. Existem jogos que possuem um conteúdo cuja temática envolvem aspectos de extrema violência, sexo, entre outras características indesejáveis de serem abordados em um espaço de aprendizagem, tais como as salas de aula. O jogo Grand Theft Auto da RockStar Games é um exemplo de jogo cujo protagonista é um criminoso e as missões oferecidas pelo jogo envolve questões ilegais realizadas no submundo de uma cidade fictícia. Entretanto este jogo é uma mistura de ação e aventura. O jogo Grim Fandango da Eletronic Arts também possui estes mesmos estilos, entretanto sua temática é diferenciada, pois trata de uma fábula que envolve o Dia dos Mortos, um evento importante culturalmente no México. Se considerarmos este jogo, o Sim City 2000 da Eletronic Arts e o Ages of Empires da Microsoft que foram desenvolvidos sem uma intenção de educar, também poderiam ser utilizados no escopo escolar pelo fato de possuírem um conteúdo que pode ser explorado de forma educacional. Andrade, Zavaleta, Vaz et al [AND 03] consideram que os jogos computadorizados inteligentes (jogos com uma Inteligência Artificial sofisticada, por exemplo, The Sims) com objetivos psicopedagógicos bem definidos podem ser usados para desenvolver habilidades cognitivas, tais como criatividade e visão espacial. O que deve ser considerado é o conteúdo de um jogo, pois a mecânica dos jogos computadorizados é implicitamente educativa. No caso da comparação entre Grim Fandango e o Grand Thief Auto destacam-se os estilos, a mecânica do jogo que permite o desenvolvimento de habilidades meta-cognitivas, tais como a resolução de problemas. A diferenciação está na temática. Portanto quando se utiliza o termo jogos computadorizados educativos referem-se a um jogo que possui explicitamente uma proposta pedagógica, entretanto não se exclui o caráter educativo de todos os jogos computadorizados mesmo sem um propósito pedagógico explícito. Atualmente, os jogos com propósitos didáticos, em geral, são feitos para crianças e portanto apresentam baixo nível de desafio e muitas cores e desenhos. Hoje, os jovens e uma pequena parcela do público adulto estão interessados principalmente em jogos que tenham elementos em 3D e bastante realismo. Desta maneira, os jogos educativos têm sido vistos com bastante desprezo pelo público jovem. Na pesquisa realizada [CLU 02], apenas 27% disseram que gostaram de algum jogo educativo que jogaram. Por outro lado, 68% afirmaram que consideram todos os jogos educativos que conhecem como sendo ruins. Segundo a Teem (Teachers Evaluating Educational Multimedia), atualmente a principal contribuição dos jogos na educação é estimular as pessoas a ganharem importantes habilidades, como negociação, planejamento, pensamento estratégico e tomada de decisões. Entretanto, neste trabalho será apresentado uma abordagem mais objetiva para o processo de ensino-aprendizagem através dos jogos computadorizados. É importante destacar que esta abordagem não trata-se de nenhuma espécie de "joguismo", ou seja, uma postura dogmática na qual percebe-se os jogos computadorizados como a única tecnologia capaz de desenvolver as habilidades cognitivas dos aprendizes, mas compreende-se os jogos computadorizados como uma tecnologia educacional enquadrada no contexto cibercultural do século XXI capaz de auxiliar, junto com demais tecnologias de ensino, e potencializar o processo de aprendizagem deste aprendiz pós-industrial contextualizado em uma sociedade da informação e do conhecimento. 1.3 Imersividade: elemento chave para um jogo Em computação gráfica existem muitos graus de imersividade, seja num cenário 3D ou não. O conceito de imersividade está relacionado com o grau de interatividade que um usuário é capaz de ter numa aplicação. Esta interatividade não está apenas relacionada à capacidade de "andar" num cenário, mas também com a capacidade de interagir com objetos e outros personagens dentro deste mundo virtual. Outros fatores que permitem aumentar o grau de imersividade de uma aplicação são o seu foto-realsimo (semelhança com o mundo real) e estímulos sensoriais, que podem ser dados por joysticks e diversos dispositivos de entrada (como por exemplo no joystick Dual Shock 2, do Playstation 2, pode-se o perceber até 128 níveis de pressão no controle, além de ser capaz de fazer com que o controle vibre de acordo com situações do jogo, como por exemplo quando um carro passa raspando na parede ou entra no banco de areia da pista). Num jogo 3D pode-se fazer o usuário “mergulhar” dentro dele, utilizando-se de um grau de interatividade que se aproxima do mundo real, em alguns aspectos. Exemplos de jogos assim são aqueles gerados para novos consoles, tais como o X-Box, o Playstation 2 ou o Game Cube. O Metal Gear Solid III é um exemplo onde guardas podem até identificar o personagem pela sua sombra e o jogador é capaz de interagir com praticamente qualquer objeto da cena. Outro exemplo é o jogo The Sims II onde o jogador deve realizar tarefas do cotidiano interagindo com os objetos de sua casa e as pessoas à sua volta. O jogo Shenmue que é feito em terceira pessoa com um nível de ação e imersividade extremamente altos, por exemplo, dentro do jogo é possível ir a fliperamas, comprar chocolates, telefonar para casa, arrumar emprego, entre outras ações. Para Battaiola, Elias, Domingues et al [BAT 02], a motivação é o componente mais importante para o aprendizado. O sucesso de um jogo é a combinação perfeita de enredo, interface interativa e o motor do jogo. Tal motivação somente é obtida nos jogos com propósitos didáticos, se tais permitirem uma maior imersão. Para estes autores a questão é porque não usar alguns princípios dos jogos computadorizados comerciais (sem finalidades didáticas explícitas) de grande aceitação pelos jovens para implementar softwares educacionais, de forma a torná-los mais atrativos? Desta forma é possível deduzir que os jogos didáticos poderão tornar-se mais motivadores no momento que deixarem de ser fortemente pedagógicos e agregar em sua concepção, tecnologias e técnicas de criação oriundas dos jogos de entretenimento, tão atrativos para os jovens. Assim a Computação Gráfica, a Inteligência Artificial, Processamento Distribuído, a Interação Homem-Máquina, a elaboração de um roteiro rico, a composição gráfica e sonora de excelência tornam-se componentes fundamentais para o incremento da imersividade e das chances de sucesso dos jogos didáticos. 1.4 Uma nova concepção dos jogos didáticos Atualmente, os jogos educacionais ainda são uma área pouco explorada no mercado da computação. O principal motivo disto é a dificuldade em se criar um jogo educacional que seja interessante ao jovem. Até agora, a maioria dos jogos educacionais apenas atraem aqueles que já tenham um interesse em determinada área e não o público em geral. Por outro lado, os jogos de entretenimento que atraem o grande público não são produzidos com o objetivo explícito de fazer o jogador aprender alguma coisa. O principal problema que se aponta neste trabalho para os jogos educacionais que se encontram nas prateleiras das lojas consiste no fato de que possuem desafios fracos e pouco motivadores. Na maioria das vezes estes jogos foram projetados por educadores e pedagogos, dando uma forte ênfase para aspectos didáticos, não enfocando aspectos lúdicos. Desta forma estes jogos perdem sua espontaneidade, seu caráter prazeroso e tornam-se semelhantes as tradicionais aulas com textos didáticos usando quadro e giz. Assim sendo, é importante que os jogos educacionais sejam, antes de mais nada jogos, ou seja, espontâneos, prazerosos e lúdicos [FOR 00]. O educador deverá, no processo de design, pensar os momentos adequados para inserir a os aspectos conteudistas, sem esquecer do prazer em jogar. Entretanto, a equipe de desenvolvimento e as ferramentas empregadas para tal, devem ser as mesmas que desenvolvem games comerciais, pois simplesmente pelo fato de um jogo ser utilizado dentro de um escopo escolar não poderá ser desenvolvido com tecnologias ultrapassadas e inadequadas às tendências dos jogos de entretenimento cujos jovens estão habituados em seu cotidiano. A título de exemplo, alunos do curso de games da PUC-Rio estão desenvolvendo um jogo em que o personagem assume o papel de um garoto que encontrou, num laboratório de um professor, um relógio capaz de levá-lo a diversos períodos da história. Neste jogo, Horácio viaja para a época do descobrimento do Brasil (Figura 2) e se junta à expedição de Pedro Álvares Cabral. No navio, através de diversas interações com personagens, apresenta-se ao jogador informações de caráter didático, presentes no conteúdo escolar. Entretanto, ao longo de todo o jogo, os desafios são iguais aos que se encontram em qualquer jogo de aventura. Desta forma, os aspectos conteudistas são inseridos no jogo como um pano de fundo (background) e não são destacados como os elementos principais da trama. A aventura, os desafios e a resolução de enigmas é que tratam-se dos elementos-chave capazes de motivar os jogadores a interagirem. Figura 2 – Imagens do jogo educativo “O Guardião do Tempo” ©. Outro jogo que pode ser destacado no conceito de jogos didáticos é a Série Caça-Pistas©. Os jogos desta série abordam temáticas interdisciplinares - linguagem, matemática, ciências, geografia e lógica inseridas em tramas de aventuras e mistério. O jogador ao elaborar a estratégia para resolver algum mistério irá encontrar na trama uma série de desafios relacionados com conteúdos escolares. Considerando esta nova concepção, não poderia-se deixar de destacar o projeto Games-to-Teach [GAM 03] desenvolvido no Departamento de Estudos de Mídia Comparativa do Massachusetts Institute of Technology (MIT) com apoio da Microsoft Research. O objetivo deste projeto é o desenvolvimento de protótipos conceituais para o desenvolvimento de entretenimento educacional interativo, sendo que os primeiros frameworks construídos estão voltados para o ensino da matemática, ciências e engenharias. Estes jogos ainda não estão implementados, alguns são projetos e outros são protótipos de desenvolvimento extremamente sofisticados. O Hephaestus, o Biohazard e o Revolution são exemplos de protótipos desenvolvidos pelo projeto Game-To-Teach [GAM 03]. O Hephaestus é um MMORPG que permite o projeto de robôs que serão controlados remotamente com o objetivo de preparar um planeta vulcânico no estilo da Terra para ser habitado pelos humanos. Este jogo está voltado para alunos do Ensino Médio ou para os primeiros anos de faculdade e o objetivo educacional do jogo é ensinar mecânica através de uma abordagem construtivista, através do desenvolvimento dos robôs. Já o Biohazard é um RPG computadorizado com elementos dos jogos de aventuras cujo jogador interpreta um jovem médico que deve tratar os pacientes e identificar origem de doenças epidêmicas, tais como ebola e meningite. Por último, o Revolution é um MMORPG desenvolvido para o ensino de História para alunos do Ensino Médio ambientado no período da Guerra Civil Americana. Veja na Figura 3 algumas telas destes protótipos. Hephaestus Revolution Figura 3 - Algumas screenshots dos protótipos desenvolvidos pelo projeto Games-To-Teach O projeto Games-toTeach fundamenta-se em 11 princípios relacionados abaixo [GAM 03] e servem de referencial para a elaboração desta nova concepção de jogos educativos: 1. A mídia de massa, tais como rádio, televisão, livros e cinemas acabam sendo chamarizes para os aspectos científicos, ou seja, muitos indivíduos acabam tornando-se pesquisadores devido suas leituras de ficção científica; 2. A mídia no processo de ensino-aprendizagem. Inspira-se nas séries televisivas produzidas para apresentar o mundo científico para os jovens. Ou seja, a mídia sempre preocupou-se na produção de conteúdo didático de uma forma mais envolvente e motivadora para os aprendizes; 3. A indústria de jogos computadorizados está madura e consolidando-se como uma nova forma artística que envolve teatro, psicologia e arquitetura; 4. Existe o problema dos jogos didáticos enfatizarem fortemente os aspectos didáticos, sendo que tal modelo acaba reduzindo a motivação para a aprendizagem. O desafio para os projetos de jogos com objetivos didáticos é fundir conteúdo educacional com jogabilidade. Engajando de forma significativa os aprendizes em temáticas, tal como a matemática, de forma criativa; 5. A necessidade de projetar jogos didáticos da nova geração que permita os aprendizes resolverem problemas de forma crítica e criativa. Deve ser dada a chance aos aprendizes de explorar mundos que contenham materiais didáticos; 6. Aspecto motivacional. Os jogos computadorizados podem ser considerados o estado da arte para o desenvolvimento de ambientes de aprendizagem motivadores. 7. A possibilidade de manipular sistemas complexos. Jogos, tais como, SimCity permite que o jogador gerencie um cidade tendo que analisar inúmeras variáveis simultaneamente; 8. Os jogos computadorizados acabaram tornando-se mundos digitais imersivos, potencializando a imersão através da experimentação destes mundos. O conhecimento adquirido através destas explorações poderá ser transferido para outras situações práticas do cotidiano, devido ao desenvolvimento de habilidades cognitivas através de um processo de aprendizagem significativa; 9. As comunidades virtuais oriundas dos mundos digitais potencializam uma rede de intercomunicação entre os indivíduos e potencializam a fantasia, através da interpretação de personagens que vivem nestes mundos; 10. O processo de avaliação com jogos computadorizados pode tornar-se adaptativo através do uso de agentes inteligentes capazes de observarem o desempenho do jogador e elaborar desafios personalizados para este; 11. A produção desta nova geração de jogos didáticos requer times interdisciplinares, criativos e capazes de trabalharem cooperativamente. Nesta perspectiva, nacionalmente, destaca-se o Projeto REVOLUTION [BIT 03], cujo objetivo é desenvolver um motor de jogo denominado Druida para o desenvolvimento de mundos virtuais baseado em RPGs (Role-Playing Games). O importante é desenvolver tramas divertidas e estimulantes tendo como base cenários históricos. Uma das possibilidades de exploração desta ferramenta, que encontra-se em fase de planejamento, é o desenvolvimento de tramas relacionadas com a Revolução Farroupilha e o folclore gaúcho. Os jogadores irão construir seus personagens típicos desta época e vivenciar estórias tendo como background à revolução. É importante destacar que o mais importante é a diversão, o brincar, sendo que os aspectos históricos não serão didatizados e servirão simplesmente para elaboração do cenário. Visando melhorar a qualidade dos jogos educativos Clua, Junior & Nabais [CLU 02] sugerem um roteiro que deve ser observado durante o desenvolvimento de jogos didáticos: 1. Os desafios não devem estar relacionados com o assunto educativo; 2. Os aspectos educativos devem ser apresentados através do contexto, da ambientação ou de conhecimentos prévios do usuário; 3. Ambientes imersivos e personagens bem elaborados. Lembrando que imersão implica em envolver o jogador no ambiente [BAT 02]. Além disso, a imersão não é só gráficos, é engajamento [JEN 02]; 4. A ênfase no lúdico. As características pedagógicas devem se adaptar ao roteiro; 5. Roteiros ricos, bem elaborados e com alto grau de interação. Portanto nesta nova concepção considera-se o desenvolvimento de jogos didáticos da mesma forma que desenvolve-se jogos de entretenimento, desta forma motivando aprendizes com jogos divertidos e prazerosos. 2. Etapas do processo de elaboração de um jogo Tendo em vista a conveniência de se utilizar ferramentas padrões do desenvolvimento de games comerciais para a produção de jogos com objetivos didáticos explícitos, será apresentado a seguir como consiste este processo, bem como as principais ferramentas utilizadas para tal fim na indústria já consagrada. A seguir serão descritas as principais etapas no processo de desenvolvimento de um jogo de entretenimento tradicional: 2.1 Design Bible Assim como não faz sentido criar um filme sem antes ter um roteiro bem elaborado, também é impossível desenvolver um jogo sem antes ter um documento com todas as suas especificações. Costuma chamar-se a este documento de Design Bible, que pode ser definido como uma espécie de manual de instruções para os futuros desenvolvedores do jogo [ROL 04]. O processo de desenvolvimento não pode começar sem que esta especificação não esteja pronta. O Design Bible deve conter os seguintes elementos: - Roteiro: Assemelham-se a roteiros de filmes. Este é um item fundamental para o processo de criação e será o elemento crucial para demonstrar para os investidores as potencialidades do produto. É neste item que o jogo deve mostrar seu diferencial em relação a outros. Chamam-se aos roteiros de jogos de roteiros interativos, pois diferentemente que os roteiros de filmes, devem ter espaço para interferência do usuário no desencadeamento da história. Ao elaborar o roteiro deve-se ter em conta qual o estilo do jogo que se está desenvolvendo, por exemplo, RPG, aventura, entre outros. - Game Design: Entende-se por game design a conceituação artística do jogo. Hoje em dia, dada a complexidade das histórias e dos cenários elaborados, é importante que esta parte do documento seja escrita por um artista. Dentro deste item deverão ser expostos quais as principais características dos cenários, esboços de personagens, descrição das texturas fundamentais, mapas e descrições das fases (também denominado de level design). O livro [CRA 04] descreve detalhadamente como é a elaboração deste tópico. Veja Figura 4. - Game Play: Nesta parte do documento deve descrever-se como será a jogabilidade. Por jogabilidade entendem-se as regras do jogo e o balanceamento das regras (game balancing). Nesta descrição deve ficar claro que o jogo é divertido e irá proporcionar desafios interessantes. Esta parte do documento é muito importante para guiar os programadores para grande parte da programação, sobretudo na etapa de scripting (programação). Figura 4 – Exemplo da conceituação artística de um personagem e de um cenário. (extraído do jogo METALmorphosis ©) - Interface: Pode-se dividir a interface em ingame e outgame. A primeira consiste na instrumentação disponível durante o jogo e é responsável pela entrada de dados do jogador para a aplicação. A interface outgame é a forma de apresentar a introdução do jogo, sua configuração, instruções, etc. Costuma-se dizer que a melhor interface é aquela que passa desapercebida para o jogador, permitindo que o mesmo possa focar-se no desenrolar da história e das ações. Veja Figura 5. Figura 5 – Exemplo do design de uma interface ingame (extraído do jogo METALmorphosis ©). Terminada a etapa de conceituação, o desenvolvimento de um game divide-se em dois caminhos distintos: o de criação artística e o de programação, havendo entretanto uma grande interseção entre ambas. A criação artística pode ser compreendida na elaboração dos resources do jogo, ou seja, os elementos que serão usados para sua montagem: modelos 3D, texturas, terrenos, sons, trilha sonora, entre outros. Ao término desta sub-seção é importante destacar que no caso do desenvolvimento de um jogo didático a preocupação com aspectos de ensinoaprendizagem e com a definição do conteúdo inicia-se no Design Bible. É fundamental nesta etapa criar a equipe interdisciplinar formada por profissionais de informática, pedagogos, artistas e educadores especialistas no domínio do jogo. O processo de desenvolvimento deve seguir os mesmos passos descritos anteriormente, da mesma forma que um jogo de entretenimento é criado. 2.1 Modelagem 3D A equipe de modelagem 3D será responsável por criar os objetos geométricos das fases. A geometria de um jogo pode ser dividida em dois tipos: modelagem estrutural e modelagem de elementos dinâmicos. Esta diferenciação existe pelo fato de que os modelos estruturais, por não sofrerem alteração de posição, sofrerão um préprocessamento, de maneira a otimizar o processo de renderização, como será apresentado na seção 3. A modelagem estrutural consistirá basicamente na criação do cenário em si, o terreno e alguns outros elementos estáticos. Para esta etapa os principais softwares utilizados são o Discreet 3DS MAX [DIS 04], MAYA [ALI 04], Avid Softimage [SOF 04] (veja Figura 6) e Ligthwave [NEW 04]. Outro modelador 3D que pode ser utilizado, apesar de sua complexidade de uso é o Blender 3D [BLE 04]. Alguns recursos que estes programas oferecem, tornando-os ótimos para este processo são: - Ferramentas de modelagem baseadas em polígonos: Toda a modelagem deverá ser feita por polígonos. Assim sendo, é importante que haja uma fácil e intuitiva forma de manipulá-los. - Ferramentas intuitivas para texturização: Grande parte da riqueza de uma modelagem está na boa aplicação de texturas sobre os modelos. É comum, por exemplo, ter que aplicar um mapeamento de texturas para polígonos individuais; - Boas ferramentas para otimização de polígonos: É comum, durante o processo de modelagem, criar objetos com mais polígonos do que se pode suportar no jogo. Assim sendo, é importante que um pacote de modelagem forneça recursos para reduzir o número de polígonos de objetos, minimizando a sua perda de qualidade. - Boa interface de visualização: Para o artista é importante que na medida que um objeto seja construído, possa-se acompanhar, em tempo real, como o mesmo será visto no jogo. Figura 6 – As interfaces “what you see is what you play” permite que o artista possa ver em tempo real, na interface do software de modelagem, como seus modelos ficarão na renderização final do jogo. Imagens extraídas do Avid Softimage XSI ®. Neste processo, uma virtude importante que os artistas devem ter é a de serem capazes de modelar objetos com o menor número de polígonos possível (Figura 7). Otimizando-se a modelagem, será possível que o cenário possa ser mais extenso e que mais objetos possam ser inseridos no mesmo. Figura 7 – Um mesmo modelo está representado em duas resoluções diferentes de polígonos. Perceba-se que o resultado final é bastante semelhante, embora o avião da direita possua 15 vezes mais polígonos que o da esquerda. 2.2 Terrenos Os terrenos também são conhecidos como heigh maps e consistem em imagens com diversas tonalidades de cinzas. Os pixels escuros corresponderão a áreas baixas do terreno e os claros a partes mais altas. Assim sendo, elaborar um terreno resume-se a criar um mapa de altura adequado para o cenário. Este mapa de altura pode ser pintado manualmente, usando algum software de edição de imagem. Entretanto, para relevos mais complexos existem inúmeras ferramentas capazes de gerar mapas mais detalhados, bem como editá-los de forma mais intuitiva. Além de gerar os mapas de altura, estes softwares são capazes de gerar suas texturas correspondentes. Algumas das ferramentas mais utilizadas são o Corel Bryce [COR 04], VueD’Espirit [EON 04], Terragen [TER 04] e Mojo Word Generator [PAN 04]. Veja Figura 8. Corel Bryce Terragen VueD’Espirit Mojo Word Generator Figura 8 – Softwares utilizados para criar height maps e suas correspondentes texturas. Posteriormente, estes mapas de altura serão projetados sobre malhas regulares de polígonos (Figura 9). Dependendo do engine, isto será feito na ferramenta de modelagem 3D ou no editor específico do engine. Figura 9 – Um mapa de altura é aplicado sobre uma malha de polígonos regulares, formando um terreno 3D. Este processo pode ser efetuado no engine ou no software de modelagem 3D. 2.3 Engines É importante se destacar algumas definições e diferenciações entre as inúmeras ferramentas existentes para o desenvolvimento de jogos computadorizados. Existem muitas contradições e definições errôneas dos termos utilizados na literatura da área, tais como biblioteca (library), toolkit, game engine e framework. Uma biblioteca é um conjunto de rotinas gravadas em um arquivo onde cada uma destas possui um nome e uma funcionalidade específica. Para o programador basta referenciar tais funções, sem precisar que estas sejam reescritas todas as vezes que forem necessárias. Estas bibliotecas podem comportar uma série de funcionalidades específicas para um domínio, por exemplo, jogos computadorizados. Tais rotinas não são orientadas a atividades, mas a funcionalidades. No caso de uma biblioteca para jogos esta pode oferecer funcionalidades para manipulação de imagens, arquivos, reprodução sonora, criação de imagens e/ou algoritmos de Inteligência Artificial. Como exemplos de biblioteca é possível citar a OpenGL e a SDL. Gamma, Helm, Johnson et al [GAM 95] definem os toolkits como um conjunto de classes relacionadas e reutilizáveis, projetadas para fornecer uma funcionalidade útil e de propósito geral, como por exemplo, um conjunto de classes para listas, pilhas e filas. Para estes autores os toolkits são equivalentes em orientação a objetos às bibliotecas de sub-rotinas. Destacando que os toolkits não impõem um projeto específico à aplicação que está sendo desenvolvida. Ou seja, simplesmente provêm recursos que poderão ser reutilizados em inúmeras aplicações. O DirectX pode ser considerado um toolkit. Quanto o engine, primeiramente é importante efetuar uma analogia. Considerase um motor de um carro. Este é responsável por fazer o automóvel movimentar-se. Ao dar a ignição do veículo, o motorista coloca o motor em funcionamento e começa a mover-se com ele, sem precisar saber como funciona todo o processo mecânico. A transferência do movimento dos eixos para as rodas, a sincronização das explosões dos pistões, a injeção de combustível na câmara de combustão, tudo fica a cargo do motor. Dentro do conceito de Engenharia de Software, é a parte do projeto que executa certas funcionalidades para um programa, por exemplo, um motor de busca na web semelhante ao Google. Conforme FOLDOC [FOL 04], dicionário online de computação mantido pelo Departamento de Computação do Imperial College London, um engine é um componente de software capaz de executar um processamento que resulta em uma determinada saída, precisando obrigatoriamente de um front end que irá fornecer as informações de entrada e/ou exibir as informações de saída. No caso do Google, este simplesmente recebe uma coleção de palavras chaves, efetua um algoritmo de busca e apresenta para o usuário uma listagem de sites que contêm as palavras procuradas. Neste caso o front end é o navegador Web que coleta as palavras e apresenta os resultados. No servidor encontra-se um componente de software capaz de efetuar a busca. Tal componente denomina-se motor (engine). Dentro da área de jogos, um engine se encarregará por comunicar-se com o hardware gráfico, irá mandar os modelos para serem renderizados, cuidará da entrada de dados do jogador, tratará de todos os cálculos matemáticos e outras operações que o desenvolvedor de jogos normalmente não deseja fazer ou não tem tempo para se preocupar. Existem inúmeras definições para um engine. Em todos os casos, estas definições convergem em algumas características: - Permitir que o desenvolvedor possa criar diversos jogos diferentes, usando um mesmo engine. É comum, entretanto, que os engines sejam catalogados de acordo com os tipos de jogos para os quais eles foram concebidos [EBE 00]. - Poder reaproveitar com facilidade o código desenvolvido em algum momento. - Abstrair a manipulação de API’s (embora, em muitos casos, o desenvolvedor irá usar as próprias API’s dentro do ambiente do engine, para implementar funcionalidades específicas). - Possibilitar uma fácil integração entre código e modelagem 3D. Para esta finalidade é comum que os engines apresentem editores de cenas. Para Lewis & Jacobson [LEW 02], os engines referem-se a uma coleção de módulos de simulação que não especifica diretamente o comportamento ou o ambiente do jogo. Incluem módulos para capturar eventos de entrada, gerar saídas (renderizar gráficos 3D, desenhar gráficos 2D e reproduzir sons) e a dinâmica dos mundos dos jogos. Para Domingues [DOM 03], os engines são fundamentais no desenvolvimento de um jogo, pois são responsáveis pelo controle e processamento básico de todas as mídias envolvidas. Além disso, abstrai a complexidade do desenvolvimento de jogos, pois os desenvolvedores não precisam concentrar-se na codificação, somente na lógica e nos aspectos multimídia. Para Madeira [MAD 01], um motor de jogo é “o seu sistema de controle, o mecanismo que controla a reação do jogo em função das ações dos usuários”. Devido sua arquitetura modular permite que diversos jogos sejam desenvolvidos reaproveitando estes módulos. Um engine pode ter sido projetado usando um conjunto de bibliotecas e/ou toolkits, esta tecnologia oferece uma mecânica de execução completa. No caso dos jogos torna-se difícil de personalizá-lo para suportar diferentes gêneros, em geral, permitem construir um único tipo de jogo, devido sua alta especialização. Um exemplo de engine é o motor do Quake da id Software. A partir deste motor é possível projetar diferentes jogos de ação em primeira pessoa. Desenvolver um engine é uma área complexa e repleta de desafios. Entretanto, o objetivo deste documento não é ensinar a implementar um engine, mas sim entendê-los e saber utilizá-los. Normalmente, um engine é composto por diversas ferramentas, cada uma responsável por alguma etapa do processo de criação de um jogo. Os componentes mais comuns [ZER 04] de se encontrar em engines são os seguintes: - Engine Core: Consiste no “coração do engine”. Este será um programa que executará a aplicação do jogo, manipulará a fase e os objetos, renderizará as cenas, entre outras operações. Fazendo-se uma analogia rudimentar, pode-se dizer que o engine core é o sistema operacional do jogo. - Engine SDK: É o código fonte do engine core. Através dele pode-se alterar o funcionamento do engine. Normalmente este componente é o mais protegido e para conseguí-lo, no caso de engines comerciais, será necessário comprar o pacote mais caro que a empresa oferece. É possível criar jogos sem o SDK de um engine, entretanto, os tipos de aplicações possíveis de serem desenvolvidos serão muito mais restritos. - Level Editors: Através deste componente será possível unificar modelagens feitas em diversos programas, associá-los à programação e inserir códigos em scripts. Em muitos casos, dentro destes editores é possível também criar modelos 3D. Veja Figura 10. Figura 10 – Exemplo de level editors pertencentes a diversos engines comerciais. - Conversores / Exportadores: Os resources serão normalmente feitos em diversos softwares comerciais, como se apresentou anteriormente. Mais ainda: numa equipe de desenvolvimento grande cada artista poderá criar os elementos no programa de sua preferência. Assim sendo, os engines deverão fornecer instrumentos para importar estes modelos para o formato específico do engine. Estes conversores poderão ser plugins instalados nos programas de modelagem 3D ou podem estar incluídos no level editor. - Builders: Como será discutido mais adiante, de forma a otimizar o processamento do jogo, serão feitos alguns pré-processamentos sobre os objetos (tais como o BSP, lightmaps, portais, PVS). Desta maneira, um engine fornecerá as ferramentas para realizar estes pré-processamentos. É comum que estejam dentro do level editor. - Linguagens Script: Grande parte do desenvolvimento da lógica do jogo e da Inteligência Artificial de elementos dinâmicos será implementada sobre scripts e não diretamente sobre o engine core. Assim, cada engine possuirá sua linguagem de programação script, sendo comum usar linguagens comuns, tais como JavaScript, Python e LUA. Pode-se dizer que um engine é composto por diversos “sub-engines”, sendo cada um responsável por tratar um tipo de problema envolvido em jogos. Os principais componentes são: 2.3.1 Engine de renderização (ou engine 3D) O engine 3D será responsável basicamente pelo pipeline gráfico, que é o processo de gerar imagens 2D partindo de modelos 3D (Figura 11). Este processo é dividido em diversas etapas [LAM 03], sendo as mais importantes: - Transformações 3D: Nesta etapa aplica-se o movimento aos modelos 3D. Este movimento consiste no seguinte: a cada passo do jogo uma matriz irá acumulando o resultado de todos os movimentos que o objeto sofreu ao longo de seu histórico. Antes de visualizar a cena, será aplicada esta matriz sobre cada vértice que o compõem, posicionando-o no local que lhe corresponde naquele instante; - Projeção 3D ◊ 2D: Os vértices que compõem o objeto são coordenadas 3D, porém a imagem do modelo deverá ser desenhada numa superfície bidimensional (tela do computador). Nesta etapa, os vértices do modelo serão projetados sobre o plano de projeção da câmera. É comum encontrar esta etapa do pipeline junto com a etapa de transformações 3D, pois em última instância realizar esta projeção consiste numa aplicação de matriz de transformação também. Figura 11 – Etapas mais importantes do pipeline gráfico. - Culling: Existem inúmeras formas de otimizar o processamento gráfico de um jogo. Uma destas consiste nos métodos de culling (Cull em inglês significa "refugo, escolher, selecionar de dentro de um grupo"). Assim, o que as técnicas de culling terão de fazer é saber escolher polígonos adequadamente, de forma que numa determinada situação, estejam presentes apenas aqueles que realmente importam para a visualização a partir do ponto em que a câmera se encontra. Pode-se pensar também da seguinte forma: quais dos polígonos de uma cena deverão ser enviados para o pipeline da placa gráfica? Obviamente não se deseja enviar algum que não terá nenhuma influência na visualização, mas até que ponto é simples realizar esta escolha, de forma rápida. Existem muitos algoritmos que farão este tipo de escolha. Em muitos casos a eficiência deste procedimento estará atrelada ao tipo de agrupamento e ordem de polígonos (um terreno possui uma distribuição de polígonos completamente diferente de que um personagem ou do que um labirinto). O culling pode ser feito em qualquer estágio do pipeline gráfico. Entretanto, pode-se pensar que quanto antes se conseguir livrar dos polígonos que não interessam, melhor, pois coloquialmente pode-se dizer que "ninguém gosta de andar com um elefante branco nas costas de graça". Vale a pena ressaltar que um método de culling não anula outro: podem-se ter os efeitos somados em muitos casos. - Clipping: Ao projetar polígonos sobre o plano de projeção da câmera, alguns polígonos cairão totalmente dentro da área da tela e outros cairão parcialmente dentro, ou seja, apenas uma parte do polígono estará na tela de projeção. Para estes polígonos é necessário realizar o clipping (recorte), que consiste em criar novas arestas e vértices. - Rasterização (iluminação e texturização): Finalmente, a última etapa do processo de renderização consiste em preencher os polígonos adequadamente, aplicando o material com o qual estão definidos. Inicialmente poderia-se pensar em fazer este processo através de um cálculo de iluminação para cada um dos pixels (per pixel) do interior de um polígono. Entretanto isto seria demasiadamente caro em termos computacionais. Para viabilizar este processo realiza-se uma interpolação (rasterização) entre a cor de cada um dos vértices que compõem o polígono. Desta forma, o cálculo de iluminação é feito apenas para cada vértice (per vertex) visível da malha. Esta rasterização também poderia demandar bastante tempo de processamento, pois apesar de ser algo simples de ser feito, existem pixels numa tela. Entretanto, este processo é realizado por um hardware específico para esta tarefa, que é a placa gráfica, ou GPU – Graphic Processor Unit. Existe uma série de efeitos de iluminação (blur, bump-mapping, especularidade) que não podem ser aplicados realizando-se uma rasterização como foi explicada anteriormente. Isto porque para estes efeitos é necessário realizar um cálculo de iluminação per pixel e não per vertex. Para solucionar este tipo de problema, as placas gráficas mais modernas possuem a capacidade de suportar pixel shaders (Figura 12), que são pequenos programas que são executados para cada pixel que será plotado na tela. Para maiores informações sobre esta tecnologia, ver [STL 04]. Figura 12 – Imagens geradas em tempo real utilizando pixel shaders. Apesar de ser enfatizado a engine 3D, pois atualmente a grande maioria dos jogos de entretenimento utilizam esta tecnologia e o maior interesse dos jovens é por este tipo de jogo é importante destacar que podem ser desenvolvidos jogos com gráficos bidimensionais (2D). A escolha por um determinado modo de visualização (3D/2D) dependerá do estilo de jogo que está sendo desenvolvido e a plataforma de execução. Um jogo de ação como o Counter Strike não poderia utilizar um visualizador 2D pelo fato de sua jogabilidade. Entretanto muitos jogos criados para telefones celulares, que comumente possuem poucos recursos de hardware, estão adotando a tecnologia 2D. Por tratar-se de jogos desenvolvidos para o âmbito escolar deve-se considerar que muitas escolas, principalmente as instituições públicas, possuem máquinas com configurações antigas e executando GNU/Linux. Logo, jogos 3D que utilizam tecnologias muito avançadas poderão não executar sob estes hardwares antigos. Certamente que tais limitações é que tornam mais desafiador a criação de jogos computadorizados capazes de executarem sob este contexto, de forma atrativa e usando tecnologias semelhantes as usadas em jogos de entretenimento. 2.3.2 Engine de Física Grande parte da interatividade de um jogo se deve ao funcionamento das leis da física (ou ao menos a uma parte delas...) sobre o mundo virtual criado. Assim, ao andar sobre um labirinto e bater numa parede o jogador não pode atravessá-la; ao dar um pulo, o jogador deve colidir com o chão e não continuar caindo para sempre; ao acelerar um carro, sua velocidade deverá ir crescendo gradualmente e não abruptamente. Os cálculos de física básicos num jogo são: - Colisão: Objetos 3D devem colidir com outros. Esta colisão não é tão trivial de ser realizada para um mundo virtual como o é para o mundo real, já que em última instância corresponderia em verificar se cada um dos polígonos de um determinado objeto possui interseção com cada um dos polígonos do restante da cena. Existem inúmeras formas de otimizar estes cálculos (ver [EBE 03]), sendo a mais comum a técnica de bounding-boxes, que consiste em englobar cada objeto por uma caixa e calcular a colisão para a caixa e não para a malha completa do objeto. - Resultante de forças: Os objetos se movimentam num mundo real devido a aplicação de diversas forças sobre o mesmo. Num ambiente virtual será necessário simular a aplicação de forças de diversas naturezas sobre os objetos, calculando a resultante a cada instante para verificar como será o seu movimento. Para mais detalhes, ver [BER 03]. 2.3.3 Engine de Som Este componente do engine permitirá o controle sobre os arquivos de som da biblioteca de recursos do jogo. Normalmente utilizará alguma API adequada para manipular este tipo de arquivos, tal como o DirectSound ou o OpenAL. Além de permitir abrir e tocar estes arquivos, os engines de som permitirão um controle de som posicional, permitindo que objetos da cena emitam sons e estes se comportem conforme o posicionamento do objeto na cena. 2.3.4 Engine de Inteligência Artificial Entende-se por Inteligência Artificial para jogos, os programas que descreverão o comportamento de entidades não controladas pelo jogador, tipicamente os NPC (NonPlayer Characters). Tipicamente o comportamento inteligente destas entidades é desenvolvido através de máquinas de estados. Os algoritmos de máquinas de estados procuram resolver problemas formalizando diversos possíveis estados em que um elemento pode se encontrar (no caso de uma televisão, por exemplo, poderia-se ter estes estados: Desligada, Acesa e Stand-by). A transição de um estado para outro estará atrelado a algum evento que dispare esta mudança (no exemplo anterior, ao apertar a tecla <on> a TV muda do estado de desligada para Stand-by). Desta maneira, a inteligência de um personagem de um jogo pode ser descrita por diversos estados em que o mesmo pode se encontrar (no caso de um jogo de ação, poderíamos descrever estes estados como espera, perseguição, ataque, fuga, morte, por exemplo). Este personagem deverá fazer um monitoramento constante sobre acontecimentos que possam disparar a mudança de um estado para outro. Usando o exemplo de um jogo de ação, suponha-se que o fato do jogador aproximar-se mais do que 30m do NPC faça com que o mesmo passe do estado de espera para o estado de perseguição. Veja Figura 13. Figura 13 – Exemplo de uma máquina de estados típica para um jogo de ação. Conforme foi apresentado no início deste trabalho, os jovens preferem jogos computadorizados que ofereçam grandes desafios. Um roteiro bem elaborado e uma excelente modelagem 3D serão sacrificados caso não sejam desenvolvidos NPCs com comportamentos sofisticados. Uma das principais causas de desinteresse por um jogo é o fato dos oponentes se comportarem de forma incoerente e/ou muito simplificada eliminando o desafio do jogo. Apesar da grande maioria dos jogos utilizar scripts e máquinas de estados para configurar o comportamento inteligente dos NPCs, outras técnicas de Inteligência Artificial podem ser utilizadas, tais como Redes Neurais Artificiais, Redes Bayesianas, Algoritmos Genéticos e Lógica Difusa. Adotar técnicas de Aprendizado de Máquinas podem ser efetivamente consumidoras de maior poder de processamento do dispositivo, entretanto podem ser utilizadas para modelar comportamento adaptativo das entidades computacionais. Um SDK bastante conhecido trata-se do DirectIA (Direct Intelligent Adaptation) [DIR 04], que oferece um conjunto de ferramentas para projetar e implementar as necessidades de inteligência artificial para qualquer aplicação, inclusive jogos. Usando o DirectIA é possível criar agentes inteligentes com a capacidade de adaptação. É possível utilizar um sistema de regras de predição, máquinas de estado e máquinas difusas para efetuar o processo de inferência destes agentes. Outro SDK de Inteligência Artificial trata-se do Renderware A.I [REN 04] que oferece uma série de comportamentos pré-estabelecidos que podem ser usados na definição de scripts usando uma linguagem like C ou LUA. 2.4 Engines – Qual usar? Existe uma grande quantidade de engines. Em [DEV 04] há uma excelente lista de referências sobre os principais e mais completos. Como escolher o engine adequado para desenvolver um jogo? Existem diversos fatores que se devem ser considerados: - Orçamento disponível: Existem engines que custam U$ 100,00 e outros que ultrapassam U$ 1 milhão. Os mais dispendiosos, além de possuírem todo tipo de recurso que um engine é capaz de ter, normalmente são programas que possuem uma excelente equipe de apoio, que irá acompanhar a empresa desenvolvedora do início ao fim da sua produção. Este acompanhamento consistirá em desenvolver plugins específicos, adaptar funcionalidades do engine para as necessidades específicas e até dar treinamento para os programadores. - Tipo de jogo a ser desenvolvido: Apesar de existirem engines que são capazes de construir tipos bastante diferentes de jogos, a maioria terá uma série de características que favorecem para o desenvolvimento de um tipo específico de jogo, por exemplo, engine para criação de RPGs, jogos de ação, corrida, entre outros. - Milestones: O tempo que se possui para produzir um jogo influencia muito na escolha do engine. Alguns engines permitem que um jogo seja feito em poucos dias, mas implicará numa série de soluções padrões, que o tornam semelhante a muitos outros jogos produzidos com aquele mesmo engine. - Plataforma: Um jogo pode ser desenvolvido para diversas plataformas, tais como Windows, GNU/Linux, XBOX, GameCube, Playstation, MacOS, PalmOS, WinCE, PalmOS, SymbianOS entre outros. É fundamental que o engine escolhido suporte a plataforma para a qual se está desenvolvendo. Os engines mais caros normalmente são capazes de produzir jogos para diversas plataformas. - Documentação oferecida: O desenvolvedor de jogos deverá, antes de adotar um engine, verificar como é a documentação do mesmo. Sem uma documentação eficiente, dificilmente o programador será capaz de utilizar adequadamente os recursos oferecidos pelo engine. - Ferramentas disponíveis: Cada engine possuirá conversores e exportadores, que permitirão que sejam utilizados outros programas para programar seu SDK ou para modelar os objetos 3D. É fundamental que o desenvolvedor analise quais as ferramentas com as quais se pode produzir os para o engine em questão (se a equipe de modeladores conhece apenas o MAYA, é conveniente que o engine a ser adotado suporte o MAYA para os modelos 3D). 2.5 Amphibian - Jogos Multiplataformas Livres O Amphibian [BIT 04] trata-se de um framework distribuído livremente sob a licença GNU GPL que permite o desenvolvimento de engines multiplataformas. A linguagem de programação escolhida para seu desenvolvimento é Java. Entretanto as APIs desta linguagem possuem algumas diferenciações tornando alguns códigos não totalmente portáveis. O Amphibian não trata-se de um engine, mas de um framework que descreve uma infra-estrutura genérica e abstrata, comum em diferentes motores. Desta forma necessitou-se projetar uma camada de abstração que tornasse o Amphibian independente de qualquer máquina virtual Java. A arquitetura de camadas do Amphibian pode ser vista na Figura 14. AMP H I B I AN E x t en s ões S AL JVM S i s t em a Oper aci on al Figura 14: Arquitetura de Execução Completa do Amphibian. Esta arquitetura possui uma camada referente ao sistema operacional. Sob esta, executa-se uma JVM que fornece uma abstração referente à plataforma de execução. Sob esta camada está a SAL – System Abstraction Layer. Consiste exatamente da camada de abstração referente às máquinas virtuais. Considerou-se esta camada externa ao Amphibian pelo fato de fornecer componentes básicos comuns para diferentes aplicações até mesmo externas ao contexto dos jogos computadorizados. Ou seja, diferentes aplicações podem utilizar esta camada, desta forma tornando-se independentes de máquinas virtuais. As extensões da SAL podem utilizar uma máquina virtual específica ou utilizar métodos nativos e executarem diretamente sob um sistema operacional, desta forma perdendo a portabilidade, mas sem comprometer a compatibilidade com as camadas superiores A última camada trata-se das extensões criadas basicamente a partir das abstrações de cada uma das camadas básicas e especifica a relação destas extensões com as camadas da arquitetura de execução. Fayad, Schimidt & Johnson [FAY 99] afirmam que os frameworks são projetos de software com pontos de personalização (hot spots). Quando uma aplicação é criada a partir de um framework adota-se um fluxo de controle padrão e as especificidades da aplicação serão atendidas através da construção de extensões para serem utilizadas nestes pontos de personalização. Portanto, existem extensões criadas a partir dos hot spots do Amphibian e da SAL. Tais extensões podem usar componentes oferecidos pela camada JVM e pelo sistema operacional, entretanto à medida que uma extensão utiliza um componente das camadas mais inferiores perde-se sua portabilidade. Ou seja, se for criada uma extensão para o Amphibian usando somente tal camada, esta extensão será reutilizável para qualquer SAL, JVM e sistema operacional. Entretanto se tal extensão utilizar um componente do sistema operacional o uso desta ficará restrito a esta plataforma. Mesmo considerando a possibilidade de perder portabilidade adotar tal arquitetura permite que a estrutura do framework em geral seja mais flexível, desta forma melhor atendendo os requisitos do projeto de um jogo. Assim é possível utilizar bibliotecas externas e/ou dependentes de sistema operacional inclusive tecnologias bastante difundidas no desenvolvimento de jogos, tais como OpenGL, SDL e DirectX. Em resumo o desenvolvedor de um motor de jogo pode optar pelo nível de portabilidade de suas extensões. Destaca-se que o Amphibian foi desenvolvido para permitir o avanço técnicocientífico, principalmente no cenário brasileiro, do desenvolvimento de jogos computadorizados, seja no âmbito acadêmico ou no âmbito comercial beneficiando principalmente a indústria na produção de jogos para computadores pessoais e dispositivos móveis. Espera-se construir motores de jogos para serem utilizados na área de Informática na Educação. Acredita-se que pelo fato de desenvolver um framework para construir motores de jogos multiplataforma e que seja livremente distribuído, os jogos computadorizados passem a ser mais utilizados nas escolas, principalmente nas instituições públicas que utilizam outros sistemas operacionais diferentes da plataforma Microsoft Windows. Os principais requisitos que o Amphibian pretende atender estão listados abaixo: - Um motor de jogo em geral, deve ser executável na plataforma de computadores pessoais (Windows, Linux e MacOS), móveis (PalmOS e Windows CE), celulares (Symbian OS) e motores integrados com tecnologia Web (servlets e applets); - Além destas plataformas e sistemas citados anteriormente o Amphibian deve ser extensível, ou seja, ser adaptável para uma nova plataforma que não esteja prevista no item anterior; - Independente do dispositivo de visualização, ou seja, uma aplicação pode ser visualizada com gráficos bidimensionais (vista superior ou isométrica) ou gráficos tridimensionais em qualquer dispositivo, seja este um monitor ou um display de um handheld ou telefone celular; - Independente do mecanismo de persistência. Neste contexto a persistência trata da configuração do motor de jogo, da descrição do jogo e dos objetos que são utilizados. Portanto as questões referentes a salvar e recuperar uma sessão de jogo estão incluídas neste tópico; - A persistência dos dados pode ocorrer no módulo cliente ou em servidor remoto. Independente do local de armazenamento, a forma de persistência dos objetos deve ser flexível. Isto implica em persistir os dados usando um gerenciador de banco de dados, XML, arquivos de textos, formatos proprietários, PDB (Palm Database) ou um outro formato de armazenamento qualquer; - Oferecer alta modularidade. Deve permitir trocar os componentes do motor afetando o mínimo possível outros componentes, principalmente os que se referem aos componentes da lógica da aplicação; - Distribuído sob os termos da licença LGPL; - Uma solução com baixo custo (valor monetário) para ser ofertada para comunidade. O processo de criação de um jogo computadorizado utilizando o Amphibian pode ser descrito em seis passos principais: 1. Criação de um domínio de jogo. Consiste na implementação das classes referente a lógica do jogo. Por exemplo, se estivéssemos desenvolvendo um jogo de xadrez, as classes de domínio tratariam das regras e dos componentes (peças) deste jogo. Para criação destas classes são utilizados somente os pacotes do Amphibian e da SAL para garantir a portabilidade; 2. Desenvolvimento de classes de adaptação para o Amphibian. Possivelmente algumas classes de ligação precisam ser desenvolvidas, por exemplo, tratamento de eventos produzidos pelo teclado ou pelo mouse. Quando estes eventos ocorrem, estes deverão ser capturados pelo Amphibian e posteriormente irão interelacionar-se com objetos referentes ao domínio de jogo; 3. Opcionalmente poderão ser criados alguns componentes específicos, por exemplo, uma nova forma de visualização. Tais customizações tratam-se de plugins; 4. Configurações da especificação do motor para cada plataforma utilizando o como padrão o formato XML. Cada componente do engine que será usado é definido em um arquivo XML. No momento de inicialização do jogo, tais componentes são criados e configura-se o motor para executar determinado jogo. Percebe-se que o engine no Amphibian não é estático, ou seja, com componentes definidos em tempo de compilação. O engine criado com o Amphibian utiliza-se de dynamic binding para criar seus componentes em tempo de execução desta forma aumentando a flexibilidade do framework; 5. Definição dos descritivos dos jogos que poderão ser criados para executarem sob este novo motor. Cada jogo que será interpretado pelo motor também é definido usando um arquivo XML; 6. Criação dos recursos audiovisuais. Cada título para cada plataforma requer a criação das imagens, sprites, sons, scripts, entre outros recursos que serão utilizados no jogo. Os quatro primeiros passos permitem desenvolver um motor de jogo. Diversos títulos de jogos podem ser desenvolvidos para este motor repetindo os dois últimos passos da seqüência, ou seja, definindo diferentes descritivos e recursos audiovisuais. Nas Figuras 15 e 16 são apresentadas algumas telas dos testes iniciais que foram efetuados usando o Amphibian. Tais aplicações não são extremamente arrojadas. Entretanto estas não ilustram a sofisticação dos jogos computadorizados que foram desenvolvidos, mas sim as potencialidades da arquitetura do framework que dado um conjunto de componentes com alta abstração e um mesmo arquivo de especificação XML é possível configurar um jogo para executar em diferentes dispositivos. Figura 15: Screenshots do Quadrados Coloridos em Multiplataformas (Tela Janela). Figura 16: Screenshots do Snake Executando em Multiplataformas. Um dos pontos que precisa ser destacado no Amphibian, que muitas vezes é incompreendido pela comunidade, é a facilidade de reusar componentes de software em diferentes dispositivos com diferentes sistemas operacionais simplesmente definindo um arquivo formatado no padrão XML. Pelo fato do Amphibian ser um projeto novo, nenhum jogo arrojado ainda foi desenvolvido. O que pretende ser destacado neste trabalho que o Amphibian trata-se de uma tecnologia livre e gratuita que permite a customização de diferentes motores de jogos executáveis em diferentes plataformas. Certamente tal característica torna-se significativa quando considera-se o âmbito escolar, que conforme foi dito anteriormente possui algumas limitações quanto à infraestrutura tecnológica. E se considerarmos o contexto de muitas instituições de ensino brasileiras, estas possuem como sistema operacional padrão de seus laboratórios o sistema operacional GNU/Linux, como é o caso do estado do Rio Grande do Sul. Desta forma os jogos computadorizados devem ser compatíveis com diferentes plataformas. Apesar dos visualizadores 3D não estarem implementados, tal funcionalidade poderá ser implementada para o Amphibian, pois o framework generaliza os elementos de visualização permitindo a personalização. Esta extensão poderá ser feita através da criação de um plugin acessando, por exemplo, a biblioteca OpenGL e associando-se este plugin ao engine no momento de sua configuração (definindo isto no arquivo XML). Além das plataformas citadas anteriormente, atualmente o Amphibian está sendo portado para o J2ME adotando o MIDP 2.0 por Ricardo de Moura Fonseca no Centro Federal de Educação Tecnológica do Paraná (CEFET), na cidade de Ponta Grossa. Este trabalho encontra-se em fase de finalização. A Figura 17 ilustra os primeiros resultados obtidos. Figura 17: Screenshot dos Quadrados Coloridos executando sob J2ME/MIDP 2.0 Além disso, está sendo implementado um plugin para o Amphibian que permite o uso da linguagem LUA para definição de eventos, facilitando o uso do framework por programadores inexperientes ou que desconheçam a linguagem Java. 3. O Futuro Próximo Cada vez mais os jogos tem ganhado a característica de serem on-line, ou seja, de permitir que vários usuários participem de um mesmo jogo, simultaneamente. Nestes tipos de jogos constroem-se o que se denomina de mundos persistentes. Entende-se por mundos persistentes mundos virtuais em que há uma certa independência de um jogador específico para que as coisas aconteçam. Além disso, possuem a característica de evoluírem durante o transcorrer do tempo. É comum que, utilizando a tecnologia de jogos massivos – nome dado aos jogos que permitem milhares de jogadores ao mesmo tempo - se desenvolvam jogos no estilo de RPG (Star Wars Galaxy, Lineage II, Prinston Tale, Erinia, Conqueronline, Planshift, entre outros). Este estilo de jogos tem grande capacidade de transmitir conteúdo para os seus jogadores. Neste caso, pode ser transmitido um conhecimento a partir de pessoas reais, que tomam parte do jogo através de avatares. Através de interações, os avatares podem transmitir informações de interesse educacional. Abordando estes Muitos pesquisadores pensam que este tipo de jogo pode funcionar como um instrumento de educação à distância. De fato, algumas escolas americanas estão implantando diversos jogos com esta finalidade, ainda em cunho experimental. É o caso da pesquisa desenvolvida por Goodson-Espy, Espy & Cifarelli [GOO 02] que consistiu do uso de um 3D MMORPG na Internet usado para ensinar matemática para alunos da escola média. Os testes feitos pela pesquisadora indicaram que os alunos tiverem grande facilidade para desenvolver os testes de avaliação pelo fato de terem interagindo com conceitos matemáticos no mundo virtual. Além destas tecnologias é importante destacar a computação móvel e a TV digital como tecnologias emergentes que certamente irão apoiar o processo de teleducação. É o conceito de umbiqüidade computacional, ou seja, a informação em todos os lugares independente de dispositivos. O m-learning já é uma modalidade de ambientes virtuais de aprendizagem móvel baseados em telefonia celular e handhelds. Certamente que os jogos computadorizados também possui seu espaço neste contexto, podendo perfeitamente serem desenvolvidos jogos com fins didáticos e lúdicos para executarem sob estas plataformas facilitando a mobilidade e a integração destes dispositivos em salas de aulas. A TV digital também pode ser considerada neste contexto como uma nova tecnologia que poderá potencializar o processo de inclusão digital. E com uso desta tecnologia cresce as potencialidades de utilização de jogos computadorizados executando diretamente sob um aparelho TV permitindo aos jogadores a mesma interação oferecida pelos computadores pessoais. Ao término do presente trabalho destaca-se a importância da difusão dos jogos computadorizados como ferramentas tecnológicas educativas independente dos seus objetivos didáticos explícitos. Certamente os nossos jovens deverão ser preparados para uma realidade bastante diferenciada do século passado, cuja informação, o conhecimento é mais étereo e está mais presente em seu cotidiano. Perceebe-se a necessidade de formar sujeitos criativos, autônomos e capazes de resolver problemas, características fundamentais para era pós-industrial. Assim não pode-se enfocar o processo de desenvolvimento de jogos com fins didáticos da mesma forma que estes eram projetados no final do século passado. O contexto cultural é diferenciado logo necessita-se de ferramentas adaptadas a esta nova contextualização. Acredita-se que no presente trabalho não esgotou-se todas as possibilidades de discussões sobre esta temática, mas no mínimo sirva como um referencial inicial para o desenvolvimento de novos jogos computadorizados, de uma nova geração, para serem usados no âmbito escolar. Referências Bibliográficas [ALI 04] Alias. Disponível em <http://www.aliaswavefront.com>. Acesso em 10 out. 2004. [AMO 01] Amory, Alan. Building an Educational Adventure Game: Theory, Design and Lessons In: Journal of Interactive Learning Research. 2001, v.12 num. 23. pp. 249-263. [AND 03] Andrade, Leila; Zavaleta, Jorge; Vaz, Francine; et al. Jogos Inteligentes são Educacionais? In: XIV Simpósio Brasileiro de Informática na Educação. Rio de Janeiro: SBC, 2003, pp. 699-707. [BAT 00] Battaiola, André L. Jogos por Computador – Histórico, Relevância Tecnológica e Mercadológica, Tendências e Técnicas de Implementação In: XIX Jornada de Atualização em Informática. Curitiba:SBC, Julho/2000, v. 2. pp. 83-122. [BAT 01] Bates, Bob. Game Design – The Art & Business of Creating Games. Roseville: Prima Tech, 2001, 300 p. [BAT 02] Battaiola, André L.; Elias, Nassim C.; Domingues, Rodrigo G. et al Desenvolvimento de um Software Educacional com Base em Conceitos de Jogos de Computador In: XIII Simpósio Brasileiro de Informática na Educação. São Leopoldo: SBC, 2002, pp. 282-290. [BER 03] Bergen, Gino Van Den. Collision Detection in Interactive 3D Environments (Morgan Kaufmann Series in Interactive 3D Technology). Morgan Kaufmann. October 2003. [BIT 03] Bittencourt, João R.; Giraffa, Lucia M. Modelando Ambientes de Aprendizagem Virtuais utilizando Role-Playing Games In: XIV Simpósio Brasileiro de Informática na Educação. Rio de Janeiro: SBC, 2003. pp. 718-727. [BIT 04] Bittencourt, João R. Um Framework para Criação de Jogos Computadorizados Multiplataforma. Porto Alegre: PPGCC/PUCRS, 2004, 199 p. (Dissertação de Mestrado) [BLE 04] Blender. Disponível em: <http;//www.blender.bl> Acesso em 10 out. 2004 [CLU 02] Clua, Esteban W. G.; Junior, Carlo L. de L.; Nabais, Rodrigo J. de M. Importância e Impacto dos Jogos Educativos na Sociedade. In: I Workshop Brasileiro de Jogos e Entretenimento Digital. Proceedings. SBC: Fortaleza, 2002, [Meio digital]. [COB 88] Coburn, Peter; Kelman, Peter; Roberts, Nancy et al. Informática na educação. Rio de Janeiro; LTC, 1988. 298 p. [COR 04] Corel Bryce. Disponível em: <http;//www.corel.com/bryce> Acesso em: 10 out. 2004. [CRA 04] Crawford, Chris. Chris Crawford on Game Design. New Riders Publishers, 2004. [DEV 04] DevMasters. Disponível em; <http://www.devmasters.net/engine> Acesso em: 10 out. 2004. [DIR 04] DirectIA. Disponível em <http://www.directia.com> Acesso em: 10 out. 2004. [DIS 04] Discreet. Disponível em: <http://www.discreet.com/products/> Acesso em: 25 jan. 2004. [DOM 03] Domingues, Rodrigo G. Projeto de um framework para auxilio no desenvolvimento de aplicações com gráficos 3D e animação. São Carlos, UFSCAR, 2003, 196 p. (Dissertação de Mestrado) [EBE 00] Eberly David H., 3D Game Engine Design : A Practical Approach to RealTime Computer Graphics. Morgan Kaufmann, September, 2000. [EBE 03] Eberly David H. Game Physics (Interactive 3d Technology Series). Morgan Kaufmann; Bk&CD-Rom edition. December, 2003. [EON 04] E-On Software. Disponível em: <http://www.e-onsoftware.com> Acesso em: 10 out. 2004. [FAY 99] Fayad, Mohamed E.; Schmidt, Douglas C.; Johnson, Ralph E. Building Application Frameworks: Object-oriented Foundations of Framework Design. New York: John Wiley & Sons, 1999, 664 p. [FOL 04] FOLDOC - Free On-line Dictionary of Computing. Disponível em: <http://wombat.doc.ic.ac.uk/foldoc/index.html>. Acesso em: 11 out. 2004. [FOR 00] Fortuna, Tânia R. Sala de aula é lugar de brincar? In: Xavier, Maria L.F.; DALLA ZEN, Maria I.H. (Org). Planejamento: Análises menos convencionais. Porto Alegre: Mediação, 2000, 147-164p. [GAM 03] Games to Teach Project. Desenvolvido pelo MIT. Disponível em: <http://cms.mit.edu/games/education/> Acesso em: 28 dez. 2003. [GAM 95] Gamma, Erich; Helm, Richar; Johnson, Ralph; et al. Design Patterns: Elements of Reusable Object-oriented Software. Boston: Addison-Wesley, 1995, 395 p. [GOO 02] Goodson-Espy, Tracy.; Espy, Samuel.; Cifarelli, Victor Warrick’s Secrets: Teaching Middle School Mathematics through an Internet based 3D Massively Multiplayer Role Playing Game In: Society for Information Technology and Teacher Education International Conference. 2002, num. 1, 1080-1084p. [GRE 88] Greenfield, Patrícia M. O Desenvolvimento do Raciocínio na Era da Eletrônica – Os Efeitos da TV, Computadores e Videogames. São Paulo: Summu, 1988. 162 p. [JEN 02] Jenson, Jennifer; Castel, Suzanne. Serious Play: Challenges of Educational Game Design In:American Research Association Annual Meeting in New Orleans. Louisiana:AERA, 2002. Disponível em: <http://edtech.connect.msu.edu/Searchaera2002/viewproposaltext.asp?propID=5573> Acesso em: 04 set. 2004. [KAF 01] Kafai, Yasmin B. The Educational Potential of Electronic Games: From Games-To-Teach to Games-To-Learn In: Playing by the Rules – The Cultural Policy Challenges of Video Games Conference. Chicago: Cultural Policy Center University of Chicago, 2001. Disponível em: <http://culturalpolicy.uchicago.edu/conf2001/papers/kafai.html>. Acesso em: 04 set. 2004. [KAF 95] Kafai, Yasmin B. Minds in Play – Computer Game Design as a Context for Children’s Learning. Hillsdale: Lawrence Erlbaum, 1995, 339 p. [LAM 03] LaMothe, André. Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization, Pearson Education, June 2003. [LEW 02] Lewis, Michael; Jacobson, Jeffrey. Game Engines in Scientific Research In: Communication of the ACM. Jan. 2002, vol. 45, n. 1, 27-31p. [MAD 01] Madeira, André G. Forge V8: Um Framework para o Desenvolvimento de Jogos de Computador e Aplicações Multimídia. Recife, UFPE, 2001, 99 p. (Dissertação de Mestrado) [NEW 04] Newtek. Disponível em: <http;//www.newtek.com> Acesso em: 10 out. 2004. [PAN 04] Pandromeda. Disponível em: <http://www.pandromeda.com> Acesso em: 10 out. 2004. [REN 04] Renderware A.I. Disponível em: < http://www.renderware.com/ai.asp> Acesso em: 10 out. 2004. [ROL 04] Rollings, Andrew and Morris, Dave. Game Architecture and Design: A New Edition. New Riders Publishers, 2004. [ROL 04] Rollings, Andrew and Morris, Dave. Game Architecture and Design: A New Edition. New Riders Publishers, 2004. [SOF 04] Softimage. Disponível em: <http://www.softimage.com/xsi> Acesso em 10 out. 2004. [STL 04] St-Laurent, Sebastien. Shaders for Game Programmers and Artists. Muska & Lipman/Premier-Trade; 1st edition.May, 2004. [TER 04] Terragen. Disponível em: <http://www.planetside.co.uk/terragen/> Acesso em: 10 out. 2004. [ZER 04] Zerbst, Stefan and Düvel, Oliver. 3D Game Engine Programming. Thomson Course Technology, Premier press, 2004. Apêndice I – Introdução ao 3D Game Studio 1. Introdução O 3D Game Studio é um engine de alto nível de abstração, isto é, possibilita que o desenvolvimento de um game seja realizado sem a necessidade de grandes conhecimentos de programação ou conhecimento de algoritmos específicos. Por um lado a produção se torna simples e rápida, mas por outro lado as possibilidades são limitadas e o padrão gráfico dos jogos terão ligeira semelhança entre si. Figura A1.1 – Alguns níveis de jogos feitos no 3D Game Studio O Engine é composto basicamente por 2 módulos: - Model Editor, responsável sobretudo pela criação e animação de modelos dinâmicos e de terrenos; - Level Editor, para elaborar uma fase por completo. Para se criar um jogo no Game Studio é necessário, além de conhecer estas duas ferramentas, conhecer também a linguagem script (WDL), que permite criar a lógica do jogo e comportamento inteligente de alguns elementos. 2. Level Editor O Level Editor é o principal módulo do Game Studio. É nele que serão inseridos os elementos estáticos, os dinâmicos, terrenos, luzes, sprites e cameras. Também é nele que se fará a associação de programas feitos em WDL com os modelos 3D. Além de tudo isto, é neste módulo que será gerada a BSP, os Light maps, PVS e demais componentes que permitirão que o jogo seja executado. Na Figura A2.2 pode-se ver que a tela do Level Editor está dividida em 3 partes: Figura A1.2 – Level editor do 3D Game Studio – Área de trabalho: Esta região permite ver a geometria da cena. Estas visões podem ser ortogonais (sem deformação perspectiva) ou perspectivas, dadas pela visão de camera. Normalmente se operará com a visão ortogonal de topo, lado e frente e com a visão perspectiva da camera 3D. Para inserir uma nova vista, basta clicar no menu view◊ Add View. Para a visão de camera pode-se optar pelo modo de visualização: View ◊ Wire Frame permite ver a modelagem em formato de arestas e vértices, View◊ Solid permite ver a modelagem com os polígonos preenchidos e View ◊ Textured permite ver a modelagem com as texturas aplicadas. Normalmente este último modo é o mais conveniente de se usar, pois permitirá que se tenha uma idéia mais próxima do resultado final. Com o botão da direita do mouse pode realizar-se a operação de PAN, que consiste em mover a área que se esta mostrando na região. A operação de PAN ocorre simultanemante em todas as vistas ortogonais, mas separadamente na visão de camera. Para se realizar um ZOOM sobre uma região, pode-se usar o mouse wheel ou clicar no ícone de lupa. Sobre a visão de camera é possível também realizar uma operação de ORBIT, que consiste em girar a camera ao redor de seu alvo. Isto pode ser feito através do ícone de um olho verde com uma flecha em formato de arco. – Área de Projeto: Nesta seção manipula-se os diversos recursos que se encontram presentes no cenário. Object refere-se a todos os objetos presentes no cenário, Views relaciona todas as vistas armazenadas (isto é feito clicando-se na pasta com o botão direito do mouse e escolhendo a opção Add View Settings, que gravará as configurações das vistas num item mostrado dentro desta pasta), Texture indica todas as bibliotecas de texturas disponíveis, bem como as imagens de cada biblioteca e Resources indica todos os elementos que estão sendo usados, tais como sons, scripts e mapas. Ao dar um double-click sobre um dos recursos, será aberto o arquivo pelo programa associado ao seu tipo. – Menu e Toolbar: Nesta área se encotram as funcionalidades e comandos do Level Editor. 2.1 Modos de Manipulação Apenas um modo de manipulação pode estar acionado de cada vez. Estes modos podem ser: - Selecionar (botão com um dedo): permitirá selecionar um determinado objeto ou grupo. Para selecionar basta clicar sobre o objeto ou traçar um retângulo com o mouse, fazendo com que todos os objetos que estejam dentro sejam selecionados. Um objeto selecionado aparecerá em vermelho, enquanto os não selecionados aparecem em branco. - Mover (botão com uma flecha sobre um cubo): Permitirá mover um determinado objeto ou grupo livremente. - Rotacionar (botão com um arco sobre um cubo): Permitirá rotacionar um determinado objeto sobre o eixo perpendicular a vista em que se realiza a operação; - Escalar (botão com setas em cruz sobre um cubo): Irá alterar a escala de um objeto. Ao mover o mouse horizontalmente a escala será feita na direção horizontal da vista e ao mover verticalmente a escala será feita na direção vertical. Para que a escala seja igual nas duas direções, basta mover o mouse apertando a tecla ctrl. As transformações podem ser feitas com maior ou menor precisão através do snap. O snap consiste em realizar incrementos pré-estabelecidos nas transformações. O valor do Snap é estipulado no pequeno slider que se encontra na área de botões do Tool bar. Caso o valor seja correspondente a 1 as transformações serão contínuas. 2.2 Texturas As texturas são organizadas em bibliotecas, chamadas de WADS, que podem ser manipuladas através do comando Textures◊ Wad Manager. Para se criar uma nova biblioteca, usa-se o comando Add Wad. A biblioteca construída não possuirá nenhuma textura associada, enquanto o usuário não as inserir. Para inserir texturas deve-se clicar com o botão direito sobre o espaço correspondente à biblioteca, na área de projeto e escolher o comando Add Texture. Pode-se também criar uma biblioteca que contenha todas as imagens que estão presentes no projeto corrente. Para tanto deve-se escolher o comando Build Wad no Wad Manager. Para carregar uma biblioteca de texturas para dentro de um determinado projeto se deve usar o comando Add Wad estando dentro do Wad Manager. Ao realizar isto aparecerá a lista de todas as texturas existentes nesta biblioteca no campo Textures, da área de projetos. Pode-se criar uma lista com as texturas mais usadas num projeto, sendo que estas texturas podem ou não estar em WADs diferentes. Para isto deve-se usar o comando Textures ◊ Texture Bookmarks. Para associar uma textura a um determinado objeto, basta selecionar o objeto e em seguida dar um double click sobre a textura desejada, na área de projeto. Ao realizar isto, todos os polígonos do objeto receberão esta textura. A textura pode ser manipulada através do painel de propriedades do objeto em questão (Figura A1.3), tendo em conta que o controle será individual para cada polígono que compõe o objeto. Para escolher o polígono deve-se clicar sobre as setas que estão no canto superior direito da janela. O polígono selecionado irá aparecer em amarelo. Figura A1.3 – Painel de propriedades de um objeto Uma das opções do painel de propriedades se refere justamente à forma como a textura está aplicada (opção surface). O parâmetro offset permite mover a textura sobre os polígonos, scale permite alterar a escala da textura em relação ao objeto e angle permite girar a textura sobre os polígonos. Pode-se aplicar uma textura também apenas para um elemento de um grupo ou apenas para uma das paredes de um bloco. Para tanto deve-se selecionar o elemento ou a parede. Isto é feito selecionando-se o grupo ao qual pertence e depois usar o comando Scope Down (botão com um grupo de cubos e uma seta para baixo) que irá descendo aos níveis mais baixos da hierarquia. Para voltar ao objeto original, usa-se o comando Scope Up. 2.3 Construindo Salas As salas serão normalmente feitas através de objetos primitivos, ou blocos (cubos, cilindros, pirâmides, etc). Para criar um objeto primitivo usa-se o comando Object◊ Add Primitive ou Object ◊ Add Cube. Note-se que os objetos primitivos serão sempre representados por polígonos e deve-se escolher o grau de refinamento dos mesmos. É importante que se escolha sempre o menor número de polígonos possíveis, de forma a otimizar a cena. Uma vez criado o objeto que servirá de sala, deve-se usar o comando Edit ◊ Hollow Block para que cada polígono se torne uma parede (composta por 6 polígonos). Isto permitirá que uma parede possa ser vista dos dois lados, sem a necessidade de que o engine crie um estado de normais duplas para cada polígono. Como na maioria das vezes as salas serão originadas por cubos, já existe um comando capaz de criar salas prontas, ou seja, com o Hollow Block já aplicado. (Object ◊ Add Hollow Cube) Para acessar às propriedades de uma determinada primitiva, basta clicar com o botão direito sobre o mesmo e optar por properties. As propriedades que um bloco pode receber são: - Passable: O bloco não terá colisão com os elementos dinâmicos do jogo. (Por exemplo, água de uma piscina); - Invisible: O bloco não será visualizado no jogo, mas poderá ter colisão com os outros elementos. - Texture Lock: A textura permanecerá imóvel quando o objeto sofrer transformações espaciais. Após ajustar o tamanho e a posição do bloco que servirá de sala, muito provavelmente se desejará criar buracos que sirvam de passagem de uma sala para outra. Para isto, deve-se utilizar um objeto auxiliar, que poderá ser qualquer uma das primitivas disponíveis. Este objeto deverá ser colocado de tal forma que contenha dentro dele toda a parte da geometria de outros objetos que serão removidos (ver Figura A1.4). Após posicioná-lo adequadamente, deve-se manter este objeto auxiliar selecionado e utilizar o comando Edit ◊ CSG Subtract. Feito isto, o objeto auxiliar ainda estará presente, mas todas as partes das geometrias que estiverem contidas em seu interior terão desaparecidos. Para completar a operação deve-se apagar ou mover o objeto auxiliar. Esta operação apenas funciona com os objetos estáticos, ou seja, os blocos e os objetos pré-fabricados. Não terá nenhum efeito com os objetos dinâmicos, tais como sprites e terrenos. Figura A1.4 – Operação de subtração