scieee Open visual document viewer

Desarrollo de un videojuego empleando RT-DESK con XNA y C#

Torres Martínez, Carlos

Abstract

Mediante la creación de un videojuego y su adaptación a la tecnología RT-DESK, basada en la simulación discreta de eventos y creada en la universidad politécnica de Valencia, se ha buscado tanto formarse en la creación de los mismos como en contribuir a la investigación de la nueva tecnología y su aplicación a los videojuegos. La descripción del trabajo realizado en la programación del videojuego y que se encuentra en esta memoria puede servir de ayuda para aquellos que tengan intención de iniciarse en la creación de videojuegos. Por su parte, la posterior adaptación a la tecnología RT-DESK y el análisis comparativo entre ambas versiones del videojuego han revalidado la capacidad de dicha tecnología y sus posibilidades frente al bucle principal convencional.

Full text

Escuela Técnica Supe io de Ingenie ía In o má ica Uni e sidad Poli écnica de Valencia Desa ollo de un ideojuego empleando RT-DESK con XNA y C# P oyec o inal de ca e a Licencia u a en ingenie ía in o má ica Sep iemb e 2015 Au o : Ca los To es Ma ínez Di ec o : Ramón Mollá Vayá 2 A odos los que han omen ado y apoyado mi pasión po los ideojuegos. 3 Índice Resumen ................................................................................................................................... 5 Es uc u a de la memo ia........................................................................................................... 6 In oducción ............................................................................................................................... 7 ¿Qué es un ideojuego?..................................................................................................... 7 La indus ia del ideojuego ................................................................................................. 8 El auge del ideojuego independien e................................................................................. 9 Obje i o.................................................................................................................................10 C eación de un ideojuego ................................................................................................10 Po a la ecnología RT-DESK............................................................................................10 Mo i ación.............................................................................................................................10 Me odología ..........................................................................................................................11 Es ado del a e..........................................................................................................................13 Es ado del a e..........................................................................................................................13 El bucle p incipal ...................................................................................................................13 Mo o es y lib e ías.................................................................................................................14 P eceden es, el géne o shoo ‘em up ....................................................................................15 Análisis .....................................................................................................................................16 Requisi os .............................................................................................................................16 Plani icación empo al ...........................................................................................................17 Tecnología escogida..........................................................................................................18 O as he amien as ............................................................................................................19 Diseño ......................................................................................................................................22 Diseño UML...........................................................................................................................22 Menú p incipal.......................................................................................................................23 Implemen ación.........................................................................................................................24 Ca ga de asse s ....................................................................................................................24 Sp i es...................................................................................................................................25 Sp i e shee ........................................................................................................................25 Dibujado de sp i es ............................................................................................................26 O den de dibujado .............................................................................................................27 Colo key............................................................................................................................27 Animación..........................................................................................................................27 P oblema al dibuja sp i es: A e ac os...............................................................................29 Ges ión de la en ada ............................................................................................................30 Colisiones..............................................................................................................................32 Pe sonaje con olado po el jugado ......................................................................................33 Desplazamien o.................................................................................................................33 Dispa o ..............................................................................................................................33 Escudos, abso ción y sob ecalen amien o.........................................................................34 Tele anspo e....................................................................................................................34 Somb a..............................................................................................................................35 Fondos..................................................................................................................................36 4 Mapa de iles .....................................................................................................................36 Animación..........................................................................................................................37 Lec u a de un ondo de iche o...........................................................................................37 Fondo p ocedu al...............................................................................................................37 Ni eles ..................................................................................................................................39 Ni el p ocedu al.................................................................................................................39 Ni el c eado a mano..........................................................................................................39 Subsis ema de audio.............................................................................................................40 AudioManage ...................................................................................................................41 E ec o de ade....................................................................................................................42 Cadencia de sonidos .........................................................................................................43 Menús ...................................................................................................................................44 Diseño ...............................................................................................................................44 Fuen e ...............................................................................................................................45 Simulación disc e a desacoplada..............................................................................................46 RT-DESK ..............................................................................................................................46 E olución de RT-DESK......................................................................................................46 Funciones p incipales ........................................................................................................47 El bucle p incipal en RT-DESK..............................................................................................47 Acople de RT-DESK y XNA...................................................................................................48 Adap ación C# y C++.........................................................................................................48 Adap ación de la clase Game ............................................................................................48 P uebas.................................................................................................................................49 En o no de p uebas ...........................................................................................................49 Diseño de las p uebas .......................................................................................................49 Resul ados.........................................................................................................................50 Conclusiones ............................................................................................................................52 Relación del abajo con es udios cu sados...........................................................................52 T abajos u u os........................................................................................................................54 Ag adecimien os .......................................................................................................................55 Glosa io ....................................................................................................................................56 Fuen es.....................................................................................................................................57 Anexo A: GDD ..........................................................................................................................58 5 Resumen Median e la c eación de un ideojuego y su adap ación a la ecnología RT-DESK, basada en la simulación disc e a de e en os y c eada en la uni e sidad poli écnica de Valencia, se ha buscado an o o ma se en la c eación de los mismos como en con ibui a la in es igación de la nue a ecnología y su aplicación a los ideojuegos. La desc ipción del abajo ealizado en la p og amación del ideojuego y que se encuen a en es a memo ia puede se i de ayuda pa a aquellos que engan in ención de inicia se en la c eación de ideojuegos. Po su pa e, la pos e io adap ación a la ecnología RT-DESK y el análisis compa a i o en e ambas e siones del ideojuego han e alidado la capacidad de dicha ecnología y sus posibilidades en e al bucle p incipal con encional. 6 Es uc u a de la memo ia En p ime luga se puede encon a una in oducción al p oyec o, donde se desc ibe b e emen e y jus i ica su desa ollo y la mo i ación de ás del mismo, además de desc ibi el con ex o en el que se ealiza y acla a algunos concep os básicos y necesa ios pa a la comp ensión de los siguien es apa ados. A con inuación se analiza el es ado del a e, an o de los ideojuegos como de la c eación de los mismos y las ecnologías que los apoyan, así como los p eceden es que sen a on las bases y ue on inspi ación del p oyec o. En el apa ado de análisis se analiza el p oblema y se plani ica el abajo que conlle a y hab á que ealiza , así como una jus i icación de las he amien as a usa . En el siguien e apa ado, implemen ación, se de allan las di e en es soluciones lle adas a cabo pa a las di e en es pa es del ideojuego. En RT-DESK se a a la segunda pa e del p oyec o, la adap ación a RT-DESK, donde se explica de qué a a la ecnología así como el p oceso ealizado al adap a el juego a la nue a ecnología, y además se apo a un análisis compa a i o en e ambas e siones. Pa a acaba , en conclusiones se encuen an la alo ación y conside aciones inales, an o ace ca del abajo ealizado como de la u ilidad de las ecnologías usadas y su aplicación en u u os p oyec os. La memo ia se cie a con un pequeño glosa io, la bibliog a ía consul ada y el documen o de diseño de juego, anexo A, del ideojuego implemen ado. 7 In oducción ¿Qué es un ideojuego? Un ideojuego (A eces ab e iado simplemen e como “juego”) es un juego elec ónico en la que el jugado , a pa i de una in o mación p incipalmen e isual y sono a, oma decisiones y las ansmi e median e un disposi i o de en ada. La c eación de un ideojuego es á muy elacionada con a es como la música, la pin u a o la esc i u a, pe o es esa in e acción en e juego y el jugado la que lo de ine y di e encia del es o de medios de exp esión. Lanzado po la compañía Nin endo pa a la consola NES en 1988, Supe Ma io B os. 3 se a a de uno de los ideojuegos de mayo éxi o. 8 La indus ia del ideojuego El o igen de los ideojuegos se emon a a la década de los cincuen a, pe o no ue has a los se en a cuando el descenso en los cos es del ha dwa e pe mi ió su come cialización y expansión en e el público, p opiciando la c eación de una indus ia y su desa ollo. Además de unciona sob e o denado es pe sonales, su gie on ideoconsolas, sis emas ce ados pensados pa a la ejecución de ideojuegos, lo cual pe mi ió an o educi los cos es de ab icación y en a de los sis emas, así como acili a su uso, ace cando los ideojuegos a un mayo núme o de pe sonas. De en e las di e en es indus ias en ocadas al en e enimien o, los ideojuegos ha sido la que más ha c ecido en los úl imos años, llegando a supone un olumen de negocio supe io al del es o de indus ias 1 . Po o o lado, la llegada y expansión del sec o mó il y el ideojuego social ha hecho que la can idad de clien es po enciales aumen e d ás icamen e, y las nue as gene aciones nacen y c ecen conociendo el concep o de ideojuego. Así pues, es amos en un pun o en el que los ideojuegos se han con e ido en un medio de exp esión y una o ma de ocio eno memen e acep ada y ex endida. Miles de millones en en as de ideojuegos en Es ados Unidos 2 . El diseño de ideojuegos ha es ado in luenciado po las limi aciones que imponía la ecnología de cada época, como limi aciones de memo ia o de p ocesamien o. El a ance ecnológico ha ido acabando con dichas limi aciones y pe mi iendo, po ejemplo, el sal o de los ideojuegos en 2d a los 3d. El mayo de alle en la ec eación que la ecnología a pe mi iendo es á es echamen e elacionado con los cos es de desa ollo necesa ios pa a ap o echa la, los cuales se han is o inc emen ados de o ma d ás ica 3 . 1 h p://www. as company.com/3021008/why- ideo-games-succeed-whe e- he-mo ie-and-music- indus ies- ail 2 h p://www. heesa.com/wp-con en /uploads/2015/04/ESA-Essen ial-Fac s-2015.pd 3 h p://ko aku.com/how-much-does-i -cos - o-make-a-big- ideo-game-1501413649 9 El auge del ideojuego independien e Si bien el aumen o en los cos es que suponía desa olla pa a una ecnología más a anzada p opició, en las décadas de los ochen a, no en a y el nue o siglo, que cada ez más pequeñas emp esas no pudiesen compe i en el sec o come cial, ha sido ese mismo a ance en las ecnologías, de comunicaciones en es e caso, lo que pe mi ió la c eación de webs donde colga juegos (Newg ounds, Kong ega e, e c.) aunque con escasa o nula epe cusión come cial, y pos e io men e pla a o mas de dis ibución y en a digi al, las cuales han pe mi ido disminui esos cos es de dis ibución y llega a un mayo público, así como da le a los desa ollado es más pequeños la posibilidad de dis ibui come cialmen e sus juegos, dando luga a un nue o auge del ideojuego independien e. Algunas de las p ime as pla a o mas de dis ibución digi al de ideojuegos ue on S eam 4 , c eada po la compañía Val e en el año 2004, o el se icio Xbox Li e A cade pa a consolas de Mic oso . El auge del ideojuego independien e y su p esencia en la p ime a línea de la indus ia ha omen ado an o la inno ación como la ecupe ación de di e en es ipos de ideojuegos que se ue on dejando a ás según la ecnología a anzaba, debido a la mayo opo unidad de es os de encon a su público y al meno iesgo económico que supone lanza un juego en una pla a o ma de dis ibución digi al. Ca e S o y, c eado po Pixel 5 en el 2004, se a a de uno de los p ime os y mejo alo ados juegos de es e nue o auge del ideojuego independien e. 4 h p://s o e.s eampowe ed.com/ 5 h p://s udiopixel.saku a.ne.jp/ 16 Análisis Requisi os Los equisi os que debe cumpli el p oyec o son:  Ges ión de los g á icos. El juego debe á ca ga los asse s g á icos que se usa an en el juego, así como con ola la co ec a isualización y animación de es os.  Subsis ema de con ol de Audio. Debe pe mi i ges iona los e ec os y la música y pe mi i con ola su ep oducción (Rep oduci , pausa , co a , aplica e ec os de undido y con ola la epe ición de sonidos.)  Subsis ema de con ol de la en ada. Debe p o ee de un con ol y ges ión de los disposi i os de en ada usados en el juego, mando y eclado, pa a acili a el manejo de la in e acción del jugado .  Menús. Implemen a un sis ema pa a in oduci un menú de juego con di e en es pan allas y di e en es opciones, así como pe mi i hace uso del mismo APRA cambia di e en es ca ac e ís icas del juego (como pod ía se el idioma, el ni el a juga , e c.).  Ges ión de pan allas de a anque. P o ee de un sencillo sis ema que pe mi a con ola las pan allas de a anque del juego, ya sea pa a mos a el nomb e del es udio c eado , de las ecnologías empleadas y demás in o mación necesa ia.  Ges ión de pun uaciones. Como en la mayo ía de juegos del géne o, la compe ición en e jugado es po alcanza las máximas pun uaciones es uno de los pun os ue es que in i a a ejuga y mejo a . El juego pe mi i á in oduci a los jugado es su pun uación, si es a se encuen a en e las diez mejo es, así como sus iniciales. Además, el menú de opciones con a á con una opción pa a ese ea la abla.  Pe sonaje p incipal. El pe sonaje p incipal pod á mo e se lib emen e en cualquie di ección usando el s ick analógico del mando, lo cual es un pun o ue e espec o al mo imien o disc e izado a 8 di ecciones de o os juegos, especialmen e en PC al es a pensados pa a se jugados median e un eclado y que el mayo núme o de pe sonas puedan juga lo. También pod á dispa a en di e en es di ecciones, no solo en una como es habi ual, y es a di ección de dispa o se á independien e de la di ección del mo imien o de la na e, como se puede e en juegos como Geome y Wa s o Smash TV.  Ges ión de enemigos e inclui di e en es ipos.  Ges ión de dispa os e inclui di e en es ipos.  Fondos y ges ión de es os. No an o po una decisión de diseño como po el ánimo de ap ende , el juego con a á con al menos dos ipos de ondos, uno c eado a pa i de un mapa de iles y o o gene ado p ocedu almen e.  Ges ión de ni eles. 17 El juego con a á con di e en es ases y je es, el jugado pod á juga los en o den en el modo his o ia o selecciona uno de ellos en el modo de p ueba. Se ha incluido es á opción pa a acili a mos a el abajo ealizado en el PFC a aquellas pe sonas que no cuen en con la habilidad o el iempo su icien e pa a a anza en el modo his o ia. Pa a más de alle sob e los equisi os del ideojuego consul a el GDD en el Anexo A. En cuan o a equisi os ecnológicos, básicamen e se necesi a que la ecnología escogida como base del juego debe de se compa ible con RT-DESK. Plani icación empo al La plani icación empo al ealizada a pa i de los equisi os del juego así como de las ases necesa ias en la c eación de un ideojuego: 18 No a: Aunque no es á indicado en el diag ama y como se ha mencionado an e io men e, du an e los meses an e io es se ealiza on una se ie de p o o ipos que concluye on con un b ains o ming inal pa a decidi qué en aba y qué no y la desc ipción inal del ideojuego en un GDD. Diag ama de Gan . He amien as Tecnología escogida A la ho a de escoge la ecnología que se i ía de base al ideojuego se u ie on en men e una se ie de conside aciones: Pa i de un ni el más bajo usando lib e ías como XNA o SDL pa a cons ui uno mismo la base sob e la que unciona del ideojuego iene dos p incipales en ajas: El mejo ap endizaje del uncionamien o in e no de un ideojuego y la libe ad que o ece no es a limi ado a las posibilidades de un mo o conc e o. Sin emba go, pa a que esa “libe ad” ex a que se iene pueda da sus u os es necesa io un g an abajo y no suele me ece la pena: Hoy en día los mo o es de juegos o ecen opciones más que su icien es pa a desa olla casi cualquie ideojuego y el aho o en iempo esul a eno me. Así pues, una de las p incipales azones po las que se op ó po pa i de una lib e ía es la olun ad de ap ende y hace se una idea, al da el sal o a un mo o en un u u o, del uncionamien o in e no de es os. De en e las lib e ías que se conside a on, como SDL, SFML o XNA, inalmen e se op ó po XNA, en su úl ima e sión 4.0, po los conocimien os p e ios que se enían del lenguaje C# eque ido po es a así como po expe iencias p e ias con ella que acili a ían el desa ollo del p oyec o. Además, la ecnología XNA cumple el equisi o de se compa ible con RT-DESK, compa ibilidad que ue u o de un abajo de inal de ca e a an e io y del que se pa e y busca expandi su documen ación. 19 O as en aja, compa idas po las o as lib e ías mencionadas, es que odas son de uso g a ui o. Las p incipales des en ajas de XNA en e al es o son, en p ime luga , que su uso se educe a disposi i os Mic oso , al con a io que las demás que uncionan en una a iedad más amplia de disposi i os. Sin emba go, no siendo el obje i o el lanzamien o come cial del juego y no que iendo cen a se en el desa ollo de e siones pa a di e en es sis emas sino en el ap endizaje en sí, no esul ó un incon enien e. El o o incon enien e es que su desa ollo se ha descon inuado, y no se pa ece que Mic oso aya a da más sopo e a es e ecnología. Aún así, cabe des aca como en aja de XNA el desa ollo pa alelo que se ealizó de o ma lib e pa a adap a la a di e en es pla a o mas, dando como esul ado la ecnología MonoGame 10 . De es a o ma, una ez comple ado su desa ollo la compa ibilidad del código ealizado con XNA se á o almen e compa ible con MonoGame pe mi iendo, hipo é icamen e, lanza e siones del p oyec o pa a sis emas ope a i os como Linux o consolas que no sean de Mic oso . O as he amien as Pa a el desa ollo del p oyec o se ha op ado po el uso de he amien as g a ui as, con la excepción de Mic oso O ice y RT-DESK. La lis a de he amien as usadas es la siguien e: 10 h p://www.monogame.ne / 20 Visual S udio, el IDE (In eg a ed de elopmen en i onmen ) de Mic oso con in eg ación con XNA, lo que lo con ie e en la opción ideal. Uno de sus pun os ue es sob e sus compe ido es es su obus ez y su depu ado . RT-DESK 11 (Real Time Disc e e Simula ion Ke nel) es una lib e ía desa ollada en la UPV y diseñada pa a la ges ión empo al de e en os disc e os en iempo eal. O ece odas las en ajas de la simulación disc e a pe o además sinc oniza la simulación con el iempo eal du an e su ejecución. Es una he amien a en ocada an o pa a el desa ollo de aplicaciones en iempo eal como pueden se ideojuegos, simulado es de en enamien o, ealidad i ual o ealidad aumen ada, como pa a modela sis emas que es én desc i os como una colección masi a de obje os simples que in e ac úen unos con o os como pueden se la simulación de pa ículas o los au óma as celula es. En es e p oyec o, conc e amen e, se usa á una e sión pa a C# y p e iamen e p obada con XNA. Google Docs y Mic oso Wo d, edi o es de ex o usados pa a la c eación de oda la documen ación ela i a al p oyec o. Si bien Google Docs pe mi e copias de segu idad en la nube que pueden se modi icadas desde cualquie luga con in e ne usando una in e az cómoda y simple, la ausencia de algunas opciones (Po ejemplo, índices que e e encien el núme o de página de cada apa ado ) hacen que sea necesa io e mina los documen os usando Mic oso Wo d. Se ha u ilizado OpenO ice Calc, una he amien as g a ui a pa a la edición de hojas de cálculo, pa a la manipulación de los da os ecogidos de los es s y su ep esen ación en g á icas. A goUML 12 , edi o UML lib e usado en la c eación de algunos de los diag amas usados en la documen ación. Una de las en ajas en e a sus compe ido es es que no equie e de una insc ipción pa a su uso ni limi a su uncionalidad en su e sión g a ui a. La e sión pa a esc i o io o ece las he amien as necesa ias pa a es e p oyec o. Tiled 13 , un edi o de mapas de iles, se usa á pa a acili a la gene ación de mapas de iles usados pa a p oba dicha uncionalidad del p oyec o. Pain y Gimp 14 , edi o es de imágenes u ilizados en la c eación y edición de los asse s g á icos necesa ios pa a el juego. Pain o ece una solución ápida y cómoda de edi a imágenes a ni el de píxel, ideal pa a ideojuegos sencillos en 2D a baja esolución, pe o lo limi ado de sus opciones hacen que pa a ealiza una edición más compleja, si es a uese necesa ia, se op e po Gimp. 11 h p:// desk.blogs.up .es/ 12 h p://a gouml. ig is.o g/ 13 h p://www.mapedi o .o g/ 14 h p://www.gimp.o g/ 21 Además, ambién se ha á uso de G aphicsGale 15 pa a acili a la animación de los mismos al pe mi i e el esul ado y modi ica lo en iempo eal, además de ae una se ie de opciones pensadas especí icamen e pa a c ea y p oba animaciones, como el e ec o cebolla en e ames o modi ica pa áme os como la elocidad de cada ame de o ma cómoda pa a hace se una mejo idea de cómo queda á la animación den o del juego. Pa a la c eación de e ec os de sonido, apa e del uso de e ec os y música lib e, B x 16 o ece una solución ideal, pues pe mi e c ea sonidos de di e en es ipos (de sal o, de dispa o, e c.) o ma alea o ia has a encon a uno que sea adecuado pa a el juego, sin necesidad de ene conocimien o alguno ace ca de la c eación de sonidos. Además, ambién pe mi e a ia algunos pa áme os a aquellas pe sonas que sepan algo o simplemen e quie an cu iosea . Pa a la edición de los sonidos, como eco a o edi a pa a acili a su ep oducción en bucle, se u iliza á Audaci y 17 , un edi o g a ui o de sonido que des aca po su sencillez y a iedad de opciones y que además ue el usado du an e la ca e a en di e en es asigna u as de sonido. 15 h p://www.humanbalance.ne /gale/us/ 16 h p://www.b x .ne / 17 h p://audaci y eam.o g/ 22 Diseño Diseño UML Diag ama UML. 23 Menú p incipal Esquema del menú p incipal del juego. T as pasa las pan allas de in oducción (Desa ollado , ecnologías empleadas, e c.) la pan alla en la que el jugado ecibe el con ol del juego es la pan alla de í ulo de juego, ambién llamada pan alla de “p ess s a ”, en la que se mues a el í ulo del juego. Desde ella se accede únicamen e a la pan alla p incipal, desde donde puede comenza una pa ida en al juego en el modo his o ia, accede a las ablas de pun uaciones y a los menús de p uebas y opciones. El menú de p uebas pe mi e al jugado juga una ase cualquie a, además de pe mi i le selecciona qué ondo quie e usa pa a la pa ida. En el menú de opciones se encuen a la opción de bo a la abla de pun uaciones y de ol e la a su es ado o iginal, además del u o ial donde se explica el uncionamien o del juego y los c édi os, que incluyen el nomb e del alumno, del di ec o de p oyec o, ecnologías empleadas y ag adecimien os. Además, la opción de bo a pun uaciones lle a a una pan alla de con i mación, pa a e i a que el jugado pueda bo a sus pun uaciones po equi ocación. T as acaba una pa ida (Juga ) el juego uel e a la pan alla de pun uaciones. 24 Implemen ación Ca ga de asse s Los asse s de un ideojuego son sus ecu sos isuales y sono os, ales como ex u as, modelos o e ec os de sonido. Pa a que el juego pueda hace uso de ellos XNA p o ee de un con en pipeline 18 , que en el momen o de la compilación se enca ga de p ocesa los asse s a un o ma o que el juego pueda econoce y accede a ellos median e un con en loade en el amewo k. Diag ama del p oceso de ca ga de asse s en XNA. El p opio Visual S udio se enca ga de, al gene a una nue a solución de XNA, c ea dos p oyec os dis in os, uno pa a la lógica de juego y o o pa a el con enido, donde a su ez c ea una ca pe a pa a los iche os de audio, pa a los iche os de imagen, e c. que el juego a a accede pos e io men e y añadi los es an sencillo como copia los en su ca pe a co espondien e e indicá selo a isual S udio usando su na egado de a chi os (o e esca la ca pe a). Pa a accede a ellos u ilizamos el mé odo load de la clase Con en Manage , una ins ancia de la cual, Con en se encuen a en la clase Game, po ejemplo: Con en .Load<Tex u e2D>(@"Images/ ex u a") Nó ese que hace al a indica el ipo de o ma o del asse a ca ga (Tex u e2D pa a imágenes o SoundE ec pa a e ec os de sonido), además de que no se indica la ex ensión del iche o. Es o se debe a que en XNA los asse s se e e encian median e una cadena iden i icado a que po de ec o es el nomb e del iche o sin la ex ensión, no po el nomb e de iche o. Los o ma os acep ados po XNA son limi ados, aunque o ece la posibilidad de añadi sopo e pa a nue os o ma os. En es e p oyec o sin emba go se ha limi ado su uso a los p ime os, .png o .bmp pa a las imágenes y .wa pa a los e ec os de sonido y música. 18 h ps://msdn.mic oso .com/en-us/lib a y/bb447745.aspx 25 Sp i es Un sp i e es un g á ico 2d usado pa a ep esen a isualmen e los elemen os del juego. Obje os, enemigos o el pe sonaje p incipal en e o os. Po ejemplo: Sp i e de Ma io del juego Supe Ma io b os. Sp i e shee Los sp i es se almacenan en una Imagen donde se gua dan los di e en es ames que o man las animaciones de los elemen os de un juego. Qué se gua da en cada sp i e shee puede a ia según las p e e encias de cada uno, pe o una p ác ica ex endida suele se c ea un sp i e shee po elemen o (Po ejemplo, uno solo pa a el pe sonaje p incipal), poniendo en cada ila los ames co espondien e a una acción o es ado (Po ejemplo, es a quie o, co e o sal a ): Pa e del sp i e shee de Ma io del juego Supe Ma io b os. Pa a acili a su uso gene almen e cada ame se gua da y sepa a del es o usando un amaño no malizado, de o ma que se pueden dibuja en pan alla haciendo uso del mismo a ibu o de posición. Se conside a po de ec o el inicio del sp i e su esquina supe io izquie da, pa a accede a un sp i e enemos que conoce dicha posición y el amaño del sp i e. Al se los sp i es de un amaño ijo ob iamen e conocemos dicho amaño y a pa i de él ob enemos la posición del sp i e: Posición X en el sp i e shee = ame de la animación * ancho de sp i e Posición Y en el sp i e shee = ID del es ado del sp i e * al o de sp i e 32 Colisiones Algunos de los elemen os del juego pueden colisiona en e ellos, po ejemplo, las balas de la p o agonis a con las na es enemigas. Pa a comp oba las colisiones exis en di e en es écnicas, siendo la colisión po cajas y la colisión po píxel las más usadas en los juegos en 2D del géne o. La colisión po cajas consis e en asigna una o más cajas de colisiones a los obje os, y calcula la colisión en e es as cajas. Al asigna las cajas se a a de ajus a a la o ma i egula del sp i e una o ma sencilla (un cuad ado o un cí culo, po ejemplo), simpli icando el p oblema de las colisiones. Ejemplo de caja de colisiones ec angula pa a el sp i e de Ma io. A un mismo obje o se le pueden asigna a ias cajas, ya sea po que una única o ma básica no es su icien e o po que di e en es pa es del obje o ienen compo amien os di e en es. Un ejemplo de es o úl imo se ía un enemigo al que puedes daña y des ui di e en es pa es, de o ma que cada pa e necesi a su p opia caja de colisiones. Pa a calcula la colisión en e dos cajas ec angula es, las únicas usadas en el p oyec o, se usa la siguien e ó mula: i (A.x + A.cajaAncho >= B.x + B.cajaInicioX && A.x + A.cajaInicioX <= B.x + B.cajaAncho && A.y + A.cajaAl o >= B.y + B.cajaInicioY && A.y + A.cajaInicioY <= B.y + B.cajaAl o) colision = ue; else collision = alse; En algunos casos en los que se busca una mayo p ecisión se emplea la écnica de colisión po pixel, que consis e en de ec a pixel a pixel (o pixel con una caja de colisiones) si dos obje os colisionan en e sí. Aún así, se a a de una écnica que equie e de un g an cos e de cálculo, así que en la p ác ica, de usa se, p ime o se desca a la colisión median e la écnica de caja de colisiones. Po ejemplo, se calcula la colisión del pe sonaje con odas las balas enemigas, y únicamen e si se de ec a colisión con una, se mi a la colisión po píxel en e dicha bala y el pe sonaje. 33 Pe sonaje con olado po el jugado El jugado con ola un único pe sonaje, una na e espacial. La especi icación de dicho pe sonaje se encuen a en el anexo, la implemen ación de la cual se de alla a con inuación. Sp i e de la na e con olada po el jugado . Desplazamien o El desplazamien o de la na e puede se en cualquie di ección (360º) y a di e en es elocidades. Pa a consegui es o se hace uso de uno de los s icks del mando (conc e amen e el izquie do), ya que pe mi e la en ada de la di ección (s ick analógico de 360º, como el mo imien o que se busca pe mi i ealiza ) y di e en es g ados de inclinación pa a cada di ección, lo cual se usa pa a con ola la elocidad del pe sonaje. En XNA el es ado del s ick iene dado po coo denadas den o un cí culo uni a io. Así, en eposo el s ick se encuen a en la posición (0,0), y si se inclinase po comple o hacia la de echa, se encuen a en la posición (1,0). De es a o ma, la elocidad de la na e en el juego es á con olada po la posición del s ick en cada coo denada, en an o que es a ep esen a la inclinación del s ick. A más p esión del jugado sob e el s ick, más inclinación y, po an o, más elocidad. Sin emba go, se ha es ablecido una mínima inclinación del s ick a pa i de la cual se empieza a mo e la na e, pa a e i a que es a lo haga debido a posibles le es inclinaciones causadas po p esión eje cida po el pulga del jugado al eposa sob e el s ick. Además, la elocidad máxima a la que puede mo e se la daba es supe io al máximo alo de inclinación (1), así que es e se ex apola de [0,1] al ango [ elocidad mínima, elocidad máxima]. Dispa o Al con a io que el mo imien o analógico de la na e, se ha disc e izado las di ecciones a las que puede dispa a , limi ándose a 8 (a iba, abajo, izquie da, de echa y las cua o diagonales en e ellas). El jugado escoge en qué di ección quie e dispa a usando los cua o bo ones pos e io es, los cuales gene almen e se disponen o mando un “ ombo”, quedando uno a iba, uno abajo, o o a la izquie da y el úl imo a la de echa. Así, cada uno de es os bo ones si e pa a dispa a en la di ección en la que se encuen an. Po ejemplo, con el bo ón supe io el jugado puede dispa a hacia a iba, y con el de echo hacia la de echa, además de pode pulsa dos bo ones adyacen es pa a dispa a en diagonal, po ejemplo, pulsando los bo ones supe io y de echo dispa a en diagonal la diagonal o mada po ambos bo ones, a iba hacia la de echa. Debido a la di icul ad de pulsa dos bo ones al mismo iempo al a a dispa a en diagonal, se ha dejado un iempo, muy pequeño, desde que se pulsa uno de los bo ón de dispa o has a que la na e dispa a en el juego, e i ando que al dispa a en diagonal la mayo ía de eces dispa e unas pocas balas en una di ección que no es la deseada. 34 Una ez se ha pulsado un bo ón de dispa o, la na e dispa a. Es o implica que desde que la na e empieza a dispa a has a que se suel a se c ean balas en un in e alo p ede e minado (dos balas en pa alelo en cada in e alo) cuya di ección es la di ección de dispa o desc i a an e io men e, sob e las cuales el jugado ya no iene con ol alguno y sob e las que se en a en de alle más adelan e. Además, hay que ene en cuen a que al dispa a en una di ección se o a el sp i e de la na e p o agonis a pa a que enca e dicha di ección, la cual no cambia has a que no se dispa e en o a di ección. Escudos, abso ción y sob ecalen amien o La na e cuen a con dos escudos, de colo e de y azul, usados pa a abso be las balas de su mismo colo al en a en con ac o con ellas y e i a el daño. Al pulsa el bo ón asignado a un escudo, es e se ac i a. Apa ece al ededo de la na e p o agonis a sua emen e, de se in isible a o almen e isible, e ec o pa a el cual se ha usado la unción de dibujado D aw desc i a en el apa ado de dibujado de sp i es. Básicamen e, el pa áme o Colo indica el colo del que se in a la imagen a dibuja (Whi e pa a usa el colo o iginal), y si es e pa áme o es mul iplicado po un loa en e 0 y 1 se puede al e a la anspa encia de lo que se dibuja. De es a o ma mul iplicamos dicho Colo po una a iable de ipo loa donde almacenamos el ni el de anspa encia, los alo es de la cual pa en de 0 (o el alo ac ual de la anspa encia, si dejamos de pulsa y los encendemos ápidamen e an es de que se apaguen) al encende el escudo has a que alcanzan su alo máximo 1. Al sol a los escudos se apagan, con un e ec o de desapa ición opues o al mencionado. Los escudos se gua dan como un sp i e que almacena el con o no de la na e en el colo del escudo, de o ma que bas a con dibuja lo en la misma posición en la que se dibuja la na e. Como dice la especi icación del juego, si se man iene encendido el escudo cie o iempo la na e se sob ecalien a. Se a isa poco an es de que es o ocu a cambiando el colo del escudo a ojo (además de con a con una señal sono a). En caso de que se sob ecalien e no se pe mi e ol e a ac i a los escudos has a que pase el e ec o, el cual isualmen e se ha ep esen ado “ in ando” el sp i e de colo ojo usando la uncionalidad que pa a ello o ece la unción D aw desc i a en el apa ado de dibujado de sp i es, conc e amen e haciendo uso del pa áme o Colo , asignando Colo .Red. Tele anspo e O a de las habilidades con las que cuen a el jugado es la posibilidad de ele anspo a se una dis ancia ija en cualquie di ección, esqui ando los elemen os que haya en e la posición o iginal y la posición des ino. La na e se ele anspo a en la di ección del mo imien o, po lo an o al igual que el desplazamien o básico se a a de un mo imien o que puede ealiza se en cualquie a de los 360º. Sin emba go, al a a se de una dis ancia ija, es a no depende de cuando se p esione el s ick, con lo cual hay que saca el ec o uni a io que de ine la di ección del pun o en el que se encuen a el s ick. Pa a ello es su icien e con di idi cada componen e 35 del pa de componen es X e Y que de inen la posición del s ick po el módulo del ec o que a del o igen a dicho pun o. E ec o isual al ele anspo a se. Visualmen e se ha c eado un e ec o de ele anspo e que consis e en que la na e deje un as o, in en ando simula un e ec o de desplazamien o a g an elocidad. Dicho as o consis e en una se ie de imp esiones en pan alla del mismo sp i e de la na e, pe o más anspa en es cuan o más lejos se encuen an. Las posiciones de es as imp esiones, al encon a se en la misma línea que a del pun o o iginal al pun o des ino de ele anspo e se calculan, pues, de la misma o ma que se calcula es e úl imo, pe o dec emen ando el alo de la dis ancia de ele anspo e po el in e alo que sepa a las di e en es imp esiones (Así como el p opio alo de la anspa encia). Somb a Exis e un e ec o me amen e isual, que no epe cu e en la jugabilidad, que consis e en la p oyección de una somb a sob e el suelo o los elemen os que se encuen en po debajo de la na e p o agonis a. Dicha somb a consis e simplemen e en un sp i e de colo oscu o que se imp ime de o ma semi anspa en e sob e los elemen os co ec os. Dichos elemen os son aquellos que, al encon a se po debajo de la na e, se dibujan con un alo de p o undidad (o laye dep h) mayo , y po an o au omá icamen e XNA se enca ga á, al o dena e imp imi en pan alla, de dibuja la somb a únicamen e sob e es os. La somb a se mue e po una sub egión de la pan alla, la cual se encuen a en el cen o y iene la misma o ma de la pan alla de juego (equidis ando los lados de es a sub egión de los lados de la pan alla). Dicha posición depende de la posición de la na e, conociendo es a sacamos la posición de la somb a con la siguien e ó mula: Somb a.pos.X = sub egión.posInicial.X + na e.pos.X * (sub egión.ancho / pan alla.ancho) Somb a.pos.Y = sub egión.posInicial.Y + na e.pos.Y * (sub egión.al o / pan alla.al o) 36 Fondos Qué es un mapa o ni el en un juego depende de cada juego, de su de inición y equisi os. En es e p oyec o no exis e in e acción en e los obje os (Pe sonaje p incipal, enemigos, e c.) y el escena io, de o ma que se han a ado de o ma independien e, educiendo el concep o de escena io al de ondo, un elemen o pu amen e es é ico. Exis en di e en es opciones a la ho a de c ea ondos pa a ideojuegos: Imágenes ijas, ondos 3D, ondos hechos a base de iles, ondos con di e en es planos de Scholl, en e o as. En es e p oyec o se han usado las écnicas de mapa de iles y la gene ación p ocedu al. Mapa de iles Los mapas c eados a pa i de iles ienen su o igen en la necesidad de almacena una g an can idad de mapas sin que epe cu a nega i amen e en el peso del juego. Las iles son pequeñas piezas de mapa de un amaño gene almen e ijo que se almacenan una única ez en un ile se y pueden se usadas an as eces como haga al a pa a o ma mapas más complejos, los cuales se de inen gene almen e como una ma iz de en e os, cada uno de los cuales es el iden i icado de la ile a usa , el cual si e pa a encon a dicha ile den o del ile se . Po ejemplo: Tile se A la izquie da emos el mapa como una ma iz y a la de echa al se dibujado. 37 Accede a la ile co espondien e en el ile se en unción de su iden i icado es sencillo. Suponiendo un amaño de ile amañoTile X amañoTile, y un ile se con ilesAncho iles de ancho, accedemos a la posición o igen de la ile a pa i de la cual se a a dibuja con la siguien e ó mula: ileX = ( ileID % ilesAncho) * amañoTile ileY = ( ileID / ilesAncho) * amañoTile Animación El mapa no se encuen a ijo, sino que se desplaza pa a simula el mo imien o a a és del mismo. No malmen e la po ción de mapa que se dibuja depende de la cáma a, que a su ez suele depende de la posición del jugado . En el caso de los shoo ‘em up, sin emba go, la cáma a no suele es a ija sob e el jugado sino que se desplaza de o ma au omá ica y cons an e. Así, a cada ins an e ac ualizamos la posición del mapa en unción de la cáma a, y dibujamos el ozo de mapa que se a a mos a en pan alla, e i ando así el cos e innecesa io de dibuja lo que queda ue a de cáma a. Escoge qué ozo de mapa en unción de la cáma a es sencillo, suponiendo un amaño de iles de amañoTile X amañoTile, dibuja íamos an as iles como cupiesen en pan alla (anchoPan alla / amañoTile, al oPan alla / amañoTile) a pa i de la posición de la ma iz de iles cama aX % amañoTile, cama aY % amañoTile. Lec u a de un ondo de iche o Los mapas usados han sido almacenados en un iche o de ex o y pa seados al se leídos y usados po el juego. El o ma o es simple, la p ime a línea del iche o mapa con iene dos en e os con el ancho y al o del mapa en iles, y a pa i de la siguien e línea se encuen a la ma iz de iden i icado es de ile que de inen dicho mapa. Fondo p ocedu al La gene ación p ocedu al 19 hace e e encia a la gene ación de con enido, en es e caso el ondo, no de o ma manual sino median e algo i mos. O a o ma de explica la gene ación p ocedu al es como “alea o iedad con olada”. Dicha écnica se ha aplicado a la c eación de un ondo pa a el juego, c eando un cielo a pa i de di e en es nubes. Dichas nubes pueden mo e se a di e en es elocidades dependiendo de su al u a, simulando así su mayo o meno dis ancia espec o a la cáma a. Además, las nubes más ce canas (y po an o las que se dibujan más g andes y a mayo elocidad) se dibujan los obje os del juego y de o ma anspa en e sob e es os, de o ma que solo se aplique el e ec o de anspa encia, simulando en a en la nube, a los elemen os del juego y no al ondo. Así, a cada ipo de nube se le ha asignado una p obabilidad y un iempo alea o io en e nubes, de o ma que aunque se ayan c eando de o ma alea o ia en iempo de ejecución las can idades y posiciones se mue en den o de unos pa áme os que hacen que el ondo 19 h ps://en.wikipedia.o g/wiki/P ocedu al_gene a ion 38 siemp e luzca co ec amen e, sin escasez ni exceso de nubes, ni es as apa eciendo siguiendo pa ones no deseados. Además, se han usado ambas écnicas conjun amen e pa a o ma mapas con mayo de alle. En conc e o, usando la écnica del mapa de iles se ha c eado el ondo de un bosque y po encima de es e se gene an p ocedu almen e las nubes. 39 Ni eles Pa a p oba la uncionalidad implemen ada, se han c eado dos ni eles (sin con a los ni eles de los je es), uno gene ado p ocedu almen e y o o c eado a mano. Como se ha mencionado en el apa ado an e io , en es e p oyec o en conc e o no exis e in e acción en e los elemen os del juego, como puedan se lo el p opio jugado o los enemigos, y el escena io, y po an o se han almacenado po sepa ado, pe mi iendo además cualquie combinación de ambos. Así pues, en es e p oyec o un ni el se de ine exclusi amen e po la se ie de enemigos que lo o man, y an apa eciendo secuencialmen e en pan alla. Ni el p ocedu al El p ime ni el se enca ga de c ea p ocedu almen e los obs áculos que o man dicho ni el. Conc e amen e, ilas o columnas de enemigos o balas de di e en es colo es se escogen alea o iamen e con un in e alo de iempo egula en e ellas y apa ecen de cualquie ex emo de la pan alla. La en aja de c ea ni eles gene ados p ocedu almen e es la apidez con la que, a base de unas pocas eglas, se pueden c ea un núme o in ini o de ni eles de longi ud in ini a. Sin emba go, exis e el iesgo de que el ni el esul e soso y no c ee ni eles in e esan es, pa a lo cual no suele bas a con unas pocas eglas sino que se debe p o undiza y en ende co ec amen e qué pa ones puedan da luga a ni eles in e esan es y como mezcla los, así como con ola la cu a de di icul ad. Ni el c eado a mano El segundo ni el de p ueba se ha c eado a mano. Pa a acili a su c eación y modi icación y debido a la limi ación de iempo, en ez de lee se el ni el de un iche o y a pesa de que exis e dicha uncionalidad, el ni el es á c eado den o del p opio código. La des en aja es el iempo que equie e c ea un ni el así, además de que el es ue zo in e ido esul a en un ni el ini o, además de la di icul ad que a eces puede aca ea ealiza modi icaciones sob e el mismo, al ene que ees uc u a odo el ni el. Sin emba go, al ene con ol o al de los elemen os que o man el ni el y como se desa olla es e, es más ácil con ola y c ea amos in e esan es, e i a la epe ición y ges iona la cu a de di icul ad. 40 Subsis ema de audio El p oyec o equie e de una o ma de ges iona los e ec os de sonido y pis as de audio, así como con a con di e en es o mas de con ola su ep oducción y aplica e ec os. Dicha uncionalidad ha sido encapsulada en un manage de audio. XNA o ece dos al e na i as pa a implemen a el apa ado sono o de un juego: XACT(C oss-pla o m Audio C ea ion Tool): Se a a de un engine de sonido que o ece una se ie de uncionalidades ya implemen adas, como e ec os, c ea colas de sonidos y asigna les p io idad a cada elemen o de la misma, comp imi pis as, e c que pueden se u ilizados desde una aplicación independien e al código. También cuen a con una api, incluida en Xna.F amewo k.Audio, con una se ie de clases y unciones que pe mi en ealiza acciones básicas como ep oduci sonido, pausa lo o cambia el ni el de olumen. Es es a al e na i a la que se u iliza á en el desa ollo de es e p oyec o. Es e amewo k cons a de una clase básica, SoundE ec , pa a almacena una pis a de audio .wa , que únicamen e puede se ep oducida usando el mé odo de clase Play(); SoundE ec soundE ec ; soundE ec = Con en .Load<SoundE ec >(@"Audio/ iche o"); soundE ec .Play(); Pa a ene con ol de la ep oducción esa pis a debe se ins anciada en una a iable de ipo SoundE ec Ins ance, que además de ep oduci la pis a de audio pe mi e pausa , pa a , eanuda , "loopea " y con ola el ni el de olumen du an e la ep oducción de la misma. Pa a ins ancia y ep oduci usamos el mé odo C ea eIns ance() de la clase SoundE ec . SoundE ec Ins ance ins ance; ins ance = Con en .Load<SoundE ec >(@"Audio/ iche o").C ea eIns ance(); ins ance.Play(); La p incipal en aja en cuan o a uncionalidad de SoundE ec espec o a SoundE ec Ins ance es que es a úl ima no pe mi e ep oduci su sonido a ias eces de o ma pa alela. Pongamos de ejemplo el sonido al dispa a una me alle a. Usando un único sonido de dispa o, y si se dispa a una a aga SoundE ec nos pe mi i ía ep oduci el sonido an as eces como dispa os, pe o al usa SoundE ec Ins ance se debe ía c ea an as ins ancias como dispa os, lo cual esul a innecesa io. Añadi que XNA ambién cuen a, en Xna.F amewo k.Media, con las clases Song y la clase MediaPlaye , usadas pa a almacena pis as de audio en .mp3 y pa a ep oduci las, espec i amen e. Song song; 41 song = Con en .Load<Song>(@"Audio/p ueba"); MediaPlaye .Play(song); La p incipal des en aja es que solo puede ep oduci se únicamen e una pis a de audio al mismo iempo (no malmen e se ese a su uso pa a ep oduci música de ondo), limi ación que no exis e en las clases SoundE ec y SoundE ec Ins ance. En el p oyec o se usa án únicamen e es as dos úl imas, debido a la libe ad de de ep oduci di e en es pis as de audio de ondo al mismo iempo (po ej, música de ondo y llu ia). El subsis ema de audio implemen ado se enca ga de odo lo elacionado con el audio del juego y se compone de las siguien es clases: AudioManage La clase p incipal enca gada de ges iona y maneja el es o de clases, así que como de o ece una se ie de mé odos de con ol de las di e en es pis as de audio. Funciona como una caja neg a que puede se usada po los demás obje os del juego, los cuales le indican que acción quie en ep oduci en un sonido en conc e o de los almacenados po el manage . Pa a pe mi i es o se ha ealizado la siguien e implemen ación: Debido a la pequeña can idad de sonidos que equie e el juego, en ez de ca ga los y libe a los según sea necesa io se dejan ca gados desde el inicio. Así, la clase AudioManage cuen a con un ec o pa a sonidos de ipo SoundE ec y uno pa a los sonidos de ipo SoundE ec Ins ance: El ec o usado pa a almacena los SoundE ec es únicamen e del ipo soundDa a, que con iene el SoundE ec y a iables pa a el con ol de su cadencia, en los que se p o undiza á más adelan e. Pa a con ola la ep oducción de los mismos se cuen a únicamen e con un mé odo: ● playSound(id, ol, pan): Rep oduce el sonido id (coincide con su posición en el ec o de SoundE ec s) con un olumen ( ela i o al olumen global) indicado po ol y un pano ama indicado po pan. Vol es un alo en e 0 y 1000 que se no maliza al in e alo 0..1 que maneja uni y, y pano ama un alo en e -1 y 1 que indica la posición del sonido. Po ejemplo, 0 hace que suene cen ado (mismo olumen po ambos al a oces en es é eo), mien as que -1 hace que únicamen e suene po el izquie do. El ec o pa a almacena los sonidos de ipo SoundE ec Ins ance es lige amen e más complejo y equie e de una es uc u a auxilia debido a la posibilidad de con a con más opciones pa a su ep oducción y a la necesidad de gua da cie a in o mación ela i a al es ado y con ol de cada ins ancia. Dicha es uc u a se ha llamado ins anceDa a, en la cual almacenamos: 48 la CPU cuando es e sea necesa io, no usando un iempo que queda lib e pa a o os menes e es como puede se la incu sión de más obje os o en iempo de GPU, en e o os, o simplemen e libe a lo pa a educi el consumo. Acople de RT-DESK y XNA Es e p oyec o usa RT-DESK en o ma de DLLs, las cuales se incluyen en el p oyec o pe mi iendo accede a oda la uncionalidad de RT-DESK. De la c eación de es as DLLs se enca gó Da id Pé ez Climen en su p oyec o “c eación de un ideojuego en XNA usando RT-DESK”, en cuya memo ia desc ibió el p oceso, el cual a con inuación se esume b e emen e. Adap ación C# y C++ O igina iamen e RT-DESK se p opo cionaba en o ma de una biblio eca esc i a en C++ compilada a código máquina. XNA, sin emba go, únicamen e abaja usando el lenguaje C#, el cual compila a código in e medio CIL(Common In e media e Language 20 ), ejecu ado po la CLR (Common Language Run ime 21 ), impidiendo que lib e ías de C++ sean llamandas di ec amen e desde C#. C# pe mi e llama a unciones de biblio ecas na i as median e el se icio PIn oke, pe o no así la c eación y u ilización de clases na i as, lo cual es un equisi o pues RT-DESK necesi a c ea clases que he eden de RTDESK_CEn i y y sob esc iban el mé odo Recei eMessage, el cual es llamado di ec amen e desde el código na i o. La solución a es e p oblema pasó po usa el lenguaje C++/CLI pa a c ea una clase puen e. Así, se c ea on di e en es clases C++/CLI, una po cada una de las clases de RT-DESK que se necesi aban u iliza (RTDeskEngine, RTDeskEn i y y RTDESK_CMsg). Adap ación de la clase Game RT-DESK sus i uye al núcleo de un ideojuego, el bucle p incipal. El segundo p oblema que su gió ue que el bucle que p o ee la clase Game de XNA, ocul o al diseñado , y que además de enca ga se de ac ualiza y dibuja los elemen os del juego ambién se enca ga de o as como la ges ión de la en ana de juego o la comunicación con los disposi i os g á icos de salida. De es a o ma, pa a pe mi i que el con ol de bucle p incipal pasase a RT-DESK se c eó una nue a clase Game que se enca gase de esas a eas que has a aho a ealizaba XNA en su bucle p incipal: Se c eó un p o eedo de se icios, implemen ando la in e az ISe iceP o ie y, y el se icio G aphicsDe iceSe ice, implemen ando IG aphicsDe iceSe ice, que p opo ciona el disposi i o g á ico. Se ges ionó la c eación de la en ana de juego, median e la clase o m de Sys em.Windows.Fo ms. 20 h ps://en.wikipedia.o g/wiki/Common_In e media e_Language 21 h ps://msdn.mic oso .com/es-es/lib a y/8bs2ec 4%28 = s.110%29.aspx 49 Apa e de los mencionados an e io men e, la adap ación de RT-DESK a XNA ha p esen ado o os p oblemas. El o igen de es os es el mismo, no usa el bucle p incipal que o ece XNA y que se enca gaba de algunas a eas esenciales: P oblemas con la en ada, la cual no unciona co ec amen e debido a que el bucle p incipal de XNA no es á ahí pa a asegu a se que la en ada se ac ualiza a la misma elocidad que el juego, que es algo que no se pe mi e ealiza desde ue a. Se ha in en ado ejecu a el bucle de XNA en pa alelo al de RT-DESK pa a asegu a esa ac ualización pe iódica de los pe i é icos de en ada, an o usando hilos como ejecu ando el bucle de -desk desde den o del bucle de xna pe o no se llegó a una solución. Una solución segu a pasa ía po usa o as lib e ías ajenas a XNA pa a ges iona la en ada. P oblemas de audio. En pa icula , con el ipo “sound” (Ve la sección de audio) que pe mi e ep oduci sonidos sin con ola los. Si no es á el bucle de XNA uncionando, se lanza una excepción a isando explíci amen e de es o mismo y e minando la ejecución. Una solución pasa ía po usa únicamen e SoundIns ances o, de nue o, usa una lib e ía ajena a XNA como puede se FMOD, en ocada a la ep oducción de audio. P uebas En o no de p uebas Un compu ado o mado po p ocesado In el Xeon CPU E5-2620 2GHz, 16 GB RAM, a je a g á ica NVIDIA GeFo ce GTX 760, con Windows 7 P o essional 64 bi s como sis ema ope a i o, usando se ice pack 1, Mic oso Visual S udio C# Exp ess 2010 y XNA 4.0. Diseño de las p uebas En cada una de las e siones del juego (Con inua y disc e a, usando RT-DESK), se han ealizado dos es s dis in os, uno con enemigos “no males” y o a con je es (Es os dispa an balas). En ambos casos es aban ac i ados los ondos po iles y el pe sonaje p incipal (sin en ada). La ejecución de odos los elemen os es de e minis a (No se han usado elemen os p ocedu ales, ni alea o ios ni en ada del jugado ). En cada es se a ia la can idad de enemigos (De 1000 en 1000 en el caso de la p ueba con enemigos no males y de 100 en 100 en el de los je es), y po cada can idad se han ealizado cinco p uebas dis in as pa a un mayo igo en la medida y compa ación. Cada una de es as p uebas du a 30 segundos y se con abiliza qué acción se des ina a cada una de las siguien es ases:  Fase de dibujado (D aw), en la que se dibujan los obje os.  Fase de ac ualización (Upda e), en la que se ac ualizan los obje os.  Fase de idle, iempo es an e no usado. 50 Resul ados En ambos es s los esul ados han sido muy simila es, a iando únicamen e la magni ud (El je e es más pesado compu acionalmen e que el enemigo no mal, además de dispa a , y po an o hacen al a menos pa a sa u a el sis ema). Los siguien es da os pe enecen a la p ueba con je es. En p ime luga , los esul ados de la e sión con inua: Se puede obse a que el sis ema se sa u a con casi 600 obje os c eados, que es cuando la ase de upda e y de d aw suman un iempo o al supe io al iempo de i e ación, y po an o el iempo de idle es 0. Al sa u a se ob iamen e el iempo de upda e y de d aw deja de c ece , aunque en cada i e ación si es mayo , p opiciando una caída de ames ( alen ización de la ejecución). 51 En la e sión con RT-DESK se puede obse a en la g á ica supe io como el iempo de ac ualización y dibujado es meno que en la e sión con inua, esul ando en un mayo iempo de idle y po lo an o equie e de mayo ca ga pa a sa u a se (Unos 700 elemen os). En la in e io se mues an los ames po segundo, los cuales empiezan a cae al alcanza el es ado de sa u ación, de nue o necesi ando pa a ello más ca ga que en la e sión con inua. La di e encia en e una e sión y o a se ía la posibilidad de con a con unos 100 je es ex a en la e sión de RT-DESK (o unos 2000~ enemigos no males, según la p ueba con enemigos), aunque dicho iempo ex a pod ía se usado pa a cualquie a ea. 52 Conclusiones El uso de RT-DESK ha sido más sencillo y ápido de lo espe ado, además de habe quedado pa en e sus en ajas en e al bucle p incipal adicional. Po o a pa e el desa ollo del ideojuego, pa iendo de ce o y ealizando odo el diseño, la plani icación e implemen ación ha sido de g an ayuda pa a en ende y pe mi i me p o undiza en una de las aplicaciones de la in o má ica que más in e és me despie an y que apenas se ha ocado en la ca e a, la c eación de ideojuegos. La lección más aliosa que he sacado en es a pa e es sob e la impo ancia de la plani icación. Como medio de exp esión, es di ícil sabe desde el p incipio cómo a a se el ideojuego que se a a hace po que siemp e hay cosas que depu a o cambia , cosas que sob e la ma cha se descub en, o algunas que simplemen e se an a qui a . Sin emba go, como p oyec o y como p og ama que es, g an pa e del mismo sí se puede (Y debe ía) de plani ica . La p ueba de es o es que po muchas semanas que dediqué a hace p uebas pensando ace ca del diseño del juego, buscando algo que uese una base sólida, a la ho a de implemen a lo cambié cosas. Y además, en el momen o en que empecé a plani ica lo, a ma ca me me as obje i as a dis in os plazos, desa olla lo se hizo más sencillo, y eniendo con ol de esos aspec os que si se pueden plani ica puede uno ácilmen e ealiza cambios, si uesen necesa ios, en esos o os aspec os más “a ís icos”. En cuan o a la plani icación empo al y del es ue zo que asumí me lle a ía, en gene al he a dado lo que asumí o un poco menos, en pa e po que a ias de la a eas se simpli icaban al habe ealizado algunas p e ias (Po ejemplo, el p ime Boss cos ó más que los siguien es, que se bene icia on de su código). Una de mis p eocupaciones al empeza el p oyec o ue el cos e de hace la adap ación a RT-DESK. Sin emba go, y como he comen ado an es, esul o sencillo y di ec o. La abla y el diag ama de Gan ac ualizados se encuen an en la siguien e página. Relación del abajo con es udios cu sados La ealización del p oyec o ha esul ado bene iciosa de ca a a pone a p ueba lo ap endido en la ca e a, y especialmen e en mi especialidad de ingenie ía del so wa e. Se ha aplicado muy especialmen e cues iones e e en es a la p og amación, g á icos po compu ado y écnicas de diseño y ges ión de p oyec os, es as úl imas se han e elado muy ú iles como se ha comen ado en el p oyec o an e io . La ingenie ía in o má ica es muy amplia y en la ca e a se han ocado muchas amas. No las pond é en p ác icas odas, y no odas me gus an, pe o en é en la uni e sidad buscando pode hace juegos, y he ap endido lo su icien e como pa a pode hace lo. Y des aca especialmen e la des eza gene al como ingenie o ob enida a lo la go de la ca e a, que me han pe mi ido coge una ecnología comple amen e desconocida pa a mi como es RT- DESK y comp ende la y aplica la de o ma sencilla, así como aplica lo es udiado a algo que no se ha es udiado explíci amen e, como son los ideojuegos. Un compañe o suele deci que en la uni e sidad lo más impo an e que se ap ende es a ap ende , una base sob e la que cons ui el es o de conocimien os, con lo que es oy muy de acue do. 53 Se ha pin ado en osa el iempo eal sob e el iempo es imado, pin ado en azul. 54 T abajos u u os La ecnología RT-DESK es á alidada po di e en es p oyec os, el siguien e paso debe ía de se puli la y acili a su uso a un mayo núme o de desa ollado es. Sin emba go, los p oblemas an e io men e desc i os (adap a el bucle p incipal, maneja la en ana, p oblemas de inpu , limi aciones en el audio) que hacen que pa a usa RT-DESK jun o con XNA haya que enuncia a muchas de las posibilidades de es a (En pa e po unciona como una caja neg a) y sus i ui las po o as opciones me hacen pensa en si no se ía más adecuado adap a RT- DESK a o a ecnología que sí pe mi a una acople pe ec o en e ellos. De que e con inua po es a linea, se ía ecomendable cen a se en MonoGame una ez es é comple a, la adap ación lib e de XNA, y e si se iene acceso al código del bucle p incipal y se puede ealiza esa mejo in eg ación. Apa e de las e siones ya exis en es que hacen uso de OpenGL, o o buen candida o y con las en ajas de XNA se ía SFML, al usa C++ y no p o ee de un bucle p incipal ce ado la adap ación se ía i ial, pe o si el p oyec o de adap a RT-DESK al mo o Uni y salie a adelan e es a se ía la opción ideal, an o po se uno de los más usados como po con a con una ienda desde la cual se pod ía dis ibui (incluso ende ) RT-DESK a una g an can idad de usua ios, pe enecien es además de una comunidad conocida po su g an can idad de documen ación y ecu sos, lo cual sin duda se ía de ayuda pa a e oalimen a la di usión y comp ensión de RT- DESK. 55 Ag adecimien os Me gus a ía ag adece la posibilidad que me ha dado Ramón Mollá, di ec o del p oyec o, de hace como p oyec o inal de ca e a lo que he que ido hace desde que empecé es a, un ideojuego, así como po oda la ayuda y consejos du an e el desa ollo del mismo. También, además, a odos los compañe os que han abajado en los di e en es p oyec os de RT-DESK, especialmen e a Da id Pé ez, cuya adap ación de XNA a RT-DESK y documen ación de la misma han sido imp escindibles pa a es e p oyec o. Y pa a acaba a mis pad es, po “aguan a me en casa”, poniéndome las cosas, o a ez, bas an e más áciles. 56 Glosa io Bucle p incipal: Núcleo del juego enca gado de ges iona la en ada y ac ualiza y dibuja los elemen os que lo o man. GDD: Game Design Documen (Documen o de diseño del ideojuego). Se a a de un documen o que desc ibe los di e en es aspec os del ideojuego y que si e como guía de e e encia pa a odo el equipo. HUD: Heads up display, la in e az g á ica que se mues a du an e el juego pa a mos a el alo de di e en es a ibu os de la pa ida como ene gía del pe sonaje, idas, iempo, e c RT-DESK: Real Time Disc e e Simula ion Ke nel, es una lib e ía diseñada pa a la ges ión empo al de e en os disc e os en iempo eal. Shoo ‘em up: Géne o de ideojuegos donde p ima la acción, habilidad con el mando y los e lejos. Sp i e: Asse g á ico 2d usado pa a ep esen a isualmen e los elemen os del juego. Sp i e shee / Sp i e se : Imagen donde se gua dan los di e en es sp i es que o man las animaciones de los elemen os de un juego. XNA: Conjun o de he amien as c eadas po Mic oso pa a acili a y apoya la c eación de ideojuegos. 57 Fuen es h ps://en.wikipedia.o g/wiki/Video_game h p:// desk.blogs.up .es h p://www.s a is a.com/ opics/868/ ideo-games h p://en opyin e ac i e.com/2011/02/game-engine-design- he-game-loop/ Bibliog a ía: Jesse Schell, A o game design: a book o lenses. Aa on Reed, Lea ning XNA 4.0. Da id Pé ez Climen , C eación de un ideojuego en XNA usando RT-DESK. Pablo de la Ossa Pé ez, Zen ac : Engine con simulación disc e a pa a ideojuegos 2D. 64 Bala explosi a Se mues a como un pequeño pun o ijo que si e de a iso, ya que momen os después le sigue una explosión en esa misma posición. Únicamen e es de colo ojo. Láse El láse pa e de la na e enemiga has a el bo de de la pan alla. Puede se de colo azul, e de o ojo, además de pode al e na en e ambos siguiendo di e en es pa ones. Onda Simila al láse pe o en ez de se lineal iene o ma ci cula y se expande desde su o igen (el enemigo que la dispa a). Puede se de colo azul, e de o ojo, además de pode al e na en e ambos siguiendo di e en es pa ones. 65 Tipos de enemigos Enemigos En el diseño de los enemigos no males (no con los je es) no sigue un pa ón conc e o sino que se an a c ea enemigos básicos cuyo compo amien o se pueda modi ica ácilmen e pa a c ea un g an núme o de enemigos di e en es, asignando di e en es pa ones de mo imien os y de dispa os, así como a ibu os (como ene gía, nº de pun os). Po ejemplo, un enemigo que apa ezca po la un lado de la pan alla y a ance dispa ando hacia el o o. Un enemigo que apa ezca po un lado de la pan alla, dispa e y uel a po donde ha enido. Enemigos que puedan apa ece espon áneamen e en el in e io de la pan alla, o de o ma a la posición del p o agonis a. También enemigos que dispa es siguiendo di e en es pa ones de ipo, colo , di ección y demás a ibu os. Je e 1 Es e je e pe manece en la pa e cen al supe io de la pan alla sin mo e se mien as dispa a achas de balas ojas en odas di ecciones. La elocidad de las balas oscila en e un mínimo y una máximo. T as acaba con ⅔ de su ida alen iza las balas po debajo del mínimo y empieza a añadi más balas, y cuando es á a pun o de mo i a aumen a su elocidad y añadi ambién balas g ises. 66 Je e 2 Es e je e se desplaza po la pan alla siguiendo un eco ido ijo y sol ando ondas de cualquie a de los es colo es de o ma alea o ia. Poco a poco el in e alo en e ondas se a es echando y las ondas son más ápidas. Llegado cie o pun o, las ondas se limi an a los colo es azul y ojo. Además, una onda puede se de di e en es colo es (po que es á di idida a ozos o po que se a al e nando). Je e 3 Es e je e se mue e po la pan alla ebo ando en sus esquinas. Cuen a con un escudo que lo en uel e p o egiéndolo de dispa os y que no puede se des uido, pe o que iene una abe u a po la que pode dispa a le. El escudo gi a, la di ección del gi o cambia de an o en an o. Desde el escudo salen dispa adas bolas ebo an es, y cuan o más ce ca se es á de ence al je e, más balas hay en pan alla. Además, de ez en cuando se lanzan balas des uc ibles en odas di ecciones. 67 Je e 4 Es e je e se encuen a en el cen o de la pan alla, no se mue e po ella pe o o a cons an emen e. Dispa a lase s con inuos que o an jun o a él. Con o me se le a qui ando ida, la elocidad de gi a aumen a, así como el núme o de lase s y sus pa ones, además de añadi algunos dispa os ex a. 68 Escena ios A pa e de un simple colo de ondo, muy p ác ico pa a e i a dis acciones isuales, el juego cuen a con o os dos ipos de escena ios, los basados en mapas de iles y los gene ados p ocedu almen e. Mapa de iles Son escena ios c eados a mano a pa i de un conjun o de iles. Se aplica un sc oll pa a que de sensación de a ance y se c ea un loop pa a que esul e in ini o mien as du e la ase. Usando es a écnica se c ea á el escena io del bosque. Mapa p ocedu al Aunque un mapa p ocedu al puede se un mapa de iles, en es e caso la écnica se usa á pa a c ea un escena io basado en el cielo donde se c een sob e la ma cha di e en es elemen os de di e en es ipos (po ejemplo, nubes) y elocidades (pa a simula p o undidad) siguiendo unas eglas y es icciones. En el caso de las nubes además se aplica á un shade o alguna écnica de o ma que se imp iman de o ma semi anspa en e sob e los o os elemen os (p o agonis a, enemigos, balas, e c.) pe o no sob e el p opio ondo (de o ma que se man engan blancas).