Desenvolvimento de jogos 3D

Embed Size (px)

Citation preview

  • 8/7/2019 Desenvolvimento de jogos 3D

    1/49

    Desenvolvimento de Jogos 3D:Concepo, Design e Programao

    Esteban Walter Gonzalez Clua1, Joo Ricardo Bittencourt2

    ICAD IGames/VisionLabDepartamento de Informtica PUC Rio

    Centro de Cincias Exatas e TecnolgicasUniversidade do Vale do Rio dos Sinos (UNISINOS)

    [email protected], [email protected]

    Abstract: This paper describes traditional computer games developmentprocess. After a brief discussion about history and documentation, the paperwill present the steps necessaries to create 3D games, with emphasis at

    professional and commercial tools. Along the document, importantbibliographies for each process will indicated. Free Softwares or notexpensive tools will be shown in order to help research institutions fordeveloping projects in Games and Digital Entertainment field. In the last part,the paper will present other applications created with game developmenttechnology and will discuss perspectives for this new research field.

    Resumo:Este documento discute de forma geral o processo de criao de um jogo computadorizado 3D. Inicialmente sero apresentadas as principaisetapas na elaborao de um jogo 3D, destacando diversas ferramentasdisponveis no mercado. Procura-se tambm destacar e indicar as principaisbibliografias adequadas para cada uma das etapas do processo de criao e

    ferramentas gratuitas e livres que facilitem o uso pela comunidade acadmicaviabilizando novas pesquisas na rea de Jogos e Entretenimento Digital. No

    final deste documento sero apresentadas outras aplicaes que podem serdesenvolvidas com a mesma base tecnolgica dos jogos e as tendncias

    futuras para este segmento.

    1. Introduo

    Um jogo 3D um software especial, pois contm elementos muito variados: mdulos deComputao Grfica, Inteligncia Artificial, Redes de Computadores, Multimdia, entreoutros. Todos estes mdulos devem funcionar em perfeita harmonia, obedecendo a umacaracterstica fundamental de um jogo: deve ser um software em tempo real. Para queisto seja possvel necessrio explorar ao mximo o hardware dedicado, as conhecidas

    placas grficas aceleradoras 3D. Para este propsito fundamental que o jogo estejabaseado sobre diversas APIs, tais como o OpenGL,DirectXe OpenAL.

    Alm disso, enquanto a maioria dos softwares precisam apenas seguir uma sriede requisitos e atender bem os propsitos para os quais foram elaborados, umacaracterstica imprescindvel para um jogo que ele deve ser divertido e agradvel de se

    utilizar, uma vez que seu principal objetivo proporcionar entretenimento para aspessoas. Os jogos computadorizados precisam criar a sensao de imersividade nos

  • 8/7/2019 Desenvolvimento de jogos 3D

    2/49

    usurios, tal caracterstica obtida pela combinao de aspectos artsticos e tecnolgicos[BAT 02]. Assim, tratar de jogos computadorizados representa lidar com uma reaextremamente interdisciplinar, aproximando os aspectos computacionais de outras

    cincias, tais como Educao, Psicologia, Artes Plsticas, Letras, Design Grfico eMsica.

    Considerando o aspecto computacional tais aplicaes requerem a adoo desofisticadas tcnicas que na maioria das vezes representam o estado da arte das

    pesquisas em Cincia da Computao principalmente as pesquisas relacionadas comAnlise de Algoritmos (Otimizao), Computao Grfica, Redes de Computadores eInteligncia Artificial. Por esta razo desenvolver jogos computadorizados torna-se umarea fascinante para o desenvolvimento de aplicaes tcnico-cientficas, conforme foidestacado por Battaiola [BAT 00].

    Para Laird e Van Lent [LAI 01], os jogos computadorizados podem ser

    considerados a killer application da computao, principalmente na rea de IntelignciaArtificial, ou seja, uma aplicao modelo justamente pelo fato de possuir problemassignificativos que ao serem solucionados ir impactar em outras aplicaes.

    importante destacar que no Congresso da Sociedade Brasileira de Computao(2000) o Prof. Dr. Andr Battaiola publicou na Jornada de Atualizao em Informtica(JAI) o artigo intitulado Jogos por Computador Histrico, Relevncia Tecnolgica eMercadolgica,Tendncias e Tcnicas de Implementao [BAT 00]. Tal publicaorepresenta um marco significativo na comunidade acadmica, pelo fato doreconhecimento das potencialidades tcnico-cientficas e mercadolgicas das pesquisasaplicadas em jogos computadorizados e entretenimento digital. A publicao deste

    presente artigo aps cinco anos a publicao do trabalho de Battaiola ocorre em umcontexto diferenciado, pois atualmente a SBC j consolidou uma Comisso Especial deJogos e Entretenimento, foi criada a Associao Brasileira das Desenvolvedoras deJogos Eletrnicos (ABRAGAMES) e at mesmo aes governamentais j foram feitascomo o JogosBR Concurso de Jogos promovido pelo Ministrio da Cultura, inmeroseditais FINEP/CNPq fomentando a rea de entretenimento e o reconhecimento dos

    jogos computadorizados como obra de audiovisual pelo Ministro da Cultura. Tais aesevidenciam a importncia do setor conforme foi apresentado por Battaiola, em 2000.

    Dado esse contexto o objetivo principal deste artigo apresentar o processo deconcepo e desenvolvimento de jogos 3D, destacando ferramentas comerciais ealternativas livres e gratuitas que podem ser usadas para o desenvolvimento de

    aplicaes multimdia em geral no mbito acadmico e extensvel para o setorindustrial. Espera-se desta forma fomentar novas pesquisas interdisciplinares na rea dacomputao promovendo o desenvolvimento de tecnologia nacional aplicada ao setor deEntretenimento Digital. Certamente esta publicao no pretende tratar de todos osaspectos de desenvolvimento de jogos 3D, entretanto pretende servir de embasamentoinicial para o desenvolvimento de grupos de pesquisas no mbito das universidades

    brasileiras e auxiliar na formao tecnolgica de novos estdios de desenvolvimento. importante destacar que este artigo possui uma natureza tcnico-cientficadiferenciando-se da concepo tradicional dos demais artigos publicados neste evento.Entretanto tratar da rea de games um problema cujos aspectos tecnolgicos soinerentes oriundos de um processo de pesquisa aplicada bastante comum no setor.

    Muitas tcnicas que sero citadas representam resultados de pesquisa em ComputaoGrfica que a posteriori acabam sendo utilizadas em ferramentas para o

  • 8/7/2019 Desenvolvimento de jogos 3D

    3/49

    desenvolvimento de games. Ao tratar de aspectos tcnicos no est minimizando osaspectos cientficos, mas sim destacando outro aspecto da cincia.

    Para isto este artigo est organizado em dez sees. Na seo 2 apresentado umbreve histrico destacando a evoluo dos jogos computadorizados at aos jogos 3D. importante efetuar esta contextualizao para compreender o segmento. Na seo 3sero apresentadas e detalhadas cada uma das etapas consideradas no processo dedesenvolvimento de um jogo 3D. Na seo 4 sero apresentados os principais conceitostericos dos motores de jogos, conhecidos como engines, destacando os engines 3D edemais engines de apoio (simulao fsica, Inteligncia Artificial). Na seo 5 serrelacionado o uso dos engines apresentando a ferramenta 3D Game Studio, uma soluocomercial. Em contrapartida, na seo 6, ser apresentado o contexto da engines livres egratuitas com destaque para o Crystal Space e o Ogre3D. Na seo 7 sero destacadasoutras aplicaes, principalmente de cunho cientfico que podero ser desenvolvidas soba mesma base tecnolgica apresentada nas sees anteriores. Na seo 8 serapresentado detalhadamente o contexto mercadolgico nacional e internacional e asiniciativas de fomento ao setor. Na seo 9 sero apresentadas as inovaes de pesquisasno setor de entretenimento digital, com nfase na TV Digital Interativa. Por ltimo, naseo 10 so listadas as referncias bibliogrficas que serviro de base paracontinuidade dos estudos referentes aos jogos computadorizados e ao entretenimentodigital.

    2. Histria dos Jogos Computadorizados

    Esta breve contextualizao ser baseada no trabalho de Xavier [XAV 03].

    2.1 ArqueologiaO professor William Higinbothan (Figura 1) que, imaginando novas formas dedemonstraes cientficas, inventou um processo de entretenimento com umcomputador e um osciloscpio. A primeira experincia cientfica com o uso de imagenseletrnicas operadas por jogadores.

    Figura 1: 1958 - Tnis para Dois

    Steve Russel (Figura 2), ento estudante do MIT, juntamente com amigos,desenvolveu SpaceWar!, o primeiro jogo eletrnico propriamente dito. O jogofuncionava como demonstrao das capacidades grficas do processador de imagens dealta resoluo.

    Figura 2: 1962 - SpaceWar!

  • 8/7/2019 Desenvolvimento de jogos 3D

    4/49

    Em 1972 (Figura 3), Nolan Bushnell, visionrio de um mercado para jogoseletrnicos, popularizou as experincias ldicas com Computer Space e outros jogos

    pblicos operados nas rotas dos pinballs. Fundou com um amigo a Atari, a maior e mais

    influente empresa de entretenimento eletrnico da poca.

    Figura 3: 1972 - Computer Space

    No mesmo ano Ralf Baer (Figura 4), engenheiro, desenvolveu Odyssey, o primeiro console de videogame da histria, inicialmente solicitado por militares

    interessados em treinar soldados em lgica e reflexos rpidos e depois readequado parao uso domstico.

    Figura 4: 1972 - Mgnavox Odyssey

    2.2 ArcadesOs arcades so mquinas de jogos de uso pblico, operados por fichas ou moedas emcasas especializadas ou no. Fizeram grande sucesso na dcada de 70 e 80. O primeirosucesso dos arcades trata-se do Atari PONG (1972)(Figura 5). Popularizou o conceitode entretenimento eletrnico de forma simplista e solidificou o fenmeno Atari. Objetodo primeiro grande litgio do mercado, PONG foi acusado de plagio do Odyssey e elemesmo foi plagiado por inmeras outras empresas.

    Figura 5: Atari PONG (1972)

    Figura 6: Atari Shark Jaws(1974)

  • 8/7/2019 Desenvolvimento de jogos 3D

    5/49

    Em 1974 lanado o Atari Shark Jaws (Figura 6), o primeiro jogo a apresentarpersonagens independentes animados e uma tentativa explcita de associar o jogo aofenmeno de bilheteria do cinema Tubaro. No ano seguinte lanado o Midway Gun

    Fight, o primeiro jogo a utilizar um microprocessador, conferindo melhores grficos erecursos de jogo para os seus participantes.

    Figura 7: Midway Gun Fight(1975)

    Em 1976, a Atari lanou o Night Driver(Figura 8) utilizando como atrativo

    visual em sua cabine, volante, marchas e pedais, o jogo se prope a criar uma atmosferarealista. Na escassez de recursos grficos, fazia uso do desenho do interior do carro

    pintado sobre a tela.

    Figura 8: Night Driver(1976)

    Em 1978, o Taito Space Invaders (Figura 9) trata-se da primeira granderepercusso dos jogos eletrnicos, que desde ento invadiram a sociedade em todos assuas extenses. Para parecer colorido, o jogo japons fazia uso de overlays.

    Figura 9: Taito Space Invaders (1978)

    Em 1979 com o lanamento do AtariAsteroids (Figura 10) tido com um dosgrandes clssico da Atari. Para o desenvolvimento deste jogo foi aproveitado amodelagem vetorial de sucesso como em SpaceWar!.

    Figura 10: Atari Asteroids(1979)

  • 8/7/2019 Desenvolvimento de jogos 3D

    6/49

    No mesmo ano, a Namco Galaxian (Figura 11) foi lanado baseando-se nosucesso militarista de Space Invaders. importante destacar que Space Invaders o

    primeiro jogo em cores da histria.

    Figura 11: Namco Galaxian(1980)

    Em 1980 lanado Namco Pac-Man (Figura 12). Grande fenmeno depopularidade o jogo que inicialmente visava o pblico feminino tomou a mdia deassalto e provocou uma crise inflacionria no Japo. Licenciado para a Atari, a verso

    foi uma das responsveis pela crise que encerrou o mercado.

    Figura 12: Namco Pac-Man(1980)

    Nesse ano, Stern Berzerk foi o primeiro game a usar com qualidade asintetizao de voz, o jogo foi responsvel pela morte de um estudante - a primeiradiretamente associada ao uso de jogos eletrnicos - fazendo acalorar o debate sobre ainfluncia dos jogos eletrnicos na sociedade.

    Figura 13: Stern Berzerk(1980)

    Tambm em 1980, Williams Defender(Figura 14), foi criado praticamente poruma nica pessoa, Eugene Jarvis. O jogo amplia o sentido de jogabilidade com vrioscontroles, fsica realista e um sentido perceptivo original: o universo do jogo existe almdo que visto pelo jogador (conceito descrolling).

    Figura 14: Williams Defender(1980)

  • 8/7/2019 Desenvolvimento de jogos 3D

    7/49

    No ano seguinte a Nintendo lanaDonkey Kong(Figura 15). A primeira apariodo personagem mundialmente conhecido como Mario e debut de seu criador, ShigeruMiyamoto, como o grande designer de jogos de todos os tempos.

    Figura 15: Donkey Kong(1981)

    Em 1991, foi lanado Capcom Street Fighter II (Figura 16). Game adota omodelo de animao porsprites: imagens bidimensionais que se movimentam umassobre as outras criando iluso de profundidade e controle dos resultados.

    Figura 16: Street Fighter II(1991)

    A Acclaim, em 1992, lana Mortal Kombat(Figura 17). O jogo adota o modelode animao por captura de movimentos e digitalizao subseqente: imagens de atoresso digitalizadas e animadas para a ao. Maior realismo esttico em troca demovimentos mais repetitivos.

    Figura 17: Mortal Kombat(1992)

    Figura 18: Virtua Fighter(1993)

  • 8/7/2019 Desenvolvimento de jogos 3D

    8/49

    Em 1993, a SEGA lana Virtua Fighter(Figura 18). Esse jogo teve uma granderepercursso na poca por utilizao um modelo de animao por objetostridimensionais. Construes poligonais so animadas levando em conta massa e

    acelerao em tempo real de processamento. Com a popularizao dos recursos grficosde gerenciamento geomtrico e das placas de processamento grfico, os jogos ditos 3Dtornaram-se paradigmticos desde ento, ou seja, comeam a ser adotados de formaunnime na produo de jogos.

    2.3 Consoles

    Os consoles ou videogames so jogos eletrnicos desenvolvidos para uso domstico.Basicamente funcionam acoplados a aparelhos de televiso. Em 1972, MagnavoxOdyssey (Figura 19), aps liberao de patentes, Baer conseguiu que a Magnavox

    produzisse seu produto. Monocromtico e sem som, vinha com overlays, dados, fichas edinheiro de brinquedo para aumentar a participao do jogador. Poucas variaes de

    jogo e planos de marketingerrados no impulsionaram as vendas iniciais que pararamaps 100 mil unidades.

    Figura 19: Magnavox Odyssey(1972)

    Em 1975, AtariHome Pong(Figura 20), apoiada financeira e logisticamente pelaSears, a Atari inundou o mercado com a verso particular de PONG, seu primeirosucesso. O excesso do produto e de similares foi responsvel pela primeira grande crisedo mercado.

    Figura 20: Atari Home Pong(1975)

    Em 1976,Fairchild Channel F(Figura 21) foi o primeiro console a multiplicaros jogos por dispositivos de memria externa em cartuchos plsticos. No permaneceumuito tempo no mercado devido a pouca variabilidade de jogos e principalmente pelo

    preo final dos mesmos.

    Figura 21: Fairchild Channel F(1976)

  • 8/7/2019 Desenvolvimento de jogos 3D

    9/49

    Entretanto o ano de 1977 um marco na histria dos videogames. Ocorreu olanamento do Atari VGS 2600 (Figura 22), o maior fenmeno de popularidade de suapoca, cerca de 25 milhes de unidades vendidas em 5 anos. O VGS 2600 aprimorou a

    idia original de reprogramabilidade do Chanell F para bases mais baratas. O carro-chefe da popularizao mundial da marca Atari no mundo tambm extenuado por umaludoteca de quase dois milhares de jogos desenvolvidos por diversas softhouses,incluindo a dissidente Activision.

    Figura 22: Atari VGS 2600 (1977)

    O lanamento do Mattel Intellivision (Figura 23) em 1980 representava oconcorrente tecnicamente mais poderoso da Atari. O console trazia atrativos como umsintetizador de voz acoplvel e um conversor de modo a fazer com que jogos do VGS2600 pudessem ser usados nele.

    Figura 23: Mattel Intellivision(1980)

    2.3.1 O crash de 1984

    O ano de 1984 representou a segunda e derradeira grande crise do mercado de jogoseletrnicos. A Atari se dissolve e arrasta consigo todo o mercado ocidental de consoles.Os principais motivos de tal crise so:

    1. Defasagem tecnolgica - Apesar de em declnio desde fim da Era de Ouro em1980, os jogos para arcade haviam alcanado um incrvel grau de qualidadegrfica com uso, inclusive, da tecnologia de vdeo digital. Por outro lado os

    consoles ainda engatinhavam com tecnologias obsoletas;2. Crise de contedo - Com incontveis softhouses desenvolvendo jogos para a

    Atari, muitos no correspondiam em qualidade. Por exemplo, um jogo daMystique provocou revolta na sociedade americana por apresentar comotemtica uma proposta pornogrfica e violenta contra a minoria indgena;

    3. Incio da informtica domstica - Visando o grande pblico e a partir dareduo dos preos dos dispositivos eletrnicos a Commodore lana VIC-20, o

    primeiro microcomputador colorido a superar a barreira de U$ 300,00.

    Neste mesmo perodo no Japo, duas empresas despertam novamente o interesseda juventude: a Nintendo e a SEGA. A Nintendo, uma ancestral fbrica de cartas investeem eletrnicos em meados do sculo XX e tenta se estabelecer nos EUA com o sucessode Donkey Kong. Apostando em uma produo iconoclasta prpria, na figura

  • 8/7/2019 Desenvolvimento de jogos 3D

    10/49

    emblemtica de Miyamoto e em contratos de exclusividade com softhouses a empresarapidamente se torna a mais respeitada do novo mercado. A SEGA, uma poderosaconcorrente da Nintendo avana sobre o mercado oriental com voracidade e tecnologia

    de ponta. O grande embate entre as duas empresas reaquece o mercado e garantir agrande batalha pela subexistncia dos consoles e do mercado durante a prxima dcada.

    2.3.2. Gerao 8 bits

    Em 1985 lanado o Nintendo NES. O NES (Figura 24) foi o grande atrativo darenovao pois alm de muito colorido, rapidamente j contava com um acervo dedezenas de jogos. No ano seguinte a SEGA lana o Master System (Figura 25). Sucessoapenas na Europa o Master System possua jogos melhores mas em nmeroextremamente reduzido, alm de pistola e culos tridimensionais. A falta de CRPGs(Computer Role-Playing Games) foi crucial para a hegemonia do NES sobre ele.

    Figura 24: NES(1985)

    Figura 25: Master System(1986)

    2.3.3 - Gerao 16bits

    Em 1988, a SEGA lana o Genesis (Figura 26) tentando sobrepujar a concorrente. ASEGA investe em uma nova arquitetura para o nvel da apresentao dos consoles,diminuindo ogap em relao aos arcades. Novamente o mercado dos jogos respira nosEUA com a ajuda do mascote Sonic. Jogos de CRPG invadem o Japo e acertam

    plenamente o interesse do pblico.

    Figura 26: Genesis(1988)

    Dois anos depois, a Nintendo lana o SNES(Figura 27). A Nintendo apostou emnovidades e na revalorizao das personalidades da casa. Mario garante uma franquiamilionria para a empresa que se solidifica para outras novidades.

  • 8/7/2019 Desenvolvimento de jogos 3D

    11/49

    Figura 27: SNES(1990)

    2.3.4. Gerao 32bits

    Em 1993 lanado o 3DO (Figura 28). Um dos maiores fracassos do mercado dos jogoseletrnicos, o console foi concebido por Trip Hawkins, fundador da Electronic Arts,

    para ser o cone de desenvolvimento da nova gerao. Tudo no passou de umaidealizao em torno de um aparelho caro.

    Figura 28: 3DO(1993)

    Em 1994, a Sony entra no mercado dos jogos eletrnicos com o lanamento doPlayStation (Figura 29). Inicialmente proposto como o upgrade do SNES, a Sonyresolveu ela mesma produzir o aparelho que celebrou o pice da revoluo multimdia

    para os consoles. Sucesso de crtica e vendas oPlayStation ainda fabricado em nova e

    diminuta verso.

    Figura 29: Playstation(1994)

    Neste mesmo ano a SEGA lana o Saturn (Figura 30) para ser concorrente diretodo PlayStation. O aparelho no teve sucesso por permanecer vinculado a uma

    arquitetura complexa de muitos processadores e as dificuldades da programao emAssembler.

    Figura 30: SEGA Saturn(1994)

    2.3.5. Gerao 64bits

  • 8/7/2019 Desenvolvimento de jogos 3D

    12/49

    Em 1993 lanado o Atari Jaguar (Figura 31). Representante indevido da gerao64bits (por usar dois processadores de 32bits e no um de 64bits) representava o ltimorecurso da Atari antes de ser fortemente pela crtica. Poucos jogos, tentativa infrutfera

    de revitalizao com um leitor de CD e controles gigantes. O pblico ficou mais crtico.

    Figura 31: Atari Jaguar(1993)

    O Nintendo 64 (Figura 32) lanado em 1996 como uma rpida incurso da Nintendo garantida pela franquia Pokemn e por jogos de esporte. Acabou no

    conquistando o grande pblico com grficos refinados porm de texturas repetitivas emcartuchos muito caros. Alm de tudo, perdia em originalidade: revisitaes constantes asucessos de seus ttulos antecessores.

    Figura 32: Nintendo 64 (1996)

    2.3.6. Gerao 128bitsEm 1998, lanado o SEGA DreamCast (Figura 33). Este console teve uma curtaexistncia no mercado - apenas dois anos. O aparelho apesar de excepcional do ponto devista tecnolgico no garantiu pblico suficiente para arcar com as dvidas da SEGA,que desde ento decidiu focar-se unicamente em softwares.

    Figura 33: DreamCast(1998)

    Figura 34: PSX2(2000)

    Em 2000, a Sony lana o PSX2 (Figura 34). Adota a tecnologia de DVD, o

    console manteve um pblico fiel por garantir que jogos do PlayStation pudessempermanecer sendo usados e de forma melhorada.

  • 8/7/2019 Desenvolvimento de jogos 3D

    13/49

    Em 2001, a Nintendo lana o GameCube (Figura 35) e a Nintendo entra nasmdias digitais. O aparelho garantiu a empresa vitria final do sculo XX: um mercadomundial fiel ao console e novos prottipos em desenvolvimento.

    Figura 35: GameCube(2001)

    Neste mesmo ano, a Microsoft entra no mercado dos consoles com o lanamentodo X-Box (Figura 36). O aparelho possui adota a tecnologia DirectX facilitando a

    adaptao de grandes sucessos dos PCs para o console. Ainda que as vendas no tenhamrefletido as expectativas, a Microsoft recentemente lanou seu novo modelo, o X-Box360.

    Figura 36: X-Box(2001)

    2.5. ComputadoresJogos de computador surgem como experimentos lingisticos e de comando homem-mquina. As primeiras empresas desenvolvedoras de jogos para PCs so formadas por

    jovens entusiastas em garagens, vendendo a produo em lojas de eletrnica einformtica. As temticas iniciais tratavam-se dos Adventures, jogos de exploraoambiental atravs de uma leitura interativa (Figura 37) e os CRPGs - jogos derepresentao de um universo prprio onde possvel enriquecer experincia e outrosatributos dos personagens. Diferem do RPG convencional por ater-se ao mecanismoreativo do jogador diante de escolhas pr-estabelecidas (Figura 38).

    Figura 37: Mistery House

    Figura 38: Zork

  • 8/7/2019 Desenvolvimento de jogos 3D

    14/49

    Para os computadores pessoais a dcada de 80 foi extremamente significativa.Em 1983 lanado Planetfall (Figura 39), o primeiro jogo a ser populado por

    personagens atrativos psicologicamente e apresentar um enredo complexo para a

    participao do jogador.

    Figura 39: Planetfall(1983)

    Em 1984 foi lanado oFlight Simulator(Figura 40). Depois foi relanado pelaMicrosoft e o jogo tornou-se o referencial para jogos de simulao operacional realista.

    Figura 40: Flight Simulator (1984)

    Em 1985 lanado Where in the World is Carmen Sandiego? (Figura 41) Ummisto de administrao de tempo com aula de geografia. O jogo foi um dos precursoresda temtica edutainment- pressuposto educacional para o divertimento do jogador.

    Figura 41: Whre in the World is Carmem Sandiego?(1985)

    Em 1987 lanado o Tetris, o mais famoso jogo de todos os tempos tem umahistria inslita que envolve pirataria e espionagem durante a Guerra Fria. Primeiro jogoa sair da Cortina de Ferro. Tetris sem dvida o grande bastio da simplicidade para odivertimento (Figura 42). No mesmo ano lanado Test Drive (Figura 43). Foi o

    precursor de jogos de corrida usando blidos famosos, o jogo daAccolade imerge ojogador no cenrio atravs do ponto de vista do motorista.

  • 8/7/2019 Desenvolvimento de jogos 3D

    15/49

    Figura 42: Tetris(1987)

    Figura 43: Test Drive(1987)

    Em 1989,Prince of Persia (Figura 44) usa animaes realistas sobre um cenrioaparentemente simplista. O jogo o melhor exemplo de avaliao de recursos vitais

    para a garantia de um bom projeto de jogo. Tambm em 89, SimCity (Figura 45) lanado. usado inclusive em escolas para compreenso de civismo e responsabilidadesocial o jogo de administrao de cidades um dos mais renomados por ter feitosucesso sem se ater na valorizao da violncia.

    Figura 44: Prince of Persia(1989)

    Figura 45: SimCity(1989)

    2.5.1. Quebra dimensional Do 2D para o 3D

    Com as novas tecnologias de criao de universos tridimensionais e a reduo dospreos de processadores mais potentes, os jogos para computador tornaram-se altamenteimersivos. O primeiro sucesso desta tecnologia para os PCs Wolfenstein3D (1992)(Figura 46). A partir de experincias prvias com imagens distorcidas sobre slidos paraa falsa iluso de profundidade, o jogo apresenta pela primeira vez de forma atrativa umelemento que se joga sobre o cenrio - uma arma - garantindo ao jogador a experincia

    de participar visualmente na ao (jogos em primeira pessoa conhecidos como FPS First Person Shooters).

  • 8/7/2019 Desenvolvimento de jogos 3D

    16/49

    Figura 46: Wolfenstein 3D(1992)

    Em 1994 lanado Doom (Figura 47) pela id Software. Como atualizao daproposta de Wolfenstein 3D, melhorias no som (agora tambm espacial) e na construoambiental (diversos nveis arquitetnicos possveis), Doom marcou o pice dodesenvolvimento para jogos que seriam doravante conhecidos como FPS.

    Figura 47: Doom(1994)

    Em 1996 lanado Quake (Figura 48). Totalmente revolucionrio para suapoca, o jogo garantia, sem a necessidade de uma placa aceleradora 3D, a experinciaverdadeiramente tridimensional. Todos os elementos - cenrios e personagens - eram

    providos de volume. Desde ento, o uso de ambientes construdos tridimensionalmenteseria uma constante.

    Figura 48: Quake(1996)

    3. Etapas do Processo de Elaborao de um Jogo

    Como qualquer outro software a produo de um jogo computadorizado, seja esse 2Dou 3D, requer a adoo de um processo de desenvolvimento. No caso das aplicaes de

    entretenimento digital, tais com os jogos, necessrio tratar dos aspectos artsticos nesteprocesso. Simplificadamente o processo de desenvolvimento de um jogo 3D envolve asseguintes etapas [ROL 04]:

    1. Confeco doDesign Bible;

    2. Produo de udio e imagens 2D;

    3. Modelagem 3D;

    4. Desenvolvimento dos artefatos computacionais. Basicamente trata-se daescolha ou desenvolvimento do engine;

    5. Integrao dos aspectos artsticos com os aspectos computacionais.

  • 8/7/2019 Desenvolvimento de jogos 3D

    17/49

    Nas prximas subsees sero descritos os trs primeiros passos no processo dedesenvolvimento de um jogo. O passo 4 descrito nas sees 3,4 e 5.

    3.1.Design BibleAssim como no possvel criar um filme sem antes ter um roteiro bem elaborado,tambm impossvel desenvolver um jogo sem antes ter um documento com todas assuas especificaes.

    Costuma chamar-se a este documento deDesign Bible, que pode ser visto comouma espcie de manual de instrues para os futuros desenvolvedores do jogo [ROL04]. De fato, to importante este documento, que o processo de desenvolvimento no

    pode comear sem que esse no esteja pronto. ODesign Bible deve conter os seguinteselementos descritos abaixo:

    Roteiro

    Cada vez mais se assemelham a roteiros de filmes. Este um item fundamentalpara o processo de criao e ser o elemento crucial para convencer os investidores dapotencialidade do produto. nesse item que o jogo deve mostrar seu diferencial emrelao aos outros. Chamam-se aos roteiros de jogos de roteiros interativos, poisdiferentemente que os roteiros de filmes, devem ter espao para interferncia do usuriono desencadeamento da histria. Ao elaborar o roteiro deve-se considerar qual o estilodo jogo que ser desenvolvido.

    Game Design

    Entende-se por game design a conceituao artstica do jogo. Hoje em dia, dada

    a complexidade das histrias e dos cenrios elaborados importante que esta parte dodocumento seja escrita por um artista. Dentro deste item devero ser expostos quais asprincipais caractersticas dos cenrios, esboos de personagens, descrio das texturasfundamentais, mapas e descries das fases (tambm denominado de level design). Olivro [CRA 04] descreve detalhadamente como a elaborao deste tpico. Na obra deSalen [SAL 04] tambm so descritos aspectos de game design do pontos de vista daconcepo e contextualizado no aspecto sociolgico. Veja Figura 49.

    Figura 49 Exemplo da conceituao artstica de um personagem e de umcenrio. (extrado do jogo METALmorphosis )

  • 8/7/2019 Desenvolvimento de jogos 3D

    18/49

    Game Play

    Nesta parte do documento deve descrever-se como ser a jogabilidade. Por jogabilidade entendem-se as regras do jogo e o balanceamento das regras (gamebalancing). Nesta descrio deve ficar claro que o jogo divertido e ir proporcionardesafios interessantes. Esta parte do documento muito importante para guiar os

    programadores principalmente na etapa descripting.

    Interface Grfica

    Pode-se dividir a interface em ingame e outgame. A primeira consiste nainstrumentao disponvel durante o jogo e responsvel pela entrada de dados do

    jogador para a aplicao. A interface outgame a forma de apresentar a introduo dojogo, sua configurao, instrues, carregar um jogo salvo anteriormente, entre outrasoperaes de suporte. Costuma-se dizer que a melhor interface aquela que passadesapercebida para o jogador, permitindo que o mesmo possa focar-se no desenrolar dahistria e das aes. Veja Figura 50.

    Figura 50 Exemplo do design de uma interface ingame (extrado do jogoMETALmorphosis ).

    Terminada a etapa de conceituao, o desenvolvimento de um game divide-seem dois caminhos distintos: o de criao artstica e o de programao, havendoentretanto uma grande interseo entre ambas. A criao artstica pode sercompreendida na elaborao dos resources do jogo, ou seja, os elementos que serousados para sua montagem: modelos 3D, texturas, terrenos, sons, msicas e arquivos de

    configurao.

  • 8/7/2019 Desenvolvimento de jogos 3D

    19/49

    3.2. Produo de udio e Imagens 2D

    Antes de abordar os engines propriamente ditos importante destacar outros aspectostecnolgicos que so utilizados na produo de um jogo udio e imagens 2D. Para

    produo de udio existem duas ferramentas comerciais bastante arrojadas e bemutilizadas profissionalmente Cubase e o SoundForge [SON 05]. O Cubase usado

    basicamente para mixagem de canais MIDI e o SoundForge usado para produo detrilhas e efeitos sonoros. O SoundForge comumente usado no cinema, na televiso ena produo de vinhetas para o rdio. O Audacity [AUD 05] uma ferramenta livre que

    permite a criao de udio, inclusive combinando diferentes canais de som, importandoe exportando arquivos no formato WAV, MP3 e Ogg Vorbis. Entretanto no possuitodos os recursos oferecidos pelo SoundForge.

    No aspecto de udio, a OpenAL desenvolvida pela Loki Software, trata-se deuma alternativa de implementao de som bastante interessante, pois a OpenAL permite

    adicionar som 3D, uma biblioteca estruturada na forma de uma mquina de estados queoferece um conjunto de primitivas de mais alto nvel para manipulao de som. Paraincrementar a imersividade fundamental adicionar a percepo sonora no game,entretanto um mundo virtual pode possuir muitas fontes de som dificultando alguma

    pr-mixagem [TSI 04] e limitando a quantidade de sons ao mximo de canais de somdisponveis no sistema (em geral de 16 a 64 canais). Assim, o som 3D trata-se de um

    processo de renderizao de udio, ou seja, a produo de udio em tempo deexecuo [TSI 04].

    Os jogos 3D no so construdos somente com modelos tridimensionais, naproduo de um jogo tambm necessrio compor imagens bidimensionais. Em geral,tais imagens sero usadas como texturas, mas tambm sero usadas para compor ainterface grfica ingame e outgame,tais como, botes, janelas, barras de energia e outroscomponentes grficos.

    Para produzir estas imagens existe uma srie de ferramentas para editoraogrfica cujo Adobe Photoshop um dos softwares mais tradicionais para desempenhartal atividade. Outra ferramenta alternativa muito completa, mutilplataforma e livre oGIMP (GNU Image Manipulation Program) [GIM 05]. Veja Figura 51.

    Figura 51: Interface do GIMP que ilustra as barras flutuantes e a barra deferramenta para criao e edio de imagens bidimensionais.

  • 8/7/2019 Desenvolvimento de jogos 3D

    20/49

    O GIMP basicamente fornece as mesmas funcionalidades do Photoshop paraefetuar tratamento de imagens. Oferece uma srie de pincis, permite trabalhar cominmeras camadas, converte e salva em diferentes formatos de imagens

    (BMP,PNG,JPG,TIG,TGA,PCX,GIF, entre outros), uso de mscaras, oferece umagrande quantidade de filtros (gaussian, deteco de bordas, distores, efeitos de luz,entre outros), suporte a macros e permite adicionar novas funcionalidades (filtros eformatos de arquivos) no programa atravs de plug-ins desenvolvidos em C usandolibgimp. Tambm permite criar novas extenses usando uma linguagem de scriptsScript-Fu, baseada em Scheme que equivale as macros. Alm disso, permite salvar umaimagem como matrizes em arquivos de cdigo em C, com extenso .c ou .h, que podemser integrados em sua aplicao. Tal funcionalidade bastante interessante, porexemplo, a OpenGL manipula diretamente matrizes com dados, desta forma criandogrficos no GIMP e depois exportando para C facilita a integrao em aplicaes queusam OpenGL.

    As texturas so usadas para representar os materiais que compem os modelos3D. Tratam-se de um bitmap diferenciado que ser replicado sob uma superfcie com oobjetivo de representar algum material, tais como metal, madeira, concreto, plstico, ouqualquer outro. Muitas texturas so produzidas fotografando-se o material e depoismanipulando a imagem digitalmente. Tal procedimento aumenta o realismo das imagenscompostas pela textura. Atualmente com a popularizao das cmeras digitais facilitou-se o trabalho de obteno de materiais para criao dessas texturas mais realsticas.

    A seguir ser descrito como criar uma plug-in para produzir uma textura demadeira usando GIMP que poder ser usada nos modelos 3D. O GIMP possui algumastexturas prontas. O GIMP permite criar macros usando Script-Fu, uma linguagem

    interpretada assemelhando-se a sintaxe do LISP. Os arquivos podem ser criados emqualquer editor de texto. Devem ser salvos no diretrio scripts, localizado no diretrio .gimp-X (sendo X a verso do GIMP) localizado no diretrio do usurio, no caso dossistemas Unix no diretrio home. Abaixo est descrito a sintaxe de umscriptpara criartextura de madeira.

    (define (script-fu-wood-texture inW inH)(let*

    ((theImg (car (gimp-image-new inW inH RGB)))

    (theLayer (car (gimp-layer-new theImg inW inHRGBA-IMAGE "layer1" 100 NORMAL-MODE)))

    )(gimp-image-add-layer theImg theLayer 0)(gimp-image-set-active-layer theImg theLayer)(gimp-palette-set-background '(248 200 124))(gimp-edit-fill theLayer 1)(plug-in-solid-noise 1 theImg theLayer 1 1 10 7 0 0)(plug-in-solid-noise 1 theImg theLayer 0 0 10 7 5 5)

    (set! theCopy (car (gimp-layer-copy theLayer 0)))(gimp-image-add-layer theImg theCopy 0)(gimp-image-set-active-layer theImg theCopy)(plug-in-mblur TRUE theImg theCopy 0 0 20 270)(gimp-desaturate theCopy)(gimp-layer-set-opacity theCopy 38)(gimp-layer-set-mode theCopy 10)(plug-in-edge 1 theImg theCopy 9.0 0 1)

  • 8/7/2019 Desenvolvimento de jogos 3D

    21/49

    (gimp-display-new theImg)))

    ;end define

    (script-fu-register "script-fu-wood-texture"_"/Xtns/Script-Fu/Patterns/Textura de madeira...""Cria uma textura de madeira para ser usada em modelos 3D.\

    Requer as dimensoes da imagem.""Joao Ricardo Bittencourt""Sob GNU GPL license""April 25, 2005""RGBA"SF-ADJUSTMENT _"Largura" '(64 1 1000 1 10 0 1)SF-ADJUSTMENT _"Altura" '(64 1 1000 1 10 0 1)

    )

    Aps o script ser registrado no GIMP a nova funcionalidade poder ser usada emoutros plug-ins. Alm do editor grfico esta capacidade de personalizao torna o GIMP

    uma opo bastante interessante de ser usada no desenvolvimento de jogos, pois se oartista e o desenvolvedor desejam um determinado visual grfico ao invs de se

    preocuparem na criao de uma ferramenta de edio grfica, procuram criar umscriptque possa ser integrado na arquitetura do GIMP. Assim, o foco para o efeito e no paraestrutura de software complementar.

    3.3. Modelagem 3D

    A equipe de modelagem 3D ser responsvel por criar os objetos geomtricos das fases.A geometria de um jogo pode ser dividida em dois tipos: modelagem estrutural emodelagem de elementos dinmicos. Esta diferenciao existe pelo fato de que osmodelos estruturais, por no sofrerem alterao de posio, sofrero um pr-

    processamento, de maneira a otimizar o processo de renderizao, como serapresentado na sesso 3. A modelagem estrutural consistir basicamente na criao docenrio em si, o terreno e alguns outros elementos estticos.

    Para esta etapa os principais softwares utilizados so o Discreet 3DS MAX [DIS

    05], MAYA [ALI 05], Avid Softimage [AVI 05] e Ligthwave [NEW 05], poisfornecem recursos avanados tornando-os timos para este processo. Tais recursos estodescritos abaixo:

    Ferramentas de modelagem baseadas em polgonos: Toda a modelagemdever ser feita por polgonos. Assim sendo, importante que haja uma fcil

    e intuitiva forma de manipul-los; Ferramentas intuitivas para texturizao: Grande parte da riqueza de uma

    modelagem est na boa aplicao de texturas sobre os modelos. comum,por exemplo, ter que aplicar um mapeamento de texturas em polgonosindividuais;

    Boas ferramentas para otimizao de polgonos: comum durante oprocesso de modelagem criar objetos com mais polgonos do que se podesuportar no jogo. Assim sendo, importante que um pacote de modelagemfornea recursos para reduzir o nmero de polgonos de objetos,minimizando a sua perda de qualidade;

  • 8/7/2019 Desenvolvimento de jogos 3D

    22/49

    Boa interface de visualizao: Para o artista importante que a medida queum objeto seja construdo, possa acompanhar este processo em tempo real,sabendo a priori como o mesmo ser visto no jogo. Veja Figura 52.

    Figura 52 As interfaces what you see is what you playpermite que o artistapossa ver em tempo real, na interface do software de modelagem, como seus

    modelos ficaro na renderizao final do jogo. Imagens extradas doAvidSoftimage XSI .

    Neste processo, uma virtude importante que os artistas devem ter a de seremcapazes de modelar objetos com o menor nmero de polgonos possvel (Figura 53).Otimizando-se a modelagem, ser possvel que o cenrio possa ser mais extenso e quemais objetos possam ser inseridos no mesmo.

    Figura 53 Um mesmo modelo est representado em duas resoluesdiferentes de polgonos. Perceba-se que o resultado final bastante

    semelhante, embora o avio da direita possua 15 vezes mais polgonos que oda esquerda.

    Alm de tais ferramentas, uma alternativa livre e gratuita oBlender3D [BLE05]. Trata-se de um software grfico completo que oferece funcionalidades demodelagem, animao, renderizao, ps-produo e criao 3D. Sua principaldesvantagem sua interface grfica que no fcil de ser utilizada, sendo poucointuitiva (Figura 54). O Blender3D suporta importao e exportao de diferentes

  • 8/7/2019 Desenvolvimento de jogos 3D

    23/49

    formatos incluindo 3DS, Cal3D, MDL, OBJ, VRML, DirectX, entre outros. Atravs dacriao de scripts em Python possvel desenvolver novos plug-ins estendendo asfuncionalidade bsicas da ferramenta. O script MakeHuman (Figura 55) um exemplo

    deplug-in livre desenvolvido para o Blender3D visando a modelagem de personagenshumanides. Inclusive o Blender3D pode ser usado como engine de jogoscomputadorizados, oferecendo tratamento de coliso, suporte a udio e a OpenGL, e

    permite que a lgica do jogo seja programada emPython.

    Figura 54: Algumas screenshotsdo Blender3D que ilustram a capacidade deeditor para modelagem e animao 3D.

    Figura 55: Screenshotdo MakeHuman, script desenvolvido para o Blender3Dpara modelagem de personagens humanides.

    3.3.1. Terrenos

    Os terrenos tambm so conhecidos como height maps e consistem em imagens comdiversas tonalidades de cinzas. Os pixels escuros correspondero a reas baixas doterreno e os claros a partes mais altas. Assim sendo, elaborar um terreno resume-se acriar um mapa de altura adequado para o cenrio. Este mapa de altura pode ser pintadomanualmente, usando algum software de edio de imagem. Entretanto, para relevosmais complexos existem inmeras ferramentas capazes de gerar mapas mais detalhados,

    bem como edit-los de forma mais intuitiva. Alm de gerar os mapas de altura, estessoftwares so capazes de gerar suas texturas correspondentes. Algumas das ferramentasmais utilizadas so o Corel Bryce [DAS 05], VueDEspirit [EON 05], Terragen [TER05] e Mojo Word Generator [PAN 05]. Veja Figura 56.

  • 8/7/2019 Desenvolvimento de jogos 3D

    24/49

    Corel Bryce Terragen

    VueD'Espirit Mojo World Generator

    Figura 56 Softwares utilizados para criarheight maps e suas correspondentestexturas.

    Posteriormente, estes mapas de altura sero projetados sobre malhas regulares depolgonos. Dependendo do engine, isto ser feito na ferramenta de modelagem 3D ou noeditor especfico do engine. Veja Figura 57.

    Figura 57 Um mapa de altura aplicado sobre uma malha de polgonosregulares, formando um terreno 3D. Este processo pode ser efetuado no engine

    ou no software de modelagem 3D.

    4. Engines

    Um motor de um carro responsvel por faz-lo andar. Ao dar a ignio do veculo, omotorista coloca o motor em funcionamento e comea a mover-se com ele, sem precisarsaber como funciona todo o processo mecnico. A transferncia do movimento dos

    eixos para as rodas, a sincronizao das exploses dos pistes, a injeo de combustvelna cmara de combusto, tudo fica a cargo do motor. Um engine para jogos basicamente

  • 8/7/2019 Desenvolvimento de jogos 3D

    25/49

    segue o mesmo princpio de funcionamento. Dentro do conceito de engenharia desoftware trata-se da parte do projeto que executa certas funcionalidades para um

    programa. Dentro da rea de jogos, um engine se encarregar por entender-se com o

    hardware grfico, ir controlar os modelos para serem renderizados, tratar das entradasde dados do jogador, tratar de todo o processamento de baixo nvel e outras coisas queo desenvolvedor de jogos normalmente no deseja fazer ou no tem tempo para se

    preocupar. Existem inmeras definies para um engine. Entretanto, estas definiesconvergem em algumas caractersticas:

    Permitir que o desenvolvedor possa criar diversos jogos diferentes, usandoum mesmo engine. comum, entretanto, que os engines sejam catalogadosde acordo com os tipos de jogos para os quais eles foram concebidos [EBE00];

    Poder reaproveitar com facilidade o cdigo desenvolvido em projetos

    anteriores; Abstrair a manipulao de APIs (embora, em muitos casos, o desenvolvedor

    ir usar as prprias APIs dentro do ambiente do engine, para implementarfuncionalidades especficas);

    Possibilitar uma fcil integrao entre cdigo e modelagem 3D. Para estafinalidade comum que os engines apresentem editores de cenas.

    Desenvolver um engine uma rea complexa, repleta de desafios. Entretanto, oobjetivo deste documento no ensinar a implementar um engine, mas sim entend-lose saber utiliz-los.

    Figura 58 Exemplo de level editorspertencentes a diversos enginescomerciais.

    Normalmente, um engine composto por diversas ferramentas, cada umaresponsvel por alguma etapa do processo de criao de um jogo. Os componentes maiscomuns [ZER 04] de se encontrar em engines so os seguintes:

    Engine Core: Consiste no corao do engine. Este ser um programa queexecutar a aplicao do jogo, manipular a fase e os objetos, renderizar ascenas, etc. Fazendo-se uma grossa analogia, pode-se dizer que o engine core o sistema operacional do jogo;

  • 8/7/2019 Desenvolvimento de jogos 3D

    26/49

    Engine SDK: o cdigo fonte do engine core. Atravs dele pode-se alterar ofuncionamento do engine. Normalmente este componente o mais protegidoe para consegu-lo, no caso de engines comerciais, ser necessrio comprar o

    pacote que a empresa oferece. possvel criar jogos sem o SDK de umengine, entretanto, os tipos de aplicaes possveis de serem desenvolvidossero muito mais restritos.

    Level Editors: Atravs deste componente ser possvel unificar modelagensfeitas em diversos programas, associ-los programao, inserir cdigos em

    scripts, etc. Em muitos casos, dentro destes editores possvel tambm criarmodelos 3D. Veja Figura 58.

    Conversores/Exportadores: Os resources sero normalmente feitos emdiversos softwares comerciais, como se apresentou no captulo 2. Mais ainda:numa equipe de desenvolvimento grande cada artista poder criar os

    elementos no programa de sua preferncia. Assim sendo, os engines deverofornecer instrumentos para importar estes modelos para o formato especficodo engine. Estes conversores podero serplug-ins instalados nos programasde modelagem 3D ou podem estar includos no level editor;

    Builders: Como ser discutido algumas operaes pr-processamentos sobreos objetos (tais como o BSP, lightmaps, portais, PVS, etc.) precisam feitas.Desta maneira, um engine fornecer as ferramentas para realizar estes pr-

    processamentos. comum que estejam dentro do level editor;

    Linguagens Script: Grande parte do desenvolvimento da lgica do jogo e daInteligncia Artificial dos elementos dinmicos ser implementada sobre

    scripts e no diretamente sobre o engine core. Assim, cada engine possuirsua linguagem de programao script, sendo comum usar linguagens comuns,tais comoJavaScript,Python e LUA.

    Pode-se afirmar que um engine na realidade composto por diversos sub-engines, sendo cada um responsvel por tratar um tipo de problema envolvido em

    jogos. Os principais componentes so de renderizao, de fsica, de som e deInteligncia Artificial. Nas prximas subsees cada um desses componentes serodetalhados.

    4.1.Engine de Renderizao (ou engine 3D)

    Figura 59 Etapas mais importantes dopipeline grfico.

  • 8/7/2019 Desenvolvimento de jogos 3D

    27/49

    O engine 3D ser responsvel basicamente pelo pipeline grfico (Figura 59), que oprocesso de gerar imagens 2D partindo de modelos 3D (figura 8). Este processo dividido em diversas etapas [LAM 03], sendo as mais importantes:

    Transformaes 3D: Nesta etapa aplica-se o movimento aos modelos 3D.Este movimento consiste no seguinte: a cada passo do jogo uma matriz iracumulando o resultado de todos os movimentos que o objeto sofreu aolongo de seu histrico. Antes de visualizar a cena, ser aplicada esta matrizsobre cada vrtice que o compem, posicionando-o no local que lhecorresponde naquele instante;

    Projeo 3D 2D: Os vrtices que compem o objeto so coordenadas 3D, porm a imagem do modelo dever ser desenhada numa superfciebidimensional (tela do computador). Nesta etapa, os vrtices do modelo seroprojetados sobre o plano de projeo da cmera. comum encontrar esta

    etapa do pipeline junto com a etapa de transformaes 3D, pois em ltimainstncia realizar esta projeo consiste numa aplicao de matriz detransformao tambm;

    Culling: Existem inmeras formas de otimizar o processamento grfico deum jogo. Uma destas consiste nos mtodos de culling (Cull em inglssignifica "refugo, escolher, selecionar de dentro de um grupo"). Assim, o queas tcnicas de culling tero de fazer saber escolher polgonosadequadamente, de forma que numa determinada situao, estejam presentesapenas aqueles que realmente importam para a visualizao a partir do pontoem que a cmera se encontra. Pode-se pensar tambm da seguinte forma:quais dos polgonos de uma cena devero ser enviados para o pipeline da

    placa grfica? Obviamente no se deseja enviar algum que no ter nenhumainfluncia na visualizao, mas at que ponto simples realizar esta escolha,de forma rpida. Existem muitos algoritmos que faro este tipo de escolha.Em muitos casos a eficincia deste procedimento estar atrelada ao tipo deagrupamento e ordem de polgonos (um terreno possui uma distribuio de

    polgonos completamente diferente de que um personagem ou do que umlabirinto). O culling pode ser feito em qualquer estgio do pipeline grfico.Entretanto, prefervel eliminar os polgonos que no interessam o quantoantes para evitar processamento desnecessrio sob polgonos que futuramente

    podero ser eliminados. Vale a pena ressaltar que um mtodo de cullingno

    anula outro: podem-se ter os efeitos somados em muitos casos; Clipping: Ao projetar polgonos sobre o plano de projeo da cmera, alguns

    polgonos cairo totalmente dentro da rea da tela e outros cairoparcialmente dentro, ou seja, apenas uma parte do polgono estar na tela deprojeo. Para estes polgonos necessrio realizar o clipping (recorte), queconsiste em criar novas arestas e vrtices;

    Rasterizao (iluminao e texturizao): Finalmente, a ltima etapa do processo de renderizao consiste em preencher os polgonosadequadamente, aplicando o material com o qual esto definidos.Inicialmente poderia-se pensar em fazer este processo atravs de um clculo

    de iluminao para cada um dos pixels (per pixel) do interior de um polgono.Entretanto isto seria demasiadamente caro em termos computacionais. Para

  • 8/7/2019 Desenvolvimento de jogos 3D

    28/49

    viabilizar este processo realiza-se uma interpolao (rasterizao) entre a corde cada um dos vrtices que compem o polgono. Desta forma, o clculo deiluminao feito apenas para cada vrtice (per vertex) visvel da malha. Esta

    rasterizao tambm poderia demandar bastante tempo de processamento, pois apesar de ser algo simples de ser feito, existem pixels numa tela.Entretanto, este processo realizado por um hardware especfico para estatarefa, que a placa grfica, ou GPU Graphic Processor Unit.

    Existem uma srie de efeitos de iluminao (blur, bump-mapping,especularidade) que no podem ser aplicados realizando-se uma rasterizao como foiexplicada anteriormente. Isto porque para estes efeitos necessrio realizar um clculode iluminao per pixele no per vertex. Para solucionar este tipo de problema, as

    placas grficas mais modernas possuem a capacidade de suportarpixel shaders (Figura60), que so pequenos programas que so executados para cada pixel que ser plotadona tela. Para maiores informaes sobre esta tecnologia, ver [STL 04].

    Figura 60 Imagens geradas em tempo real utilizandopixel shaders.

    4.2. Engine de Fsica

    Grande parte da interatividade de um jogo se deve ao funcionamento de algumas leis dafsica sobre o mundo virtual criado. Assim, ao andar sobre um labirinto e bater numa

    parede o jogador no pode atravess-la; ao dar um pulo, o jogador deve colidir com ocho e no continuar caindo para sempre; ao acelerar um carro, sua velocidade dever ircrescendo gradualmente e no abruptamente.

    Os clculos de fsica bsicos num jogo so:

    Coliso: Objetos 3D devem colidir com outros. Esta coliso no trivial deser realizada para um mundo virtual como para o mundo real, j que emltima instncia corresponderia em verificar se cada um dos polgonos de um

    determinado objeto possui interseo com cada um dos polgonos do restanteda cena. Existem inmeras formas de otimizar estes clculos (ver [EBE 03]),sendo a mais comum a tcnica de bounding-boxes, que consiste em englobarcada objeto por uma caixa e calcular a coliso para a caixa e no para a malhacompleta do objeto;

    Resultante de foras: Os objetos se movimentam num mundo real devido aaplicao de diversas foras sobre o mesmo. Num ambiente virtual sernecessrio simular a aplicao de foras de diversas naturezas sobre osobjetos, calculando a resultante a cada instante para verificar como ser o seumovimento. Para mais detalhes, ver [BER 03].

    A Open Dynamics Engine (ODE) uma biblioteca livre para simulao dedinmica de corpos rgidos, incluindo veculos, ambientes de realidade virtual e

  • 8/7/2019 Desenvolvimento de jogos 3D

    29/49

    criaturas. desenvolvida em C++ e pode ser facilmente integrada com uma engine,assim permitindo ser reusada facilmente. Para utilizar basta incluir a biblioteca noengine do jogo e utilizar as funes oferecidas por essa. Tambm possvel usar partes

    do cdigo para desenvolver uma engine personalizada. possvel especificar um mundocom propriedades fsicas com seus devidos objetos e a cada ciclo de atualizao do jogotodas as foras fsicas so aplicadas sob tais objetos considerando o tratamento decolises. A prpria Fly3D [FLY 05], um engine nacional adota a ODE. Outro exemplode uso da ODE oplug-in para o 3D Studio chamado Ornatrix que permite renderizarcabelos. Todo o modelo fsico baseado nesta biblioteca.

    Outra alternativa o projeto de cdigo-aberto denominado ODF (OpenDynamics Framework) [ODF 05] cujo objetivo criar simulaes fsicas em gameengine. Entretanto o ODF executa somente a plataforma Windows, pois utiliza oDirectX.

    4.3. Engine de Som

    Este componente do engine permitir o controle sobre os arquivos de som da bibliotecade recursos do jogo. Normalmente utilizar alguma API adequada para manipular estetipo de arquivos, tal como o DirectSound ou o OpenAL. Alm de permitir abrir e tocarestes arquivos, os engines de som permitiro um controle de som posicional, permitindoque objetos da cena emitam sons e estes se comportem conforme o posicionamento doobjeto na cena.

    4.4. Engine de Inteligncia Artificial

    Entende-se por Inteligncia Artificial (IA) para jogos, os programas que descrevero o

    comportamento de entidades no controladas pelo jogador, tipicamente os NPCs (Non-Player Characters).

    Na maioria dos casos, o comportamento inteligente desses agentescomputacionais implementado atravs de mquinas de estados. Os algoritmos demquinas de estados procuram resolver problemas formalizando diversos possveisestados em que um elemento pode se encontrar (no caso de uma televiso, por exemplo,

    poderia-se ter estes estados: Desligada, Acesa e Stand-by). A transio de um estadopara outro estar atrelado a algum evento que dispare esta mudana (no exemploanterior, ao apertar a tecla a TV muda do estado de desligada para Stand-by).

    Desta maneira, a inteligncia de um personagem de um jogo pode ser descritapor diversos estados em que o mesmo pode se encontrar (no caso de um jogo de ao,poderamos descrever estes estados como espera, perseguio, ataque, fuga, morte, porexemplo). Este personagem dever fazer um monitoramento constante sobreacontecimentos que possam disparar a mudana de um estado para outro. Usando oexemplo de um jogo de ao, suponha-se que o fato do jogador aproximar-se mais doque 30m do NPC faa com que o mesmo passe do estado de espera para o estado de

    perseguio. Veja a figura 61.

    Entretanto perceptvel que ocorreram grandes inovaes do ponto de vistagrfico, mas aspectos inteligentes das entidades computacionais no foram sofisticadoscom a mesma velocidade. Muitas vezes um jogo sofisticado graficamente apresenta uma

    IA mediana. Isto ocorre principalmente pelo fato do custo computacional que osalgoritmos inteligentes e de processamento grfico possuem. Conforme Sewald [SEW

  • 8/7/2019 Desenvolvimento de jogos 3D

    30/49

    02], tcnicas de IA tais como Redes Neuronais Artificiais e Algoritmos Genticos sopouco utilizadas.

    Figura 61 Exemplo de uma mquina de estados tpica para um jogo de ao.

    Um exemplo de toolkit para o desenvolvimento de agentes inteligentes oDirectIA [DIR 05]. Trata-se de uma soluo comercial genrica que permite

    desenvolver agentes adaptativos que aprendem atravs do contato com o ambiente ecom usurio. Oferece uma srie de mdulos de Emoo Artificial, planejamento,comunicao e Aprendizado de Mquinas.

    importante destacar que ferramentas de suporte para criao da IA degamesainda uma rea deficitria.

    4.5. A Escolha do Engine

    Existe uma grande quantidade de engines. Em Isacovic [ISA 05] h uma excelente listade referncias sobre os principais e mais completos. Como escolher o engine adequado

    para desenvolver um jogo? Existem diversos fatores que devem ser considerados:

    Oramento disponvel: Existem engines que custam U$ 100,00 e outros queultrapassam U$ 1 milho. Os mais caros, alm de possurem todos recursosque um engine capaz de ter, normalmente so programas que possuem umaexcelente equipe de apoio, que ir acompanhar a empresa desenvolvedora doincio ao fim da sua produo. Este acompanhamento consistir emdesenvolverplug-ins especficos, adaptar funcionalidades do engine para asnecessidades especficas e at dar treinamento para os programadores;

    Tipo de jogo a ser desenvolvido: Apesar de existirem engines que socapazes de construir tipos bastante diferente de jogos, a maioria ter umasrie de caractersticas que favorecem para o desenvolvimento de um tipo

    especfico de jogo. Por exemplo, o Quake Engine permite desenvolver jogosno estilo FPS (First Person Shooter).

  • 8/7/2019 Desenvolvimento de jogos 3D

    31/49

    Milestones: O tempo que se possui para produzir um jogo influencia muitona escolha do engine. Alguns engines permitem que um jogo seja feito em

    poucos dias, mas implicar numa srie de solues padres, que o tornam

    semelhante a muitos outros jogos produzidos com aquele mesmo engine; Plataforma: Um jogo pode ser desenvolvido para diversas plataformas, tais

    como PC, X-Box, GameCube, PlayStation, MacOS, entre outras. fundamental que o engine escolhido suporte a plataforma para a qual se estdesenvolvendo. Os engines mais caros normalmente so capazes de produzir

    jogos para diversas plataformas;

    Documentao oferecida: O desenvolvedor de jogos dever, antes de adotarum engine, verificar como a documentao do mesmo. Sem umadocumentao eficiente, dificilmente o programador ser capaz de utilizaradequadamente os recursos oferecidos pelo engine;

    Ferramentas disponveis: Cada engine possuir conversores e exportadores,que permitiro que sejam utilizados outros programas para programar seuSDK ou para modelar os objetos 3D. fundamental que o desenvolvedoranalise quais as ferramentas com as quais se pode produzir os para o engineem questo (se a equipe de modeladores conhece apenas o MAYA, conveniente que o engine a ser adotado suporte o MAYA para os modelos3D).

    Outro ponto que precisa ser destacado que percebe-se na maioria dosdesenvolvedores a preocupao em centralizar todo o processo de criao do enginedentro das organizaes. Tal atitude acaba ocasionando uma grande quantidade de

    reescrita de cdigo [ROL 04]. Certamente que este comportamento indesejado porquerepresenta um maior custo de desenvolvimento e preocupao com caractersticas que jforam amplamente implementadas. Ao invs das solues serem recriadasconstantemente, seria mais interessante efetuar um reaproveitamento de componentes j

    previamente desenvolvidos. Para Rollings & Morris [ROL 04], medida que acomplexidade dos jogos incrementa no ser possvel que o time interno dedesenvolvedores produza toda a codificao de todos os componentes dentro de um

    prazo hbil. Portanto, a partir desta constatao possvel afirmar que gradativamente acomponentizao comear a tornar-se mais comum entre os desenvolvedores. Alm dosetor industrial percebe-se esta cultura no meio acadmico. Perde-se tempo eincrementa-se custos em conseqncia do no reaproveitamento de solues existentes.

    5. Introduo ao 3D Game Studio

    O 3D Game Studio (Figura 62) [3DG 05] um engine de alto nvel de abstrao, isto ,possibilita que o desenvolvimento de um game seja realizado sem a necessidade degrandes conhecimentos de programao ou conhecimento de algoritmos especficos. Porum lado a produo se torna simples e rpida, mas por outro lado as possibilidades solimitadas e as interfaces grficas dos jogos tero ligeira semelhana entre si. O custo doengine, a verso extra, U$89,00, mas permite produzir jogos sem nenhum marca dgua, entretanto no oferece suporte aos jogos multiplayers, simulao fsica eshaders,

    por exemplo. A verso profissional custa U$899,00, mas sem nenhuma restrio.

    Executvel somente na plataforma Microsoft Windows. Uma caracterstica bastante

  • 8/7/2019 Desenvolvimento de jogos 3D

    32/49

    importante do engine o fato de ser extensvel usando uma DLL (Dynamic LinkLibrary)

    Figura 62 Alguns nveis de jogos feitos no 3D Game Studio

    O engine composto basicamente por 2 mdulos:

    Model Editor: responsvel sobretudo pela criao e animao de modelosdinmicos e de terrenos;

    Level Editor: para elaborar uma fase por completo.

    Para se criar um jogo no 3D Game Studio necessrio, alm de conhecer estasduas ferramentas, conhecer tambm a linguagem script (WDL), que permite criar algica do jogo e a IA (Inteligncia Artificial) de alguns elementos.

    H diversos tipos de elementos, importantes de serem distinguidos: Objetos Estticos: Corresponder a toda a geometria que ser colocada na

    BSP e que ser pr-processada pelo engine. Estes objetos no podero ternenhuma transformao durante o jogo. Consistem em geral das paredes, deobjetos decorativos, tais como colunas e vigas, acessrios que no sofreroalterao. Os objetos pr-fabricados e os blocos so os tipos de elementosestticos mais comuns. Quanto mais objetos puderem ser colocados dentrodesta categoria, melhor para a performance do jogo; O formato destes objetos WMP;

    Objetos Dinmicos: Correspondem a modelos que podero sofrer alteraes

    durante o jogo, tais como NPCs, o player, armas, power-ups, etc. Estesmodelos podem estar animados e podem em geral ser modelados atravs de

  • 8/7/2019 Desenvolvimento de jogos 3D

    33/49

    ferramentas terceiras, tais como o 3DS MAX, MAYA, TrueSpace, etc. Oformato dos objetos dinmicos WMB ou MDL. Apenas estes objetos teroa propriedade behavior, que consiste na ao que ir efetuar durante o jogo;

    Terrenos: Apesar de serem estticos, possuem um tratamento de otimizaoespecial e portanto correspondem a objetos a parte. O formato de um terreno HMP e apenas pode ser criado no Model Editor;

    Sprites: Os sprites so elementos estticos, mas constantemente soatualizados para que a sua normal esteja apontando para oplayer. Os spritesconsistem na geometria mais simples de um jogo, uma vez que so apenasum plano com uma textura. Ossprites podem ser do formato PCX, TGA ouBMP.

    5.1.Level Editor

    OLevel Editor o principal mdulo do 3D Game Studio. nele que sero inseridos oselementos estticos, os dinmicos, terrenos, luzes,sprites, cmeras. Tambm nele quese far a associao de programas feitos em WDL com os modelos 3D. Alm de tudoisto, neste mdulo que ser gerada a BSP, os light maps, PVS e demais componentesque permitiro que o jogo seja executado.

    Na Figura 63 pode-se ver que a tela doLevel Editorest dividida em 3 partes:

    1 rea de trabalho: Esta regio permite ver a geometria da cena. Estas visespodem ser ortogonais (sem deformao perspectiva) ou perspectivas, dadas pela visode camera. Normalmente se operar com a viso ortogonal de topo, lado e frente e coma viso perspectiva da camera 3D. Para inserir uma nova vista, basta clicar no menuview|Add View. Para a viso de camera pode-se optar pelo modo de visualizao: View |Wire Frame permite ver a modelagem em formato de arestas e vrtices, View | Solid

    permite ver a modelagem com os polgonos preenchidos e View | Texturedpermite vera modelagem com as texturas aplicadas. Normalmente este ltimo modo o maisconveniente de se usar, pois permitir que se tenha uma idia mais prxima do resultadofinal. Com o boto da direita do mouse pode realizar-se a operao dePAN, que consisteem mover a rea que se esta mostrando na regio. A operao de PAN ocorresimultaneamente em todas as vistas ortogonais, mas separadamente na viso de camera.Para se realizar umZOOMsobre uma regio, pode-se usar o Mouse wheelou clicar nocone de lupa. Sobre a viso de camera possvel tambm realizar uma operao deORBIT, que consiste em girar a camera ao redor de seu alvo. Isto pode ser feito atravsdo cone de um olho verde com uma flecha em formato de arco.

    2 rea de Projeto: Nesta seo manipula-se os diversos recursos que seencontram presentes no cenrio. Object refere-se a todos os objetos presentes nocenrio, Views relaciona todas as vistas armazenadas (isto feito clicando-se na pastacom o boto direito do mouse e escolhendo a opoAdd View Settings, que gravar asconfiguraes das vistas num item mostrado dentro desta pasta), Texture indica todas as

    bibliotecas de texturas disponveis, bem como as imagens de cada biblioteca eResources indica todos os elementos que esto sendo usados, tais como sons, scripts,mapas, etc, Ao dar um double-click sobre um dos recursos, ser aberto o arquivo pelo

    programa lincado ao seu tipo.

    3 Menu e Toolbar: Nesta rea se encotram as funcionalidades e comandos doLevel Editor.

  • 8/7/2019 Desenvolvimento de jogos 3D

    34/49

    Figura 63: Tela do Level Editor do 3D Game Studio

    5.1.1. Modos de Manipulao

    Apenas um modo de manipulao pode estar acionado de cada vez. Estes modos podemser:

    - Selecionar (boto com um dedo): permitir selecionar um determinado objetoou grupo. Para selecionar basta clicar sobre o objeto ou traar um retngulo como mouse, fazendo com que todos os objetos que estejam dentro sejam

    selecionados. Um objeto selecionado aparecer em vermelho, enquanto os noselecionados aparecem em branco.- Mover (boto com uma flecha sobre um cubo): Permitir mover um

    determinado objeto ou grupo livremente.;- Rotacionar (boto com um arco sobre um cubo): Permitir rotacionar um

    determinado objeto sobre o eixo perpendicular a vista em que se realiza aoperao;

    - Escalar (boto com setas em cruz sobre um cubo): Ir alterar a escala de umobjeto. Ao mover o mouse horizontalmente a escala ser feita na direohorizontal da vista e ao mover verticalmente a escala ser feita na direo

    vertical. Para que a escala seja igual nas duas direes, basta mover o mouseapertando a tecla ctrl.

    As transformaes podem ser feitas com maior ou menor preciso atravs dosnap. O snap consiste em realizar incrementos pr-estabelecidos nas transformaes. Ovalor do Snap estipulado no pequenosliderque se encontra na rea de botes do Toolbar. Caso o valor seja correspondente a 1 as transformaes sero contnuas.

    5.1.2 Texturas

    As texturas so organizadas em bibliotecas, chamadas de WADS, que podem sermanipuladas atravs do comando Textures | Wad Manager. Para se criar uma nova

    biblioteca, usa-se o comandoAdd Wad. A biblioteca construda no possuir nenhumatextura associada, enquanto o usurio no as inserir. Para inserir texturas deve-se clicar

  • 8/7/2019 Desenvolvimento de jogos 3D

    35/49

    com o boto direito sobre o espao correspondente biblioteca, na rea de projeto eescolher o comando Add Texture. Pode-se tambm criar uma biblioteca que contenhatodas as imagens que esto presentes no projeto corrente. Para tanto deve-se escolher o

    comando Build Wadno Wad Manager. Para carregar uma biblioteca de texturas paradentro de um determinado projeto se deve usar o comandoAdd Wadestando dentro doWad Manager. Ao realizar isto aparecer a lista de todas as texturas existentes nesta

    biblioteca no campo Textures, da rea de projetos.

    Pode-se criar uma lista com as texturas mais usadas num projeto, sendo que estastexturas podem ou no estar em WADs diferentes. Para isto deve-se usar o comandoTextures | Texture Bookmarks.

    Para associar uma textura a um determinado objeto, basta selecionar o objeto eem seguida dar um double clicksobre a textura desejada, na rea de projeto. Ao realizaristo, todos os polgonos do objeto recebero esta textura. A textura pode ser manipulada

    atravs do painel de propriedades do objeto em questo (Figura 64), tendo em conta queo controle ser individual para cada polgono que compe o objeto. Para escolher opolgono deve-se clicar sobre as setas que esto no canto superior direito da janela. Opolgono selecionado ir aparecer em amarelo.

    Figura 64 Painel de propriedades de um objeto

    Uma das opes do painel de propriedades se refere justamente forma como atextura est aplicada. (oposurface). O parmetro Offsetpermite mover a textura sobreos polgonos, scale permite alterar a escala da textura em relao ao objeto e angle

    permite girar a textura sobre os polgonos.

    Pode-se aplicar uma textura tambm apenas para um elemento de um grupo ouapenas para uma das paredes de um bloco. Para tanto deve-se selecionar o elemento ou a

    parede. Isto feito selecionando-se o grupo ao qual pertence e depois usar o comandoScope Down (boto com um grupo de cubos e uma seta para baixo) que ir descendoaos nveis mais baixos da hierarquia. Para voltar ao objeto original, usa-se o comando

    Scope Up.

  • 8/7/2019 Desenvolvimento de jogos 3D

    36/49

    5.1.3. Construindo Salas

    As salas sero normalmente feitas atravs de objetos primitivos, ou blocos (cubos,cilindros, pirmides, etc). Para criar um objeto primitivo usa-se o comando Object | Add

    Primitive ou Object | Add Cube. Note-se que os objetos primitivos sero semprerepresentados por polgonos e deve-se escolher o grau de refinamento dos mesmos. importante que se escolha sempre o menor nmero de polgonos possveis, de forma aotimizar a cena.

    Uma vez criado o objeto que servir de sala, deve-se usar o comando Edit |Hollow Blockpara que cada polgono se torne uma parede (composta por 6 polgonos).Isto permitir que uma parede possa ser vista dos dois lados, sem a necessidade de que oengine crie um estado de normais duplas para cada polgono.

    Como na maioria das vezes as salas sero originadas por cubos, j existe umcomando capaz de criar salas prontas, ou seja, com oHollow Blockj aplicado. (Object| Add Hollow Cube)

    Para acessar s propriedades de uma determinada primitiva, basta clicar com oboto direito sobre o mesmo e optar porproperties. As propriedades que um bloco podereceber so:

    - Passable: O bloco no ter coliso com os elementos dinmicos do jogo. (Porexemplo, gua de uma piscina);

    - Invisible: O bloco no ser visualizado no jogo, mas poder ter coliso com osoutros elementos.

    - Texture Lock: A textura permanecer imvel quando o objeto sofrertransformaes espaciais.

    Figura 65 Dois cubos vistos de cima e com o Hollow Blockj aplicado. Ocubo vermelho o objeto auxiliar e consiste na parte a ser removida dos dois

    blocos. Em (b) pode-se ver o resultado da operao.

    Aps ajustar o tamanho e a posio do bloco que servir de sala, muitoprovavelmente se desejar criar buracos que sirvam de passagem de uma sala para outra.Para isto, deve-se utilizar um objeto auxiliar, que poder ser qualquer uma das

    primitivas disponveis. Este objeto dever ser colocado de tal forma que contenha dentrodele toda a parte da geometria de outros objetos que sero removidos (ver figura 65).Aps posicion-lo adequadamente, deve-se manter este objeto auxiliar selecionado e

    utilizar o comando Edit | CSG Subtract. Feito isto, o objeto auxiliar ainda estarpresente, mas todas as partes das geometrias que estiverem contidas em seu interior

  • 8/7/2019 Desenvolvimento de jogos 3D

    37/49

    tero desaparecidos. Para completar a operao deve-se deletar ou mover o objetoauxiliar. Esta operao apenas funciona com os objetos estticos, ou seja os blocos e osobjetos pr-fabricados. No ter nenhum efeito com os objetos dinmicos, sprites e

    terrenos.

    5.2 Objetos Pr-fabricados

    Os objetos pr-fabricados so objetos estticos (WMP) que esto dentro do diretrio..\Gstudio\Prefabs\. Caso o usurio deseje inserir objetos nesta lista, basta coloc-losdentro deste diretrio. Em geral estes objetos consistem em vrios elementos agrupados,

    portanto para edit-los deve-se utilizar o comandos de Scope Down antes.

    5.3 Luzes

    As luzes podem ser de dois tipos: estticas e dinmicas. Luzes dinmicas apenas podem

    ser criadas atravs descripts, j as estticas devem ser criadas no leveleditor, atravs docomando Object | Add Light. Esta luz gerar os light maps, que consiste no pr-processamento da iluminao armazenado pelo engine. Isto implica que durante o jogono podero ser alteradas em hiptese alguma. As propriedades de uma luz so a sua core seu alcance (Range). Este alcance no implica que a luz termine abruptamente quandochegue ao valor estipulado, mas existir uma queda gradual, seguindo uma interpolaolinear. Apenas as luzes estticas iro produzir sombras realistas, graas ao pr-

    processamento do engine.

    Ao colocar as luzes estticas, ser possvel notar que locais fora do alcance da luzou locais com sobra ficaro totalmente pretos. Isto ocorre quando no h nenhuma luzambiente. Para inserir luz ambiente deve-se utilizar o comando File | Map Properties |

    Sun. A luz ambiente no possui um ponto de origem e portanto apenas necessriodizer a cor do mesmo.

    5.4 Compilando e executando uma cenaPara poder executar o jogo necessrio antes compil-lo, ou seja, gerar a sua BSP, oslightmaps, os portais, etc. Para isto, necessrio que a cena esteja fechada, ou seja, o

    playerno pode em hiptese alguma ver uma regio que no haja nenhum polgono.

    Para compilar deve-se usar o comando File | Build WMB. Existem uma srie deopes (consultar o manual para uma explicao mais detalhada) mas esto divididasem 2 grupos: Build, que reconstruir tudo ou update, que apenas atualizar alguma

    mudana. Para compilar a cena por completo deve-se usar a opoBuild Level Map.Entretanto, em cenrios grandes isto poder demorar muito, portanto caso apenas setenham inserido objetos dinmicos desde a ltima compilao, usa-seBuild Entity Mapou no caso de apenas se ter alterado algum parmetro de um objeto dinmico, basta darUpdate Entities.

    Uma vez compilado, o jogo est pronto para ser executado. Para isto deve-seusar o comando File | Run Level. Pode-se optar por executar o jogo em tela cheia ouapenas numa janela. Durante a execuo, pode-se entrar no modo de debug, que permitever os polgonos e uma srie de informaes importantes, tais como o frame rate,memria sendo usada, etc. Isto feito apertando a teclaD durante a execuo do jogo.

    (para ver os polgonos deve-se teclar novamente a teclaD)

  • 8/7/2019 Desenvolvimento de jogos 3D

    38/49

    5.5 Objetos Dinmicos

    Os objetos dinmicos so todos os objetos que no ficaro parados durante o jogo.O comportamento destes objetos determinado por uma funo especial, chamada deaction e escrita em WDL. Esta ao pode estar pronta e disponibilizada numa das

    bibliotecas do 3D Game Studio ou pode ser programada pelo desenvolvedor.

    Os objetos dinmicos possuem algumas propriedades especiais, que no estopresentes nos estticos. Uma das principais o behavior, que consiste na ao que sercolocada no objeto em questo. Para associar um comportamento deve-se chamar a

    janela de propriedades e em seguida clicar no cone em forma de pasta, no ladoesquerdo do campo Action. Ao fazer isto ir aparecer uma srie de nomes de aesdisponveis. Estas aes esto numa das bibliotecas descriptdo Game Studio ou estono script na cena em questo. No preciso fazer nada para que aparea a relao destesnomes, basta ter criado um script para o projeto. (Isto feito pelo comando File | Map

    Properties | Main e clicar sobre a pasta new script)Na janela de behaviors esto presentes campos para as varveis disponibilizadas

    pelo script. Estas variveis permitem que um mesmoscriptpossa ser usado por mais deum elemento dinmico e que gere aes diferenciadas. (ver manual de WDL paramaiores detalhes.)

    5.6Scripts

    Os scripts permitiro desenvolver toda a lgica do jogo. A linguagem utilizada semelhante linguagem C, porm com algumas facilidades. Todo projeto deve terassociado a si um arquivo do tipo WDL. Este arquivo pode ser criado automaticamente,

    bastando para isto usar o comando File | Map Properties | Main e clicar sobre a pastanew script. Pode-se tambm usar um arquivo j existente (de outro jogo, por exemplo).

    O arquivo descriptpossui a seguinte estrutura:- Definies de diretrios a serem disponibilizados (onde se encontram todos os

    recursos a serem utilizados pelo nvel em questo):path "models";// Path to model subdirectory - if anypath "sounds";// Path to sound subdirectory - if anypath "bmaps";// Path to graphics subdirectory - if any

    Path "g:\\PROGRAM FILES\\GSTUDIOPRO\\template";

    - Definies de bibliotecas a serem disponibilizadas:include ;include ;include ;include ;include ;

    Estas bibliotecas consistem sobretudo em funes e aes prontas. Ao criar umnovo script o Game Studio j incluir as bibliotecas que a verso oferece ao usurio.Assim por exemplo, o arquivo doors.wdlpossui vrias aes prontas para abertura de

    portas, chaves, utilizao de cdigos para abrir portas, etc. Deve-se consultar o manualde WDL do Game Studio para uma informao detalhada de todas as aes que seencontram dentro destes arquivos.

  • 8/7/2019 Desenvolvimento de jogos 3D

    39/49

    - Definies de variveis globais:var video_mode = 6; // screen size 640x480

    var video_depth = 16; // 16 bit colour D3D mode

    bmap horizon_map = ;bmap mountain_map = ;

    As variveis globais correspondem quelas variveis que podem ser usadas porqualquer funo ou pela funo principal. Os principais tipos de variveis que oscriptdo Game Studio permite definir so: var (para qualquer tipo numrico), bmap (paraimagens), string (para textos em ASCII), music (para arquivos de som tipo MIDI) esound (para arquivos de som do tipo WAV).

    Definies de funes e aes:

    function start_song(){

    wait(4);if (midi_vol > 0) {

    play_song_once(testsong,80);}

    }

    action IA_personagem{

    my._entforce = 0.7;my._health = 35;my.enable_scan = on;my.enable_shoot = on;my.enable_detect = on;my._state = _state_wait;estado_espera();

    }

    As funes e aes descrevero a lgica do comportamento dos objetosdinmicos e provavelmente aqui que o programador gastar a maior parte do seutempo. Para maiores detalhes ver o manual descripts do Game Studio.

    Funo Main:function main(){

    // set some common flags and variables// announce bad texture sizes and bad wdl codewarn_level = 2;

    tex_share = on; // map entities share their textures

    // play a wav filesnd_playfile ("trilha1.wav", 100, 100);

    fog_color = 2;

    // now load the levelload_level();

  • 8/7/2019 Desenvolvimento de jogos 3D

    40/49

    // fog = 100;

    // load some global variables, like sound volume

    load_status();

    // client_move(); // for a possible multiplayer game// call further functions here...

    }

    A funo Main a primeira coisa a ser executada ao darRun no jogo. Observe-se que ela quem carrega o arquivo binrio do cenrio (load_level), e ela quem chamatodas as definies globais do jogo. Esta funo ser criada automaticamente ao criar o

    script, e em geral poucas coisas devero ser acrescentadas a ela.

    6. Engines LivresConforme foi descrito na seo 2 e 3 existem inmeras solues livres que

    podem ser usadas inclusive no desenvolvimento de softwares fechados e comerciais,pois suas licenas permitem tal utilizao. Nesta situao pode-se traar um paralelocom o desenvolvimento da OpenGL que at o seu desenvolvimento cada empresadesenvolvia sua prpria biblioteca grfica despendendo tempo e investimentos para criarum conjunto de primitivas grficas de baixo nvel. Quando a OpenGL agregou tais

    primitivas permitiu que fossem desenvolvidos novos algoritmos grficos maissignificativos, de alto nvel, pois j era possvel usar estas primitivas mais elementares

    para projetar solues mais sofisticadas.

    Muitas desenvolvedores despendem grande parte de seus projetos recriando umsistema de tratamento de eventos do sistema, por exemplo, que j fora implementadopor diversos SKDs e engines. Tais desenvolvedores poderiam partir das solues jexistentes, modificando-as e adaptando-as e redistribuindo-as para comunidade.

    6.1. Crystal Space

    Crystal Space um projeto Open Source desenvolvido por Jorit Tyberghein [CRY 05][WEN 02]. distribuda gratuitamente sob a licena LGPL. Desenvolvida usando C++ compatvel com as seguintes plataformas: Linux, Windows e MacOS. No caso dosistema Windows o Crystal Space suporta o DirectX e em todos os sistemas oferecesuporte a biblioteca OpenGL. Destaca-se que a Crystal Space no um engine, mas

    trata-se de um kit de desenvolvimento para jogos computadorizados 3D. No guia dodesenvolvedor [CRY 05] est anunciado: Crystal Space um pacote de componentes ebibliotecas na qual podem ser teis para criao de jogos computadorizados.Entretanto usando a arquitetura da Crystal Space possvel desenvolver os prpriosengines.

    Apesar de permitir o desenvolvimento de jogos bidimensionais, a maioria desuas funcionalidades esto voltadas para renderizao de grficos 3 em tempo real.Tambm apresenta suporte a uma srie de formatos de som e persistncia dos mundosusando o formato XML (eXtensible Markup Language). Tambm permite carregararquivos no formato 3DS, MDL, MD2, ASE, OBJ e POV. Existe uma farta

    documentao incluindo tutoriais, guias, referncias da API e listas de discusso.

  • 8/7/2019 Desenvolvimento de jogos 3D

    41/49

    Segundo o site do Crystal Space [CRY 05] existem mais de 650 pessoas que colaboramcom o projeto.

    Wen [WEN 02] destaca que o Crystal Space possui um diferencial em relao osengines 3D proprietrios, tais como Quake IIIe Unrealpelo fato do Crystal Space seruma ferramenta de propsito geral. Ou seja, no especfica para jogos, ela consiste deuma API grfica que pode ser utilizada por qualquer aplicao multimdia. Este toolkit

    bastante usado pela comunidade pelo fato desta ser bastante estvel e pela grandequantidade de funcionalidades 3D [WEN 02]. A sua principal fraqueza trata-se domecanismo para deteco de coliso [WEN 02].

    Uma caracterstica da arquitetura do Crystal Space muito importante o uso dosistema de plug-ins [WEN 02], isto , um executvel funcionar com diversosrenderizadores, tais com OpenGL, Direct3D e Glide. Assim cria-se uma camada deabstrao da interface oferecida pela ferramenta e a forma de implementao que poder

    adotar qualquer mecanismo de renderizao. Gradativamente novosplug-ins so criadose distribudos separadamente facilitando o processo de desenvolvimento pelo fato dessaalta modularidade. Para citar um exemplo de aplicao do Crystal Space, pode-sedestacar o jogo PlaneShift[PLA 05]. Esse jogo consiste de um MMORPG livre comgrficos 3D, distribudo gratuitamente e desenvolvido com o Crystal Space.

    Comparando o 3D Game Studio e com Crystal Space certamente muito maisfcil e intuitivo de utilizar o primeiro do que o segundo, pois oferece uma srie derecursos grficos em uma IDE projetada para criao de jogos. Entretanto o segundo multiplataforma permite a criao de novos plug-ins para serem adicionados na infra-estrutura geral do motor. Conforme o jargo computacional a Crystal Space umaferramenta de mais baixo nvel, mas em contrapartida permite uma personalizao maisampla. Veja algumasscreenshots degames criados usando a Crystal Space na Figura66. Veja tambm o exemplo deshaderna Figura 67.

    Figura 66: Algumas imagens do jogo PlaneShiftdesenvolvido com a CrystalSpace

  • 8/7/2019 Desenvolvimento de jogos 3D

    42/49

    Figura 67: Exemplo de CG Shader Crystal Space

    O download do cdigo-fonte pode ser feito a partir do site da Crystal Space(CS). Atualmente a verso estvel a 0.98r004. No disponibilizado nenhum arquivo

    binrio, logo o Crystal Spaceprecisa ser compilado pelo prprio usurio. O processo deinstalao trivial, pois trata-se descompactar um arquivo zipado. Nesse arquivo estdisponibilizado o manual do programador, o guia da API do Crystal Space e todo seucdigo-fonte.

    Para usurios iniciantes o processo de compilao pode ser um poucocomplicado, entretanto o manual oficial do Crystal Space descreve detalhamente todo o

    processo de instalao para as plataformas Microsoft Windows, GNU/Linux e MacOS.

    Os usurios do sistema operacional GNU/Linux encontraro mais facilidade paracompilar pelo fato do sistema possuir nativamente uma forte integrao com asferramentas de compilao para C/C++. Para compilar o Crystal Space na plataformaWindow primeiramente necessrio instalar no sistema o Cygwin ou MigWM. Caso sejautilizado o Microsoft Visual Studio no necessrio instalar estas ferramentas. Nestetrabalho ser descrito como proceder a instalao considerando o Cygwin.

    Concluda essa etapa inicial deve-se efetuar o download do ltimo release daWin32libs que contem os headers pr-compilados para os usurios do Cygwin. O

    processo de instalao segue o formato padro de um wizard comumente encontrado nasaplicaes Windows. Alm dessa biblioteca deve-se fazer o download de um porte do

    DirectX 8.0 para Cygwin e da Open Dynamics Engine (ODE). Para instalao doDirectX deve-se descompactar o arquivo e compil-lo atravs do comando do make. AODE no precisa ser compilada, pois j esto disponveis os binrios para plataformaWindows.

    Por ltimo o Crystal Space pode ser compilado. O script ./configure deve serexecutado. No diretrio raz do engine basta digitar jam para iniciar a compilao. Atarefa bastante demorada. No elimine os arquivos temporrios que foram usados nainstalao, pois as libs acabam sendo removidas. Para visualizar a execuo de um testedigite na linha de comando walktest.

  • 8/7/2019 Desenvolvimento de jogos 3D

    43/49

    6.2. Ogre3D

    O Ogre3D (Object-Oriented Graphics Rendering Engine) trata-se de uma ferramentaconstruda em C++, orientado a objetos e distribudo livremente e gratuito sob a licenaLGPL. Foi desenvolvido como a dissertao de mestrado de Jeff Plummer naUniversidade do Arizona/EUA. Destaca-se que o Ogre3D da mesma forma que oCrystal Space no tratam-se de um engine explicitamente, mas constituem-se de umconjunto de componentes que podem ser usados na criao de um engine. Tanto oCrystal Space quanto Ogre3D oferecem ao desenvolvedor possibilidades de

    personalizao e extenso, desta forma potencializando a reusabilidade de cdigo,abstraindo primitivas de baixo nvel e permitindo o desenvolvimento de novas tcnicasque podero ser plugadas na arquitetura dos motores.

    O Ogre3D oferece suporte ao DirectX e a OpenGL,shaders, suporte a texturas,alm de uma srie de outras funcionalidade de suporte para criao de jogos 3D. Na

    Figura 68 so apresentadas algumas telas de aplicaes criando com o Ogre3D. O processo de instalao bem mais simples que a Crystal Space, no precisorecompilar basta fazer download do instalador e seguir os passos de uma instalaotpica do Windows. importante destacar que a Ogre3D bastante documentadainclusive com a especificao UML dos seus componentes.

    Figura 68: Exemplo de aplicaes criadas com Ogre3D.

    7. Desenvolvendo Outras Aplicaes Usando Ferramentas Relacionadas aoJogos Computadorizados

    O objetivo desta seo apresentar para comunidade exemplos de aplicaes que podem ser desenvolvidas usando a mesma infra-estrutura tecnolgica dosgames.Assim, conforme foi destacado na introduo, muitos resultados aplicados ementretenimento digital podem ser aplicados em outras pesquisas.

    Um primeiro grupo de aplicaes so os simuladores destacando as aplicaesna fsica que integram OpenGL e ODE. Por exemplo, o OpenSim (Figura 69) que trata-se de um simulador 3D para robs autnomos. Outra aplicao oBiodesigner (Figura70) que trata-se um modelador e visualizador de molculas.

  • 8/7/2019 Desenvolvimento de jogos 3D

    44/49

    Figura 69: Screenshotdo OpenSim, um simulador 3D de robs autnomos.

    Figura 70: Screenshotdo Biodesigner, representando uma molcula.

    Outra tipo de aplicao que potencial de ser investigada na rea de interaohumano-computador, trata-se de interfaces grficas 3D. Muito computadores pessoaisso equipados com placas aceleradoras 3D que so sub-utilizadas quanto aogerenciamento da interface grfica com o usurio. Logo, esta infra-estrutura de hardware

    pode ser usada para criar ambientes 3D completos. Acredita-se [BEN 99] que interfacesgrficas 3D facilitam a interao entre homem-mquina considerando aspectoscognitivos e perceptivos. Aplicativos de no-entretenimento poderiam explorar as

    potencialidades grficas dos jogos, tais como aspectos artsticos, combinao de cores,facilidade de uso para criar interfaces mais intuitivas para os usurios.

    O ProjetoLooking Glass [PRO 05] apoiado pela Sun Microsystems (veja Figura71) trata-se de um exemplo de interface grfic