padrão de projeto aplicado a jogos

Post on 17-Aug-2015

220 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Padrão de Projeto Aplicado a Jogos

TRANSCRIPT

Padres de Projeto Aplicados Construo de Jogos Eletrnicos Roberto Tenorio Figueiredo, Carla Brando de Carvalho Figueiredo Faculdade de Cincias Aplicadas e Sociais de Petrolina (FACAPE)Campus Universitrio S/N Vila Eduardo 56.328-903 Petrolina PE Brasil tenorio.petrolina@bol.com.br, carlabfigueiredo@terra.com.br Abstract. Software Engineering is a collection of good practice which aims tomakesoftwaredevelopmenteasierandfasterresultinginaquality product.Manyofthesepracticesareusedincommercialapplications, focusedontheinternaluseincompanies,however,othertypesofsoftware canalsomakeuseofthesepracticeswiththesamegoalofimprovingthe developmentandqualityoftheproductgenerated.Oneexampleisvideo games, products with great quality and perfect graphics, but that takes years togetreadyandrequiresaneffortofgreatteamsandhighfinancial investment,theyneedtogivetheexpectedreturn.Toaiddevelopment, reduceprojectrisksandincreasequality,itisimportanttousevarious techniquesofsoftwareengineering,leavingtheprojectsaferforinvestors and better for developers and also for plays. This work demonstrates how to use design patterns that was originally defined for commercial applications to develop electronic games, based on a classic RPG game in turns, due to itscharacteristicofbeinganinclusivetypeofgame,maximizingthe demands on programming and design patterns, in this research. Keywords:SoftwareEngineering,ElectronicGames,DesignPatterns, Game Development. Resumo.EngenhariadeSoftwareareuniodeboasprticas,quetemo intuitodetornarodesenvolvimentodesoftwaremaissimplesegil resultandoemumprodutodequalidade.Muitasdessasprticasso utilizadasemaplicaescomerciais,voltadaparaousointernonas empresas,porm,outrostiposdesoftwaretambmpodemfazerusodessas prticascomomesmoobjetivodemelhorarodesenvolvimentoea qualidadedoprodutogerado.Umexemplodistosoosjogoseletrnicos, produtos com extrema qualidade e perfeio grfica, mas que demoram anos paraficaremprontoserequerumesforodegrandesequipesealtos investimentosfinanceiros,queprecisamdaroretornoesperado.Para auxiliarodesenvolvimento,diminuirosriscosdoprojetoeaumentara qualidadeimportanteousodediversastcnicasdaEngenhariade Software, deixando o projeto mais seguro para quem investee melhor para quemdesenvolveetambmparaquemjoga.Esteartigodemonstracomo utilizarospadresdeprojetodaengenhariadesoftwaregeradospara aplicaescomerciais,nodesenvolvimentodejogoseletrnicos,tomando como base um jogo deRPG clssico em turnos, devidoa sua caracterstica deserumtipodejogoabrangente,maximizandoasdemandasna programao e nos padres de projeto, foco desta pesquisa. No permitido fazer cpias deste trabalho visando o lucro ou vantagem comercial. necessrio ostentar a primeira pgina. Este trabalho foi publicado nos Anais do 2 Simpsio Interinstitucional de Computao do Vale do So Francisco (SICOMP 2011), 18 - 20 de maio de 2011- Juazeiro - Bahia - Brasil - www.sicomp.org - ISSN 2236-2215. PalavrasChaves:EngenhariadeSoftware,JogosEletrnicos,Padresde Projeto, Desenvolvimento de Jogos.1. Introduo.OusodosconceitosdeEngenhariadeSoftware,quegeralmentesoaplicadosem programascomerciais/industriais(PRESSMAN,1995),tambmpodemseraplicados paramelhorianodesenvolvimentodejogoseletrnicos.Dentreastcnicasbsicasde engenhariadesoftwareestoospadresdeprojeto,quepodemmelhoraro desenvolvimento de um jogo, tornado-o mais rpido, barato e cujas bibliotecas podero ser reutilizadas em outros projetos. Ousodepadresdeprojetovisareduziroesforoutilizadonasoluode problemasquesurgemduranteodesenvolvimento,comoaimplementaodenovas funcionalidades,correodeerros,alteraoderegraseleisnodomniodaaplicao, entre outros, propondo uma soluo j testada para estes eventuais problemas, deixando odesenvolvimentomaissimplesegil.Estetrabalhovemacomplementaraliteratura sobreodesenvolvimentodejogoseletrnicosinserindonestecontexto,conceitos,que at ento eram utilizados somente na produo de aplicaes comerciais/industriais. Projetoedesenvolvimentodejogosrepresentamumareabastanteadequada paraaplicaodepadresdeprojeto,umavezquemesmoasaplicaesmaissimples em jogos necessitam de mecanismos criacionais, de representao (cenrios e elementos do jogo), comportamentais, de interao e de distribuio. 2. Definio dos padres de projeto a serem utilizados Em grandes empresas de desenvolvimento, como a Sony, Microsoft e Nintendo, padres de projeto tm sido extensivamente aplicados a jogos. Existem quatro contextos bsicos paraaplicaodepadresemjogos:projetodojogo(gamedesign),projetodenvel (level design), projeto de game engine e implementao do jogo (SILVEIRA e SILVA, 2006). No projeto de um jogo, as abordagens de projeto orientado a objetos e a aspectos recebemfortesaplicaesdepadresdeprojeto.Umexemplodissoarealizaode um projeto completo de um jogo do tipo tabuleiro para duas pessoas utilizando o padro MVC(Model-View-Controller),feitopelospesquisadoresD.NguyeneS.B.Wong (SILVEIRA e SILVA, 2006). Outro exemplo a apresentao de um conjunto bastante extensodeaplicaesdepadresnasdiversasfasesdoprojetodejogo(gameplay, movimentos,fsica,IA,dentreoutros),feitapelospesquisadoresS.BjrkeJ. Holopainen (SILVEIRA e SILVA, 2006). Nocontextodeprojetodenvel,sodefinidososcenrioserefinamentosdos elementosdejogos,bemcomoaespecializaodosfluxosdentrodosnveis.Aqui, padres de interao desempenham papel fundamental. Oscontextosdeprojetodegameengineseimplementaodoprpriojogoso asduassub-reascommaiorconcentraodeaplicaesdepadresdeprojeto.O pesquisadorR.Ruckerdesenvolveuumgameenginecompletoaplicando extensivamentepadresdeatribuioderesponsabilidadesGRASP(General Responsibility Assignment Software Patterns) e padres de projeto GoF (Gang of Four) (SILVEIRA e SILVA, 2006). O pesquisador D. H. Eberly faz aplicaes de padres de projetobemconhecidosemsoftwarescomerciaiseprogramaonaconstruodoseu game engine Wild Magic (SILVEIRA e SILVA, 2006). Estes so alguns dos exemplos discutidos na literatura sobre as tcnicas de desenvolvimento de jogos onde a aplicao depadresdeprojetosrepresentougrandesganhosemtermosdedesempenhoe facilidade de escalabilidade e manuteno. Paraaelaboraodesteartigo,foidesenvolvidoojogodeRPGclssicoOs Federa4eaMquinadoTempo,queacontinuaodeumasriedejogoscuja estriasepassaemumuniversodesuperherisefocadaemumgrupodeheris conhecido como Os Federa. Telas do jogo podem ser vistas nas figuras 1 e 2. Figura 1: Tela do jogoFigura 2: Tela do jogo Fonte: os autoresFonte: os autores Analisandoosprincipaispadresdeprojetoexistentesnoplanejamentode softwares comerciais (Abstract Factory, Builder, Factory Method, Prototype, Singleton, Adapter,Bridge,Composite,Decorator,Faade,Flyweight,Proxy,Chainof Responsibility,Command,Interpreter,Iterator,Mediator,Memento,Observer,State, Strategy,TemplateMethod,Visitor)ebaseadonaanliseanteriorenasdemandasdo jogo proposto, foram identificadas a necessidade de uso de alguns padres, descritos no tpico a seguir, com o objetivo de simplificar a criao do software e garantir o reuso de suas classes. 2.1. Padres de Projeto Asimplesutilizaodosconceitosdeorientaoaobjetosnogarantem,porsis, aplicaesreutilizveis,extensveisedefcilmanuteno.Paraqueessesobjetivos sejamatingidosimportantetambmsepreocuparcomaformacomqueessas aplicaes e seus cdigos so estruturados (GAMMA, 1995). Ospadresdeprojetodescrevemsoluesparaproblemasdeprojeto recorrentes,quesosimilaresentresieestopresentesemdiferentescontextos.Esses padressoexaustivamentetestadoseconfiguramamelhorsoluoparaum determinado problema. Naliteratura,existemdiversosautoresqueidentificameexplicitampadresde projetodesoftware,sendoeles,resultadosdeexperinciasanterioresno desenvolvimentodesistemas.Estetrabalhotemcomoprincipalrefernciaolivro DesignPatterns:ElementsofReusableObject-OrientedSoftwaredosautoresErich Gamma, Richard Helm,Ralph Johnson e John Vlissides, conhecidos como a Gang of Fourousimplesmente"GoF"(GAMMA,1995).Tomandocombaseospadres GoF, os seguintes padres foram identificados como necessidade para o jogo de RPG clssico Os Federa 4 e a Mquina do Tempo: Interface a.Caracterstica:Mantmumaclassequeusamdadoseserviosprovidospor instnciasdeoutrasclassesindependentedessas,atravsdoacessoatais instncias obrigatoriamente atravs de uma interface (DCC, 2008); b.ProblemanoJogo:Subsistemasdiferentes(Classe,Eventos,Personagens, GrupodeInimigos,Cenrios,Animaes,Sons,Mapas,Sistema)queremse comunicar com o motor; c.Resultados:Comunicaocomomotoratravsdeumnicocanal,gerando facilidade na comunicao entre os subsistemas e o motor; Singleton a.Caracterstica:Garanteaexistnciadeapenasumainstnciadeumaclasse, mantendo um ponto global de acesso ao seu objeto (DCC, 2008); b.ProblemanoJogo:Aclassequegeraomenudeopes,defineamoeda corrente no jogo, configuraes do jogo e vocabulrio no pode ser duplicada, a fim de evitar confuses ao jogador; c.Resultados: Garantia que a classe do sistema do jogo nica; Adapter a.Caracterstica:Utilizadoparaadaptarainterfacedeumaclasse,permitindo queclassescominterfacesincompatveispossaminteragir,ouseja,umobjeto cliente poder utilizar-se de servios de outros objetos com interfaces diferentes por meio de uma interface nica (DCC, 2008); b.ProblemanoJogo:Muitossubsistemas,cadaumcomsuainterfaceprpria,a fim de se comunicar com o motor; c.Resultados: Facilidade na comunicao do motor com seus subsistemas; Flyweight a.Caracterstica:Utilizadoquandovriosobjetosdevemsermanipuladostodos damesmamaneira,semanecessidadededadosadicionais.Nestepadro inexistem ponteiros para os mtodos do dado, para economizar memria.Neste caso,objetosdiferentes,comosmesmosdados,compartilhamosdadosem comum (DCC, 2008); b.ProblemanoJogo:Diversosinimigosocasionais,andandoemgrupos,que possuemasmesmascaractersticassoinstnciasdeobjetosquegastam memria com informaes repetidas; c.Resultados:Ojogoocupamenosespaosemmemria,poisarmazenaas caractersticas dos monstros apenas uma nica vez; d.Diagrama de uso: Command a.Caracterstica:Encapsulaumasolicitaocomoumobjeto,destaformaa permitir que clientes parametrizem diferentes solicitaes, enfileirem ou faam o registro de solicitaes e suportem operaes que podem ser desfeitas; b.ProblemanoJogo:Salvaroprogressodojogo.Issosignificasalvarostatus atual de todos os personagens e eventos do jogo;c.Resultados: Guarda, em um objeto, as modificaes nos eventos e personagens realizados durante a jogatina, e, no momento de salvar, basta apenas guardar os dados armazenados nos objetos da classe Command; Iterator; a.Caracterstica:Forneceumamaneiradeacessardeformaseqencialos elementos de um objeto agregado sem expor sua representao subjacente; b.ProblemanoJogo:Oobjetoquecontrolaaclassenaqualpertenceum personagem deveanalisar, um a um, todos os itens, armase armaduras que um determinado heri pode usar; c.Resultados: A anlise de itens, armas e armadura fica mais rpida e simples; Mediator a.Caracterstica:Defineumobjetoqueencapsulaainteraoentreumconjunto de objetos. Promove o acoplamento fraco ao evitar que os objetos se refiram uns aos outros, permitindo a variao das interaes independentemente; b.Problema no Jogo: Alguns subsistemas do jogo precisam se comunicar entre si, sem a interveno do motor, o que pode causar um forte acoplamento entre eles; c.Resultados:ComaclasseMediator,asiteraesentreossubsistemasficam com fraco acoplamento, permitindo uma maior reusabilidade destes subsistemas; Memento a.Caracterstica:Semviolaroencapsulamentodoobjeto,capturaeexternaliza um estado interno de um objeto, de modo que o mesmo possa posteriormente ser restaurado para este estado (DCC, 2008). b.Problema no Jogo: Ao salvar a progresso do jogo, so salvos todos os eventos modificados,cadaeventoumobjeto.Algunsdessesobjetossograndese ocupam muito espao no arquivo de salvamento; c.Resultados:Oarquivodesalvamentorecebeapenasasinformaes modificadas do objeto e no o objeto inteiro, reduzindo drasticamente o tamanho doarquivosalvo,facilitandoarestauraodosdadossalvosnomotorenos subsistemas do jogo; Observera.Caracterstica:Defineumadependncia1paraN,entreobjetosdemodoque quandoumobjetomudaoestado,todosseusdependentessejamnotificadose atualizadosautomaticamente.Permitequeobjetosinteressadossejamavisados damudanadeestadoououtroseventosocorrendonumoutroobjeto(DCC, 2008). b.ProblemanoJogo:Atualizaesdatelagrfica,cenrioseelementosvisuais exibidosparaousurio(GraphicalUserInterfaceGUI),devemserfeitas semprequeexistaatualizaodossubsistemasquemanipulamoseventos lgicosevisuaisdojogo,causandoumforteacoplamentoentreaGUIeesses subsistemas; c.Resultados:AtualizaoautomticadaGUI,comfracoacoplamentoentreos subsistemas lgicos/visuais e a GUI do jogo; State; a.Caracterstica: Usado para permitir que um objeto altere o seu comportamento quando o seu estado muda. Ao utilizar este padro, parecer que o objeto mudou de classe; b.ProblemanoJogo:Asalteraeseevoluesocorridasemcadaobjeto personagemecadaobjetoeventodevemserdiferenciadas,dependendoda caracterstica de cada personagem e evento; c.Resultados:Alteraeseevoluesfeitasemobjetospersonagenseeventos tornam-seindependentesdoestadoqueoobjetoseencontra.OStatese encarrega de avaliar o estado do objeto e fazer as devidas alteraes/evolues; Comomostrado,esseseoutrospadrespodemserutilizadosnodesenvolvimentode jogos,comligeirasadaptaes,viabilizandoasoluodeproblemasaparentemente difceis, mas que j foram lies aprendidas em outros projetos de sistemas. 3. Concluso Comestetrabalho,foipossvelaprenderaliodequeaEngenhariadeSoftware perfeitamenteaplicvelnodesenvolvimentodejogoseletrnicos,mesmousando tcnicasespecficasdeaplicaescomerciais,principalmentequandotrata-se,mais especificamente, de Padres de Projeto. Com a criao do jogo de RPG Os Federa 4 e aMquinadoTempo,observa-sequeasaplicaesdospadresotimizaafasede desenvolvimentoetornaseucdigoreutilizvelparajogosfuturosedefcil entendimento,almdocumprimentototaldoescoponotempoprevisto.Umjogo precisadeumaequipededesenvolvimentoeousodepadrestambmfacilitaa comunicao entre os membros da equipe. Umaboasequnciadestetrabalhoumapesquisafocadaemjogosdeoutrostipos, comoaventura,lutaouesportequepodertrazermuitomaiscontribuiesparao desenvolvimentodejogos,almdacriaodepadresespecficosparajogosde computador. 4. Referncias DCC. Disciplinas do curso de Cincia da Computao [Online]. Central das Disciplinas doDCC/UFBA. -UFBA,2008. Disponvelemhttps://disciplinas.dcc.ufba.br/. Acessado em 11 de maro de 2011. GAMMA,Erich&HELM,Richard&JOHNSON,Ralph&VISSIDES,John. DesignPatterns:ElementsofReusableObject-OrientedSoftware[Livro]. -[s.l.] : ADDISON WESLEY, 1995. PRESSMAN, Roger S. Engenharia de Software - So Paulo : Makron Books, 1995. SILVEIRA,Ismar&SILVA,Luciano.AprendizagemdePadresdeProjetoem CinciadaComputaoatravsdeJogosDigitais. AnaisdoXXVICongressoda SBC. - So Paulo : [s.n.], 2006.

top related