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).