scieee Science in your language
[es] (orig)

Magic The Serverlessling

Abstract

Magic: The Serverlessling is an online multiplayer game based in the popular TCG Magic: The Gathering. With a simplified set of rules and a reduced number of cards, casual players will be able to familiarize with the game while they play with their friends. In addition, the internal structure of the game has been totally developed using serverless computing, being one of the project’s objectives acting as a case study in order to analyze feasibility of this technology as a game/application development tool.

Read accessible full text

Magic The Serverlessling

Author: Tobar Guillén, Rodrigo
Year: 2024
Source: https://docta.ucm.es/bitstreams/f62a11cf-4995-4be0-9070-a30a72fd8f44/download
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.