Facul ad de In o m´a ica
T abajo de Fin de G ado
Magic The Se e lessling
Po
Rod igo Toba Guill´en
Di igido po
Jos´e Luis V´azquez Pole i
Da id Pacios Izquie do
MADRID, 2023–2024
ii
Ag adecimien os
En p ime luga , quie o ag adece odo el apoyo que me han dado Jos´e Luis V´azquez Po-
le i y Da id Pacios Izquie do, u o es de es e abajo. G acias a su labo es e p oyec o ha
alcanzado odo su po encial, lo cual no hab ´ıa sido posible sin ellos.
Adem´as, quie o econoce la labo de la Sec e a ´ıa de Es udian es y del Vicedecano de O -
denaci´on Acad´emica e Inno aci´on Docen e Ad i´an Riesco Rod ´ıguez. G acias a su es ue zo
po ayuda a los es udian es de la acul ad ha sido posible soluciona odos los p oblemas
adminis a i os que he enido.
Po ´ul imo, ag adece a mi amilia y amigos que se han in e esado po el p oyec o y su de-
sa ollo. Su in e ´es y apoyo me han impulsado a la ho a de ealiza lo lo mejo posible.
iii
i
Abs ac
Magic: The Se e lessling is an online mul iplaye game based in he popula TCG Magic:
The Ga he ing. Wi h a simpli ied se o ules and a educed numbe o ca ds, casual playe s
will be able o amilia ize wi h he game while hey play wi h hei iends. In addi ion, he
in e nal s uc u e o he game has been o ally de eloped using se e less compu ing, being
one o he p ojec ’s objec i es ac ing as a case s udy in o de o analyze easibili y o his
echnology as a game/applica ion de elopmen ool.
Keywo ds: Videogame, Se e less, AWS, Lambda, S3, Ca d Game, E i-
ciency Analysis.
i
Resumen
Magic: The Se e lessling es un juego mul ijugado en l´ınea basado en el po-
pula juego de ca as Magic: The Ga he ing. Con eglas simpli icadas y un
n´ume o educido de ca as, los jugado es m´as casuales pod ´an amilia iza se
con el juego mien as juegan con sus amigos. Adem´as, la es uc u a in e na
del juego se ha ealizado en su o alidad median e compu aci´on sin se ido ,
siendo uno de los obje i os de es e p oyec o ac ua como caso de es udio pa-
a analiza la iabilidad de es a ecnolog´ıa como he amien a de desa ollo
de ideojuegos y aplicaciones.
Palab as Cla e: Videojuego, Se e less, AWS, Lambda, S3, Juego de
ca as, An´alisis de e iciencia.
ii
iii
´
Indice gene al
Abs ac ......................................................... V
Resumen ........................................................ VII
Cap´ı ulo 1 In oduc ion ....................................... 1
Cap´ı ulo 1 In oducci´on ....................................... 3
Cap´ı ulo 2 Es ado del A e .................................... 5
Cap´ı ulo 3 Me odolog´ıa y Tecnolog´ıas..........................15
Cap´ı ulo 4 Desa ollo del P oyec o ............................. 23
Cap´ı ulo 5 Resul ados y Discusi´on ............................. 45
Cap´ı ulo 6 Conclusiones y T abajo a Fu u o .................... 49
Cap´ı ulo 6 Conclusions and u u e applica ions ................. 53
Cap´ı ulo A Anexo: Manual de Ins alaci´on ...................... 57
Bibliog a ´ıa ...................................................... 62
ix
6
2.2. Magic: The Ga he ing Online
Figu a 2.1: Magic: The Ga he ing Online
MTGO es la e si´on online de Magic. Lanzado en 2002, es e juego pe mi-
e a los jugado es juga en e ellos en cualquie momen o a a ´es de su o -
denado . Si bien es a opci´on elimina pa e del ac o social que iene juga
en pe sona, es ap eciado po los jugado es debido a la opo unidad que les
b inda es e se icio de pode juga en cualquie momen o y con un g an y
a iado n´ume o de pe sonas con mazos di e en es.
O a de las en ajas de es e se icio es la au oma izaci´on de las acciones, lo
que e i a e o es o ampas po pa e de los jugado es. Sin emba go, es o
a˜nade p oblemas adicionales como el de los e o es mec´anicos, como pasa
de ase po un click e ´oneo, lo cual no puede pasa en el o ma o ´ısico.
Es e sis ema es ´a basado en se ido es con encionales. Pa a paga los cos es
de man enimien o y consegui bene icios, el juego iene una econom´ıa p o-
pia; pa a juga o neos compe i i os hacen al a ” ´ıcke s”. Es os se pueden
comp a a Wiza d o he Coas po 1$. Como hay muchos jugado es in-
e esados en juga los o neos, los ´ıcke s ienen una amplia demanda, y da-
do que son ans e ibles en e cuen as, se pueden usa como moneda de cam-
bio. Es o pe mi e a los jugado es in e cambia sus ca as po ´ıcke s, p o-
piciando que los consigan pa a comp a ca as, juga o neos, e c. Adem´as,
exis en me cados secunda ios en los que se pueden ende a un p ecio algo
meno que el o icial, pe mi iendo al usua io liquida los bienes que enga
den o del juego[3]. Dicha posibilidad ins a a los in e esados en el juego a
me e se en ´el y pa icipa en los e en os, ya que al igual que pasa en el jue-
go ´ısico, ienen la capacidad de ecupe a pa e de su in e si´on en cualquie
7
momen o[4].
Como a˜nadido pa a incen i a a´un m´as la adquisici´on de ca as, Wiza ds o
he Coas puso en ma cha un sis ema po el cual si un jugado ob iene una
colecci´on comple a de ca as digi ales, a cambio de unas asas puede can-
jea la po esa misma colecci´on comple a en o ma o ´ısico. Es o pe mi e li-
quida los bienes digi ales y pe mu a los a ac i os ´ısicos de o ma o almen-
e o icial, lo cual inspi a con ianza en gen e que quie a ing esa dine o en la
pla a o ma.
2.3. XMage
XMage es un p oyec o independien e que habili a a los jugado es de Magic
el pode juga al juego de o ma online con o os jugado es en mul i ud de
o ma os dis in os y con odas las ca as disponibles de o ma g a ui a. Al
no es a econocido de o ma o icial no dispone de una can idad de jugado-
es an ele ada como la de Magic Online o Magic A ena, los cuales s´ı son
de ca ´ac e o icial, pe o algunas pe sonas lo usan pa a pode dis u a de la
expe iencia de juego sin ene que adqui i las ca as que necesi an. En ese
sen ido es e p oyec o iene cie a simili ud, ya que no se quie e pone ningu-
na ba e a de en ada econ´omica.
Una ez que el usua io c ea una cuen a g a ui a, puede i a una secci´on de
c eaci´on de mazos en las que pod ´a con ecciona lo que dese´e, aunque solo
pod ´a usa sus mazos en aquellas pa idas que ascu an en o ma os com-
pa ibles con dicho mazo. Una de las opciones es expo a la lis a de ca as
pa a que cualquie pe sona pueda impo a la en su cuen a ´apidamen e.
Al igual que es e p oyec o, XMage exis e en o ma o de aplicaci´on, con lo
que el usua io desca ga un clien e de o ma local. Sin emba go, una di e en-
cia cla e es que XMage s´ı usa se ido es con encionales pa a man ene su
mul ijugado en l´ınea; ienen un se ido pa a Es ados Unidos y o o pa a
Eu opa, alojados en cen os de da os de Nue a Yo k y Alemania espec i a-
men e. Pa a lidia con los cos es de man enimien o de los se ido es piden
a los jugado es apoyo econ´omico median e la pla a o ma de mecenazgo Pa-
eon.
2.4. Cocka ice
Cocka ice es un p og ama mul ipla a o ma de c´odigo abie o que pe mi e
simula pa idas de Magic en e a ios jugado es. Si bien p e ende imi a de
o ma m´as iel algunos aspec os del juego p esencial, el dise˜no del p og ama
impide que los jugado es se ap o echen del sis ema pa a ob ene una en a-
ja injus a, bas´andose es e sis ema en el uso de se ido es con encionales. Si
8
bien es una he amien a que a ios jugado es han usado desde su c eaci´on,
el man enimien o de es e se icio iene algunas des en ajas.
Seg´un da os sacados de su p´agina o icial, de los es se ido es que hab´ıa i-
gen es ya solo queda uno de ellos ac i o. Adem´as, es e ´ul imo se ido pa-
ece ene una g an ca ga de jugado es. Po o a pa e, en la misma p´agi-
na se piden donaciones, y se indica que es as son necesa ias debido a que el
cos e de man enimien o mensual es de unos 100$, siendo es e bas an e ele a-
do. Como a˜nadido, cabe des aca que el cie e de dos de los es se ido es
puede se un indica i o de que el sis ema de donaciones ue insu icien e a la
ho a de amo iza los cos es.
2.5. YouRuleYouRole
YouRuleYouRole[5] es un se icio online pensado pa a aloja pa idas de ol
online c eado po ´
Al a o Rod ´ıguez-Pe al Bus os. Pe mi e a los o ganiza-
do es de pa idas desa olla escena ios o si uaciones seg´un conside en y de
o ma sencilla, pudiendo se jugados m´as adelan e po los jugado es que el
o ganizado conside e.
Es e p oyec o nace a a´ız de la complejidad de euni en un espacio ´ısico y
un momen o de e minado a la can idad de pe sonas su icien es como pa a
juga una campa˜na de ol. G acias a YouRuleYouRole, es m´as sencillo eali-
za una pa ida, ya que los jugado es no ienen que desplaza se has a un si-
io conc e o, aho ando bas an e iempo en el p oceso y apo ando a su ez
una g an comodidad. De hecho, en cie os casos en los que po alg´un mo i o
los jugado es no pueden jun a se, una he amien a como es a puede llega a
posibili a la pa ida que de o a o ma no pod ´ıa habe enido luga . Es e
se icio es ´a cons uido con ecnolog´ıa Se e less en su o alidad, us´andose
los siguien es se icios de AWS:
1. El uncionamien o del se icio y oda la l´ogica se manejan a a ´es de
unciones AWS Lambda. Es as se han a omizado odo lo posible con
el in de que ue an ex emadamen e ´op imas, ya que al se un juego
online es e equie e de cie a luidez pa a se dis u able. El o o mo i-
o es que el cos e de man enimien o del se icio es ´a de e minado casi
en su o alidad po el iempo de ejecuci´on y el espacio asignado a las
unciones.
2. Dichas unciones son llamadas cuando es opo uno median e API Ga-
eway; los clien es mandan una pe ici´on a una API Res y es la API
la que hace las llamadas a las dis in as unciones. De es a o ma la API
Res ac ´ua como in e media io en e los clien es y la l´ogica Se e less
9
de las unciones.
3. Toda la in o maci´on del se icio as´ı como de las pa idas que es ´an en
juego se encuen a alojada en una base de da os en o ma de un sis e-
ma de iche os en un Bucke S3. Si bien en la documen aci´on se expli-
ca que una al e na i a e a usa DynamoDB, se op ´o po S3 po do a
al p oyec o de una mayo lexibilidad, pues al gua da y p ocesa oda
la in o maci´on en a chi os de ex o plano es mucho m´as ´acil ein en a
el sis ema o anspo a lo a un en o no dis in o, ya que ese ipo de a -
chi o iene una mayo compa ibilidad que las ablas de DynamoDB,
que son p opias exclusi amen e del ecosis ema de AWS. Po o a pa e,
la in o maci´on se ha almacenado en el sis ema en un o ma o muy di-
idido en e ca pe as y iche os dis in os. G acias a es o, las unciones
Lambda son m´as e icien es, ya que no ienen que ca ga g andes a chi-
os cada ez que se a a accede a un da o conc e o. La isi´on de p io-
iza la lexibilidad de los da os y no ence a los en el ecosis ema AWS
y adem´as el compa imen a la in o maci´on al m´aximo es un en oque
que se compa e y que se ha aplicado en es e p oyec o.
O a de las simili udes que hay con es e p oyec o es que hace un es udio de
iabilidad sob e el man enimien o del juego y analiza el cos e po pa ida
dado un n´ume o medio de llamadas a unciones, as´ı como el cos e de las lla-
madas a la API y el del man enimien o de a chi os en S3. Adem´as, plan ea
posibles soluciones de ca a a a on a los cos es.
En especial, des aca la idea de c ea una ienda en la que los o ganizado-
es de pa idas puedan ende sus asse s y pa idas a o os o ganizado es a
cambio de dine o, lle ´andose el juego una comisi´on del 30 % po cada an-
sacci´on. Pa a que ue a o almen e iable es a linea ha ´ıa al a c ea una co-
munidad solida. En es a opci´on ambi´en cab ´ıa la en a de p oduc os adicio-
nales p opios en la ienda, los cuales coexis i ´ıan con los de la comunidad.
O o de los plan eamien os pa a la sos enibilidad se ´ıa el de hace asocia-
ciones y pac os con emp esas que quisie an ene ep esen aci´on den o del
juego, la cual se aduci ´ıa en m´as con enido pa a la comunidad.
La ´ul ima idea se ´ıa ende el juego en una pla a o ma como S eam. Si bien
es e ´ul imo en oque no se aduci ´ıa en un lujo de dine o pe pe uo en el la -
go plazo, puede se una uen e de ing esos muy po en e que al combina se
con las o as lineas de c eaci´on de con enido alcanzase la iabilidad e incluso
los bene icios en el p oyec o. Hab ´ıa que des aca que pa a pode desa o-
lla el con enido p opio de algunas de es as l´ıneas hab ´ıa que con a a a un
equipo, con lo cual los cos es de man enimien o de odo el p oyec o aumen-
10
a ´ıan conside ablemen e.
2.6. Cus -OTEA: Ma cado de documen os de o ma segu-
a
El obje i o de es e p oyec o e a el de desa olla una he amien a que pe -
mi a a una pe sona c ea ma cas de agua in isibles en sus documen os pa a
pode p o ege los an e un posible uso audulen o po pa e de e ce os[6].
Es e p oblema su ge en e o as cosas del auge de las aplicaciones de edici´on
de documen os, las cuales ienen cada ez m´as y mejo es he amien as que
ienen uncionalidades a iadas, en e ellas la capacidad de edi a o bo a
ma cas de agua. Adem´as, usando me odolog´ıas con encionales los cos es en
iempo y dine o e an demasiado ele ados, as´ı que Samuel An onio Euge -
cios Ne ado busc´o la o ma de desa olla una he amien a que solucionase
el p oblema y cuyo uncionamien o ue a ´apido y ba a o en cuan o a cos e.
T as in es iga y compa a las dis in as opciones, descub i´o que la ecno-
log´ıa se e less aplicada a a ´es de los se icios de Amazon e a la opci´on
m´as iable.
La he amien a hace uso de API Ga eway pa a en ia la in o maci´on de
en ada al es o de se icios. Po o a pa e, hay 3 bucke s S3 que almace-
nan los da os que usa ´an las unciones Lambda, cada uno con un es ado de
los da os dis in o, y inalmen e las dos unciones Lambda son las que c ean
y a˜naden la ma ca de agua enc ip ada a los documen os. Adem´as de com-
pa a la soluci´on se e less en iempo de ejecuci´on y en cos e con espec o
al uso de un o denado o dina io, ambi´en compa a es as ca ac e ´ıs icas en-
e AWS y Google Cloud. Si bien en Google Cloud el cos e al mes se ´ıa de
0.61$, con AWS el cos e es de an solo 0.01$, siendo AWS muy supe io en
es e sen ido. Po o a pa e, el o denado , al cual se le asigna un impo e de
1000 eu os, end ´ıa un cos e mensual de 83.33 eu os o 90.82$al cambio ac-
ual.(Se asume una amo izaci´on en un a˜no).
Po an o, an o Google Cloud como AWS supe an po mucho al o denado
local. Es impo an e menciona que si bien en es e an´alisis AWS esul a m´as
e icien e que Google Cloud, hay es udios que o ecen esul ados di e en es[7],
as´ı que es p obable que el ipo de aplicaci´on a ec e adicalmen e a la e ec i-
idad de cada en o no.
2.7. Ma ia - A Se e less Mul iplaye Game
Ma ia - A Se e less Mul iplaye Game[8] es un juego mul ijugado online
Se e less que es ´a basado en el juego de mesa hom´onimo. Es ´a siendo desa-
ollado po Jackson Bowe, y es un juego de na egado con odo el backend
11
ealizado con se icios de AWS.
Cabe des aca que una de las p incipales di e encias con espec o a es e p o-
yec o es que su base de da os se ha ealizado median e AWS DynamoDB
En el juego hay cua o es ados dis in os, en cada uno de los cuales los juga-
do es pod ´an ealiza unas acciones u o as en base al ol que les haya sido
asignado.
Un en oque llama i o de es e p oyec o es que oda la a qui ec u a Backend
es ´a basada en c´odigo, y no se ealiza ninguna acci´on manual en AWS. Es a
me odolog´ıa puede inc emen a lige amen e la di icul ad de algunas a eas,
pe o ae consigo po en es en ajas;
1. Los cambios ealizados median e la consola de AWS no pueden se as-
eados con he amien as como Gi , al con a io de lo que pasa al eali-
za a iaciones manuales.
2. Con un solo comando puede desplega el juego en una egi´on o almen-
e dis in a, do ´andolo de lexibilidad.
3. Median e el uso de un comando puede elimina el juego po comple o.
Es o esul a p ´ac ico llegados a un caso ex emo en el que los cos es
ue an insos enibles, ya que su c eado pod ´ıa de ene el se icio ´api-
damen e pa a e i a un desembolso econ´omico insos enible.
En cuan o a la a qui ec u a de la aplicaci´on, el clien e in e ac ´ua con odo el
sis ema a a ´es del on end desa ollado con Quasa . Es e en ´ıa pe icio-
nes median e API Ga eway a una HTTP API que a su ez llama a las dis-
in as unciones Lambda que ha c eado, ya sea pa a iden i iciaci´on del usua-
io con Cogni o, pa a ealiza una acci´on den o del juego, e c. Cuando se
ealizan acciones del p opio juego o en el lobby de pa ida se debe in o ma
a odos los dem´as usua ios pa a man ene una cohe encia l´ogica. Pa a es o
se ha usado IoT Co e, un se icio webSocke de AWS el cual usa el p o o-
colo MQTT ( Message Queuing Teleme y T anspo )[9]. Es a de-
cisi´on se debe a que es un se icio ´apido y e icien e a la ez que escalable,
ya que al igual que con o os se icios de AWS como Lambda el usua io solo
debe paga po lo que se usa. La al e na i a que menciona el desa ollado
es c ea una unci´on Lambda que ac ´ue como webSocke y que almacene la
in o maci´on del usua io que ealiza una acci´on en una abla DynamoDB,
pa a que cuando un mensaje enga que se en iado al usua io, su id de co-
nexi´on pueda encon a se en la abla y as´ı manda le el mensaje. El p oble-
ma es que po cada mensaje de un usua io hab ´ıa que lee la abla en e a,
12
lo cual es conside ado po el c eado del p oyec o como len o, ine icien e y
p obablemen e m´as cos oso que la al e na i a de IoT Co e.
Una mo i aci´on compa ida con es e p oyec o es la de in es iga el desa o-
llo Se e less y amilia iza se con ´el. Sin emba go, es e p oyec o iene o os
obje i os adem´as de in es iga el en o no Se e less. Es po ello que en es-
e caso se ha op ado po no usa algunos de los se icios de AWS que s´ı usa
Ma ia en pos de en ajas de desa ollo y comodidad del usua io.
2.8. Simple T i ia Se ice
Simple T i ia Se ice es un ideojuego web desa ollado con el in de mos-
a las capacidades de AWS a la ho a de hace juegos. Usa se icios de e-
gis o e iden i icaci´on de usua ios con AWS Cogni o, da os de jugado es y
pa idas en las bases de da os de DynamoDB, l´ogica de juego y uncionali-
dad median e AWS Lambda, API Ga eway se enca ga de la comunicaci´on
y ansmisi´on de da os y los an´alisis de da os se consiguen a a ´es de Ki-
nesis yS3 con A hena.
El juego iene modo indi idual y mul ijugado , y algunas de sus unciona-
lidades son una abla de clasi icaci´on, un cha , un me cado y la posibilidad
pa a los jugado es de c ea con enido.
2.9. Se e less A chi ec u e o Da a P ocessing and De-
ec ing Anomalies wi h he Ma s Exp ess MARSIS Ins-
umen
Es e p oyec o es ´a en ocado al es udio e in es igaci´on de la ionos e a de Ma e[10].
Pa a ello, se p e end´ıa analiza dis in os ionog amas pa a de ec a anomal´ıas.
En cuan o al p ocesamien o de la in o maci´on, se op ´o po una a qui ec u a
modula sin se ido . En e las dis in as en ajas mencionadas, se explica
que la compu aci´on en la nube pe mi e a los desa ollado es elabo a p o-
yec os, in es igaciones, aplicaciones, e c. sin ene que p eocupa se de des-
plega un complejo en amado de se ido es, ocup´andose de es o el p o ee-
do de los se icios. El hecho de delega la a ea de ges i´on de ecu sos y
ejecuci´on de p og ama a o a en idad pe mi e que los in es igado es pue-
dan dedica se en su o alidad al desa ollo del p oyec o. Adem´as, g acias a
su e iciencia, el en oque se e less es ideal pa a p oyec os en los que los cos-
es deben es a muy ajus ados, al y como es el caso.
La a qui ec u a sin se ido ha sido desplegada con los se icios de AWS. El
p ocesamien o de los da os es ´a basado en un sis ema dis ibuido en m´odu-
los en el cual hay una se ie de unciones Lambda y bucke s S3. El esul-
13
ado de las unciones se almacena en los bucke s, ac uando es os como una
memo ia secunda ia y a su ez como dispa ado es de las o as unciones, ya
que es una a qui ec u a en cadena en la que el esul ado de unas unciones
puede p o oca que se llame a o as.
El uso de es a ecnolog´ıa se puede conside a un acie o, ya que en an´ali-
sis compa a i o con espec o al uso de o denado es p opios de en e 3250 y
3500 eu os se obse ´o una capacidad de p ocesamien o muy in e io a la de
la a qui ec u a se e less. En conc e o, en los 20 minu os que a d´o es a en
p ocesa los 441919 ionog amas, los o denado es solo pudie on p ocesa 4320
en el mejo caso y 1440 en el peo . Po o a pa e, el cos e de es a a qui ec-
u a ue muy in e io al de los o denado es. Pa a el p ocesamien o de odos
los ionog amas los se icios de AWS equi ie on un pago de 0.00001$. Es e
bajo cos e se debe a unciones Lambda muy op imizadas y a que casi no hay
almacenamien o en S3, ya que solo se gua dan los a chi os de en ada y sali-
da, bo ´andose los a chi os in e medios du an e la ejecuci´on de las unciones
Lambda.
2.10. Towa ds Suppo ing Millions o Use s in Modi iable
Vi ual En i onmen s by Redesigning Minec a -Like
Games as Se e less Sys ems
Los au o es de es e abajo[11] se ija on en que ideojuegos simila es a Mi-
nec a en cuan o a se un juego mul ijugado que anscu e en un mundo
modi icable no son an escalables como pod ´ıan. Se e ie en a es e ipo de
juegos como MEVs (modi iable i ual en i onmen ), y se˜nalan que si
bien es as ob as ienen m´as de 100 millones de jugado es en el mundo, no
o ecen una g an can idad de jugado es po pa ida, mien as que si ap o e-
chasen una a qui ec u a basada en se icios de la nube pod ´ıan se much´ısi-
mo m´as escalables y ene m´as jugado es de o ma concu en e.
Explican algunas de las ´ecnicas usadas en la ac ualidad, como po ejemplo
ep esen a solo una pa e del mundo al jugado e i ca g´andola con o me
es e se mue e, o simula localmen e acciones has a que se ecibe el es ado
eal del juego po pa e del se ido . Sin emba go, su p opues a es la c ea-
ci´on de una a qui ec u a se e less que en un u u o pod ´ıa pe mi i millo-
nes de jugado es simul ´aneos.
2.11. Conclusiones espec o al es ado del a e
T as analiza dis in os p oyec os y es udios, se obse a que hay a ias e -
siones en l´ınea de Magic. Sin emba go, odas usan me odolog´ıas con encio-
nales. Po o a pa e, hay a ios es udios que demues an que una de las
14
mejo es opciones a la ho a de desa olla so wa e escalable y a bajo cos e es
el uso de la compu aci´on sin se ido [12], en especial en el en o no de AWS.
Algunos equipos han ap o echado la concu encia que o ece AWS Lamb-
da pa a pode ealiza c´alculos y ope aciones complejos en muy poco iem-
po y con un gas o m´ınimo. O as pe sonas se han se ido de la concu encia
pa a pode a ende a odas las llamadas ealizadas y gene a una a qui ec-
u a simila a un se ido usando unciones como se icio. Es e ´ul imo en o-
que es el que iene un g an po encial en cuan o al desa ollo de un sis ema
online ´apido, escalable y de bajo cos e, as´ı que a la is a de los esul ados
de dichos abajos, odo apun a a pensa que la ecnolog´ıa se ajus a a la ne-
cesidad de es e p oyec o.
Cap´ı ulo 3. Me odolog´ıa y Tecnolog´ıas
Una ez e isado el es ado del a e, el en oque elegido pa a ealiza el p o-
yec o ha sido el uso de la ecnolog´ıa se e less del en o no AWS. Po an-
o, una ez elegida la ecnolog´ıa, se deben compa a las dis in as posibilida-
des que exis en en e aplicaciones y p og amas de desa ollo. Pa a aba ca
un abajo de g an en e gadu a se deben usa m´ul iples he amien as con
p op´osi os a iados; p og amaci´on y desa ollo, o ganizaci´on, dise˜no de ele-
men os g ´a icos, e c. Las he amien as seleccionadas pa a c ea Magic: The
Se e lessling han sido las siguien es:
3.1. LaTeX
LaTeX[13] es un sis ema de composici´on de ex os que pe mi e la elabo a-
ci´on de documen os ´ecnicos e i ando p oblemas exis en es en o as al e na-
i as. Su ca ac e ´ıs ica p incipal es que admi e comandos del lenguaje Tex,
los cuales do an al usua io de opciones ´unicas a la ho a de desa olla sus
esc i os. G acias a su capacidad de elabo a ex os de g an calidad, a se un
es ´anda a la ho a de c ea documen os ´ecnicos y cien ´ı icos y a su acilidad
de uso, se ha op ado po usa LaTeX pa a el desa ollo de es a memo ia.
3.2. O e lea
O e lea es un edi o de LaTeX online que iene buenas uncionalidades
como la edacci´on colabo a i a y simul ´anea, un his o ial de cambios en el
documen o y una opci´on de compilaci´on in eg ada que jun o con un doble
iso edi o - esul ado se aduce en un uso ´agil y sencillo de LaTeX, pu-
diendo comp oba al momen o los cambios in oducidos en el documen o.
Debido a sus po en es ca ac e ´ıs icas, acilidad de uso, ap obaci´on comu-
ni a ia y a que es una he amien a g a ui a, se op ´o po es e edi o pa a la
edacci´on del documen o p esen e.
3.3. d aw.io
d aw.io es una aplicaci´on web mul ipla a o ma g a ui a que pe mi e la ela-
bo aci´on de g ´a icos de g an calidad, cob ando especial ele ancia en cuan o
al desa ollo de g ´a icos complejos ales como diag amas de lujo, diag amas
UML, diag amas de a qui ec u as complejas, diag amas o ganiza i os, e c.
Los diag amas se pueden edi a en cualquie momen o y se pueden expo a
a a ios ipos de o ma o dis in os. Sumado a su baja di icul ad, es as cua-
lidades hacen de la aplicaci´on una opci´on excelen e pa a consegui g ´a icos
15
22
nes que desempe˜nan la l´ogica de juego, AWS S3 unciona como la base de
da os de odas las pa idas y pe mi e ac i a las unciones Lambda, AWS
API Ga eway hace que los usua ios puedan llama a la unci´on de comienzo
de pa ida y ecibi la in o maci´on necesa ia pa a in e ac ua con la misma,
y po ´ul imo, AWS Cloudwa ch mues a in o maci´on sob e los dem´as se i-
cios, con la cual se puede analiza su uncionamien o.
Pa a asigna un c´odigo ´unico a las pa idas se ha usado el pa ´on UUID y
su co espondien e biblio eca de Py hon, y pa a los a chi os de las pa idas
se ha elegido el o ma o JSON.
La base de da os Ga he e pe mi e la b´usqueda y ob enci´on de las im´age-
nes de las ca as de Magic o iciales, mien as que MTG Ca dsmi h iene co-
mo unci´on la c eaci´on de ca as de Magic pe sonalizadas. Pa a desa olla
asse s no elacionados com Magic, como los elemen os de la in e az, se ha
elegido Gimp.
Se ha op ado po Gi hub como sis ema de con ol de e siones pa a pode
man ene a sal o los a ances en el clien e y pode accede a ellos desde cual-
quie luga , y po o a pa e se han usado Pi o al T acke y T ello pa a ges-
iona y o ganiza las di e en es a eas de desa ollo.
Po ´ul imo, pa a la elabo aci´on de es a memo ia se ha elegido el sis ema La-
ex y el en o no especializado O e lea . Los g ´a icos p esen es en la memo ia
se han desa ollado con d aw.io.
Cap´ı ulo 4. Desa ollo del P oyec o
4.1. Desa ollo de la aplicaci´on
El p oyec o se pone en ma cha una ez que se de e min´o el obje i o de c ea
una e si´on online simpli icada de Magic que sea ba a a, escalable y ´acil de
usa median e compu aci´on sin se ido . Es ´a o mado po un clien e local
y po una es uc u a se e less. El clien e se ´ıa una aplicaci´on local desa o-
llada en C# y con SDL y ac ´ua a modo de in e az, pe mi iendo al usua io
in e ac ua con el back-end del p oyec o, que co esponde a la pa e se e -
less, enca gada de la l´ogica. El bucle p incipal[24] de la aplicaci´on local ea-
liza las siguien es acciones:
1. Se comp ueba si ha habido cambios en la pa ida desca gando el a chi-
os cambios.json de la misma y los aplica en caso de habe los. Es a
acci´on solo se ealiza dos eces po segundo pa a op imiza el endi-
mien o
2. Se de ec an y se p ocesan odos los e en os de en ada ealizados po el
clien e, en iando pe iciones en o ma de a chi os a S3 cuando es nece-
sa io
3. Se ende izan odas las im´agenes de la in e az g ´a ica
4. Se hace una b e e espe a pa a que la du aci´on del bucle sea siemp e
uni o me
A su ez, la aplicaci´on iene las clases Playe yCa d que pe mi en alma-
cena la in o maci´on de los jugado es y las ca as espec i amen e[25]. Me-
dian e el sis ema de almacenado de in o maci´on y ac ualizaci´on de las pa -
es de la misma que se en modi icadas se consigue una g an e iciencia con
espec o a o os en oques como po ejemplo mos a el es ado de juego eci-
bi´endolo en su o alidad cada ez que haya un cambio.
23
24
Figu a 4.1: Clien e local de Magic: The Se e lessling
4.2. A qui ec u a Se e less
Magic: The Se e lessling es ´a desa ollado en su o alidad en el ecosis-
ema de AWS. A a ´es de dis in os se icios, la l´ogica de juego y su in o -
maci´on se ges ionan con ecnolog´ıa Se e less, y los usua ios en e lejados
es os p ocesos en su clien e local. La a qui ec u a AWS es ´a compues a de
es se icios: AWS Lambda se enca ga de la l´ogica, S3 de la in o maci´on
yAPI Ga eway de la conexi´on inicial. Po o a pa e, los clien es locales
son aplicaciones que se enca gan p incipalmen e del ende izado del juego,
del inpu del jugado y de la conexi´on con AWS.
25
Figu a 4.2: A qui ec u a de Magic: The Se e lessling
4.2.1. AWS S3 y almacenamien o de la in o maci´on
AWS S3 es un sis ema de almacenamien o median e el cual se gua da o-
da la in o maci´on de las pa idas a modo de base de da os. Al o ma pa e
del ecosis ema AWS, se puede accede a es a in o maci´on y manipula la de
o ma p og am´a ica median es las unciones AWS Lambda. A su ez, la
subida de a chi os a S3 es un dispa ado ´alido pa a dichas unciones.
Es e p oyec o usa dos bucke s S3 dis in os pa a e i a un bucle de ejecu-
ci´on: se sube un a chi o a un bucke , es o desencadena una unci´on Lamb-
da que sube un a chi o al mismo bucke , lo cual lle a a ol e a llama a la
unci´on. Po an o, al ene un bucke de inpu pa a llama a las unciones
y un bucke con la in o maci´on de juego, se puede modi ica lib emen e la
in o maci´on del bucke de da os sin que se p oduzcan llamadas no deseadas.
Bucke inpu m s
Es e bucke ac ´ua como dispa ado de las dis in as unciones Lambda. Es ´a
compues o po 3 ca pe as: ac i a eAbili y,nex Phase yplayCa d, hom´oni-
26
mas a las unciones in ocadas cuando se sube un a chi o en cualquie a de
ellas. Den o de las ca pe as, los a chi os subidos po la aplicaci´on ienen
como nomb e el iden i icado de pa ida. Es o e i a el p oblema de que dos
usua ios de dis in as pa idas hagan un inpu a la ez y cuando se acceda a
la in o maci´on en la ejecuci´on de Lambda la in o maci´on haya quedado so-
b esc i a. Den o de es os a chi os en ex o plano se encuen an esc i os los
pa ´ame os de lanzamien o de la unci´on, los cuales se ´an le´ıdos po es a du-
an e su ejecuci´on.
Bucke magic- he-se e lessling
El bucke magic- he-se e lessling ac ´ua como la base de da os de odo
el sis ema. Den o de sus sis ema de ca pe as almacena a chi os JSON que
con ienen oda la in o maci´on co espondien e a una pa ida. Su es uc u a
es la siguien e:
1. games/: ca pe a inicial que con iene odas las pa idas en juego.
2. games/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/: ca pe a que almace-
na oda la in o maci´on de una pa ida, siendo su nomb e su iden i ica-
do al anum´e ico.
3. /game.json: gua da la in o maci´on gene al de la pa ida.
4. /usua ioX/ba le ield, hand o lib a y/Y.json: gua dan la in o maci´on
de las ca as de un jugado . Cada ca pe a co esponde a una zona dis-
in a en la que puede encon a se una ca a.
5. /usua ioX/in o.json: gua da la in o maci´on ela i a al jugado X.
6. /cambios.json: gua da los ´ul imos cambios ealizados pa a que los clien-
es puedan ac ualiza su es ado de juego de o ma ´op ima.
A su ez, la es uc u a in e na de es os a chi os es la siguien e: game.json
(gameIn o en Lambda):
1. ac i ePlaye : n´ume o en e o co espondien e al jugado al que le oca
lle a a cabo acciones.
2. phase: n´ume o en e o que co esponde a la ase ac ual del u no.
3. a acke sIds: a ay de en e os en el que se egis an los iden i icado es
de odas las c ia u as que es ´an a acando.
4. blocke Id: en e o en el que se gua da el iden i icado de la c ia u a que
es ´a lis a pa a bloquea .
27
5. wai ingFo Ta ge : en e o que especi ica si hay una ca a que equie e
un obje i o pa a hace su e ec o. Si su alo es -1 signi ica que no hay
ninguna ca a espe ando. En caso con a io, su alo se ´a el iden i ica-
do de la ca a en espe a, lo que bloquea ´a cualquie acci´on que no sea
designa un obje i o pa a esa ca a.
/usua ioX/in o.json (playe In o en Lambda):
1. li es: n´ume o de idas que le quedan al jugado .
2. ca dsinHand: n´ume o de ca as que iene en mano el jugado .
3. emainingLandPlays: n´ume o de ie as que puede juga el jugado . Se
es ablece cada u no.
4. libIndex: ´ındice que indica cu´al es la siguien e ca a a oba del mazo.
5. blue/ ed/black/whi e/g een/colo less: en e os ela i os a la can idad de
man´a azul, ojo, neg o, blanco, e de o incolo o que iene el jugado ,
espec i amen e.
cambios.json (cambios en Lambda):
1. idCambios: con ado que se inc emen a con cada acci´on que p oduz-
ca un cambio. Se usa pa a lle a un egis o de los cambios que se han
aplicado de o ma local en un clien e pa a que no se epi an.
2. ca dsD awnPlaye X: iden i icado es de las ca as que ha obado el juga-
do X.
3. ca dsPlayedPlaye X: iden i icado es de las ca as que ha jugado el juga-
do X.
4. ca dsTappedPlaye X: iden i icado es de las ca as que ha gi ado el ju-
gado X.
5. ca dsUn appedPlaye X: iden i icado es de las ca as que ha ende ezado
el jugado X.
6. ca dsA ackingPlaye X: iden i icado es de las ca as del jugado X que
es ´an a acando.
7. ca dsBlockingPlaye X: iden i icado es de las ca as del jugado X que
se es ´an p epa ando pa a bloquea .
28
8. ca dsBlockedPlaye X: iden i icado es de las ca as del jugado X que
han sido bloqueadas po la c ia u a que es aba designada pa a bloquea
a con inuaci´on.
9. ca dsDes oyedPlaye X: iden i icado es de las ca as del jugado X que
han sido des uidas.
10. ca dsDisca dedPlaye X: iden i icado es de las ca as del jugado X que
han sido desca adas.
11. empo alS a sPlaye X: iden i icado es de las ca as del jugado X que
han aumen ado sus es ad´ıs icas empo almen e, seguidos de la can idad
de aumen o ecibido.
12. ic o yPlaye X: indica si ha ganado uno de los jugado es.
13. li esPlaye X: indica las idas ac uales del jugado X. Si es -1 no ha ha-
bido cambios.
14. newPhase: indica la ase ac ual. Si es -1 no se ha cambiado de ase.
15. newAc i ePlaye : id del jugado ac i o. Si es -1 no ha cambiado.
usua ioX/ZONE/X.json (ca dIn o en Lambda):
1. ca dType: cadena de ex o que indica el ipo de la ca a. Puede se ’LAND’,
’CREATURE’, ’SORCERY’ o ’INSTANT’.
2. ca dName: cadena de ex o que con iene el nomb e de la ca a.
3. apped: a iable que de e mina si la ca a es ´a gi ada o ende ezada.
4. blue/ ed/black/whi e/g een/colo less: cos e de man´a de cada colo de
la ca a.
5. hasTa ge : indica si la ca a necesi a que su jugado designe un obje i-
o pa a ealiza su e ec o.
6. powe : n´ume o que equi ale a la ue za de la ca a.
7. oughness: n´ume o que equi ale a la esis encia de la ca a.
8. empo alPowe : n´ume o que indica un aumen o de ue za empo al.
9. empo alToughness: n´ume o que indica un aumen o de esis encia em-
po al.
10. damage: ep esen a el da˜no que ha su ido la ca a es e u no.
29
11. a acking: de e mina si la c ia u a es ´a a acando.
12. blocke : id de la c ia u a que es ´a bloqueando a es a ca a.
13. a acke Blocked: id de la c ia u a a la que es ´a bloqueando es a ca a.
14. summoningSickness: ep esen a si la ca a iene ma eo de in ocaci´on.
15. lying/li elink/dea h ouch/ ample: indican si la c ia u a iene las habi-
lidades de ola , ´ınculo i al, oque mo al o a olla , espec i amen e.
16. id: n´ume o iden i icado de la ca a.
4.2.2. Funciones Lambda y l´ogica de juego
Las unciones Lambda de AWS son el n´ucleo del p oyec o, ya que a a ´es
de ellas se ges iona oda la l´ogica de la aplicaci´on. Adem´as, el es udio de sus
capacidades son el oco del an´alisis del p oyec o. AWS Lambda pe mi e
c ea c´odigo y ejecu a lo en una m´aquina emo a de Amazon en espues a
a un dispa ado pe sonalizable, habili ando al usua io de c ea un sis ema
simila al de los se ido es pe o sin dispone de uno y eliminando odas las
des en ajas de los mismos. Es e p oyec o cuen a cua o unciones Lambda,
cada una con una uncionalidad y ca ac e ´ıs icas di e en es;
Funci´on play
La unci´on play se enca ga de c ea una nue a pa ida y odas las es uc u-
as de da os pe inen es o de c ea la in o maci´on del segundo jugado cuan-
do se quie e uni a la pa ida. En conc e o, ealiza las siguien es acciones:
1. E al´ua los pa ´ame os de lanzamien o pa a sabe qu´e acciones debe lle-
a a cabo
2. En el caso de c ea una nue a pa ida, gene a un iden i icado uuid
que no es ´e siendo usado po ninguna o a pa ida
3. Gene a la es uc u a gameIn o, la cual almacena oda la in o maci´on
ela i a a la pa ida
4. Gene a la es uc u a playe In o, la cual gua da la in o maci´on de un
jugado
5. Sube al bucke S3 magic- he-se e lessling dichas es uc u as en sus
co espondien es iche os den o de una nue a ca pe a cuyo nomb e es
el iden i icado c eado an e io men e
30
6. Se gene an las dis in as ca as posibles y se gua dan en el mazo del ju-
gado , el cual es ba ajado a con inuaci´on
7. Se gene a la es uc u a de cambios, la cual si e pa a comunica a los
jugado es las a iaciones que se p oducen en la pa ida
8. El mazo del jugado se sube a S3 asignando un iden i icado a cada ca -
a. Despu´es, el jugado oba 7 ca as y es as se indican en el iche o de
cambios
9. La unci´on e mina y de uel e el iden i icado de la pa ida pa a que
el c eado de la misma pueda comunica se con ella y ambi´en pa a que
pueda en i´a selo a su oponen e
El dispa ado de es ´a unci´on es una llamada a una API Res c eada me-
dian e AWS API Ga eway. Es a llamada se p oduce cuando un usua io
inicia su aplicaci´on local y usa la consola pa a indica si quie e c ea una
pa ida o uni se a una median e un n´ume o. En cuan o a sus pa ´ame os,
iene es posibles pa ´ame os:
1. command: indica si la unci´on debe c ea una nue a pa ida o uni se a
una ya exis en e. Las dos opciones son ’CREATE GAME’ y ’JOIN GAME’
espec i amen e.
2. deckId: de e mina el mazo que usa ´a el jugado que ha llamado a la
unci´on. El 0 co esponde al mazo de colo neg o y el 1 al de colo e -
de.
3. id: en el caso de que el jugado se es ´e uniendo a una pa ida, es e en ´ıa
el iden i icado de la misma pa a que la unci´on gene e sus da os en
ella.
El uncionamien o de la unci´on es el siguien e:
31
Figu a 4.3: A qui ec u a de la unci´on play
Figu a 4.4: Diag ama esumen de la unci´on play
Funci´on playCa d
La unci´on playCa d ges iona oda la l´ogica de ´as de juga una ca a, des-
de paga el cos e de la misma has a aslada la a la zona adecuada o eali-
za su e ec o. El p oceso de ejecuci´on es el siguien e:
38
2. Ac i a la habilidad de una ca a en el campo de ba alla puls´andola
3. Decla a el obje i o de un e ec o o hechizo pulsando sob e la ca a que
a a se dicho obje i o
4. A anza de ase en el u no pulsando el bo ´on de Nex Phase
5. Decla a un a acan e pulsando sob e la c ia u a en cues i´on du an e su
ase de decla aci´on de a acan es
6. P epa a a una c ia u a suya pa a bloquea , cancela la p epa aci´on o
el bloqueo decla ado pulsando sob e ella en la ase de bloqueos
7. Bloquea a una c ia u a i al pulsando sob e ella en la ase de bloqueos
eniendo a una c ia u a lis a pa a bloquea
Es as acciones se pueden ealiza en momen os conc e os del u no, cuyo lu-
jo y eglas son los siguien es:
Figu a 4.11: Fases de un u no y posibles acciones
Po o a pa e, en las siguien es igu as se mues a como a ´ıa el es ado de
juego seg´un las acciones posibles:
39
Figu a 4.12: Es ado neu al de la pa ida
Figu a 4.13: El jugado usa sus ie as pa a ag ega man´a y es as quedan gi adas
Al pulsa sob e cada ie a, se sube al bucke S3 inpu m s un iche o con
los iden i icado es de la pa ida, el jugado y la ca a seleccionada.
Es o p o oca la ejecuci´on de la unci´on Lambda ac i a eAbili y, que e-
40
coge los da os del iche o. Es a unci´on ecoge del bucke S3 magic- he-
se e lessling los a chi os del jugado y de la ca a.
A con inuaci´on, a˜nade a los da os del jugado un man´a de colo neg o y cam-
bia el es ado de la ca a a gi ada.
Ac o seguido se suben los a chi os de nue o con la in o maci´on ac ualizada
jun o con el iche o de cambios pa a que los jugado es puedan ac ualiza su
e si´on.
Figu a 4.14: El jugado juega una ca a con el man´a de sus ie as
Cuando un jugado pulsa sob e una ca a de su mano se sube al bucke S3
inpu m s un iche o con los iden i icado es de la pa ida, el jugado y la
ca a seleccionada.
Es o p o oca la ejecuci´on de la unci´on Lambda playCa d, que ecoge los
da os del iche o. Es a unci´on ecoge del bucke S3 magic- he-se e lessling
los a chi os del jugado y de la ca a.
A con inuaci´on, se comp ueba en el a chi o del jugado si es e dispone de
man´a pa a paga la ca a, y en caso a i ma i o se le es a el cos e de la mis-
ma.
Despu´es, se sube la ca a a la ca pe a ba le ield del jugado y a su ez se
bo a el a chi o de la ca a de la ca pe a hand.
Po ´ul imo, se sube el a chi o del jugado con sus da os ac ualizados y el
41
iche o de cambios.
Figu a 4.15: El jugado decla a a dos de sus c ia u as como a acan es
Cuando un jugado pulsa sob e una c ia u a suya du an e la ase de a aque
se sube al bucke S3 inpu m s un iche o con los iden i icado es de la pa i-
da, el jugado y la ca a seleccionada.
Es o p o oca la ejecuci´on de la unci´on Lambda ac i a eAbili y, que e-
coge los da os del iche o. Es a unci´on ecoge del bucke S3 magic- he-
se e lessling los a chi os del jugado , de la ca a y del juego.
T as comp oba el ipo de ca a y la ase del u no, se cambia el es ado de
la ca a a a acando ygi ada y se a˜nade su id a la lis a de a acan es del
iche o que iene los da os de la pa ida.
Finalmen e se suben odos los iche os con su in o maci´on ac ualizada jun o
con el iche o de cambios.
42
Figu a 4.16: El jugado de enso p epa a a su c ia u a pa a bloquea
Cuando un jugado pulsa sob e una c ia u a suya du an e la ase de bloqueo
se sube al bucke S3 inpu m s un iche o con los iden i icado es de la pa i-
da, el jugado y la ca a seleccionada.
Es o p o oca la ejecuci´on de la unci´on Lambda ac i a eAbili y, que e-
coge los da os del iche o. Es a unci´on ecoge del bucke S3 magic- he-
se e lessling los a chi os del jugado , de la ca a y del juego.
T as comp oba el ipo de ca a y la ase del u no, se egis a en el a chi o
de pa ida su id como p ´oxima bloqueado a.
Despu´es se suben de nue o los a chi os modi icados y el iche o de cambios.
43
Figu a 4.17: El jugado de enso elige a qu´e c ia u a a acan e a a bloquea su bloqueado a
Cuando un jugado pulsa sob e una c ia u a i al du an e la ase de bloqueo
se sube al bucke S3 inpu m s un iche o con los iden i icado es de la pa i-
da, el jugado y la ca a seleccionada.
Es o p o oca la ejecuci´on de la unci´on Lambda ac i a eAbili y, que e-
coge los da os del iche o. Es a unci´on ecoge del bucke S3 magic- he-
se e lessling los a chi os del jugado , de la ca a que ha sido bloqueada,
de la ca a que es aba p epa ada pa a bloquea y el del juego.
A con inuaci´on, se gua da en el a chi o de la c ia u a bloqueado a el id de
la c ia u a a la que bloquea, y po o a pa e se gua da en el de la c ia u a
bloqueada el id de su bloqueado a.
Po ´ul imo, se suben los a chi os modi icados y el iche o de cambios.
44
Figu a 4.18: Se p oducen los da˜nos. La c ia u a bloqueado a mue e y la c ia u a a acan e
que no ue bloqueada hace da˜no al jugado de enso
Cuando el jugado de enso pulsa sob e el bo ´on de Nex Phase as habe
designado a los bloqueado es se sube al bucke S3 inpu m s un iche o con
los iden i icado es de la pa ida y del jugado .
Es o p o oca la ejecuci´on de la unci´on Lambda nex Phase, que ecoge los
da os del iche o. Es a unci´on ecoge del bucke S3 magic- he-se e lessling
los a chi os de los dos jugado es y del juego.
A con inuaci´on, se a anza en uno el con ado de ase de la pa ida y se com-
p ueba la ase ac ual. Como se ha llegado a la ase de da˜nos, se ealiza un
p oceso po el cual se an ecogiendo los iche os de las c ia u as a acan es,
cuyos ids es ´an gua dados en el a chi o de la pa ida. Po cada una se com-
p ueba si ienen una bloqueado a.
En caso a i ma i o, se desca ga el a chi o de la bloqueado a y se hacen da˜no
en e si seg´un su ue za. Si una c ia u a pie de oda su ida du an e el com-
ba e, su iche o se elimina de la ca pe a ba le ield de su con olado .
En caso de que la c ia u a no ue a bloqueada, el jugado de enso pie de
idas igual a la ue za de la c ia u a.
T as e isa a odas las c ia u as a acan es, se suben los a chi os de odas
las c ia u as que han sob e i ido al comba e, los a chi os de los jugado es y
el del juego.
Cap´ı ulo 5. Resul ados y Discusi´on
5.1. An´alisis de cos es de AWS Lambda
Las cua o unciones Lambda u ilizadas han eque ido de muy poco espa-
cio de memo ia am, dado que la asignaci´on m´ınima de 128MB ha sido su i-
cien e pa a odas ellas, equi iendo unos 77MB de media. Po o a pa e, el
iempo de ejecuci´on medio ha sido el siguien e:
Funci´on Tiempo de ejecuci´on
play 4940ms
playCa d 481ms
ac i a eAbili y 450ms
nex Phase 558ms
Cuad o 5.1: Tiempo de ejecuci´on medio de las unciones Lambda
Asumiendo la co a supe io de cos e po una pa ida y que los jugado es no
hacen llamadas innecesa ias, se pueden ealiza los siguien es c´alculos de
cos e po pa ida: En cada u no se iene que a anza de ase un o al de
8 eces asumiendo que se en a en comba e. Dado que un jugado que en-
ga que oba ca as sin ene m´as ca as disponibles en su biblio eca pie de,
el m´aximo n´ume o de u nos jugados se ´a el de 106, ya que ambos empie-
zan eniendo 7 de las 60 ca as en mano. Po an o, hab ´ıa un m´aximo de
846 llamadas a nex Phase, conside ando que el p ime jugado empieza en
su ase p incipal. Si ambos jugado es juegan odas sus ca as, el l´ımi e de
ca as jugadas se ´ıa de 120, siendo es as las posibles llamadas a la unci´on
playCa d.
El cos e o al medio de man´a en e los mazos disponibles es de 85. Es o im-
plica que pa a juga odas las ca as ha ´ıa al a ac i a las ie as 85 eces.
Po o a pa e, hay 19 c ia u as po mazo de media. Si suponemos que o-
das las c ia u as a acan 3 eces po pa ida y que bloquean una ez, end ´ıamos
190 llamadas a ac i a eAbili y pa a ges iona el comba e, lo cual sumado
a las ac i aciones de ie as nos da ´ıa un o al de 275 llamadas po jugado ,
siendo en o al 550. Podemos conside a 20 llamadas m´as pa a designa ob-
je i os de habilidades, ya que son algo m´as del o al de ca as que exis en en
el juego que puedan hace obje i o. Po an o, en una pa ida cualquie a se
puede asumi con segu idad que se an a p oduci las siguien es llamadas:
45
46
Funci´on N´ume o de llamadas
play 2
playCa d 120
ac i a eAbili y 570
nex Phase 846
Cuad o 5.2: N´ume o m´aximo de llamadas es imado pa a una pa ida
En conjun o es os da os nos indican que hab ´ıa un m´aximo de 1538 llama-
das a AWS Lambda po pa ida. G acias al ni el g a ui o de AWS, el p i-
me mill´on de solici udes a Lambda cada mes es g a ui o. Po an o, se pod ´ıan
juga 650 pa idas a cos e ce o en cuan o a n´ume o de solici udes. Po o a
pa e, cada mes se pe mi en un m´aximo de 3,2 millones de segundos de iem-
po de ejecuci´on de o ma g a ui a. Mul iplicando las llamadas po su iem-
po medio enemos como esul ado 796168ms de ejecuci´on po pa ida, lo
que equi ale a 796 segundos. El l´ımi e de pa idas g a ui as impues o po
el iempo de ejecuci´on se ´ıa de 4020 pa idas en o al.
Dado que las 650 pa idas es el l´ımi e g a ui o m´as bajo, a pa i de ese n´ume-
o de pa idas hab ´ıa que incu i en un gas o po los se icios de AWS
Lambda. A a ´es de la calculado a de cos es o icial, se ha calculado que
1000 pa idas ue a de la capa g a ui a end ´ıan un cos e de 1.97$. Po an-
o, los se icios de Lambda de una pa ida cos a ´ıan 0.00197$.
5.2. ´
Analisis de cos es de AWS S3
Las llamadas pu objec ,ge objec ydele e objec se p oducen la si-
guien e can idad de eces po unci´on:
Funci´on ge objec pu objec dele e objec
play 1 67/68 7
playCa d 7 8 1
ac i a eAbili y 8 5 7
nex Phase Va iable Va iable Va iable
Cuad o 5.3: N´ume o de llamadas a S3 po cada unci´on Lambda
Se p oducen 134 pu objec pa a c ea los mazos y oba las ca as inicia-
les. Con las 120 llamadas a playCa d hab ´ıa 960 pe iciones de pu objec
yge objec y unas 120 a dele e objec . Con las 570 llamadas a ac i a-
eAbili y hab ´ıa unas 4560 pe iciones de ge objec , 2850 de pu objec
y 3990 a dele e objec . Con las 846 pe iciones a nex Phase, conside an-
do que solo en un e cio de las pe iciones se necesi a ´ıa accede a odas las
ca as del campo de ba alla y que se ´ıa muy ex a˜no que un jugado u ie a
m´as de 15 ca as en juego a la ez, se pod ´ıan calcula unas 4230 llamadas a
47
ge objec y o as 4230 a pu objec . Adem´as, po cada llamada a Lamb-
da se p oduce un pu objec a S3, as´ı que ecibi ´ıa 1261 pe iciones m´as.
Po o a pa e, conside ando que el juego comp ueba si hay cambios 2 e-
ces po segundo, si suponemos que una pa ida du a media ho a, en e los
dos jugado es se ha ´ıan 7200 llamadas a ge objec pa a pode ecoge los
cambios en la pa ida. Ap oximadamen e hab ´ıa como mucho en una pa i-
da 10261 llamadas a pu objec , 16950 llamadas a ge objec y al ededo
de 4125 a dele e objec . Usando la calculado a de cos es, ob end ´ıamos
que el cos e de S3 po la pa ida se ´ıa de 0.06$ap oximadamen e.
5.3. Cos es o ales
Sumando los cos es, ob end ´ıamos que como m´aximo una pa ida pod ´ıa
cos a 0.062$, suponiendo que en la pa ida se usen odas las ca as, enga
su m´axima du aci´on de u nos y du e media ho a. Dada la au oma izaci´on
de algunos p ocesos de juego g acias al o ma o digi al y a la simplicidad de
las eglas, la du aci´on de las pa idas debe ´ıa se ex emadamen e in e io , y
po an o su cos e.
Po o a pa e, hab ´ıa que conside a cos es mensuales adicionales. El alma-
cenamien o de in o maci´on en el bucke S3 cos a ´ıa 0.02$cada mes. Es ba-
jo debido a que un a chi o de pa ida ocupa an solo 45kb, pe mi iendo has-
a 20000 iche os de pa idas po ese cos e. Adem´as, median e el bo ado pe-
i´odico de es os iche os, su n´ume o y po an o su cos e se man end ´ıa bajo
con ol. O o cos e adicional cada mes se ´ıa el de API Ga eway. Seg´un la
calculado a de cos es, se necesi a ´ıan 0.04$pa a ges iona 10000 solici udes,
as´ı que se ´ıa un cos e bajo y asumible.
Se icio Cos e
AWS Lambda 0.00197$
AWS S3 0.06$
AWS API Ga eway 0.000008$
Cos e o al de una pa ida 0.062$
Cuad o 5.4: Desglose de cos e po pa ida de cada se icio
5.4. En oques pa a a on a los cos es
En el caso de que se quisie an cub i los cos es, la opci´on m´as iable se ´ıa a
a ´es de una susc ipci´on. Es a ga an iza ´ıa en cie a medida que se cub en
los gas os po se icios, ya que se pod ´ıa ajus a a las es ad´ıs icas de uso de
al o ma que el p oyec o ue a en able. Adem´as, se i ´ıa como ba e a de
en ada pa a que solo accediese al con enido un p´ublico m´as comp ome i-
do con el juego y que no se pudie a sa u a median e una g an can idad de
54
ke in o conside a ion is ha wi h his app oach a lo o ime would be sa ed
a he ime o se ing up he se e , adqui ing a place whe e you could keep
i wo king cons an ly, mal unc ions ha could disable he se ice, e c.
Ano he one o he main p os is ha he cos is p oduced o e ime and i
is scalable; i he inal p oduc does no pe o m well and i ge s only a ew
use s he cos s will be e y low, and i a se e is adqui ed i will ha e cos-
ed a lo o money ha will emain was ed. In addi ion, se e less can be a
nice op ion i he lack o ounding is a p oblem, because he mon hly cos o
he se ices will be lowe han he cos o ge ing a se e . Nex , i he app
has a good business model, he cos s will be easie o ge co e ed because
hey adjus o he demand o he p oduc and hey ake place o e ime.
Ano he impo an al e na i e is selec ing a playe ha will be he hos o
he game, and le ing him ac as a se e . On one hand, i is an in e es ing
op ion because o he lack o cos s. On he o he hand, i can p oduce poo
quali y use expe ience i he hos has a bad In e ne connec ion, which does
no ma e so much in o he app oaches. O he issues a e he addi ional
di icul y a he ime o ge ing s a is ics and in o ma ion abou he games
played and he connec ion, and also he e a e some games in which being
he hos is conside ed an ad an age, as he hos will ha e less la ency han
o he use s. To sum up, se e less echnology has p o ed i sel as being sca-
lable and succes ul a he ime o de eloping so wa e.
6.6. Fu u e wo k
The e a e some ea u es and con en ha couldn’ be implemen ed bu hey
we e a iable op ion du ing he de elopmen p ocess. Al hough i was con-
side ed how o de elop hem, inally se e al ideas we e equi ed o be dis-
ca ded. The con en which holds he mos po en ial o be implemen ed as
u u e wo k is he ollowing:
6.6.1. Bigge ca d pool
The e should be a low numbe o ca ds in o de o be a beginne - iendly
game, al hough he e is s ill oom o including mo e ca ds and e ec s wi hou
being o e whelming o new playe s.
6.6.2. Op ion o econnec an on-going game
One o he p ojec limi s is ha i a game is abandoned o any eason, pla-
ye s will no be able o join ha game again, as a sys em o eco e he s a-
e o he game does no exis . Howe e , wi h he c ea ion o a new Lambda
unc ion and he modi ica ion o local clien ’s code, his op ion would beca-
55
me a ailable.
6.6.3. Accoun sys em and ca d collec ion
To make he game mo e in e es ing and imp o e i s dep h wi hou making
i ha de , an accoun sys em could be implemen ed. This would allow pla-
ye s o check hei s a s and e en ob ain new ca ds which could be used o
c ea e decks. S3 bucke s would need se e al imp o emen s and new Lambda
unc ions would need o be c ea ed in o de o add his ea u e.
56
Chap e A. Anexo: Manual de Ins alaci´on
A con inuaci´on se de alla paso po paso c´omo pode desca ga y dis u a
del juego.
Desca ga del clien e local
Pa a empeza , hab ´a que accede al siguien e eposi o io ubicado en Gi hub:
h ps://gi hub.com/ oba 01/Magic The Se e lessling 2/ eleases
Figu a 6.1: P´agina de e siones de Magic: The Se e lessling
Ac o seguido, den o de la p´agina que mues a la igu a se deben desca ga
los a chi os en cualquie a de los o ma os y descomp imi los en una ca pe a.
Ejecuci´on del juego
A con inuaci´on, pa a pode accede al juego an solo hay que ejecu a el a -
chi o ejecu able MagicTheSe e lessling.exe, el cual se encuen a en la
siguien e ubicaci´on:
57
58
Al ejecu a el a chi o, se ab i ´a una en ana de SDL en neg o y una conso-
la de comandos. A a ´es de las indicaciones de la consola, el usua io pod ´a
elegi qu´e mazo de ca as quie e usa y si desea c ea o uni se a una pa ida.
Si c ea una pa ida, la aplicaci´on le mos a ´a el c´odigo de la pa ida, el cual
59
debe ´a se en iado po cualquie medio a su oponen e, que hab ´a selecciona-
do la opci´on de uni se a una pa ida y debe ´a pega el c´odigo del c eado de
la pa ida.
60
Bibliog a ´ıa
[1] E. Jonas, J. Schleie -Smi h, V. S eekan i, C.-C. Tsai, A. Khandel-
wal, Q. Pu, V. Shanka , J. Ca ei a, K. K au h, N. Yadwadka e al.,
“Cloud p og amming simpli ied: A be keley iew on se e less compu-
ing,” a Xi p ep in a Xi :1902.03383, 2019.
[2] R. Ga ield, “Magic: The ga he ing,” Wiza ds o he Coas , ol. 27,
p. 28, 1993.
[3] M. DI NAPOLI, “Mul i-asse ading wi h ein o cemen lea ning: an
applica ion o magic he ga he ing online,” 2018.
[4] E. LUCIANO and A. DI RE, “Unde s anding he magic: The ga he ing
ca d ma ke an e hnog aphic app oach owa d a ma ke s a egy euge-
nio luciano and alexande di e,” Beyond he Deck: C i ical Essays on
Magic: The Ga he ing and I s In luence, p. 43, 2023.
[5] ´
A. Rod ´ıguez-Pe al Bus os, “You uleyou ole,” 2021.
[6] S. A. Euge cios Ne ado, “Cus -o ea: Ma cado de documen os de o ma
segu a,” 2023.
[7] B. Gup a, P. Mi al, and T. Mu i, “A e iew on amazon web se ice
(aws), mic oso azu e & google cloud pla o m (gcp) se ices,” in P o-
ceedings o he 2nd In e na ional Con e ence on ICT o Digi al, Sma ,
and Sus ainable De elopmen , ICIDSSD 2020, 27-28 Feb ua y 2020,
Jamia Hamda d, New Delhi, India, 2021.
[8] J. Bowe, “Ma ia - a se e less mul iplaye game,” Medium, 2023.
[9] D. Dinculean˘a and X. Cheng, “Vulne abili ies and limi a ions o mq
p o ocol used be ween io de ices,” Applied Sciences, ol. 9, no. 5, p.
848, 2019.
[10] D. Pacios, J. L. Vazquez-Pole i, B. S´anchez-Cano, R. Mo eno-
Vozmediano, N. Sche akis, L. Vazquez, and D. V. Ti o , “Se e less a -
chi ec u e o da a p ocessing and de ec ing anomalies wi h he ma s
exp ess ma sis ins umen ,” The As onomical Jou nal, ol. 166, no. 1,
p. 19, 2023.
[11] J. Donke lie , A. T i edi, and A. Iosup, “Towa ds suppo ing millions o
use s in modi iable i ual en i onmen s by edesigning Minec a -Like
61
62
games as se e less sys ems,” in 12 h USENIX Wo kshop on Ho Topics
in Cloud Compu ing (Ho Cloud 20). USENIX Associa ion, Jul. 2020.
[Online]. A ailable: h ps://www.usenix.o g/con e ence/ho cloud20/
p esen a ion/donke lie
[12] J. S. A gonza, “Compu aci´on sin se ido ,” Tecnolog´ıa e Inno aci´on en
Educaci´on Supe io .
[13] T. Fische , “La ex as an a chi ing o ma : Bene i s and p oblems,” 2003.
[14] T. Bj¨o kholm and J. Bj¨o kholm, Kanban in 30 days. Pack Publishing
L d, 2015.
[15] D. Spinellis, “Ve sion con ol sys ems,” IEEE so wa e, ol. 22, no. 5, pp.
108–109, 2005.
[16] A. Hejlsbe g, M. To ge sen, S. Wil amu h, and P. Golde, The C#
p og amming language. Pea son Educa ion, 2008.
[17] P. Wegne , “Concep s and pa adigms o objec -o ien ed p og amming,”
ACM Sigplan Oops Messenge , ol. 1, no. 1, pp. 7–87, 1990.
[18] S. Lan inga, “Simple di ec media laye ,” h p://www. libsdl. o g/, 2007.
[19] I. Challenge -P´e ez, Y. D´ıaz-Rica do, and R. A. Bece a-Ga c´ıa, “El
lenguaje de p og amaci´on py hon,” Ciencias Holgu´ın, ol. 20, no. 2, pp.
1–13, 2014.
[20] L. Basse , In oduc ion o Ja aSc ip objec no a ion: a o- he-poin
guide o JSON. O’Reilly Media, Inc., 2015.
[21] P. Sba ski and S. K oonenbu g, Se e less a chi ec u es on AWS: wi h
examples using Aws Lambda. Simon and Schus e , 2017.
[22] O. S. G. G´omez, “Pa adigma de p og amaci´on di igido po e en os,”
2007.
[23] M. Ni anjanamu hy, U. A chana, K. Ni edi ha, S. A. Ja a , and N. Sh-
a an, “The esea ch s udy on dynamodb—nosql da abase se ice,” In .
J. Compu . Sci. Mob. Compu , ol. 3, no. 10, pp. 268–279, 2014.
[24] P. Mile , “Game loop: he hea o he game engine,” P oduc ion Sys ems
and In o ma ion Enginee ing, ol. 11, no. 3, pp. 51–63, 2023.
[25] T. Ren sch, “Objec o ien ed p og amming,” ACM Sigplan No ices,
ol. 17, no. 9, pp. 51–57, 1982.