Conteúdo Projeto 3 Anima Project por Alexandre “Darkfenrir” Capa 6 Empresas Brasileiras de Jogos por Carlos H. Caimi Colunas 10 Java no desenvolvimento de jogos por Paulo R. C. Siqueira 14 Videogames no Cyberpunk de William Gibson por Alessandro Vieira dos Reis 16 Jogos Open Source: Utopia, modismo ou necessidade? por Julio Marchi Entrevista 19 Fábio Binder por Carlos H. Caimi Artigos 29 Introdução ao OpenGL Shading Language por Bruce “Sinner” 23 Iniciando no SDL por Daniel “NeoStrider” Monteiro 25 2D .NET games: Usando a GDI+ (Parte 1) por Wilson Jr. PostMortem 28 Postmortem do Harena por Matías G. Rodriguez Fim do Jogo 31 E o Futuro é logo ali por Carlos H. Caimi Editorial Caros leitores Ao final de julho de 2004, surgiu na lista jogospro a idéia de criarmos uma revista para a comunidade de desenvolvedores de jogos do Brasil. Foram quase 100 post na lista com prós e contras, e por fim, os mais empolgados resolveram concretizar a idéia. E é com imensa satisfação que apresentamos a você, a primeira edição da primeira revista sobre desenvolvimento de jogos voltada para a comunidade brasileira. A JogosPRO e-Magazine a princípio, será bimestral. Ela será distribuída gratuitamente por meio eletrônico e teremos um site para discutir e divulgar a revista. Com a criação da revista pretendemos dar um passo importante para comunidade. Nosso sonho é tornar a revista uma referência nacional, bem como um canal para divulgação da indústria de jogos. Nessa primeira edição, buscamos saber como anda as empresas brasileiras que já publicaram jogos no brasil, e fora dele, além de trazer artigos interessantes, entrevistas e muito material. E por isso convidamos você, prezado leitor, a participar junto conosco desse grande projeto. Participe! Contribua com artigos, notícias, divulgue seu projeto, critique e dê sugestões para aprimorarmos sempre a nossa revista. Envie-nos cartas! O email é [email protected]. Acesse o site e sinta-se a vontade. - Carlos H. Caimi, Editor-Chefe Anima Project por Alexandre “DarkFenrir” “O que você acha de passar pela 3ª Guerra Mundial, ver o Sol explodindo anos luz de seu abrigo no fundo da terra, presenciar a idealização de uma civilização na superficie lunar, encarar desavenças políticas, e finalmente descobrir que seu colega lhe traiu por interesses únicos e egoístas... Lutar com armas e veiculos de ultima tecnologia, e simultaneamente derrotar um dragão vulcânico que varre inumeras tropas com seu halito flamejante ! Ou melhor ainda, descobrir que você esta sendo manipulado por uma mega corporação e pelo próprio governo no qual você trabalha !!! “. Este é o mundo de Anima Project , um duelo de extremos, numa época em que a realidade que conhecemos está se redefinindo radicalmente, em uma saga que narra temas pouco explorados antes: a revolução das espécies, os elementos naturais a espécie humana, a eterna busca pela sobrevivência e seus desejos mais ancestrais... Como nasce uma civilização, sua tecnologia, suas crenças e valores, como ela se adapta ao mundo em que vive ! Numa guerra onde não existe nem certo, nem errado: apenas interesses contraditórios, onde o destino da nova Terra esta em jogo !!! Assim surgiu o conceito que sustenta todo o contexto por trás desta incrivel aventura ! E lembre-se que você, é mais do que nunca, o personagem principal desta grande saga !! >> CONCEPÇÃO DO PROJETO Anima Project é um novo produto de entretenimento criado para o mercado nacional, que vem a cada ano ganhando cada vez mais adeptos nessa grande forma de lazer. Mas o Anima Project não é apenas mais um RPG de mesa como tantos outros: ele explora um tema de ambientação pouco explorado até hoje nos RPG’s de mesa do ocidente, mas muito apreciado por jogadores de RPG’s eletrônicos e fãs de Anime / Mangá: o gênero “TecnoFantasy”, que mistura elementos da fantasia medieval com técnologia e elementos cyberpunk. O mundo de Anima Project consiste no duelo de extremos, como por exemplo, a Tecnologia x Magia, numa guerra onde não existe nem certo nem errado, apenas interesses contraditórios...Tudo isso narrado numa história contada sob diversos pontos de vista, em um mundo novo repleto de tecnologia e misticismo. O ANIMA PROJECT não ficara preso a um único tema: ele será explorado de diversas maneiras, num futuro próximo; O RPG de mesa, desenvolvido inicialmente para OGL/ D20 System, será o carro-chefe do projeto. E futuramente temos pretenção de apostar o conceito do projeto em outras mídias, como por exemplo jogos eletrônicos, mangás, novelbooks... >> RESUMO DA HISTÓRIA - Uma antiga profecia se concretizou, e o mundo dos homens entrou em colapso: guerras, desavenças e catástrofes naturais mudaram a vida dos habitantes da superfície terrestre.. - Devido a um estranho fenômeno ocorrido no sol, a temperatura terrestre começou a aumentar bruscamente, tornando-se impossível sobreviver nesta atmosfera; então os humanos, sem ter pra onde fugir, construiram um novo mundo: de baixo da terra. - Mas nem todos puderam migrar para o subterrâneo: alguns radicalistas mais nobres construiram colônias no espaço e na Lua, e os menos afortunados ficaram a mercê da própria sorte, sobrevivendo a todo custo na hostil crosta terrestre. - 1 milênio se passou, os humanos de Subteranea esque- ceram-se do mundo antigo, os recursos minerais do subsolo estão se esgotando, então começa o plano de reconquista da superfície. O mesmo acontece com os habitantes de Seluna, que até então criaram uma nova civilização fora do planeta. - Porem, os humanos de ambas as partes não esperavam se reencontrar, nem mesmo entenderam um fato: que o mundo estava se recriando, desde o principio dos tempos, mas habitado por estranhas e bizarras criaturas que só existiam em lendas e folclores, e também por uma legião de maquinas inteligentes. - Muitas pessoas começaram a receber “contatos” com seres “divinos”, cujo foram banidos do mundo dos homens antes mesmo da existência de uma civilização humana. - Ainda ha um fato mais extraordinário: uma nova variante de seres humanos, os “Alterados”, começou a repovoar a superfície. Porem eles alimentam uma profunda angustia em relação aos humanos do subterrâneo que abandonaram seus antepassados para apodrecer neste armagedom. - Inicia-se uma guerra de reconquista da superfície deste mundo novo: humanos de Subteranea x humanos de Seluna x os Alterados de Cresta. - O governo de Subteranea cria um audacioso projeto para a exaltação da raça humana: o >> ANIMA PROJECT - GAME ANIMA PROJECT - ANOTHER REALITY é um game de RPG feito para plataformas PC. Ele utiliza o software RPG MAKER 2003, um programa especialmente feito para a criação de jogos deste gênero, semelhante aos clássicos da geração 16 bits (Megadrive e Super Nintendo), como por exemplo FINAL FANTASY, CRONO TRIGGER e PHANTASY STAR. Assim surgiu a idéia inicial de ANIMA PROJECT, a revolução das espécies, numa época em que a realidade que conhecemos está se redefinindo. O interessante é que esta saga é contada a partir do ponto de vista dos seres humanos originais, que sobreviveram a uma catástrofe no passado. Na verdade tinha-se como base inicial contar a hisstória a respeito de varias realidades paralelas, o surgimento de vários seres e divindades além da compreensão humana... O jogo de PC, em RPG Maker, ainda está numa fase inicial de desenvolvimento, e em breve colocaremos no site mais versões DEMO, com mais de 1 hora jogável, para você conferir a respeito do game; e também colocaremos screenshots de algumas cenas do jogo para você ter uma idéia de como o game está sendo produzido. Projeto Anima, que visa descobrir a verdade sobre o fato desta incrível mudança e a reconquista da superfície terrestre. - Assim então são as novas raças envolvidas neste conflito : Teraneans (habitantes de Subteranea), Seluneans (habitantes da colônia da Lua), Alterados (os humanos mutantes que povoaram o novo mundo). Futuramente temos o plano de fazer um jogo mais sério, com uma engine própria, feito para computadores de maior desempenho. Seguiremos os moldes de RPG’s multiplayer famosos, como Diablo, Phantasy Star Online e Ragnarock. Para isso negociaremos com alguma softhouse que se interesse pelo potencial do projeto. O site disponibiliza no momento a versão DEMO 1.0 do Game Anima Project, feito em RPG Maker 2003 Ver.1.08. Até o final deste ano, pretendemos colocar a versão DEMO 2.0, com mais horas de jogo. Equipe Anima Project 2004 Todos os direitos reservados www.animaproject.make5.com.br [email protected] por Carlos Caimi C A P A Empresas Brasileiras de Jogos P A difícil arte de desenvolver jogos no Brasil orque desenvolver jogos? Existem muitas respostas para essa pergunta, mas nenhuma é tão completa quanto esta: Por Paixão! E é exatamente essa paixão que parece alavancar o mercado brasileiro de desenvolvimento de jogos. Apaixonados utilizam as horas vagas para desenvolvimento de jogos. Iniciando com um desenvolvimento caseiro, até um amadurecimento da idéia, e por fim, a realização de um sonho. Uma empresa de desenvolvimento de jogos. No Brasil, quando se fala em desenvolvimento de jogos, fatalmente iremos tocar no nome de 3 empresas que obtiveram sucesso nessa empreitada. A Continuum, a South Logic e a Ignis são as brasileiras que conseguiram colocar seus jogos no mercado nacional e internacional. A JogosPRO entrou em contato com essas empresas para tentar descobrir o segredo do sucesso, e o que elas estão planejando para o futuro. .:Entrevista South Logic JogosPRO: A Southlogic desenvolveu primeiro a Aspen Engine, depois o Jungle Demo. Só depois conseguiu patrocínio para o desenvolvimento de um jogo. Vocês recomendam essa estratégia ainda hoje? Southlogic: Na verdade a empresa foi fundada em 1996, então fizemos o jogo Guimo, depois a tecnologia Aspen Engine e o jogo Aquarius e só depois fizemos o Jungle Demo. Até os dias de hoje é muito comum desenvolver protótipos na hora de propor um projeto para um publicador. Muitos querem ter uma noção o mais precisa possível do que o desenvolvedor é capaz de fazer, e um protótipo é uma das formas de fazer isso. Infelizmente fazer um protótipo é a parte mais complexa e mais cara do processo de montar uma proposta de jogo. JP: A Southlogic se chamava antes Jack in a Box, porque mudaram? SL: Em 1996 o nome parecia bom para nós aqui no Brasil, mas no primeiro contato com os EUA já ouvimos comentários sobre a cadeira de restaurantes que usa o mesmo nome por lá. Para evitar confusão e qualquer tipo de problema legal ao entrar naquele mercado resolvemos alterar o nome da empresa. Acho que fizemos isso na hora certa. JP: Hoje a Southlogic atua no mercado fora do Brasil, vocês pretendem http://www.jogospro.com.br lançar um jogo aqui? SL: O jogo Guimo, e recentemente o Deer Hunter 2004, foram lançados no Brasil. No momento atual, que desenvolvemos jogos de caça, a entrada desses produtos no mercado brasileiro é difícil por causa da baixa popularidade desse esporte por aqui. Esse tipo de produto tem como mercados principais os EUA e Canadá. Acredito que quando lançarmos outros gêneros de jogos a probabilidade deles serem amplamente distribuídos no Brasil vai aumentar. Quanto a produzir um jogo especificamente para o mercado brasileiro, com conteúdo voltado para o mercado brasileiro, é uma questão de escalar o projeto de acordo com o orçamento disponível - que normalmente é baixo aqui. Pessoalmente não acho a melhor estratégia, e você pode ver que os desenvolvedores de outros países sempre tentam desenvolver jogos de conteúdo o mais amplo possível para distribuição mundial e que inclui o Brasil. JP: Vocês pretendem relançar o Guimo e o Aquarius? Ou uma nova versão desses jogos? SL: Tenho vontade de portar o Guimo para Windows (atualmente o jogo tem problemas de compatibilidade porque foi feito originalmente para DOS e Windows 95) e lançá-lo como freeware. Já o Aquarius, que chegou até uma versão beta, é um projeto bem maior e precisa ser reescrito praticamente do zero para virar um jogo com os novos padrões de mercado. Digamos que ele está “engavetado” até que alguém se in- teresse por ele, e então poderemos finalizá-lo com a atenção que ele merece... JP: O período que a Southlogic ficou incubada foi relevante para o crescimento da empresa? SL: Com certeza foi uma das decisões mais certas que tomamos durante esses anos. Uma empresa desenvolvedora de jogos e tecnologia precisa sobreviver por um bom tempo sem ter faturamento até atingir um nível mínimo para realmente atuar no mercado. A incubadora S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine C nos permitiu ter esse tempo, que apesar das dificuldades, foi importantíssimo. JP: Hoje vocês são desenvolvedores oficiais da plataforma XBOX. Esse é o caminho para manter a rentabilidade da empresa, ou de um jogo, PC + Console? SL: O mercado de consoles é muito maior que o de PC, portanto os publicadores preferem jogos para consoles, e de preferência para PS2. Não tenho dúvidas que um desenvolvedor para console, ou até de múltiplas plataformas (inclusive PC), vai ter mais chances de fechar contratos nessa indústria. O nosso primeiro passo nessa direção foi com o Xbox, estamos tentando ampliar as possibilidades nessa direção. Infelizmente existem “percalços” nesse caminho por estarmos aqui no Brasil. Dá pra acreditar que em 2004 ainda aconteça isso? JP: A pirataria no mercado nacional é impedimento para lançar um jogo aqui? SL: Para os fabricantes de consoles é o motivo que essas plataformas não chegaram aqui. Quando eles vendem o hardware ele está sendo subsidiado pelo fabricante, ou seja, ele está sendo vendido por um valor abaixo do que realmente vale. Os fabricantes de consoles ganham o seu dinheiro vendendo os jogos depois, e parece que esse modelo de negócio não funcionaria bem no Brasil por causa da pirataria. Infelizmente acho que um dos motivos daqueles “percalços” que comentei seja essa situação no http://www.jogospro.com.br Brasil que deixa alguns fabricantes muito descontentes. O que isso tem haver com a seriedade do desenvolvedor de jogos brasileiro eu ainda não sei... JP: O que vocês acham do mercado brasileiro de jogos? Tem Futuro? SL: Acreditar no futuro do mercado de jogos brasileiro é acreditar no futuro do Brasil. Sem um Brasil mais desenvolvido no sentido de empregos e poder aquisitivo não podemos esperar que um mercado de produtos “supérfulos” como os jogos evolua. Como todo brasileiro tenho muita fé que o Brasil vá se desenvolver nos próximos anos. Outros países já estão vendo o potencial de mercado aqui, e acho isso um indicador que as coisas vão melhorar. Talvez durante uma fase de transição, as empresas que publicam hardware e jogos devessem ajustar aquele modelo econômico no nosso mercado, provavelmente reduzindo suas margens de lucro. JP: Teremos uma versão dos Hunter´s para console? SL: Espero que sim, e também gostaria de ter versões de outros jogos para console! JP: Qual os próximos passos da Southlogic? SL: A nossa meta é enriquecer o portfólio da empresa com bons jogos e ir crescendo aos poucos, formando mais pessoal, e com projetos cada vez mais desafiadores. Não me importo tanto em qual a plataforma desenvolver, o mais importante para nós nesse momento é ter boas oportunidades de mostrar o nosso trabalho. A P A SL: Estudar a sua área de interesse e praticá-la. Nada melhor que a prática para fixar e aprimorar as suas técnicas. Atualmente os jogos estão se tornando projetos grandes, então conhecimento de de- senvolvimento de sistemas de maior porte é importante (orientação a objetos, notação de código, documentação, etc). Também conhecer as ferramentas gráficas, de som e de desenvolvimento como ferramentas de controle de versão. Ao mesmo tempo, você precisa se juntar a outras pessoas que se interessam por jogos e com habilidades complementares - os jogos são produtos criados por pessoas com conhecimentos multidisciplinares (arte, programação, design, administração, etc). E mais aquela clássica de sempre: ficar atento as oportunidades e ao que está acontecendo no mercado, para maximizar as chances de sucesso. E como não é um mercado fácil, recomendo uma boa dose de persistência e de dedicação. � JP: Qual a mensagem que a vocês deixam para quem esta começando na área? S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine C A P A .:Entrevista Continuum JogosPRO: A Continuum surgiu no ambiente acadêmico e depois consolidou-se como empresa para comercializar o Outlive. Vocês consideram essa estratégia, de desenvolver uma demo, buscar patrocínio e depois uma dedicação exclusiva na empresa, como a melhor opção ainda hoje no mercado brasileiro? Continnum: Utilizamos esta estratégia como meio de dividir o risco do desenvolvimento com os publicadores, além de ser o modelo de negócios mais comum entre desenvolvedores e publicadores. JP: Fala-se muito hoje em game-propaganda como estratégia para manter a empresa em atividade, a Continuum usou este artifício, ou na prática a teoria é diferente? C: Depende muito dos objetivos da empresa. Até algum tempo atrás, nosso foco era mais amplo e atendiamos este público também. Atualmente estamos com nosso foco restrito ao desenvolvimento de produtos multiplataforma (PC e XBOX) para os publicadores internacionais. Achamos que esta é a estratégia mais adequada para a Continuum. JP: Vocês já há dois meses são desenvolvedores oficiais da plataforma XBOX. Esse é o caminho para manter a rentabilidade da empresa, ou de um jogo, PC + Console? C: Esta é uma maneira de agregar mais valor ao nosso trabalho, aumentando as possibilidades de fechamento de negócios. JP: O que vocês acham do mercado brasileiro de jogos? Tem Futuro? C: Acreditamos que o mercado tem futuro, mas por enquanto ele é ainda uma promessa, com poucos casos de sucesso. JP: Teremos uma versão do OutLive para console? C: Não temos planos de portar o Outlive para XBOX, pelo menos por enquanto. das. JP: Qual o novo projeto que vocês estão desenvolvendo? Vocês poderiam dar essa esclusividade para nós? Ou quando a Continuum pretende divulgá-lo? C: Pretendemos divulgar mais informações assim que as negociações estiverem encaminhadas, o que deve levar ainda algum tempo. JP: Qual a mensagem que a Continuum deixa para quem esta começando na área? C: Além de entender como desenvolver jogos, é importande entender melhor o mercado em si e como funcionam os negócios dentro dele. Esta prática é vital para aumentar a probabilidade de sucesso de uma empresa iniciante. Boa sorte na sua empreitada! JP: A pirataria de jogos no Brasil afetou de alguma forma o negócio da empresa? C: Afetou principalmente no mercado nacional, onde perdemos muitas ven- JP: A Continuum teve sua marca ligada a outras grandes marcas, como Big Brother Brasil, Xuxa e Mac Donalds. Isso agrega valor na hora de encontrar um publisher disposto a bancar um projeto pró-prio? C: Eles melhoram a credibilidade da empresa, apesar de serem projetos menores e de pouco apelo internacional. http://www.jogospro.com.br S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine C A P A .:Entrevista Ignis JogosPRO: A Ignis surgiu do trabalho nas horas vagas de seus sócios. Vocês consideram essa estratégia, de desenvolver uma demo, buscar patrocínio e depois uma dedicação exclusiva na empresa, como a melhor opção ainda hoje no mercado brasileiro? Ignis: Na verdade essa é a única opção para a gande maioria das empresas. Todo publisher exige uma prova de competência dos desenvolvedores e, algumas vezes, nem mesmo um bom demo é suficiente. cubadoras tecnológicas no país, e sempre aconselho os iniciantes a procurar o auxílio delas. A Intec teve um papel fundamental no processo de transferir a Ignis do papel para a realidade. JP: Vocês recomendariam a quem esta iniciando buscar auxílio em incubadoras? I: Sim. Complementando a questão anterior, normalmente uma empresa iniciante na área conta apenas com pessoal de perfil técnico e isto não basta para compor uma empresa de sucesso. As incubadoras ajudam muito na parte de preparação do plano de negócios e na administração da empresa. JP: Vocês conseguiram uma Capitalização através de Capital de Risco. Esse investidores veêm com bons olhos o mercado de jogos? I: Nem todo investidor de Capital de Risco tem perfil para atuar na nossa área, mas normalmente eles têm uma visão livre de preconceitos. Se a proposta tiver o respaldo de um bom plano de negócios, ela será avaliada com os mesmos critérios de outras propostas de tecnologia. JP: No Paraná surgiram várias empresas de jogos, porém a Ignis se mudou para o Rio de Janeiro. Qual o motivo dessa decisão? I: O fundo de investimento que conseguimos é voltado para empresas de tecnologia do Estado do Rio de Janeiro. Além disso, é importante a proximidade da empresa com o investidor, pois a colaboração deles é importante para o desenvolvimento do negócio. JP: Durante o processo de desenvolvimento vocês foram selecionados para participar da Incubadora Tecnológica do Paraná. Isso ajudou a Ignis de alguma maneira? I: Ajudou muito. Hoje existe muitas inhttp://www.jogospro.com.br JP: A pirataria no Brasil influenciou na decisão de voltar o desenvolvimento para um MMORPG? Ou a decisão foi baseada na paixão? I: Todas as decisões da Ignis são tomadas em função do mercado e, por uma questão de sobrevivência, não pode ser diferente disso. Nosso foco sempre foi o mercado exterior, então não posso afirmar que a pirataria teve uma influência significativa nessa decisão. A paixão é o que nos motiva a fazer jogos, mas o mercado e quem determina como temos que fazer esses jogos. JP: O que vocês acham do mercado brasileiro de jogos? Tem Futuro? I: Sim. Tem muito futuro e este é o principal motivo que nos levou a lançar o Erinia no Brasil também. O público brasileiro ainda tem uma dificuldade grande em entender que o desenvolvimento, a distribuição e a operação (no caso dos jogos online) custa muito caro e que, por isso, devem pagar pelo produto. Mas a mentalidade está mudando rapidamente, e os jogagores estão percebendo que, saindo da ilegalidade, estão colaborando para que sejam lançados jogos cada vez melhores. JP: Agora com o lançamento do Erinia, quais os próximos passos? I: Estamos trabalhando muito nas atualizações e nos preparativos para o lançamento na Europa, mas também estamos fazendo o estudo de viabilidade de 3 novos projetos. Não podemos deixar todos os ovos em um único sexto. JP: Qual a mensagem que a Ignis deixa para quem esta começando na área? I: Todos têm que estar cientes das dificuldades que terão pela frente. Nossa profissão é uma das mais difíceis e exigentes que existe e muitas pessoas acabam desistindo por não estarem cientes disso quando começaram. Nós gostaríamos de lembrar que é preciso gostar muito da profissão e não desistir nunca, pois não existe recompensa maior que poder trabalhar fazendo o que realmente se gosta. � Saiba mais sobre as empresas Southlogic http://www.southlogic.com.br Continuum http://www.continuum.com.br Ignis Games http://www.ignisgames.com.br S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine COLUNA: CENA JAVA Java no Desenvolvimento de Jogos: Um Panorama por Paulo R. C. Siqueira Desenvolver jogos é uma ciência e uma arte eclética. Exige a união de grandes conhecimentos de diversas áreas e envolve muitas complexidades. Para facilitar a nossa vida, existem diversas ferramentas, linguagens, engines etc. prontas para serem utilizadas. Cada ferramenta tem seus prós e contras, além do gosto pessoal de cada desenvolvedor. Uma linguagem que vem aparecendo cada vez mais no cenário do desenvolvimento de jogos é Java. E ela é o foco desta coluna. A cada edição, estaremos explorando diversas características desta poderosa plataforma, que muitas vezes é deixada de lado por puro preconceito. Nesta primeira etapa, estaremos fazendo um panorama geral sobre a linguagem, mostrando suas principais características e alguns de seus (muitos) benefícios. Vamos apresentar rapidamente as APIs mais utilizadas e apontar caminhos para que o leitor possa se aprofundar mais. A primeira coisa que deve ser entendida é que Java é mais do que uma linguagem. Ela é uma plataforma completa de desenvolvimento de software, que abrange desde dispositivos minúsculos, como Smart Cards, até grandes sistemas Figura 1 – Arquitetura básica da plataforma Java corporativos, como o sistema da amazon. com (uma aplicação web que processa demesmo em todos os casos. Mudam as APIs disponíveis, zenas de milhares de acessos simultâneos). A plataformas não a sintaxe da linguagem, que é muito parecida ma Java está dividida basicamente em três partes (além com C/C++ - o que permite a programadores dessas da especificação de Smart Cards): Java 2 Micro Edition linguagens aprenderem Java facilmente. (J2ME), que possibilita o desenvolvimento de aplicações para dispositivos móveis, como celulares e Palms; Agora que já temos o conhecimento básico sobre o que Java 2 Standard Edition (J2SE), que fornece suporte ao é Java, podemos falar do que realmente nos interessa: o desenvolvimento de aplicações Desktop, além de ser o desenvolvimento de jogos! alicerce para a terceira e mais conhecida parte: Java 2 Enterprize Edition, que fornece APIs, frameworks e outras ferramentas para o desenvolvimento de aplicações Paulo R. C. Siqueira é desenvolvedor Java, Programador Certificado pela Sun Microsystems e já está viciado em World of corporativas, incluindo as famosas aplicações web. Independente de qual parte da plataforma está sendo utilizada, os conceitos principais são sempre os mesmos: toda aplicação Java roda por cima de uma máquina virtual (JVM), o que faz com que seja possível rodar as aplicações em qualquer SO que possua uma implementação da JVM (todos os Sos mais importantes têm). Além disso, a linguagem é a http://www.jogospro.com.br Warcraft, mesmo ainda não tendo jogado. S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine CENA JAVA O Despertar Quando falamos em desenvolver jogos em Java, logo vem à mente “joguinhos” para celular. Isso é compreensível, pois a linguagem vem recebendo bastante destaque neste segmento. Em uma busca de poucos minutos na internet é possível encontrar, literalmente, dezenas de pequenas e médias empresas que desenvolvem este tipo de jogo utilizando Java. objetivo facilitar o desenvolvimento de interfaces de aplicações desktop e fornecer aos desenvolvedores uma grande quantidade de recursos. Mas houve um problema: os desenvolvedores decidiram que a API seria desenvolvida utilizando todos os conceitos de orientação a objetos ao extremo. E de fato isso foi feito. O Swing é considerado hoje uma obra prima quanto à sua arquitetura mas, em compensação, a execução das aplicações desenvolvidas com ele eram lentas. Figura 2: Ancient Empires e Dragon Island, dois jogos para celulares Uma outra visão comum são os jogos disponíveis em sites na internet, feitos com applets Java (a mesma tecnologia que está por trás de diversos teclados virtuais de sites de bancos). E nesse caso já temos jogos bem mais elaborados do que os disponíveis para celular, mas ainda sim um tanto quanto limitados. Mas nenhum desses dois casos mostram o que realmente é possível fazer com Java. Há mais do que isso. Navegando um pouco mais na internet podemos perceber que a plataforma Java está cada vez mais sendo utilizada para desenvolvimento de jogos mais complexos, que vão desde jogos 2D, até jogos com gráficos 3D cuja qualidade é difícil contestar. Muitos já devem ter ouvido falar (mal) do desempenho de Java. Mas o quanto disso é realmente verdade? Hoje em dia, muito pouco. Essa fama vem das primeiras versões da linguagem, quando a plataforma ainda estava um tanto quanto imatura. Um dos principais culpados por esse desempenho limitado é a API Swing. Esta API tinha como http://www.jogospro.com.br É claro que essa não era a única razão para o fraco desempenho da plataforma Java. Houveram diversos outros problemas, que foram sendo corrigidos Além dessa exposição, a empresa também está desenvolvendo um produto comercial para jogos MMO, o Java Game Server. Para cuidar das iniciativas para produção de jogos, a Sun criou um grupo interno de desenvolvedores chamado Game Technologies Group (GTG). Não podemos deixar de citar a grande comunidade que existe ao redor deste assunto. O fórum da comunidade de jogos do site java. net (http://www.java.net) possui, no momento em que esta coluna está sendo escrita, 3716 usuários registrados, e está em constante crescimento. Confira também o da comunidade: www.javagaming.org. Lá é possível encontrar jogos, demos e APIs. Entre os projetos dessa comunidade, três merecem destaque: jinput, joal e jogl. O objetivo dos três é basicamente o mesmo: disponibilizar recursos que não estão disponíveis diretamente em Java, ou cujos recursos são insuficientes para o desenvolvimento de jogos. conforme as novas versões eram lançadas. E hoje temos uma plataforma que traz diversos benefícios para quem decide utilizá-la. Um fato interessante é que a Sun (empresa que desenvolveu a plataforFigura 3: Alien Flux, jogo 2D comercial - roda em Linux, Windows e MacOS ma Java) está, já há algum tempo, empregando esforços Os três projetos são OpenSource e para facilitar o desenvolvimento de tem participação ativa de diversos jogos. Em congressos como o Java desenvolvedores da comunidade e One (maior congresso sobre Java do do GTG. mundo, que reúne milhares de desenvolvedores todo ano), e o Game Developers Conference (GDC), a Sun vem realizando palestras visando mostrar aos desenvolvedores de jogos os ganhos que podem ser obtidos com o uso da tecnologia Java. S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine CENA JAVA Os Três Pilares entrada do loop principal do jogo. Java, como qualquer outra plataforma de desenvolvimento, não é perfeito. No que se refere ao desenvolvimento de jogos, três são os problemas mais encontrados pelos desenvolvedores: tratamento de input do jogador, suporte a tecnologias de processamento gráfico de alta qualidade e recursos de processamento de audio escassos. Visando resolver esses problemas, es- Por mais bonito e divertido que um jogo seja, uma boa música e efeitos sonoros são essenciais. Java proporciona uma API chamada Java Sound, que permite utilizar diversos recursos sonoros, principalmente no formato midi (é possível ler outros formatos com algumas APIs externas). Porém, quando precisamos ter realmente um bom controle sobre Muito programadores já devem ter ouvido falar da biblioteca OpenAL. É com essa biblioteca que foi procurado resolver os problemas do Java Sound. O projeto JOAL permite a desenvolvedores Java utilizar OpenAL para gerar / reproduzir os sons do jogo, ao invés de Java Sound. Em Java temos diversas opções para se desenvolver a interface. Há Swing, Java 2D, Java 3D, entre outras. Mas todas elas são incompletas no que se refere ao desenvolvimento de jogos. Desenvolvedores de jogos querem mais poder do que essas APIs oferecem. Para a programação gráfica de jogos, OpenGL é quase unanimidade. Por causa disso, o projeto JOGL oferece uma opção para se utilizar OpenGL em Java. Para quem já sabe OpenGL, é questão de minutos para se aprender a utilizá-lo com Java, e boa parte da complexidade envolvida em códigos C/C++ fica transparente para o desenvolvedor. Light Weight Java Game Library Figura 4: Flying Guns - Desenvolvido com Java3D tão sendo desenvolvidos três projetos no portal java.net: jinput (jinput.dev. java.net), jogl (jogl.dev.java.net) e joal (joal.dev.java.net). O jinput ataca o primeiro problema: o tratamento da entrada do jogador. O modo convencional de tratamento de entrada de dados em Java é baseado em eventos, que são sempre ligados a algum componente gráfico AWT / Swing. Deste modo, é sempre necessário ter pelo menos um componente registrado para ouvir estes eventos, alocando recursos preciosos do sistema, que ficam, pelo menos em parte, fora do controle do desenvolvedor. Além disso, não é possível receber entrada de joysticks ou outros dispositivos que não sejam o mouse e o teclado. O jinput funciona de um modo oposto: ao invés do input ser lançado em um evento, é o desenvolvedor que deverá verificar quais teclas foram pressionadas, o que pode ser feito na parte de processamento de http://www.jogospro.com.br o que está acontecendo na parte sonora do jogo, ou quando precisamos de recursos mais sofisticados de processamento de som, Java Sound se mostra extremamente limitada. Além de JOGL, JINPUT e JOAL, temos o LWJGL como uma opção de acesso a OpenGL, OpenAL e tratamento diferenciado de entrada. A principal diferença entre essa API e as anteriores, é que ela engloba as três partes que as anteriores atacam em uma única API. Por isso ela acaba se tornando uma API do tipo tudo ou nada. Entre os jogos produzidos com Java e OpenGL atualmente, o uso de LWJGL e JOGL (e suas irmãs) esta bem equilibrado. Para mais informações acesse: http://www.lwjgl.org. Figura 5: WurmOnLine – MMORPG S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine CENA JAVA Vantagens de se utilizar Java Certo, então com Java é perfeitamente possível desenvolver jogos de qualidade. Mas se eu já programo em C/C++, porque deveria aprender Java? Abaixo estão listadas as suas principais vantagens: ◊ Multiplataforma: A qualidade mais conhecida de Java é a sua portabilidade. O fato de Java ser multiplataforma nos garante que nossos jogos poderão rodar pelo menos nos três SO’s mais utilizados: Windows, Linux e MacOS. ◊Produtividade: Uma outra qualidade muito comentada de Java é a sua produtividade. A linguagem possui algumas características interessantes que nos auxilia nesse sentido. Uma dessas características é a ausência de ponteiros. Portanto você não precisa se preocupar em desalocar memória (fonte de muitos problemas em código C/C++). A própria linguagem se encarrega de detectar classes que não estão mais em uso e liberar a memória usada por estas classes. ◊ Deployment Simplificado: Utilizando Java Web Start (JWS), é extremamente simples para o jogador instalar seu jogo. Tudo o que ele tem que fazer é ir até a página do jogo e clicar em um link. JWS irá fazer o download e a instalação automaticamente. Depois de instalado, o próprio JWS checa por possíveis atualizações. Se estas existirem, ele as baixa e instala. Tudo com a mínima intervenção do jogador. ◊ Evolução Comunitária: A plataforma Java está sempre evo- luindo. Isso quer dizer que, se há um recurso poderoso do qual o desenvolvedor precisa que não está disponível, há sempre grandes chances dele ser acrescentado ao Java. E o melhor é que essa evolução não é controlada pela Sun, mas sim pela comunidade, e qualquer um pode participar. É para isso que existe o Java Community Process (JCP – http://www.jcp.org). Através dele é possível acompanhar o que está sendo feito para o futuro da plataforma Java e, mais importante, participar deste futuro. ◊ Uso de padrões: Toda a arquitetura da plataforma Java é construída em cima de padrões. A própria JVM é na verdade uma especificação, e qualquer um pode desenvolver a sua. E isso é muito importante, pois trás independência de fornecedores. Você sempre terá a possibilidade de trocar o fornecedor da sua JVM, dos seus parsers XML ou qualquer outra coisa, desde que os padrões sejam seguidos. ◊ Economia: Ferramentas são indispensáveis no desenvolvimento de qualquer aplicação, jogo ou não. Para Java, há uma quantidade enorme opções com as quais o desenvolvimento pode ser feito. E a grande maioria é grátis, e com qualidade profissional. Só para citar algumas, temos duas excelentes IDEs: Eclipse (http://www.eclipse. org) e NetBeans (http://www.netbeans.org), ambas gratuitas e entre as mais utilizadas do mercado. Por onde começar Então você decidiu tentar utilizar Java. A primeira coisa que deve ser feita é baixar o JDK, disponível em http://java.sun.com. Neste mesmo site há uma extensa documentação sobre toda a plataforma Java. Uma IDE também é importante. As duas mais utilizadas são o Eclipse e o NetBeans, já citadas anteriormente. Sugiro que baixe as duas e escolha a que mais lhe agradar. Comece como você começaria em qualquer outra linguagem: faça um joguinho básico como Pong, e vá escrevendo outros jogos aumentando a complexidade aos poucos. Comece com Swing e Java2D mesmo (a não ser que você Java Game Server O mercado de MMOs no mundo vem crescendo bastante nos últimos anos. Visando este mercado, a Sun está desenvolvendo um servidor de jogos MMO, o Java Game Server (http://www. sun.com/smi/Press/sunflash/2004-03/ sunflash.20040323.1.html), que tem o objetivo de prover a infraestrutura comum a muitos dos jogos massivos, com escalabilidade, persistência automática dos objetos do jogos e mais um monte de coisas. Independente do servidor ser bom ou não, o importante é notar que a Sun, criadora da plataforma Java, está começando a ver o mercado de jogos com bons olhos, o que só tem a nos beneficiar. Figura 6: Jose, feito com Java3D http://www.jogospro.com.br já saiba OpenGL). Depois que já estiver familiarizado com a linguagem Java, parta para OpenGL e se divirta! O Futuro Nesta edição tivemos uma introdução do que pode ser feito com a plataforma Java. Vimos que a falada lentidão não passa de lenda hoje em dia, e que é possível utilizar os mais modernos recursos atualmente disponíveis no mercado. Na próxima edição, iremos abordar algum ponto mais específico, e você pode ajudar a escolher qual será esse ponto. Acesse o site da JogosPro e-Magazine e opine nos forums! Figura 7: SquareHeads, com um mapa de Quake 3 S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine por Alandro Vieira dos Reis Videogames no Cyberpunk de William Gibson Sobre William Gibson: Escritor norte-americano de contos e romances de ficção científica dos anos 1970, consagrou-se na década de 80, ao criar o estilo Cyberpunk. Atuou no roteiro de filmes para o cinema e alguns episódios de X-Files. Hoje aposentado, mora no Canadá. Ficção Científica: Reflexão e Antecipação As mudanças na sociedade decorridas dos avanços tecnológicos costumam mexer com a imaginação dos escritores, que tem por hábito criar histórias que expressam seus anseios e sonhos quanto às novidades que a ciência e a tecnologia trazem ao mundo. Podemos inferir que além de um eficiente termômetro dos anseios causados pelas mudanças tecnológicas, as histórias de um tempo também podem subsidiar reflexões sobre as novas tecnologias e costumes e até mesmo ligeiras antecipações. Este artigo trata das antecipações presentes no livro Neuromancer, de William Gibson, sobre os jogos eletrônicos como componente da cultura, o texto conclui-se compartilhando com o leitor as reflexões que William Gibson propõem em sua poesia elétrica hightech. O Movimento Cyberpunk O cyberpunk, herdeiro de “1984” de George Orwell, é a ficção científica do nosso tempo, tendo gerado filmes de grande sucesso como a trilogia Matrix. No início da década de 1980, William Gibson definiu o cyberpunk, marcado pelo viés noir (tramas policiais com densidade psicológica), muita ação e inquietações filosóficas, tendo por pano de fundo um futuro onde as tecnologias moldam cada aspecto do modo-de-vida de todos. A importância do cyberpunk pode ser avaliada além do cinema, das histórias em quadrinho e livros. O próprio termo cyberespaço, hoje tido como sinônimo de internet, foi inventado por William http://www.jogospro.com.br Gibson, que também influenciou a NASA a usar luvas e capacetes de imersão para treinamento de astronautas através de jogos eletrônicos de simulação. Como cerne deste artigo, tratarei de “A Matrix teve sua origem nos primitivos jogos eletrônicos”. (trecho de Neuromancer, escrito em 1984) outro fator que testemunha a importância dessa ficção científica para nós: as antecipações sobre os jogos eletrônicos feitas por Gibson, presentes em seu futuro ficcional. Futuro esse que, até certo ponto, já é o nosso presente. Jogos Eletrônicos em Neuromancer Basicamente há seis componentes muito comuns dos jogos eletrônicos dos dias de hoje que William Gibson antecipou, com cerca de 15 anos de antecedência, com sua ficção científica. 1. Hackers A mais freqüentemente explorada situação de jogo eletrônico em Neuromancer é a atividade hacker. Descrita como um estimulante jogo de invasão, de burlar regras e quebrar barreiras do Sistema. O risco alucinante, os ganhos exorbitantes, as possibilidades de punições terríveis, tudo isso faz parte do jogo da invasão. O protagonista da história é Case, um super-hacker com habilidades incomuns de invadir e controlar sistemas de informação. Contudo, sua habilidade ganha dimensões de vício. Gibson, com Case, aborda o comportamento de jogo compulsivo, com todas as implicações patológicas que dele decorrem, como a desagregação contínua da vida de seu anti-herói. 2. Realidade Virtual Intrinsecamente associada à primeira, está a imersão em mundos virtuais. Descrita pelo autor como “adentrar numa alucinação consensual”, a imersão é realizada por neuroimplantes e dispositivos digitais, e opera uma separação da mente e do corpo, sendo que a primeira é revestida de um personagem digital como roupagem. A realidade virtual tem por características o dinamismo do hipertexto, a vida pulsante de uma floresta, a possibilidade de criação e recriação incessantes. Explorá-la é construí-la. Os navegadores desse Novíssimo Mundo são os usuários, que também exercem o papel de criadores deste. É a vez de Gibson alertar para o patológico desejo de alienação, de fuga da realidade: os usuários compulsivos do cyberespace trocam suas vidas por simulacros, numa relação esquizóide com as máquinas. S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine 3. Jogos de Simulação Uma vez inserido no cyberspaço, Case é orientado por uma inteligência artificial chamada Linha Plana, que atua como mentor em sua jornada pelos mundos virtuais, e lhe informa opções mais acertadas. Se a imersão de Case for vista como um jogo de navegação, Linha Plana funciona como um navegador ou gestor técnico da simulação. Em outros livros, como em Idoru, Gibson sugere que algumas inteligências artificiais também teriam por função orientar a criação e gestão de mundos virtuais pelos usuários, num imenso jogo de simulação de cidades, países, reinos. As semelhanças desses relatos ficcionais com jogos atuais de simulação, como SIM City, não param por aí. Uma vez criada uma cidade virtual, ela é povoada por pessoas simuladas, que vivem suas vidas artificiais reguladas por algoritmos dos usuários. Jogos de simulação semelhantes fazem imenso sucesso neste início de século XXI, como o mais vendido de todos os tempos, The SIMs. clara referência ao roleplaying game(RPG) mais popular nos EUA nos anos 80: o Dungeons&Dragons. Falar de pessoas conectadas todas num mesmo RPG digital significa a antecipação dos massive multiplayer on line games (MMOG) como Never WinterNights, Dark Ages of Camelot, etc. Em outro livro, Idoru, tal conceito é desenvolvido, e figuram em cena comunidades virtuais, tais como conhecemos hoje em sites como Orkut, porém numa versão de realidade virtual imersiva gerida por inteligências artificiais. 6. First Person Shooters O episódio notoriamente que mais lembra ra pessoa, inclusive cenas de luta, fuga e perseguição alucinantes. Impossível ler a narração do episódio sem pensar em jogos do tipo first person shooter, como Counter Strike. Reflexões Ao contrário do que se costuma crer comumente, a cybercultura já possui uma História de mais de 20 anos (Neuromancer é de 1984) e conta até com uma densa ficção científica correlata que investiga filosófica e psicologicamente sua estrutura. O modo como os jogos eletrônicos são antecipados na obra de William Gibson confirma a importância da visão deste autor, suas reflexões sobre tais práticas lúdicas. Gibson, dentre outras coisas, nos alerta para o jogo compulsivo, a fuga da realidade em nome da virtualidade e a banalização do real em detrimento de simulacros, e outros temas que se tornam reflexões filosóficas e emanam da leitura de Neuromancer, que constitui-se o livro fundador e até hoje a ficção mais importante da cultura digital. 4. LAN Houses Casas de jogos eletrônicos figuram regularmente em ambientes noturnos em Neuromancer. Seja em Tóquio ou nas megalópoles dos EUA, surgem grandes salões onde dezenas ou centenas de pessoas estão todas conectadas a uma realidade virtual lúdica. As casas de jogos, curiosamente, são freqüentadas em sua maioria por jovens e adultos. O autor não fala de adolescentes e crianças. Mulheres também constam nas casas de jogos da ficção cyberpunk de Gibson. Em sua visão antecipatória, a faixa etária dos jogadores iria aumentar e a participação feminina seria importante no mundo dos jogos eletrônicos, proposições essas que provocariam risos se fossem ditas há 15 anos. 5. MMOGs Em um dado momento, Gibson descreve um jogo dessas casas de jogos como sendo um jogo de estratégia ambientado num calabouço de um castelo medieval, numa OBS: Para a escrita deste artigo usei como referência a seguinte versão em português de Neuromancer: GIBSON, William. Neuromacer. Editora Aleph, 3a edição, 1a reimpressão, São Paulo: 2003. Alessandro Vieira dos Reis [email protected] http://www.certi.org.br/~avr/ Figura: Capa do Livro Neuromancer os atuais jogos eletrônicos no livro Neuromancer se dá quando Case, através de uma conexão neurodigital (chamada no livro de SIMStim, simulated stimulation, ou “estimulação simulada”), consegue receber as informações sensoriais de Molly, passando a ser como uma câmera na mente de sua parceira. Esta, uma habilidosa guerreira, invade uma instalação inimiga, contando com a monitoração e orientação de Case, que percebe toda a experiência em primei- O evento será realizado na cidade de Curitiba no Paraná, também nesta cidade, em data próxima ao SBGames, será promovido o SIBGRAPI2004 (Simpósio Brasileiro de Computação Gráfica e Processamento de Imagens) e o SIAGG-2004 (Simpósio Ibero-Americano de Computação Gráfica). Confira tudo em: http://wwwusers.rdc.puc-rio.br/sbgames/ http://www.jogospro.com.br S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine Coluna Jogos Open Source Utopia, modismo ou necessidade ? por Julio Marchi Desenvolver jogos de computador sempre foi um dos mais comuns ideiais de motivação para que os jóvens ingressassem na área de programação de computadores. Muitos de meus amigos – e inclusive eu mesmo – começaram a escrever suas primeiras linhas de código voltadas “àquele jogo fenomenal” que ninguém tinha feito ainda. Entretanto, a esmagadora maioria dos que iniciaram por este caminho não chegaram a alcançar este objetivo primário. Em critérios gerais, desenvolvimento de jogos para computador é um dos maiores desafios que um programador pode encontrar. É necessário ter o domínio de inúmeras técnicas complexas para que se possa produzir um simples joguinho. Não obstante, há poucos anos atrás, o maior agravante que enfretávamos era a quase total inexistência de documentações sobre o tema. Não existiam exemplos e ferramentas específicas para isso como atualmente; e não haviam sequer tantos recursos avançados - e simplificados – destinados exclusivamente ao desenvolvimentos de jogos. Entre isso e outras realidades, a soma dos fatores foi fazendo com que muitos - assim como eu, que tomei gosto pelos computadores graças aos jogos – estudassem computação à fundo para acabar tendo o foco produtivo em outras coisas mais factíveis, deixando o desenvolvimento de jogos, que era o objetivo primário, apenas como uma “doce recordação”. Se antes desenvolver jogos de computador era uma questão de ter boas idéias e de ser um excelente Julio Marchi é Analista de Sistemas formado especilizado em engenharia de software, network, multimídia e Internet. Atualmente é CEO de duas empresas nos EUA e desenvolve diversos projetos técnicos e áudio-visuais para outras empresas. http://www.jogospro.com.br programador - ou fazer parte de um bom grupo -, hoje desenvolver um jogo assemelha-se mais à produzir um filme de Hollywood do que simplesmente programar. Não é que não hajam mais espaços para os jogos simples e de baixos recursos, porque atualmente, em se tratando de informática, há espaço para quase tudo... Eu me refiro em termos mercadológicos, onde a competição de se “vender” jogos obriga que o produto tenha muitas características avançadas como: música e efeitos sonoros, um “roteiro” envolvente, qualidade gráfica - mesmo em 2D -, jogabilidade, boa apresentação, propaganda e preço. Pode até não parecer, mas para alcançar um nível suficientemente bom e atrair a atenção do consumidir neste mecado altamente competitivo é como embarcar uma “Luta de Titãns”. Em termos gerais, decidir produzir um jogo mediano e de apenas boa qualidade geral, pode chegar a representar um investimento inicial de mais de US$ 50.000,00, o que para países como o Brasil é um investimento demasiadamente alto para arriscar em um mercado ainda emergente, o qual já sofre com a influência do milionário mercado internacional. Mas, como atualmente a velocidade da informação já desbancou a da luz, as dificuldades se apresentam de um lado e as soluções emergem de outro. Com o avanço da tecnologia tudo tem ficado mais fácil, e o desenvolvimento de jogos não tem sido uma excessão. Alem das novas ferramentas que surgem a cada dia, há também um infindável e crescente acervo de informações, exemplos e “bibliotecas” que colaboram para diminuir o tempo de desenvolvimento de um jogo, o que reflete diretamente no investimento necessário. Com o advento da Internet surgiram também novas linhas de “negócios”, mais baratas e diretas – e ainda pouco exploradas -, que quando bem utilizadas podem atualmente fazer a difereça entre o sucesso e o fracasso de um produto. Ainda graças à grande facilidade de intercâmbio que a Internet oferece globalmente, os produtos “open source” têm S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine Coluna obtido grande atenção da comunidade desenvolvedora global. Os resultados destes últimos anos e o sucesso de diversos programas desenvolvidos nesta “parceria”, com a colaboração “gratuita” de incontáveis pessoas de todas as partes do mundo, já comprovam que o open source e seus “rabichos” vieram para ficar. Open Souce soa lindo de todas as formas que se escuta, mas ainda traz algumas “discussões” que tendem a esquentar nos próximos anos. Mesmo a famosa licença GPL já vem levantando polêmica principalmente porque muito dela não se adequa à diversas Leis locais de software de vários países. Não obstante, Open Souce para o mercado de jogos distôa do conceito principal da essência deste mesmo mercado: a comercialização. Mesmo que um jogo de alto nível, desenvolvido via Open Souce, fosse vendido por apenas UM DÓLAR, ainda assim haveriam outros problemas intelectuais com relação a vários pontos: 1) O mais caro de um jogo, e o mais importante, é sua ENGINE. Uma “engine Open Source” tem uma grande possibilidade de ser a melhor que existe, mas por ser Open Souce nada impedirá que esta seja usada indiscriminadamente em produtos comerciais de terceiros; 2) Jogos, ao contrário de outros produtos computacionais, não se restringem somente ao código do programa, mas também às animações, enredo e conteúdo musical, e o Open Source não abrange nada disso; 3) O mercado Open Source fica automaticamente FORA do mercado de consoles (XBox, PlayStation, GameCube) por questões de licenciamento, perdendo uma grande e crescente fatia do mercado consumidor de jogos. Se formos explorar e comparar a idéia de “Open Source para aplicativos gerais” com a aplicação do “Open Source para desenvolvimento de jogos” serão demasiados os pontos controversos, mas existe um em específico que mais chama minha atenção: projetos “Open Source” normalmente NUNCA terminam! De tempos em tempos são lançadas novas e mais novas versões do programa com melhorias gerais e mais recursos. Eu não consigo ver esta mesma “característica” do Open Source adaptando-se aos jogos. Jogos são produtos de consumo direto: compra-se, joga-se, termina-se o jogo e pronto! Não usamos jogos como aplicativos no nosso dia-a-dia e não existe muito esta coisa de adicionar um novo “feature” num jogo porque quase ninguém vai parar um jogo no meio e recomeçá-lo – por exemplo – por causa de um recurso novo que foi implementado na fase “X”. No máximo implementa-se novos inimigos, níveis, armamentos ou coisas assim para dar mais longevidade ao jogo, mas isso não é nada que não possa ser feito com os “patches” ou “expansion packs”. Não estou dizendo aqui que jogos Open Source não têm seu espaço ao Sol porque a grande verdade é que SIM, é uma excelente idéia! Tão boa que têm até mais espaço e potencial do que muitos aplicativos que eu tenho visto no SouceForge, por exemplo. O que estou dizendo é que, do ponto de vista comercial, eu não vejo futuro para jogos Open Source a não ser no caso de: 1) Jogos Educativos; 2) Jogos para Internet ou; 3) Projetos para Estudo e Aprendizado. Outro ponto controverso que não pode ser esquecido, e que agride diretamente o tema “jogos Open Source” é o foco das plataformas. Como para os “consoles” os jogos Open Source estão descartados, sobram macissamente o Mac e o PC, onde, no caso do PC entram as variantes de Sistemas Operacionais. O problema principal neste ponto é exatamente a ENGINE, que comumente tem que ser o mais otimizada possível para melhor poder usar mais eficientemente os recursos de cada sistema, o que obriga que se desenvolvam versões específicas para cada SO. No caso do Mac não há tanto problema porque o Sistema Operacional hoje é basicamente um só – o Mac OS X. Já o PC sofre atualmente com as variações de SO’s disponíveis, onde os mais contundentes são Windows e Linux. Para agravar o quadro, cada um destes possui suas próprias “sub-variações”, que “Projetos Open Source normalmente NUNCA terminam!” http://www.jogospro.com.br S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine Coluna podem diferenciar-se em pontos chaves no que tange às necessidades dos jogos. O Windows pelo menos tem o DirectX, mas para Linux esta idéia está apenas engatinhando. Ainda no enfoque PC, o Linux perde o mercado de “usuários finais” - entenda-se “leigos” – pois seu uso pelo público geral ainda é bem modesto, o que leva o enfoque do desenvolvimento de jogos comercialmente lucrativos para a plataforma Windows. Em suma, por dependência de recursos (som, animação, engines, etc.) os jogos Open Source são uma grande idéia que já nasce com grandes problemas. Nos EUA essa idéia tem tido muito boa aceitação, só que muito mais enfocada no conceito de estudo e aprimoramento. Entretanto, em países onde o mercado de desenvolvimento de jogos ainda é emergente e a realidade é difícil por conta da forte competição, o Open Source, se bem usado, pode ser uma excelente forma de diminuir os custos na pesquisa e produção de jogos; no aprendizado e desenvolvimento de novas técnicas e, principalmente, no esforço de demonstrar potencial produtivo para os possíveis “investidores”. O maior problema que pode existir talvez nem seja na parte técnica ou artística, mas sim em encontrar uma forma de lidar com as licensas tipo GPL sem criar “conflitos legais” ou “roubo de http://www.jogospro.com.br tecnologia”. Como todo recurso, ferramenta ou idéia, a diferença entre o sucesso e o fracasso de um empreendimento está mais em sua implementação do que em seu conceito geral. Open Source pode ser um grande diferencial, pode ajudar a baixar custos e também melhorar a qualidade final de qualquer produto, mas ainda haverão os critérios intelectual e artístico, assim como o problema no manuseio das licenças. O dia que for encontrada uma fórmula para combinar Desenvolvimento de Jogos com licenças públicas, critérios intelectuais e comerciais o Open Source poderá – e certamente será - uma poderosa ferramenta para, pelo menos, ampliar o mercado de desenvolvimento de jogos no Brasil, permitindo que as empresas brasileiras possam competir mais de perto com produtos das grandes e milionárias empresas internacionais. por Julio Marchi S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine Entrevista Fábio Binder O professor Fábio Binder é coordenador do curso de pós-graduação em desenvolvimento de jogos do Unicenp. Foi pioneiro na sua área ao lançar esse curso, quando na área acadêmica ainda não se houvia falar em curso de jogos. A JogoPRO foi conversar com o Binder e saber como anda a academia e o mercado brasileiro de jogos. JogosPRO: Fábio, em 2001 você teve a iniciativa de criar o primeiro curso de pós-graduação da América do Sul em desenvolvimento de jogos. Formando os primeiros profissionais em jogos brasileiros. Como surgiu essa iniciativa? Fabio Binder: Eu já trabalhava há vários anos tanto na área acadêmica quanto no desenvolvimento de jogos educacionais. O “pulo do gato” aconteceu em 2000 quando assumi a coordenação do curso de especialização em Web do Unicenp e percebi que existia assunto suficiente para montar um curso de desenvolvimento de jogos. O momento era propício devido a algumas reportagens sobre jogos no Paraná. Montei a proposta do curso que foi prontamente aprovada. Esbarrei na falta de profissionais para ministrar aulas. Pouco tempo depois soube da Gamenet que me ajudou na elaboração do formato definitivo, indicou professores e bancou várias bolsas da primeira turma, tornando o curso viável financeiramente. JP: Já tivemos 2 edições da pós, que balanço você faz hoje? FB: A segunda edição termina agora no final de outubro. O saldo é bastante positivo. Dos 30 alunos que finalizaram ou que estão finalizando o curso, atualmente 11 trabalham com jogos em empresas de jogos, algumas de destaque no cenário nacional como Ignis Games, South Logic e Continuum. JP: No Brasil hoje temos cursos de graduação, workshops e congressos relacionados a jogos. É um mercado em franca expansão? FB: Sem dúvida. Mas isso foi apenas o começo. A consolidação das empresas atuais, o crescente interesse da comunidade e a criação de uma associação sólida de empresas http://www.jogospro.com.br (Abragames que já mostra serviço no seu ano de criação) são fortes indícios de que “neste mato tem coelho”. JP: Com esse mercado, a Unicenp pretende ter um curso de graduação em jogos, ou quem sabe um mestrado? FB: O Unicenp está começando em cursos de mestrado. No ano que vem teremos o mestrado em “Tecnologias Educacionais”. Alunos que fizerem o curso de jogos poderão descontar créditos do mestrado. Por sua vez, alunos do mestrado poderão fazer determinados módulos “Dos 30 alunos que finalizaram ou que estão finalizando o curso, atualmente 11 trabalham com jogos, ...” do curso de jogos contando como créditos para seu mestrado. Além disso, a graduação do Unicenp já aceita há alguns anos, jogos como projeto final de curso. Eu devo ter orientado uns 15 projetos nesta área nos últimos 10 anos. JP: O Brasil forma profissionais em desenvolvimento de jogos, a comunidade está cada vez mais organizada, temos empresas com jogos publicados, mas parece que falta alguma coisa. Você, como desenvolvedor e educador, tem uma explicação? FB: Eu acho que isso é apenas uma falsa impressão. À medida em que as empresas atuais lançarem mais jogos (aqui ou no exterior) e desco- brirem “novos” modelos de negócio eficientes, o mercado se consolidará de vez. Outras empresas seguirão a onda e logo (se o governo não inventar moda...) todos saberão que existe desenvolvimento de jogos no Brasil. Mas é claro que se houvessem mais investidores dispostos a tirar dinheiro do bolso isso já teria acontecido. JP: Há 2 anos não se ouvia falar em jogos em faculdades, como você vê a área acadêmica de jogos no Brasil nos próximos anos? FB: Observando os números dos cursos atuais, parece que ainda existe um bom espaço para crescimento. Os cursos do Unicenp, Puc-Rio e Anhembi-Morumbi já vão para sua terceira turma. No Rio de Janeiro, a T&T que oferece cursos técnicos em jogos possui mais de 100 alunos só nesta área. Em diversas universidades brasileiras (Puc-Rio, UFRJ, USP, Puc-PR, UFPE, UFRS, entre outras) existem pessoas trabalhando em dissertações e teses relacionadas ao desenvolvimento de jogos. Gente competente e vontade é o que não falta. JP: O que você recomenda para quem esta começando? FB: Primeiro, jogar bastante e descobrir sua área de afinidade. Conversar com pessoas da área e começar cedo com jogos simples feitos em ferramentas de autoria (flash, rpgmaker, Doom3Maker :o), etc) é uma atitude inteligente. Aliás, estes pequenos jogos, que são motivo de “nariz torcido” por parte de alguns, estão sustentando muita gente por aí. Fazer um bom portfolio é importante, pois no momento em que surgir uma boa oportunidade é melhor já estar preparado. S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine por Bruce “Sinner” A R T I G O S Introdução ao OpenGL Shading Language A introdução de hardware gráfico programável no mercado abriu uma nova era para a Renderização em Tempo Real. Com ele é possível desenvolver pequenos programas (shaders) que são executados diretamente na GPU, com uma performance bem maior por causa disso. A utilização de shaders permitiu artistas e desenvolvedores produzirem efeitos especiais sofisticados que antes eram renderizados offline, em hardware simples e barato. O aumento do uso dos shaders, que no ínicio eram desenvolvidos em assembler, levou à criação de linguagens mais sofisticadas e de alto nível, semelhantes as linguagens já utilizadas como C++ ou Java. Uma dessas linguagens, a OpenGL Shading Language (GLSL) foi recentemente lançada e passou a ser suportada somente agora, com o lançamento dos drivers da série 60 da NVidia. Ao longo desse texto mostrarei suas características, sintaxe, futuras implementações, como integrá-la ao OpenGL, al[em de alguns exemplos. Farei também, uma pequena comparação entre ela e outras duas linguagens bastante difundidas, a HLSL da Microsoft e a Cg da Nvidia. letal Animation, Bump Mapping, Parallax Bump Mapping, Glow, Morphing, texturas procedurais em runtime (Figura 1) e outros mais. Os shaders estão disponíveis no OpenGL desde 2002 através das extensões ARB_vertex_program e ARB_fragment_program mas tinham que ser codificados em assembler, o que não os tornava muito popular. Com o surgimento de linguagens de alto nível para os shaders, como a HLSL da Microsoft e Cg da Nvidia, foi desenvolvido a GLSL, uma linguagem de alto nível também, que permitiu o desenvolvedor a escrever seus shaders numa linguagem similar ao C/C++ tornando a tarefa muito mais fácil ! Por quê usar Shaders e GLSL? Um programa típico feito com a GLSL geralmente é composto de um par Vertex Shader e Fragment Shader: O hardware gráfico antigo (GeForce 256, Radeon 7000 ) somente permitiam que o pipeline gráfico fosse configurado e não programado. Isso limitava a quantidade de efeitos especiais e técnicas avançadas, que deveriam ser simuladas em software, o que por muitas vêzes impossibilitou a utilização deles em tempo real. Um exemplo disso são os modelos de iluminação do OpenGL. Os modelos Ambient, Diffuse, Specular e Emissive são largamente utilizados mas há outros também como o de Phong por exemplo. Com shaders, é possível programar outros modelos de iluminação. Outros efeitos interessantes também são possíveis, como: Soft Shadows, Environment Mapping, Per-Pixel Lightning, Skehttp://www.jogospro.com.br Características da GLSL Vertex Shaders Um Vertex Shader opera em todos os vértices enviados para o pipeline. Então a cada chamada a glVertex ou glDrawArrays é executado o shader. Vertex Shaders são usados para se ter amplo controle sobre a posição de cada vértice a ser renderizado. Exemplos de uso são em animações skeletais, morphing entre dois modelos 3D, a criação de efeito de ondas sobre uma malha de polígonos, etc... Fragment Shaders Um Fragment Shader opera sobre todos os fragmentos produzidos pela rasterizaçãodo OpenGL. Um fragmento é mais do que um simples pixel. Ele também possui informação como cor, depth, stencil, etc... Tipos de dados A GLSL possui quatro tipos principais: float, int, bool e sampler. Figura 1: Modelos 3D mostrando efeitos que são possíveis de se fazer usando Shaders. Bruce “Sinner” é desenvolvedor profissional e atualmente desenvolve um simulador virtual da linguagem visual dos surdos em C++ e OpenGL. Quando não está programando diverte-se assistindo Tom & Jerry com seu filho no Cartoon Network. S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine A R T I G O S Existem também tipos que funcionam como array dos tipos principais. São eles: Float: vec2 vec3 v e c 4 Int: ivec2 ivec3 i v e c 4 Bool: b v e c 2 b ve c 3 b v e c 4 Matrizes: m a t 2 m a t 3 m a t 4 O tipo matriz é composto apenas por floats. O tipo Sampler é usado para operações com texturas. Attributes, Uniforms, Varyings e Const A GLSL também possui qualificadores de tipo que são: Attributes: Apenas estão disponíveis no Vertex Shaders. São valores de entrada que mudam para cada vértice processado, como sua posição ou normal, por exemplo. Os Attributes são read-only. Uniforms: São valores que não mudam durante o rendering, como a posição da luz por exemplo. Estão disponíveis nos Vertex e Fragment Shaders. Os Uniforms são read-only. Varyings: São usados para passar informações do Vertex para o Fragment Shader. Eles são read-only nos Fragment Shaders mas permitem leitura e escrita nos Vertex Shaders. Devem ser declarados de forma idêntica nos Vertex e Fragment Shaders que os usarem. Constants: Não podem ter seu valor alterado, assim como no C. Geralmente guardam valores dependentes da implementação do OpenGL que se está usando como o número máximo de luzes por exemplo. Read-Only por razões óbvias. Os qualificadores Atributes, Uniforms e Varyings devem ser sempre declarados globais. Uniforms: gl_ModelViewMatrix: matriz 4x4 representando a matriz de modelview. gl_ModelViewProjectionMatrix: matriz 4x4 representando a matrix de projeção. Esses foram alguns exemplos. Há também Varyings pré-definidos e muito mais Uniforms e Attributes. Consulte a seção Links para ter acesso à documentação. A criação de texturas procedurais em runtime são um ótimo exemplo do quão poderoso os shaders podem ser. Na listagem 1 mostro um exemplo de como criar uma textura simulando uma parade de tijolos. Na figura 2 pode-se ver o resultado. É possível também criar seus próprios Attributes, Uniforms ou Varyings personalizados como mostra os exemplos abaixo: attribute vec3 rotacao uniform mat4 matrix_de_textura varying vec3 vetor_normal Figura 2: Resultado do Shader Funções A GLSL já possui algumas funções para ajudar o desenvolvedor nas tarefas mais rotineiras. Alguns exemplos: abs, Listagem 1: Brick Shader Exemplo. // Vertex Shader uniform vec3 LightPosition; const float SpecularContribution = 0.3; const float DiffuseContribution = 1.0 - SpecularContribution; varying float LightIntensity; varying vec2 MCposition; void main(void) { vec3 ecPosition = vec3 (gl_ModelViewMatrix * gl_Vertex); vec3 tnorm = normalize(gl_NormalMatrix * gl_Normal); vec3 lightVec = normalize(LightPosition - ecPosition); vec3 reflectVec = reflect(-lightVec, tnorm); vec3 viewVec = normalize(-ecPosition); float diffuse = max(dot(lightVec, tnorm), 0.0); float spec = 0.0; A GLSL já possui uma lista de qualificadores pré-definidos e que podem ser utilizados. Abaixo cito alguns exemplos: } if (diffuse > 0.0) { spec = max(dot(reflectVec, viewVec), 0.0); spec = pow(spec, 16.0); LightIntensity MCposition gl_Position Attributes em Vertex Shaders: http://www.jogospro.com.br Exemplo de Shader Attributes, Uniforms e Varyings Personalizados Attributes, Uniforms e Varyings Internos e Reservados gl_Vertex: Vetor 4D representando as coordenadas do vértice sendo processado. gl_Normal: Vetor 3D representando as coordenadas da normal do vértice. floor, ceil, mod, noise1, etc... Para uma lista completa consulte as referências citadas na seção Links desse artigo. = DiffuseContribution * diffuse + SpecularContribution * spec; = gl_Vertex.xy; = ftransform(); } S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine A R T I G O S Listagem 1: Brick Shader Exemplo. (cont.) // Fragment Shader uniform vec3 uniform vec2 uniform vec2 BrickColor, MortarColor; BrickSize; BrickPct; FarCry, Unreal 2004) talvez impulsione as fabricantes e façam com que a GLSL se estabeleça de vez como uma das linguagens padrão de desenvolvimento de shaders no mercado de computação gráfica. varying vec2 MCposition; varying float LightIntensity; Links 3Dlabs, principal desenvolvedora do GLSL http://www.3dlabs.com void main(void) { vec3 color; vec2 position, useBrick; OpenGL Shading Language (Orange Book) http://www.3dshaders.com position = MCposition / BrickSize; ATI GLSL exemplos http://www.ati.com/developer/sdk/RadeonSDK/Html/ Samples/OpenGL/GLSLSimpleShader.html if (fract(position.y * 0.5) > 0.5) position.x += 0.5; position = fract(position); useBrick = step(position, BrickPct); } color = mix(MortarColor, BrickColor, useBrick.x * useBrick.y); color *= LightIntensity; gl_FragColor = vec4 (color, 1.0); Site pessoal do Humus com diversos exemplos interessantes http://esprit.campus.luth.se/~humus Site pessoal de Zaprjagaev Alexander. Seus últimos exemplos usam GLSL http://www.frustum.org OpenGL Shading Language Designer http://www.typhoonlabs.com OpenGL Brasil http://www.opengl.com.br Como integrar os Shaders ao OpenGL A integração dos Shaders é simples e direta utilizando-se extensões do OpenGL. Para isso você deve transformar seu Shader Source (código fonte do shader) em um Shader Object. Então, compilar o Shader Object. Feito isso, deve-se linkar o Shader Object compilado ao Program Object que é obtido diretamente da própria aplicação OpenGL. Na Listagem 2 mostro um exemplo de como fazer isso tudo: Conclusão A GLSL se mostrou como uma linguagem eficiente, muito promissora e de fácil integração a qualquer design existente. O grande problema dela hoje é o fraco suporte que as grandes fabricantes de placa de vídeo oferecem. Apesar dos drivers novos da Nvidia (série 60) e da ATI (Catalyst 4.3) já oferecerem suporte a GLSL, não espere uma impletanção completamente estável e livre de bugs. Mas com a tendência de todos os games do futuro de utilizarem os shaders para efeitos especiais (como já fazem Doom3, http://www.jogospro.com.br Listagem 2: Exemplo de como integrar Shaders ao OpenGL char * my_frag_shader_source; char * my_vert_shader_source; // Obtem o fonte do Vertex e Fragment Shaders my_frag_shader_source = GetFragmentShaderSource(); my_vert_shader_source = GetVertexShaderSource(); GLenum my_program; GLenum my_vertex_shader; GLenum my_fragment_shader; // Cria o Shader e Program Objects my_program = glCreateProgramObjectARB(); my_vertex_shader = glCreateShaderObjectARB(GL_VERTEX_SHADER_ARB); my_fragment_shader = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB); // Carrega os Shader Sources para os objects glShaderSourceARB(my_vertex_shader, 1, &my_vert_shader_source, NULL); glShaderSourceARB(my_fragment_shader, 1, &my_frag_shader_source, NULL); // Compila os Shaders Object glCompileShaderARB(my_vertex_shader); glCompileShaderARB(my_fragment_shader); // Linka os Shader Objects ao Program Object glAttachObjectARB(my_program, my_vertex_shader); glAttachObjectARB(my_program, my_fragment_shader); // Linka o Program Object glLinkProgramARB(my_program); // Usa o Program Object glUseProgramObjectARB(my_program); S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine por Daniel “NeoStrider”Monteiro S A R T I G O S Iniciando no SDL DL. Você já deve ter ouvido falar em algum lugar essas três letrinhas juntas. Talvez tenha sido em algum jogo de Linux...Ou foi em um emulador (mesmo em Windows).Não foi em uma port de alguma aplicação antiga? A probabilidade de algumas dessas perguntas ser verdadeira é muito grande. A SDL está por todo o canto. Mas o que é a SDL além daquela DLL que você precisa ter? O que você precisa para entender de SDL? Tudo que se precisa para a compreensão deste artigo é uma noção de programação concorrente e alguma noção no conceito de plataforma. O que é a SDL? SDL significa Simple Directmedia Layer. Mas o que exatamente significa isso? O fato de ser uma camada de acesso à Mídia Direta (Simple Directmedia Layer) significa que ela atua como uma camada de software, simplificando nosso trabalho na produção de conteúdo multimídia. Como ela é Simples, não podemos esperar tudo pronto dela, pois isso seria de fato um entrave nas tarefas de tradução de aplicações multimídia de outras plataformas. A filosofia simples permite que adicionemos módulos ao nosso gosto. Como funciona essa camada? Ela filtra o que é relevante para a produção de mídia do que é padrão para a inicialização de uma aplicação na plataforma alvo. Para ficar mais fácil imaginar, pense numa aplicação para windows: Dentre muitas inicializações necessárias, é possível escolher muitos tipos de aplicações que o windows suporta. Mas pense em aplicações que usam janelas. Elas, no mínimo, compartilham de algum código de inicialização. Como o que desejamos são aplicações simples multimídia, usando acesso dire- http://www.jogospro.com.br Figura 1: Imagens da Cube Engine, desenvolvida com o SDL e OpenGL. to, todas as nossas aplicações serão focadas na saída em forma de mídia e na entrada do usuário. Foco na saída de mídia é algo constante para a SDL. Por pensar em acesso direto à tela cheia e não em janelas múltiplas, é fácil pensar que todas as aplicações candidatas a serem feitas em SDL teriam uma inicialização parecida se feitas em Windows. Por fim, esta camada tem uma terceira função: ela funciona de forma multi-plataforma. Sim, se você quer que seu programa Windows rode em Li- nux, por exemplo, e não quer alterar seu código quase nada ou até mesmo sem altera-lo, a SDL permite isso. Basta seu programa ser feito usando apenas componentes comuns. Como é um programa SDL A SDL trabalha em sistemas operacionais multitarefa, portanto ela precisa responder a eventos do seu ambiente de execução. Normalmente os programas em SDL envolvem três ou quatro partes: Daniel Monteiro é aluno da Universidade Federal Fluminense e programador de jogos indie nas horas vagas.Enquanto não esta envolvido com desenvolvimento para móbiles (Symbian C++ em Series 60 1.0) e SDL ele gasta seu tempo em diversas atividades, que vão de jogar Xwing vs Tie-Fighter (como imperial , lógico) a pesquisar sobre música. S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine A R T I G O S Inicialização: Tipicamente contém SDL_Init() e inicialização de recursos Tratamento de eventos: Aqui é necessário tratar eventos do Sistema. A SDL já filtra o que é pertinente a seu programa, então não é necessário despachar o resto dos eventos. Operações de dados internas: Aqui se processa e exibe surfaces, se envia dados de áudio para a SDL, etc. Desinicialização: Aqui dealocamos todos os recursos alocados e liberamos a SDL. Aqui não precisamos necessariamente terminar nosso programa, mas após SDL_quit, não devemos mais usar nada de SDL. A Inicialização Na inicialização, usamos principalmente Sdl_init para incializar os sub-sistemas da SDL. Mas por que incializar módulos separados? SDL é uma API feita para funcionar em diferentes variedades de plataformas e para sistemas onde determinados recursos inexistem, esta é uma forma de evitar problemas nas adaptações. A forma mais geral de incializar é incializar tudo com SDL_Init(SDL_INIT_ EVERYTHING). Vale lembrar que os subsistemas da SDL devem ser usados com cuidado e usar SDL_INIT_EVERYTHING não é uma boa solução para todos os casos. Quanto a inicialização de recursos, o mais comum é incializar surfaces, seja carregando arquivos de imagens pronto, quanto criando surfaces vazias na memória.Outros recursos interessantes são áudio e operações de leitura de dados de CDROM e armazenamento persistente de forma independente de plataforma. Tratamento de eventos Este pedaço é mandatário para programas interativos, mas quando se trata de um programa curto que realiza alguma operação e finaliza, não é necessário tratar eventos. O tratamento de eventos ocorre de forma independente de plataforma e não usa uma função de callback para tratamento geral (como é comum se acredihttp://www.jogospro.com.br tar). Tudo pode ocorrer em uma linha, se não for desejo do criador que seu programa trate eventos, mas que ao menos despache para o sistema os eventos que não são de sua pertinência. Em geral tudo é feito de um switch(),que deve ser chamado explicitamente pelo programador, com o cases sendo os tipos de evento. Marathon - Jogo de MacOS refeito em SDL e rodando Neste ponto é que norperfeitamente em Windows. malmente se obtém a entrada do usuário. Vale lembrar que os Ela merece descansar. Um problema vários dispositivos de entrada possuem comum nos programas SDL em seu essua própria filosofia de informar intera- tágio inicial é o desleixo com esta parte fundamental do programa. Por fim, sesção. sões intermináveis de sucessivas execuções da aplicação – que aloca sem deOperações de dados internas salocar recursos – resulta em memória Agora acontece o processamento que a fragmentada e problemas na alocação SDL tanto espera que o desenvolvedor de dados por parte de execuções de oufaça: a manipulação de dados e a ope- tras aplicações. Neste ponto, encerrar o ração de saída de dados na forma mul- comprometimento com determinados dispositivos pode ser importante para timídia. seu funcionamento. Negligenciar isto Mais uma vez, como ocorre na entrada pode levar a resultados imprevisíveis. de dados, cada dispositivo de saída tem O que eu tenho com tudo isso? sua forma de saída: • O vídeo funciona por simples operações de surfaces, sendo que o resultado deve ser copiado para uma surface que representa a tela. Esta surface tem uma série de funções de auxílio, da mesma forma que as surfaces de memória tem suas funções especificas, sendo que o uso de funções de uso geral com a surface de tela pode gerar resultados imprevisíveis. • O sistema de áudio funciona de forma bem próxima ao que se pode esperar da programação dos sistemas em modo real. Devemos enviar dados continuamente para o dispositivo de áudio. Pelo menos desta vez temos um toque de modernidade, pois isso é realizado por uma função de Callback. Assim, criamos essa função e eliminamos nossos problemas. Deinicialização Neste ponto cabe a liberação de todos os recursos alocados (surfaces, chunks de áudio, etc) e a finalização da SDL. Uma aplicação multimídia é feita de entrada e saída em diferentes formas de mídia. O resumo acima acabou de mostrar uma pequena fração de tudo que a SDL tem a oferecer ao desenvolvedor sem medo. Arrisque-se a visitar www.libsdl.org para ver o que já foi feito, o que esta se fazendo, o que esta para ser feito e o que você pode ajudar a fazer. Links Site Oficial do SDL http://www.libsdl.org Site do Autor http://www.makingthegame.tk Diversos Artigos de SDL traduzidos http://www.pdj.com.br Cube Engine http://www.cubengine.com Marathon 2 http://marathon.bungie.org Tutoriais de SDL + OpenGL http://cone3d.gamedev.net S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine por Wilson “WolveWilson” Jr. A R T I G O S 2D .NET games: Usando GDI+ (Parte 1 de 3) N este artigo veremos como a GDI+, que é utilizada para gráficos simples em .NET, pode ser utilizada para a criação de jogos 2D de forma simples e funcional. Nesta primeira parte aprenderemos os conceitos; Na segunda parte passaremos para recursos mais avançados; Na terceira e última, iremos partir para a implementação de um jogo. Introdução ao GDI+ O Windows contém muitas opções de controles que são usados para exibir informações. Como não é impossivel cobrir todas as necessidades de todas as aplicações, alguns programas não fazem uso desses componentes ‘standard’. Eles optam por criar seus próprios gráficos, imagens , shapes (formas) e etc... Para atender a essas necessidades, o desenvolvedor tem a sua disposição a API chamada GDI+. Antes de começar ‘sujar’ nossas mãos com código, vamos estudar as técnicas principais que estaremos usando. O namespace de System.Drawing contem todas as classes que nos ajudarão realizar nosso objetivo. Existe também o namespace mais avançado, o System. Drawing.Drawing2D, este poderia gerar um novo artigo inteiro, assim como as especializações System.Drawing.Printing especializado, System.Drawing.Text e System. Drawing.Imaging, que fornecem imprimir, tipografia e e suporte a imagens. Estaremos falando sobre eles e nossos próximos artigos. Começando pelo System.Drawing, vamos examinar as classes mais importantes para nós. A classe Graphics é fundamental aqui, e re- http://www.jogospro.com.br presenta um contexto de display (exibição). Um contexto de display pode ser considerado como um objeto genérico que fornece alguns métodos para desenhar shapes clássicos (linhas, curvas etc..), texto, usando vários estilos da linha (“pens”) e estilos da preenchimento (“fills”). Dessa forma o programador não tem que se preocupar com hardware e dispositivos de saída específicos. As funções e a maneira como são usadas são as mesmas em computadores com hardware diferente. Um programador não cría explicitamente objetos dos gráficos usando o operador new. Na maioria das vezes, o objeto é obtido indiretamente pelos argumentos passados do sistema operacional à aplicação. Uma vez que nós temos o objeto em nossas mãos, é muito fácil extrair formas usando seus métodos self-describing. Por exemplo, o método de DrawImage() nos exibe uma imagem, enquanto que o DrawLine(), o DrawRectangle(), o DrawCurve() e o DrawArc() são usados criar formas básicas. Há algumas classes no namespace de System.Drawing que pode ser passadas como parâmetros a estes métodos. A classe Pen é usada para especificar um estilo da linha usado para desenhar a forma e a classe Brush especifica um estilo de preenchimento para formas fechadas. Há algumas classes úteis em especificar áreas e posições na área do cliente (uma área cliente é a parte da janela que uma aplicação tem disponível, que é a janela inteira menos a barra do título, barras de menu/tool, status e barras de scroll). Considerando a posicao 0,0 do formulario o ponto mais alto e mais a esquerda, a classe Point representa um único pixel, cujas as coordenadas sejam mantidas variáveis no membro de X e de Y da classe. X é um inteiro que represente a distância do pixel da parte mais a esquerda da janela do cliente, e Y está a uma distância do ponto 0 (zero). Similarmente, a classe Rectangle (retângulo) representa uma área retangular. Um de seus construtores faz uso de dois objetos do tipo Point (para a parte superior a esquerda e a parte inferior a direita do retângulo). Redesenhando Gráficos Windows é um sistema operacional complexo. Compreender completamente como tudo trabalha não é realmente uma tarefa trivial, Wilson Junior. Formado em Informática pela PUC-RIO. Atua na área de informática a mais de 10 anos. Trabalha como Analista de Negócios e tem como hobby a programação de jogos. Já programou em Basic, C, C++, Dbase II, Clipper, VB, Delphi, Assembler, e atualmente, C#. Atualmente esta envolvido com o projeto Last Energy um shoot’em up 3D. S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine A R T I G O S Listagem 1: Exemplo mainform.cs using System; using System.Windows.Forms; using System.Drawing; namespace DefaultNamespace { /// <summary> /// Description of MainForm. /// </summary> public class MainForm : System.Windows.Forms.Form { private System.ComponentModel.IContainer components; private System.Windows.Forms.Timer timer1; public int x,y=10; public MainForm() { // The InitializeComponent() call is required for Windows Forms designer support. InitializeComponent(); } [STAThread] public static void Main(string[] args) { Application.Run(new MainForm()); } #region Windows Forms Designer generated code /// <summary> /// This method is required for Windows Forms designer support. /// Do not change the method contents inside the source code editor. The Forms de /// signer might not be able to load this method if it was changed manually. /// </summary> private void InitializeComponent() { this.components = new System.ComponentModel.Container(); this.timer1 = new System.Windows.Forms.Timer(this.components); // timer1 this.timer1.Enabled = true; this.timer1.Interval = 150; this.timer1.Tick += new System.EventHandler(this.Timer1Tick); // MainForm this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(292, 266); this.Name = “MainForm”; this.Text = “MainForm”; } #endregion void Timer1Tick(object sender, System.EventArgs e) { x =x + 5; y =y + 5; Invalidate(); //Força o repaint em toda a janela, tb pode ser passada a área especifica de refresh por parametro if ((x > 200) & (y > 200)) Application.Exit(); } protected override void OnPaint(PaintEventArgs e) { Graphics dc = e.Graphics; Font fnt1 = new Font(“Tahoma”,30,FontStyle.Bold); dc.DrawString(“teste”, fnt1, Brushes.Black, x,y); } } base.OnPaint(e); } http://www.jogospro.com.br S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine A R T I G O S e operações aparentemente simples requerem muito trabalho do computador. Uma destas tarefas “simples” é a seguinte: Imagine que um usuário está executando dois programas simultaneamente, cada em sua janela separada. O primeiro programa esta exibindo a agenda do dia, e o segundo é um browser internet, exibindo algum Web site. De repente, o usuário move seu browser sobre uma parte do primeiro programa. Eficazmente, essa parte da janela do primeiro programa desapareceu, porque uma outra janela esta sobe ela. Naturalmente, nós temos o sentimento que a informação armazenada lá não é perdida realmente - as janelas devem ter uma maneira redesenhar o que quer que estava lá. E isso é verdadeiro. Se nós movermos, afastando da primeira janela, nosso browser outra vez, a parte do primeiro programa que estava ‘escondida’ se torna visível outra vez. O que está acontecendo realmente? A parte que apareceu não foi recuperada outra vez diretamente para a memória. Seria um desperdício de recursos se o sistema operacional armazenasse a exposição do video de cada programa na memória - imagine que nós podemos ter muitas janelas, uma no alto do outra. De fato, Windows diz somente a aplicação , no nosso caso a primeira, que ela tem que redesenhar uma parte dela, em exibição, por causa de um evento especial (no nosso caso, o mover de uma outra janela), após isso, a aplicação é responsável pelo que acontece. A ação mais comum para a aplicação é, naturalmente, a de redesenhar essa área específica da janela. Windows realiza isso emitindo eventos especiais a cada aplicação. É a forma do sistema operacional de “dizer” aos programas de que algo aconteceu no computador de forma que a aplicação possa executar uma função apropriada. Os eventos fundamentais incluem cliques do mouse e pressionamento de teclas - existem muitos outros eventos emitidos mas em http://www.jogospro.com.br Figura: Saída do programa da Listagem 1. nosso caso, nosso interesse esta nos eventos chamados de Paint (Pintura). O Windows emite-os automaticamente a todos os programas que necessitam redesenhar alguma parte de sua interface do usuário. Em nosso exemplo acima, assim que nós movêssemos a janela de browser para trás para seu lugar original, Windows emitiria ao primeiro programa, um evento de Paint. É como se ele estivesse “dizendo” a esse programa que algo aconteceu e necessita redesenhar uma parte específica de sua janela. A informação de que a parte necessita redesenhar seria passada também junto com o evento. Felizmente, esta mensagem que emite e que redesenha é ‘recebida’ automaticamente pelos controles standard. Realmente, a classe Form (formulário) tem um método chamado OnPaint (que é subscrita ,overridden, da classe do Control), que assegura o ‘redesenhar’ automático. nosso programa necessitará, provavelmente, atualizar seus gráficos não somente quando uma outra janela se move no alto dela, mas quando se minimiza e maximiza outra vez. Isto é, nós emitiremos uma mensagem ao nosso programa que o diga para redesenhar a parte (ou os todos) seus gráficos. A maneira que nós dizemos ao nosso programa para repintar seus gráficos é o método Invalidate(). Nós o encontramos na classe Control, e naturalmente na classe do Form, que a herda. Este método pode ser chamado sem nenhum parâmetro, e neste caso ele redesenhará toda a área do cliente. Mas atualizar partes grandes da exposição de gráficos em intervalos curtos consome muitos recursos. Na maioria de casos, nós devemos chamar o método que especificamos somente para área onde os gráficos atualizados devem aparecer. Geralmente essa área (suas dimensões) é passada como um objeto Rectangle (retângulo). Fim da Parte I Toda a conveniencia de gerencia dos gráficos fornecida pelo Windows, acaba quando chega na GDI+. Windows não mais atualizara automaticamente as partes da janela da aplicação que têm formas desenhadas nelas pela GDI+. Neste caso, nós teremos que subscrever (override) o método OnPaint, que nós mencionamos antes, e especificamos exatamente como o ‘redesenhar’ ocorrerá. Naturalmente, S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine por Matías G. Rodriguez P o s t M o r t e m Postmortem do Harena “Harena é um jogo de luta 3D multiplayer com perspectivas nunca antes vistas neste gênero. Explorando a competitividade cada jogador tentará ser o melhor gladiador em vários tipos de arena, além de buscar o reconhecimento dentro da comunidade da Harena.” -- http://www.harena.com.br O Harena é um demo desenvolvido por alunos da primeira turma de Pós Graduação em Desenvolvimento de Jogos da Unicenp. A Pós Graduação teve duração de um pouco mais de um ano com aulas aos sábados. O projeto foi entregue com atraso de vários meses, por uma equipe de 5 pessoas que nunca tinham desenvolvido um demo muito menos um jogo completo. A seguir vamos ver algumas coisas que deram certo e outras que deram errado ao longo do desenvolvimento. 1. O que deu certo. Reuniões Periódicas: Ao contrário de outras equipes da Pós, todos os integrantes da equipe moravam em Curitiba. Isto facilitava as reuniões que eram feitas uma vez por semana geralmente às quintas-feiras. Tinha bastante pipoca, refrigerante e chocolate. Passavamos horas discutindo partes do jogo como game design, arquitetura de rede para o multiplayer, renderizador, algoritmos, as matérias da Pós, entre outros assuntos. As reuniões fizeram com que a equipe se mantivesse unida mesmo depois do término das aulas. Wiki: Logo no começo do projeto criamos um Wiki para colocar nossas idéias, criar atas das reuniões, colocar arquivos referentes ao projeto, receber idéias dos amigos, etc. Ele foi bastante utilizado, mas mais para o final do projeto, caiu em desuso pois a medida que a empolgação foi diminuindo, o fato de ter que manté-lo era uma atividade tediosa. Para quem não sabe o que é um wiki: http://www. c2.com/cgi/wiki?WikiWikiWeb CVS: Bem antes de ter programado uma linha de código, já tinhamos disponível um repositorio CVS onde todos os integrantes da equipe podiam compartilhar os recursos (código fonte, imagens, modelos, etc) do projeto. Isto fez com que o desenvolvimento fosse um pouco mais profissional e menos amador. Artista na Equipe: Originalmente a equipe era composta por 4 programadores, mas http://www.jogospro.com.br tomando uma decisão estratégica, decidimos “roubar” um integrante com conhecimento de modelagem 3d de outra equipe. A outra equipe reclama até hoje. Esforço Final: Faltando 2 semanas para a data de entrega ainda não tinhamos o demo jogável. Se continuassemos trabalhando no esquema de só nas horas vagas não conseguiriamos terminar. Por isso decidimos pedir férias do serviço, das esposas e namoradas com o argumento de que finalmente íriamos terminar e ter mais tempo para elas. Assim começamos a trabalhar num ritmo bem mais acelerado, principalmente na última semana. Foi neste período que desenvolvemos o networking, suporte às animações, suporte a som/música e a lógica do jogo em sí. vezes tentamos montar um cronograma realista do desenvolvimento mas falhamos todas as vezes. O motivo principal foi que nenhum dos integrantes conseguia mensurar o tempo que ia conseguir trabalhar no projeto a cada semana. Desenvolvendo “nas horas vagas” é muito difícil de chegar a alguma conclusão. Reuniões Periodicas: Apesar disto ter sido algo que deu certo, chegou uma hora que as reuniões eram mais um encontro “social” do que uma reunião para desenvolver um demo. Antes da pipoca acabar não se discutia nada relamente relevante ao projeto. Então decidimos cancelar as reuniões para usar esse tempo para realmente codificar algo. Figura 01 - Demo Harena: Visão geral da Ópera de Arame de Curitiba. 2. O que deu errado. Outros Trabalhos da Pós: O desenvolvimento do demo foi prejudicado pois tinhamos que parar de trabalhar nele para poder entregar trabalhos das diversas matérias da Pós. Geralmente esses trabalhos não estavam relacionados ao demo. Falta de um Cronograma Realista: Várias Artistas: Logo no começo, fizemos a divulgação do Harena em várias listas procurando artistas interessados em participar do projeto. Várias pessoas ficaram interessadas. Ao longo do projeto devemos ter falado com 5 artistas (entre modeladores 3d e desenhistas) os quais se comprometeram a participar mas, se algum deles durou mais de 3 semanas foi muito. A única exceção S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine P o s t M o r t e m Figura 02 - Demo Harena: Oito jogadores lutando dentro da Ópera de Arame de Curitiba. foi quem fez a arte conceitual de alguns dos personagens do jogo, ele já tinha experiência (fazia desenhos para a revista da Nintendo no Chile). Falta de Experiência da Equipe: A equipe não tinha nenhuma experiência em jogos. Mas isto era aceitável, pois essa era mesmo a idéia do projeto final da Pós (o demo): ganhar experiência. 3. O dia da Entrega. É um dia que vai ser lembrado por toda a equipe, foi o fim de um projeto de mais de dois anos. Finalmente chegara a hora do tudo ou nada, a tensão era grande. Trinta minutos antes da entrega oficial ainda estavamos tentando tirar bugs do networking e o renderizador. Quinze minutos antes decidimos deixar como estava, compilar pela última vez, pegar nossos computadores, hub, cabos de rede, monitores (inclusive um de 21 polegadas) e ir para a Unicenp. Chegando lá, levamos aproximadamente meia hora para montar nossa LAN formada por 4 computadores. Um para rodar o servidor dedicado e 3 clientes. O encarregado de avaliar nosso projeto era o coordenador do curso. Por incrível que pareça nada deu errado pois geralmente é nas apresentações que os bugs aparecem. Mas não neste caso, tudo funcionou, inclusive as coisas que a gente sabia que causavam bugs, quando o coordenador as fez, milagrosamente, funcionaram sem problemas. Ele gostou muito do projeto e nos deu parabéns seguido da nota máxima. Por um http://www.jogospro.com.br momento, sentimos que éramos “os reis do mundo”, capazes de fazer qualquer coisa, eramos capazes de desenvolver jogos. É algo realmente difícil de descrever. 4. Conclusão. O Harena foi um demo desenvolvido por uma equipe de pessoas inexperientes que optaram por usar os seus sábados e tempo livre para tentar aprender um pouco de desenvolvimento de jogos na pratica e apostar num mercado incerto e complicado. Tudo indicava que a equipe não conseguiria terminar o projeto. Mas contra todas as previsões eles provaram que com força de vontade, determinação e muito trabalho é possível encarar o desafio de desenvolver um demo de jogo e alcançar o sucesso esperado. Matías Gonzalo Rodriguez é formado pela Unicenp em Desenvolvimento de Jogos. Entusiasta das linguagens C/C++, Java e Smalltalk. Gosta de jogar e desenvolver Jogos em suas horas vagas. Figura 03 - Da esquerda para a Direita: Marcelo Walter, Eduardo Akatsu, Matías Rodriguez, Bohdan Metchko Jr, Uriel Segall S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine Fim do Jogo por Carlos Caimi E o Futuro é logo ali P rever o futuro é algo fascinante. Ninguém acerta, mas volta e meia a gente encontra algum louco tentando prever o que vai acontecer daqui há alguns anos. Cada coisa maluca. Lembro de uma, da década de 70: uma família sentada a mesa, e vinha uma bandeja, apoiada num tremzinho que andava sobre trilhos, com a refeição a ser servida. Uma clássica adaptação do ferrorama!!!. Mas como, de desenvolvedor de jogos e de louco todo mundo tem um pouco, vou arriscar o que me resta de sanidade e, tentar expor as tendências que a evolução dos jogos poderá seguir nos próximos anos. Para evitar erros grotescos, e que algum outro maluco tire sarro deste artigo, vou me basear na evolução de algo intimamente ligado a jogos. A tecnologia. Mas minha bola de cristal se baseia em apenas duas regras que servirão de alicerces para essa extrapolação. A primeira, e mais famosa, é a Lei de Moore. Ela nos diz que computadores dobram de processamento a cada 18 meses. A segunda, menos conhecida, é que uma nova tecnologia leva aproximadamente 20 anos para se popularizar. Exemplo clássico é a Internet. Iniciou em 1969 e em 1999 já era de domínio público. Mas afinal, em que parte do futuro queremos olhar 10, 50 ou 100 anos? Todo mundo já ouviu falar que a tecnologia avança de maneira exponencial. Mas quase ninguém houve falar que o pensamento humano progride linearmente. E é exatamente por isso que não conseguimos prever com precisão o que a tecnologia nos reserva. Em curtos períodos é possível uma aproximação com grandes possibilidades de acerto, mas quanto mais adiante olharmos, mais nebuloso fica, logo não nos interessa na prática. Por isso vou estabelecer como meta o ano de 2020. Fato 1: Os processadores poderão ser fabricados com a tecnologia atual, com leves alterações, até aproximadamente 2020. Então até lá, não teremos Computadores Quanticos, nem genéticos, nem Óticos, ou qualquer outro. A era do silício, a trancos e barrancos, chegará a 2020. Previsão: Essa é fácil. Tudo que depende de processamento em jogos sempre terão melhorias significativas. Veremos gráficos cada vez mais bonitos, a física cada vez mais realista e inteligência artificial cada vez mais parecida com a inteligência humana. Fato 2: O nome do bicho é Computação Onipresente. Esse conceito que esta em franca expansão é o aperfeiçoamento e http://www.jogospro.com.br massificação dos chips de computadores. Na verdade já estamos vivendo nesse mundo. Ou seja, estaremos conectado com o mundo virtual praticamente em qualquer lugar, em qualquer hora, em qualquer situação. Em casa, no trabalho, no carro, no celular, na roupa, no óculos, em breve na televisão (televisão digital no Brasil) sem realmente tomar consciência disso. Previsão: a) Jogos multiplayer acontecerão em qualquer lugar e em qualquer hora. Computadores jogando com consoles, jogando com celulares, jogando com PDA´s, etc... b) Você não estará preso a um único dispositivo para jogar. Poderá começar no PC, continuar no Console, e terminá-lo, utilizando seus óculos com mini-telas, a caminho da lanhouse, porque afinal, é sempre bom relembrar os velhos tempos. Fato 3: A tecnologia já existe, mas faltava uma utilização para ela. Com processadores mais velozes sobrará mais tempo para um reconhecimento de voz mais preciso. E cada vez mais teremos jogos sendo comandados, além do teclado, mouse e joystick, também por microfones. Previsão: O reconhecimento de voz será a próxima evolução na jogabilidade dos jogos do futuro. E juntamente com uma IA mais avançada, ele alavancará uma nova maneira de jogar, e arrisco a dizer, até um novo estilo de jogo. Isso vai chegar muito antes que tenhamos computadores com percepção extra-sensorial. force-feedbacks. Sem contar capacetes que reconhecem para onde você esta olhando. Previsão: A jogabilidade irá mudar muito até 2020. Imagine-se coberto com toda essa parafernália e jogando um jogo de ação. Essas novas interfaces só precisam de tempo para se estabelecer e cair no gosto dos jogadores. Poderíamos extrapolar, e muito, essa conversa sobre o futuro dos jogos. Mas resolvi me contentar em apenas identificar as tendências tecnológicas que estaremos presenciando nos próximos anos. Pelo menos até o final previsível da era do silício. Depois de 2020 estaremos vivenciando uma nova era na informática. Um novo tipo de computador, os óticos são fortes candidados. Capacidades surpreendentes de armazenamento, com novas memórias holográficas. Internet super rápida e a computação onipresente, todos eles abrem inúmeras possibilidades de imaginarmos os mais variados tipos de jogos. Mas, como sei que você já tá perguntando. E a Matrix, onde fica nisso tudo. Bom talvez o século 22 chegue antes. Esse artigo foi baseado no livro Visões do Futuro (Visions), do físico Dr. Michio Kaku. Leitura recomenda para todos aqueles que curtem tecnologia. Fato 4: O dinheiro, em meio físico, esta acabando. Dos 4 trilhões aproximados existentes circulando no mundo, apenas 10% dele está em espécie. Previsão: O jogo de caixinha vai acabar. Com a internet mais rápida, e onipresente. O jogos serão comprados e baixados digitamente. Usando dinheiro digital para um mundo virtual. Essa previsão, na verdade, é apenas mais uma conseqüência da Computação Onipresente. Resolvi incluir apenas por que afetará nossa maneira de comprar jogos. Fato 5: Imersão. Esta palavrinha tão batida por nós, desenvolvedores de jogos, também sofrerá grandes mudanças. Novos dispositivos de interface homem-máquina são lançados a cada dia no mercado. Hoje já temos: Óculos com mini-telas de 52 polegadas, luvas para realidade virtual, já existem monitores holográficos e mouse com Carlos H Caimi - defi[email protected], é pós-graduado em Desenvolvimento de Jogos pela Unicenp, editor da JogosPRO e-Magazine e nas horas vagas, se não tá programando, tá jogando. S ET E M B R O 2 0 0 4 J O G O S P R O e-magazine Expediente E xpediente Editor-Chefe: Carlos H. Caimi Editor-Assistente: Bruce “Sinner” Diagramação: Bruce “Sinner” Carlos H. Caimi Colaboradores: Carlos H. Caimi Bruce “Sinner” Julio Marchi Daniel Monteiro Alessandro V. dos Reis Paulo R C Siqueira Wilson Jr. Alexandre “DarkFenrir” Matías G. Rodriguez Webmaster: Bruce “Sinner” Agradecimentos: Ao pessoal da lista JogosPRO pelo surgimento da idé idéia. Fábio Binder Ignis Games Continuum Southlogic A todos que nos apoiaram e não foram mencionados, vocês sabem quem são! Contato: [email protected]