ingeniería en sistemas - repositorio digital usfq...

46
UNIVERSIDAD SAN FRANCISCO DE QUITO USFQ Colegio de Ciencias e Ingeniería Desarrollo de un motor de juegos online con arquitectura cliente servidor basado en envío de evento Proyecto Integrador . Fausto Iván Zamora Arias Ingeniería en Sistemas Trabajo de titulación presentado como requisito para la obtención del título de Ingeniero en Sistemas Quito, 12 de mayo de 2017

Upload: others

Post on 14-Mar-2020

19 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

UNIVERSIDADSANFRANCISCODEQUITOUSFQ

ColegiodeCienciaseIngeniería

Desarrollodeunmotordejuegosonlineconarquitecturaclienteservidorbasadoenenvíodeevento

ProyectoIntegrador .

FaustoIvánZamoraArias

IngenieríaenSistemas

Trabajodetitulaciónpresentadocomorequisitoparalaobtencióndeltítulode

IngenieroenSistemas

Quito,12demayode2017

Page 2: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

2

UNIVERSIDADSANFRANCISCODEQUITOUSFQ

COLEGIODECIENCIASEINGENIERÍA

HOJADECALIFICACIÓNDETRABAJODETITULACIÓN

Desarrollodeunmotordejuegosonlineconarquitecturaclienteservidorbasadoenenvíodeeventos

FaustoIvánZamoraArias

Calificación: 95/100

Nombredelprofesor,Títuloacadémico AldoCassola,PhD

Firmadelprofesor

Quito,12demayode2017

Page 3: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

3

DerechosdeAutor

Por medio del presente documento certifico que he leído todas las Políticas y

Manuales de la Universidad San Francisco de Quito USFQ, incluyendo la Política de

PropiedadIntelectualUSFQ,yestoydeacuerdoconsucontenido,porloquelosderechos

de propiedad intelectualdel presente trabajo quedan sujetos a lo dispuesto en esas

Políticas.

Asimismo,autorizoalaUSFQparaquerealiceladigitalizaciónypublicacióndeeste

trabajo en el repositorio virtual, de conformidad a lo dispuesto en el Art. 144 de la Ley

OrgánicadeEducaciónSuperior.

Firmadelestudiante:_______________________________________Nombresyapellidos:FaustoIvánZamoraAriasCódigo:00107240CéduladeIdentidad:1720895455Lugaryfecha: Quito,mayode2017

Page 4: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

4

RESUMEN

Elpresentetrabajodescribeeldesarrollodeunmotordejuegosbasadoenarquitecturadecliente-servidorysuanálisisderendimientodememoriayusodelCPU.Unmotordejuegospuededefinirsecomoelsistemaencargadodemanejarloscomponentesparaqueunjuegofuncione.Deacuerdoaestosehanhechodistintosmódulosparaintegrarlosenunsólosistema,estosmóduloshansido:elmodelodeobjetos,sistemadeeventos,sistemadered,ysistemadeactualizacióndelhiloprincipal.Cabemencionarqueelenfoquedeltrabajoesquelossistemasymódulosmencionadosseintegrendeunamaneraremotaenredyesporestoqueelsistemaderedesparteprincipaldelsistema.Paralogrardichoenfoquesehadivididoalmotordejuegoenprocesosdeclienteyprocesosdeservidor.Losprocesosdeclienteavisandenuevoseventos,generadosporelusuario,alservidoryestesehadeencargardeejecutarlosyactualizarlosparalosdemásclientes.Además,sehanhechopruebasparamedirelrendimientodelsistematantoparaclientescomoenservidordememoriaydeusodelCPU,lascualeshanmostradounusocasiconstanteenelusodeestas.Sinembargo,laexperienciadeusuarioenLANdeberíapulirseenunfuturopuesesunodelostemasdestacablesparasatisfaccióndeunjuegoquesehagaconelmotoryesquelosusuariospuedanexperimentarenvariosmediosdered.Esasícomoseproponeunsistemademotordejuegoscapazdetrabajarenredconarquitecturacliente-servidor.Palabrasclave:MotordeJuegos,videojuegos,red,cliente,servidor,eventos,modelodeobjetodejuego.

Page 5: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

5

ABSTRACT

ThispaperdescribesthedevelopmentofaGameEnginebasedonaClient-ServerarchitectureanditsanalysisofmemoryperformanceandCPUusage.Agameenginecanbedefinedasthesysteminchargeofhandlingthecomponentsforagametowork.Accordingtothis,differentmoduleshavebeenmadetointegratethemintoasinglesystem,thesemoduleshavebeen:theobjectmodel,eventsystem,networksystem,andmainthreadupdatesystem.Itisworthmentioningthattheapproachforthisworkisthatthesystemmodulesbecomeintegratedremotelyinnetwork,thatiswhythenetworksystemisamainpartoftheengine.Inordertoachievetheapproachthegameenginehasbeendividedintoclientprocessesandserverprocesses.Theclientprocesseswarnsofnewevents,generatedbytheuser,totheserveranditmustmanagetheexecutionofthemandupdatethemfortheotherclients.Inaddition,testshavebeenmadetomeasuretheperformanceofthesystemforbothclientsandserverformemoryandCPUusage,whichhaveshownalmostconstantuseofthese.However,theuserexperienceinLANshouldbepolishedinthefutureasitisoneofthehighlightsforsatisfactionofagamethatisdonewiththeengineandbecauseusersmaybeabletoexperiment,inthefuture,invariousnetworkmedia.Inthisway,Itisproposedagamingenginesystemcapableofworkinginanetworkwithclient-serverarchitecture.Keywords:GameEngine,videogames,networking,client,server,events,gameobjectmodel.

Page 6: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

6

TABLADECONTENIDO

Introducción......................................................................................................................8

DesarrollodelTema........................................................................................................12

Objetosymecánicasdejuego.........................................................................................12

Sistemadeeventos.........................................................................................................17

Arquitecturaderedparamúltiplesjugadores..................................................................23

Análisisdelrendimientodelsistema...............................................................................28

Pruebasenlocalhost.......................................................................................................29

PruebasenLAN...............................................................................................................34

Conlusionesdelanálisis...................................................................................................39

Conclusiones...................................................................................................................42

Referenciasbibliográficas................................................................................................44

Page 7: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

7

ÍNDICEDEFIGURAS

Figura1.ModelodeobjetosdejuegoporComponentes………………………………….16

Figura2.ComposicióndeInterfacesparacomponentesdejuego……………………..22

Figura3.DiagramadelSistemadeeventos……………………………………………………….22

Figura4.Diagramadesistemadered………………………………………………………………..27

Figura5.Juegofuncionalhechoparaprobarelsistema…………………………………….27

Figura6.UsodelCPUdelServidorenlocalhost…………………………………………………31

Figura7.UsodelCPUparaclientesenlocalhost……………………………………………….31

Figura8.Usodememoriaeneltiempoparaservidorenlocalhost…………………..32

Figura9.Usodememoriaeneltiempoparaclientesenlocalhost……………………32

Figura10.Númerodepaquetesenviadosparaconexióncliente-servidorenlocalhost.33

Figura11.Porcentajesdepaquetesenviadossegúnsutamañoentreclienteyservidorenlocalhost………………………………………………………………………………………………………………………33

Figura12.UsodeCPUvsintervalosdetiempodelservidorconmúltiplesclientesenLAN.36

Figura13.UsodelCPUdeclientesconectadosenLANaunmismoservidor……………………36

Figura14.UsodememoriaeneltiempoparaservidorconmúltiplesclientesenLAN……37

Figura15.UsodememoriaeneltiempoparalosclientesconectadosenLAN……………….37

Figura16.NúmerodepaquetesenunsegundoparalaconexióndeclientesyservidorenLAN…………………………………………………………………………………………………………………………….38

Figura17.PorcentajedepaquetesenviadossegúnsutamañoentreclientesyservidorenLAN……………………………………………………………………………………………………………………………38

Page 8: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

8

INTRODUCCIÓN

Alolargodelahistoriadelosvideojuegossehanhechoyprogramadotécnicaspara

sumejorimplementaciónenelhardware,asímismolascomputadorashanevolucionadoy

dichastécnicashanevolucionado.Unejemplodeestaevolucióneselusodeparadigmas

computacionalescomolaprogramaciónorientadaaobjetosquepermitelaseparaciónde

propiedadesymétodosdeunelementodeunprograma,deotrosyotorgaindependencia

paraposiblescambiosenelcomportamientodeesteelemento.Unadeestastécnicasfue

hechaenladécadade1990enelpopularjuegoDOOM,juegodedisparosenprimera

persona,lacualconsistíaendarunaseparaciónclaraentreloscomponentesprincipalesdel

sistema(eventos,organizacióndecomponentes,sistemasdeinteligenciaartificial,manejo

degráficasysimulacióndefísica)deloscomponentespropiosdeljuego(reglasdejuego,

modelosdepersonajes,diseñodeniveles,entreotros).Alresultadodemanejodel

softwareselollamómotordejuegos.Formalmenteunmotordejuegossedefinecomoun

sistemaextensiblequeesbaseparavariosjuegosdevideodiferentessinquesehagan

modificacionesimportantesalsistema(Gregory,2014).Sinembargo,acriteriodeeste

trabajo,sedebetenerclaralascaracterísticasquesedeseantransmitirenelsistema,es

decirqueesloquevaahacer.Paratenerclaroquedeseatenerunmotordejuegossedebe

saberaquétiposdejuegosvaaserorientadoyparaestosetienequetomarencuentalos

principiosdelasmecánicasdejuegoqueseutilizanparadistintosgénerosdejuego

(Roberts,2015).Esasícomoestetrabajotratadeldesarrollodeunmotordejuegos

basándoseenprincipiosdearquitecturademotores,diseñodejuegosporcomputadoray

diseñodesistemas.

Page 9: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

9

Laarquitecturadeunmotordejuegossiguelasmismaspautasdeldiseñodesistemas

clásico,enreferenciaaaqueldiseñodesistemasquenoestáenfocadoajuegos,peroconla

diferenciadeenfocarseexclusivamentealasincronizacióndemúltiplessistemasentiempo

real.Engeneralunsistemadejuegosdebemanejarvariossubsistemasparaquese

sincronizanunosconotrosenunlazoprincipal,estopuedelograrsepormediodelusode

arquitecturasmultiprocesador(Gregory,2014).SegúnSommervillelasarquitecturas

multiprocesadorsonunmodelosimpledesistemasdistribuidosenelqueelsistematiene

unnúmerodeprocesosdiferentesquepodríanejecutarseenseparado.Elnúmerode

procesosqueunjuegopuedeejecutardependedelossistemasqueesterequiera,paraesto

setienetresmodelosparaeldiseño:Unhiloporsubsistema,porJobs(trabajos),y

programaciónasincrónica.Latécnicadediseñodeunhiloporsubsistemaesunenfoquede

multitareaparaasignarsubsistemasparticularesdelmotorparaqueseejecutenenhilos

separados,unhilomaestroseencargadecontrolarysincronizarlasoperacionesdeloshilos

secundariosparaqueestoscompartaninformaciónquemantengalalógicadeljuego,pero

alhacerestocadahilodependedeltrabajodeotroconunatareaespecíficaparapoder

llamaralsiguienteypuederepresentarrestriccionesencómolehilosistemavaaser

utilizado.EnelcasodeldiseñoporJobsesdividireltrabajoenpequeñoshilos

independientesllamadosJobsotrabajos,esteenfoquepuedeserresumidocomopiscinade

hilos(threadpool).Porúltimo,eldiseñoenfocadoenprogramaciónasíncronaserefiereal

hechodequecuandounprocesorequierederesultadosdeunaoperaciónpertenecientea

otro,estenovaaestarhabilitadoinmediatamentedespuésdelapeticióndeeste(Gregory,

2014).Dadosestosenfoquesydefinicionesanteriormenteexpuestassepuedegeneralizar

queunmotordejuegosdebeserconcebidocomounsistemadistribuidoconmultitareasy

porlotantodeberíasercatalogadocomounsistemadetiemporeal(Sommerville,2000).

Page 10: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

10

Porotraparte,losmotoresdejuegomanejanprogramasquerepresentansistemas

suavesquenosoncríticosparalaejecucióndetransaccionesoprocesos,enotraspalabras

manejanvideojuegoscuyaejecuciónnodependededatoscríticoscomoporejemplolas

transaccionesdedineroquesuelenhacerlobancos,pueselobjetivodeunvideojuegoes

hacersevercomoexperienciainteractivaqueseadivertida.SegúnGregoryunmotorde

juegosesunsistemaquepermitecreardiferentestiposdejuegossinembargonoson

completamenteperfectosparacualquiertipodejuego,porlocualexistenmotores

especializadosparajuegosdepeleas,juegosdedisparosenprimerapersona,derol,entre

otros.Estosgénerosayudanadefinirlasmecánicasysistemasquesehandeconstruirenel

motorpuessepuedeconsiderarquelosrequerimientosdelosgénerosdejuegosson

estándaresquedebencumplirsusrespectivosmotores.Losgénerosmejordefinidosenla

industriadevideojuegossonlosFirst-PersonShooters(FPS):Lascaracterísticasdelosjuegos

FPSdebenserenfocadasenambientesdetresdimensionesconanimacionesdealta

fidelidadparapersonajeseinteligenciaartificialparaenemigos;Plataformasojuegosde

tercerapersona:paraelgénerodeplataformassedebecontarconobjetosquerepresenten

plataformasoartefactosparainteractuarconeljugadorenambientesestilo

rompecabezas,yalgoritmosdecolisióndecámaraparaambientesentresdimensiones;

juegosdepelea:debecontarconunconjuntoricoenanimacionesdepelea,deteccionesde

colisiónmuyprecisasyunsistemadedeteccióndecombinacionesdebotones;juegosde

carreras:usodealgoritmosdetrucosvisualesparasimularelmovimientodeobjetos,uso

deestructurasdedatosparalarepresentacióndelcaminoyalgoritmosavanzadosde

controldecámara;juegosenlíneademultijugadoresmasivos:Necesidaddeservidores

conectadosquemantenganlalógicadeljuegoparavariosjugadores,manejode

transaccionesdedinerodelosjugadores,ysoporteparamuchísimosjugadoresconectados

Page 11: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

11

almismotiempo;ydecontenidogeneradoporeljugador:sonjuegosquerequierenqueel

jugadorcree,publiqueycompartaloquehahechoenelmundodejuego,unejemplode

estegéneroesMinecraft(Gregory,2014).Asíesqueunmotordejuegonopuedeabarcar

todoslostiposdegénerosexistentes,puescadaunotienenecesidadesdiferentesque

muchasvecesnosondesarrolladascompletamentepuesesenoseríaelobjetivodelmotor

enparticular.

Estosprincipiosexpuestossonbaseparalacreacióndejuegosydemotores,yen

estetrabajosehancubiertoaspectoscomoelusodelasmecánicasparajuegosde

plataformaymultiprocesamiento.Lasmecánicasdeunjuegodeplataformaspuedenvarias

dependiendodeloquesequieralograrenelmundo,peroelhechodequeunmotorde

juegosseaespecíficodeesegénerorequierequeestépreparadoparaloquevaaquererel

diseñadordeljuego.Teniendoencuentaestoeltrabajoanteriormenteexpuesto,seha

hechoelsuficienteesfuerzoprogramáticoparacomplaceresasnecesidades,peroparaun

ambienteendosdimensiones.Estosesfuerzosincluyeneldesarrollodeunaarquitectura

distribuidaconunenfoqueclienteservidor,peroconunservidorqueaplicaprincipiosde

trabajoconmultiprocesadores.Porotraparte,elhechodequeestéespecializadoen

plataformasnosignificaquenosepuedenhacerotrostiposdejuegos,unejemplodeesto

esUnityqueesunmotorcomercialquehapermitidolarealizacióndevariosgénerosconsu

mismaarquitecturaprincipal(Unity,2017),estoselodejaríacomoobjetivosecundariopero

muyposibledebidoalprincipiodeextensibilidaddelsistema.

Page 12: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

12

DESARROLLODELTEMA

Comosehadescritoanteriormente,unmotordejuegosusavariossubsistemasde

maneraquenecesitadeunaarquitecturaquepermitaelmanejoylasincronizaciónde

múltiplesprocesos.Esporestoquesehadecididodesarrollarelproyectocomounsistema

distribuido,específicamenteconenfoquedearquitecturacliente-servidor.Sinembargo,se

hatomadoenconsideraciónquealestarejecutadovariossistemasenparalelo,sedebería

teneruncontroldeacuerdoacomoestossistemasvayanactuando,esporestoqueseha

decididosumarunaarquitecturademanejodeeventoscompartidaentreelclienteyel

servidor,permitiendoasíelusodeprioridades.Porotraparte,paralarepresentaciónde

mecánicasyobjetosenelsistemasehaoptadoporunmodelodediseñoquepermitala

extensibilidaddeimplementarnuevascualidadesalospersonajesyobjetosdeljuego.Esasí

comoeldesarrollodelmotordejuegossedividióentrespartes:Diseñodeobjetoscon

mecánicasdejuego,sistemadeeventosydesarrollodearquitecturaderedparamúltiples

jugadores.Cabemencionarqueeldiseñodelproyectoestábasadoenlosdeberesdelcurso

defundamentosdemotoresdejuego(GameEngineFoundations)delperiododeotoñodel

2015porelprofesorDavidRobertsenlaUniversidadestataldeCarolinadelNorte.

Page 13: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

13

Objetosymecánicasdejuego

Unadelaspartesimportantesdeunsistemadejuegosescómosemanejany

representanlasestructurasdeobjetosdejuego.Estoselograabstrayendoconceptosde

programaciónquepuedandarmanerasdeconsultarlasrelacionesquelosobjetostienen

conotrostiposoaccederalainformacióndeltipodeobjetoentiempodeejecuciónopara

propósitosdedepuración(DeLoura,2001).Paralograrunaabstracciónsatisfactoriaseha

consideradoloselementosbásicosquetienenlosjuegosengeneral,peroenconcentración

algénerodeplataformas,pueselmotorpretendeserparausodedesarrollodeeste

género.

SegúnSchellexistencuatroelementosbásicosqueunjuegoposee,estossonlas

mecánicas,lahistoria,laestéticaylatecnología.Estetrabajoseenfocaenlapartedela

tecnologíapuestratadelmotorydelsistemaquepermitelainteracción.Sinembargo,para

eldiseñodelosobjetosdejuegoqueserepresentaránenelmotorsenecesitaentenderlos

otroselementos,enespeciallapartedelasmecánicaspuesestassonlasquedanlasreglas

yelprocesodejuego,ademásdescribenloquelejugadorpuedeonohacer(Schell,2008).

Asímismoseconsideróquelaestéticadelosjuegospuedeserimplementadaenelsistema

pordefecto,esporestoquesehaimplementadoademásunamaneraderepresentarlos

objetosamaneradecuadrados,talcomosepuedevereneljuego“Thomaswasalone”que

lospersonajessoncompletamenterectangularesylosambientestambién(Bithell,2012).En

elcasodelahistoria,sehaconsideradoqueelmotordejuegosnodeberíamanejarla

historiapuesesunelementoqueeldirectorodiseñadordeunjuegodeberíatomarmásen

cuentaqueloqueharíaeldiseñadordelmotor,sinembargo,esonoquitalaposibilidadde

quesepuedausarelpresentemotorparanarrarunahistoriainteractiva.

Page 14: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

14

Conloselementosanterioressehadispuestoahacerundiseñodeacuerdoal

modelodeobjetodejuegoporcomponentes.Uncomponenteesunapartequeesmodular,

instalableyreemplazabledelsistemaqueencapsulaunaimplementaciónyexponeuna

seriedeinterfaces(RogerS&BruceR,2015),estemodelodeobjetostienesufundamento

enlaprogramaciónorientadaaobjetosenelcualcadacaracterísticaquevaatenerun

elementoselollamacomponente(Gregory,2014).Sepuedeentenderelmodelode

componentesparaunjuegoconelsiguienteejemplo:Sedicequesetieneunpersonajeque

puedecaminar,dispararysaltar,paraelmodelosepuededecirqueelobjetodejuegoesel

personajeyquesuscomponentessoncaminar,dispararysaltar(Roberts,2015).Para

implementardichomodeloenelmotorsehacreadounaclasellamada“GameObj”elcual

tienereferenciaacomponentesdeusoposiblesquesehandiseñadoenbaseaunainterfaz

llamada“Component”.Sehadecididoimplementarcuatrocaracterísticasparalosobjetos

dejuego,lascualessehaconvenidoquesonlasimportantesparaeltipodejuegoqueel

motorestáenfocado,estassonqueunobjetoseadibujable,movible,chocableychocable

comounazonamuerta,estaúltimaparaañadirelementosderompecabezasenlos

ambientes.Cabemencionarqueestoscomponentessonopcionalespuesdependiendode

cómosedeseehacerunjuegoconelmotor.Porotrolado,segúnlosprincipiosde

arquitecturademotores,paratodojuegoexisteunlazoprincipalqueseencargade

actualizarlosdatosdelosobjetosdejuegodeacuerdoacambiosenelambienteo

ejecucióndeeventos(Gregory,2014).Esporestoqueeldiseñodelosobjetosy

componentesdebetomarencuentaesteprincipio.Asíquetantolaclasedeobjetosde

juegocomolainterfazdecomponentestienenmétodosdeactualización(“Update”).

Cadacomponentetieneunaacciónespecífica.ELcomponentedibujableseocupadedibujar

enpantalladelcliente,cabemencionarqueelclienteestehechoenbaseaProcessing2el

Page 15: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

15

cualseejecutacomounAppletdeJava.Aldibujarselosobjetosenelclientesellamaa

métodospropiosdelframeworkdeProcessingparamostrarcuadradosenpantalla,estos

tienenunconstructorparadeterminarsuancho,largoyposicionesenunespaciodedos

dimensiones,XyY(Reas,2007).Sinembargo,paraquelosobjetospuedanpasardel

servidoralclienteysepuedandibujarsehaagregadounareferenciaaunPApplet,claseen

dondesetieneunlienzoparadibujarfigurasdeProcessing.Asímismoparaelcasodel

componentedemovible,esteseencargaenactualizarlalógicadelmovimientoquese

deseerealizardeacuerdoacomoeldiseñodeljuegorequiera,ydelamismamaneralo

haceelcomponentecolisionable,peroconladiferenciaqueusadeteccióndechoquecon

todoslosobjetosqueposiblementeinteractúen.

Conelmodelodeobjetosdejuegoexpuestosepuedeimplementarlasmecánicas

requeridasparaeldesarrollodejuegosdeplataformas.Lasmecánicasvanadependermás

deldiseñodeljuegoquedelmotor,peroesresponsabilidaddelmotordarcontrolaesetipo

deelementos.Parateneruncontrolentrelosobjetosyelmundoquepuedecambiarde

acuerdoalusuariosedebetenerunmanejadorquedetecteestoscambios,paraestoseha

diseñadounsistemadeeventosqueseexponeenlasiguientesección.

Page 16: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

16

Figura 1:Modelo de objeto de juego por componentes.

Figura 2:Composición de Interfaces para componentes de objeto de juego.

Page 17: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

17

SistemadeEventos

Paraelcontroldeaccionesquerealicenloscomponentessobreelsistemaylalógica

deljuego,queelmotorhadecontrolar,sedebemanteneruncriteriodepriorizaciónpues

ciertasaccionespuedensermásimportantesqueotras.Unejemplodepriorizaciónde

ejecuciónesladiferenciaentrelaaccióndelusuariodepulsarelbotónparamoverseala

derechayladepulsarelbotóndesalto,entrelasdossellamanalmismocomponente,

movible,perolasdostomandistintostiemposdeprocesamiento,enespecíficoelde

movimientoaladerechasóloleconciernemoveralobjetounospixeles,peroenelcasodel

saltolalógicaesmásextensayelmovimientopuededurarvariossegundosdependiendode

ladistanciarecorridaloquesuponemayorescálculos.Lamayorprioridadenesteejemplo

seledaríaaldelmovimientoaladerechapueseltiempoesmenoryunjugadorpuede

esperarqueelmovimientoseamásrápidodebidoasumenorcomplejidad.Asímismo,el

movimientodelsaltotendríamenorprioridad,pueselusuariopuedeverqueelmovimiento

esmuchomásgrande.Esteejemplotratadeexplicarloqueentérminosdesistemas

operativosseconocecomoSchedulling,programacióndetareas(Silberschtz,2012).Sin

embargo,pararepresentarestoenelmotordejuegossehadecididoponerlastareasa

maneradeeventos,esasíqueparaelmanejodeeventossehaoptadoporunaarquitectura

detreselementos:eventos,manipuladores(handlers)ymanejador(Manager).Esta

arquitecturafuncionaregistrandoeventosenmanipuladoresindependientesquesehande

ejecutarenelmanejadordeacuerdoaalgunaprioridad(Gregory,2014).

Paraeldiseñodelsistemadeeventossehantomadoalgunasconsideraciones

basadasenconceptosdesistemasoperativoscomoelschedulingysincronizacióndetareas.

Labaseparaunabuenaprogramaciónoschedulingdelastareasdelsistemaessaberelciclo

deejecuciónqueunatareahadetenerylaesperaquepuedeaguantarlatarea,ademásde

Page 18: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

18

asegurarquenosedejealprocesoenestadoocioso,enunaesperaconstanteoenun

puntomuerto(Silberschtz,2012).Lastareasparaestesistemasehanprogramadoenlos

manipuladoresdeeventos.Paraevitarlosproblemasantesmencionadossehadecidido

dotaralsistemadeeventosconunaestrategiadesincronizaciónbasadaenmonitoresque

consisteendeclararvariablescuyosvaloresdefinenelestadodelatareaypermiten

sincronizarconotrosprocesosohilosdeacuerdoaestosvalores(Silberschtz,2012).

Porotrolado,lastareasysuejecucióndependendelostrescomponentesquetiene

elsistemadeeventos:Eventos,ManipuladoresyManejador.Paraladefinicióndeeventos

sehahechounaenumeraciónparaloscasosposibles.Loseventosmáscomunesparaun

juegodeplataformassonlosgeneradosporeljugadorpormediodeunHID(Human

interactiondevise)queenestecasoseríaelteclado(Gregory,2014).Esasícomoloseventos

sehandefinidoporlasteclasarriba,abajo,izquierda,derechaybarraespaciadora.Porotra

parte,unodelosobjetosquesehaimplementadoenelmotorsonlasplataformasmovibles

lascualeshanderesponderaeventosquesuenumeraciónespecíficatambiénseha

implementado(AUTOMATIC_PATTERN).Asímismo,losmanipuladoresquesonlos

encargadosdeejecutarlasaccionesqueeleventogenerará.Pararepresentarlosenel

sistemasehahechounaclasellamadaEventHandlerquecuentaconcincoatributos

importantesparadefinirlaacciónqueelobjetohadehaceryquesonnecesariosparael

schedulingdelsistema,estosson:type (tipodeevento),timeStamp(tiempoenelquese

registróelevento),subdivisions(sieleventovaaestarasociadoconmáseventos),

priority(prioridaddeejecución)yage(tiempodevidamáximoquedeberíaesperarpara

ejecutarse).Además,estaclasecuentaconunmétodoqueregistraelcomportamiento

deseadoalmanejador,yunmétodoparaejecutarlo.Porotraparte,Lapiezamás

importantedelsistemadeeventoseselmanejadorpueseselencargadodeprogramarque

Page 19: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

19

manipuladoresvayanaejecutarseyenquéordendeacuerdoasuspropiedades,esdecir

delschedulingensí.Losatributosdelosmanipuladoresayudanaqueelmanipuladordecida

elordendeejecuciónpormediodeunacoladepreferencia.Elmanejadorhasidointegrado

enelservidorpueslaejecucióndeeventosdebeinteractuarconlosdemásobjetosdejuego

yestarsincronizados.

Sinembargo,loseventosnosolodebenestarpresentesparaserejecutados,sino

quesuejecucióndebeestarhechadeacuerdoaunalógicaparaeljuegoenestecasosería

lafísicaparaunjuegodeplataformas.Lafísicaenelmotorestádadaporunaestructurade

tiempoylógicaenloscomponentesmovibleycolisionable.Laestructuradetiempoestá

dadaporlaclaseTimeLineycuentaconunmétodo(calculateTic())yselausadetal

maneraquecadaobjetodejuegoquedebarelacionarseconfísicaseactualicehaciendouna

diferenciadetiemposdelprocesadorobtenidoalinicioyalfinaldellazodejuego.Esta

estructuraestáincluidacomopropiedadenlaclasedeObjetosdejuegoyseusapara

actualizarloscomponentesdeMovimientoyChoque.Paraelmovimientodeobjetosque

actúanpormediodeinteraccióndelusuario,teclado,sehacreadounafunciónparacuando

elusuarioactivaeventosdemovimientodeizquierdaoderechaenrelaciónaltiempoque

estádadaporlasiguienteecuación:x=5t/20yqueespositivacuandoelmovimiento

deseadoesaladerechaynegativacuandoesalaizquierda.Asímismo,paraeventosde

saltosehahechounalgoritmobasadoenelmovimientodecaídalibrequeeselfenómeno

queenausenciaderesistenciadelairehacequetodoslosobjetoscaiganconlamisma

aceleraciónconstante(Giancoli,2008),sinembargo,paramantenersimpleloscálculosdel

componentesehahechoavelocidadconstantedey=2t/10.Elalgoritmodesaltoestá

gobernadoporunavariablebooleana,llamada"jumping",queactivaelpatrónde

movimientohastaqueestesecompletealtocarunasuperficieconpropiedadesdelímiteso

Page 20: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

20

choque.Lavariablequecontrolaelalgoritmoesactivadacuandoelusuariopresionael

botónolatecladesalto.Sinembargo,sufuncionamientopuedeextenderseporvarias

iteracionespuessebasaenellanzamientodeunproyectil:cuandoelobjetoespuestoenel

saltoiniciaconunavelocidadconstantehastaquellegaasupuntomáximoqueestres

vecesmayorqueeldesupropiaaltura,despuésdeestoelobjetohadeempezarsu

descensoconlamismavelocidadhastallegaralbordeochocarcontraotroobjeto.EL

comportamientodemovimientomuchasvecesvaadependerdeldechoquepuespara

variosobjetoseneljuegolacondicióndechoquevaaserobligatoria(saltarsobre

plataformas,porejemplo),esporestoqueenpatronescomoeldesaltoesnecesariosaber

siocurrióunacolisiónenlapartedeabajodelobjetoparacomprobarsielmovimiento

continúaosepara.

Porotrolado,elmanejadorhadeserunárbitroparaelsistemayquienintervenga

entrelalógicadelservidorylosmanipuladoresquevienendesdeelcliente.Elsistemaestá

hechodetalmaneraquelosmanipuladoressehandegenerarenlosclientes,luegohande

llegaralservidorquientienealmanejadordeeventoscorriendoenparaleloconunhiloque

seencargadellenarunacoladeprioridadconmanipuladoresparaefectuaroperacionesde

sincronizaciónentrelalógicaquemanejaelservidorylaejecucióndelosmanipuladores.

Unacoladeprioridadesunaestructuradedatosquepermitehacerschedullingensu

coleccióndeobjetosypuedeestarordenadaporlaprioridadmásaltaalamásbaja,pero

paraquelosobjetospuedansercomparadosdebentenerunainterfazcomparable(Weiss,

2012).Lacoladeprioridadimplementadaparaelproyectotienelaparticularidadde

compartirelementostantoenlalógicaprincipaldelservidorcomoenelhilodeejecución

porestodebeseratómica.Enconsecuencia,sehausadounacoladeprioridaddeltipo

PriorityBlockingQueuequeesunacolecciónatómicadeJava(Oracle,2016).Porotrolado,

Page 21: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

21

paraquelacoladeprioridadejecutelosmodificadoresyqueestostenganefectodentrode

losobjetosdejuegodelservidor,sedebesincronizarlasoperacionesrealizadasenel

manejadorconelhiloprincipaldelservidor.Sibienesciertolosmanipuladoresalestar

dentrodeunacolecciónatómicanodeberíansufrirproblemasdesincronización,siestos

sonejecutadosenunhilosinesperaselsistemapodríacaerenunlazoinfinitoqueen

ausenciadeeventosconsumiríarecursosdelprocesadorinfinitamente.Paranotenereste

problemasehausadolaestrategiadesincronizaciónpormediodeunobjetomonitorque

cambiasuestadoaesperacuandolacolaestávacíaycuandolacolaestállenacambiade

estadoparapermitirquesecontinúeconlaejecucióndelhilodelmanejador.

Elsistemadeeventosdescritopermitequelalógicasecompartaentreclientey

servidor,sinembargo,elsistemaqueseencargadelacomunicaciónusaotrosprincipios

computacionales.Comoyasehadescritolosmanipuladoresnecesitanschedulingpara

funcionar,sinembargo,paralacomunicaciónesnecesariotenerunamaneraparecidasies

quesevaaintercambiarinformacióndeeventosydeobjetosquecomosedescribió

anteriormentesontiposdistintosquemanejancosasdiferentesdelmotor.

Page 22: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

22

Figura 3:Diagrama del Sistema de Eventos.

Page 23: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

23

Arquitecturaderedparamúltiplesjugadores

Paralaarquitecturaderedsehaoptadoporelmodelodeclienteservidorpues

permitequeelsistematrabajedeunamaneradistribuidayquelaexperienciadeusuario

seaenfocadaparajuegosconvariosjugadores.Enparticularelmodeloclienteservidoren

motoresdejuegorequiereresolverlapreguntadesisedeseaqueelclienteseainteligente,

ounsimplepresentadordeimágenes(Roberts,2015).Esporestoqueparaesteproyectose

hadecididoporunpuntointermedioenelcualelclienterecibedatospreprocesadosporel

servidorparamostrarlosenpantalla,yademásgenerayenvíacontroladoresdeeventosal

servidorparasuejecucióncorrespondiente.

Paralaimplementacióndelmodelodeclienteservidorsedebetenerclarocómoes

queestefuncionayquéestrategiasetendráparaeldesarrollodetodossuscomponentes.

Elmodelodearquitecturadecliente-servidoresunmodelodesistemadistribuidoenelcual

semuestracomolosdatosylosprocesossondistribuidosentreunaseriedeprocesadoreso

computadoras.Loscomponentesdeestaarquitecturason:unconjuntodeservidores

autónomosquedenserviciosaotrossubsistemas,unconjuntodeclientesquellamenalos

serviciosofrecidosporlosservidores,yunaredquepermitaquelosclientesaccedanalos

servidores(Sommerville,2000).Deestamaneraserequiereunservidorqueseacapazde

mantenerconexionesconvariosclientes,dichoservidorademásdesercapazdelograrlos

objetivosdeunmotordejuegos,debemantenerlalógicadeljuegoycomunicarlo

sincronizadamenteatodoslosclientes.Pararealizarestosehaimplementadounasolución

conenfoqueenselectoresdemúltiplescanales,siendocadacanalunaconexiónauncliente

enparticular.Porotrolado,losclientessehanhechoenbaseaProcessing,versión2,quees

unframeworkhechosobreJavaorientadoalaprogramacióndeartesvisuales(Processing,

Page 24: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

24

s.f.),deestamaneraseaseguraqueelmanejodegraficasdelsistemaestéacargodel

frameworkalimplementarloenlosclientes.

Asímismo,paraeldiseñodelsistemaesimportanteentenderlaredenlaqueseha

deusarlaarquitectura,yelobjetivoqueparaestecasoespermitireldesarrollodejuegos

enredesdeárealocalconprotocoloEthernet.UnareddeárealocaloLANesunaredde

propiedadprivadaqueoperadentroycercadeunsoloedificiocomounacasa,oficinaouna

fábrica,ademássonmuyusadasparaconectarcomputadoraspersonalesyaparatos

electrónicosparaqueestospuedanintercambiarycompartirrecursoseinformación

(Tanenbaum,2011).Conestoenmente,elresultadodelmotorpermitiríaavarias

computadorasconectarseparaquemúltiplesjugadorespuedandisfrutardeunapartidade

juego.Sinembargo,paraquelascomputadorasconectadasenredpuedanenviaryrecibir

paquetessenecesitadeprotocolosquepermitanqueunpaquetededatossepaaqué

computadoradelaredir,entoncessehaoptadoporelusodelossiguientesprotocolos:

Ethernetparalacapadeenlace,IPparalacapadeenlaceyTCPparalacapadetransporte,

cabemencionarquelacapadeaplicaciónhadeestardadaporlosprogramasdelservidory

delcliente.

Paraimplementarestaarquitecturasehanhechovariaspruebascondiferentes

enfoques,elprimeropormediodeserversocketsyelsegundopormediodesocket

channelsconselectores.SegúnladocumentacióndeOracle,unsocketenjavaesunpunto

finaldeunaconexióndecomunicaciónentredosprogramasqueseejecutanenlaredque

ademásusaTCPcomocapadetransporte.Ladiferenciaentrelosserversocketsylossocket

channelseslacapacidaddeusarselectoresporcanales.

ElenfoqueporServerSocketstratademúltiplesconexionesmultihiloconvarios

socketsconectadosaotrosvariosserversocketsparadospuertos,unoparaintercambiode

Page 25: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

25

objetosdejuegoyotropararecepcióndeeventos,peroqueharesultadoineficiente.Un

ServerSocketesunaclasedejavaqueesperaporpeticionesquevienendelared,realiza

operacionesbasadasenesepedidoyquepuedeenviaralgúnresultadoalsolicitantedel

pedido.EsasíqueparaesteenfoqueenparticularsehausadodosobjetosServerSockets

quehacenoperacionesaccept(operaciónparaaceptarunaconexiónentrante)enelhilo

principal.Despuésdecadaacceptelsistemallamaaunhilo,unoparaintercambiode

objetosyotroparaejecucióndeeventos.Elhilodeintercambiodeobjetossehade

sincronizarconeldeejecucióndeeventosparaquedeestaformaseenvíenobjetos

actualizadosalclienteysemantengalalógicadeljuego.Sinembargo,esteenfoquegenera

hilosporcadaconexiónaceptadaenelsocketserver,ytambiénnuevossocketsparaenviar

informaciónaquienhizolapetición,loquellevaauncongestionamientodelaredyuso

excesivodelprocesador.Cabemencionarquesehanhechopruebasendostiposde

procesadores:AMDA8yenunIntelCorei7,yelcomportamientodelmotorfuetotalmente

diferenteentreambospuesenelAMDA8lacargadeprocesamientohacíaqueelprograma

ylosdemásprocesosdelacomputadoraseanmáslentos,sinembargoenelcasodelInteli7

elprogramaseejecutabafluidamente,perodeigualmaneracongestionarlaredinternade

lacomputadora.

Porotrolado,elenfoqueporSocketChannelsusaunsocketquefuncionacomo

selectorenelservidorelcualrecibeconexionesentrantesylasregistraencanales.Los

clientesvanatenertrestiposdeoperacionesbásicasparaconectarseconelservidor:

Lectura,escrituraydeaceptación.Cadacliente,dentrodesulazoprincipal,realizará

ordenadamentelossiguientespasos:primero,enviaralservidorunalistadeobjetos

serializablesconelobjetodejuegopertenecientealjugador,yconeventosquehayan

surgidodentrodelclientecomoeventosprovocadosporelteclado.Después,elcliente

Page 26: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

26

esperaráarecibirunalistaconlosobjetosdejuegoactualizadosporelservidor.Deesta

maneraelservidortienequeajustarloscanalesparaqueleanyescribanenrelaciónconlo

queelclientequierehacer.Paralograrestosehadecididoalternarlasoperacionesdel

canaldelasiguientemanera:Laoperacióndeaceptaciónsedacuandolaconexiónesnueva

yporprimeravezporpartedelclienteydelservidor.Esporestoquecuandoelservidor

detectaunanuevaconexiónsehaderegistraruncanalqueseacapazderecibirdatosdel

cliente,enotraspalabrassehabilitaalaconexiónpararecibirdatosyqueelservidorpueda

leerlainformaciónquehademandarelcliente.Asímismo,unavezqueelclientehaya

escritodatosenelservidor,estehadecambiarelcanalparaquepuedaenviardatosdel

servidoralcliente.Deestamaneraseaseguraquelasoperacionesdelecturayescriturase

mantengansincronizadascadaquesepresentennuevassolicitudesdesdeelcliente.Por

partedelrendimientoencomputadoras,enlasqueseprobóestaarquitecturaconunsolo

jugadorenlocalhost,elresultadoesinvariableysatisfactoriopueshanpresentadoun

juegofluidosinalteraroralentizandootrosprocesos.

Elsistemaderedparaesteproyectoesunodelospilaresimportantes.Como

objetivodelsistemasehadadoelhechodequeestesepuedamanejarenredconvarios

jugadoresconectadosyparaevaluarlaexperienciaqueestostenganalconectarsesedebe

medirlosrequerimientosdeusodelascomputadorasquetendráncorriendoalosprocesos.

Esasíqueunavezqueelsistemaderedesimplementadoenelmotordejuego,seha

procedidoamonitorearelrendimientodelsistemaenconjunto.

Page 27: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

27

Figura 4:Diagrama de sistema de Red

Figura 5: Juego funcional hecho para probar el sistema

Page 28: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

28

Análisisdelrendimientodelsistema.

ParamedirelrendimientodelsistemasehaobtenidodatosdelusodelCPU,memoriayde

lospaquetesderedresultantesdepruebashechasconunjuegofuncionalquepruebalos

aspectosbásicosdelmotor.Comoelsistemaestáhechoparafuncionarenredseloha

probadodedosmaneras,laprimeraporlocalhostylasegundaporLAN.Laspruebaspor

localhostbuscandemostrarqueelmotorfuncionaparalacreacióndejuegosdeunsolo

jugador,porotrapartelaspruebasenLANbuscanasegurarunaexperienciamultijugador

paraelmotor.

TantolaspruebasdelocalhostcomoenLANfueranhechasconayudadehilosque

recolectabanelusodelCPUylamemoriausadaporelproceso,deestamanerase

recolectarondatosparaobtenerconclusionesdesufuncionamiento.Asímismo,parala

recoleccióndedatosderedsehausadoWiresharkparaverlacantidadyeltamañodelos

paquetesparahacerunanálisisenfuncióndeltiempo.Cabemencionarquelosdatos

obtenidosusandiferentesunidades:ParaelusodelCPUseusanporcentajes,paraelusode

memoriaseusaBytesyparaelanálisisderedsehausadopaquetes/segundo,todosellos

analizadosversuseltiemposiendolosdatosobtenidosdeloshilosenunintervalode

aproximadamente100milisegundosylosobtenidosporWiresharkdeintervalosde1

segundo.Cabemencionarquecadapruebaseharealizadocontresexperimentospara

luegoobtenerunpromedioqueresumaelcomportamientodelosexperimentos.

Page 29: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

29

PruebasenLocalhost.

Estas pruebas se han hecho en una misma computadora que funciona al mismo

tiempodeservidorydecliente,conaproximadamentetresminutosdejuegoconenvíode

eventos aleatorios según el uso de un jugador humano. Cabe mencionar que la

computadora tiene un procesador de Intel Core i7 a 2.8 GHz con 4GB de RAM. Por otra

parte,sehanhechodostiposdepruebaspara localhost.Laprimeraconsisteenusodeun

solojugadorylasegundausomultijugador,variosclientesenlocalhost.

Paralapruebadeunsolojugadorsehaencontradounalíneadetendenciade

y=-0.0022x+4.213 para el uso del procesador en el servidor,mostrando así un gradiente

decrecientequedemuestraqueelusodelCPUesmayoraliniciodelprogramadelservidor.

Porotrolado, latendenciadelusodelprocesadorparalaaplicacióndelclientefuedey=-

0.0037x+14.236,mostrandouncomportamiento similar,pero conunusomásaltoqueel

del servidor. En el caso del análisis de memoria para un solo jugador, el servidor ha

mostradounatendenciaacrecerdey=730.13x+1E7yenelcasodelclienteunatendencia

de y=698.61x +2E7, con la particularidad que para los dos casos el uso del recolector de

basura aumenta entre el intervalo 400 y el intervalo número 1000. Como resultado del

análisisdereddeunsolojugadorsehadetectadounatendenciadelnúmerodepaquetes

enviadosporsegundodey=0.0225x+203.26quemuestraunlevecrecimientodepaquetes

enviados al avanzar el juego y un promedio de paquetes enviados de 205

paquetes/segundo. Por otro lado se ha detectado que el 50.01% de paquetes tenían un

tamaño de entre 40 a 79 bytes que pertenecen a paquetes tipo ACK, y 49.99% de los

paquetes fueron de entre 1280 a 2559 bytes que contenían datos de objetos de juego y

eventos.

Page 30: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

30

Asímismoparalapruebademultijugadorenlocalhostseobtuvoresultadossimilaresalas

deunsolojugador,peroconlíneasdetendenciamásempinadasparalamemoriayCPUy

losclientes.LatendenciaparaelusodelCPUenelservidorhasidodey=-0.0019x+4.7843,

que igual que en el caso anterior,muestra un decrecimiento de procesamiento desde el

iniciodelprograma,siendo losprimeros200 intervalosposeedoresdeporcentajesdeuso

mayoresqueelrestosobrepasandoel20%delCPU,peroelrestodeltiempoelusodelCPU

seestabilizaenunpromediode3%aproximadamente.Asímismo,elusodeCPUpara los

clientes, dos, en localhost ha mostrado una tendencia de y=-0.0029x+13.564, que

igualmentemuestraundecrecimientodesdequeelprogramaempiezaaejecutarseenlos

primeros100intervalosconpicosdehastael31%deusodelCPU,paraluegomantenerun

11%depromedioenusodelCPU,8puntosmásarribaqueelservidor.Porotraparte,eluso

dememoriaparaelservidorfuedey=751x+1E7,tendenciaqueseencuentramuyparecida

a la obtenida para un solo jugador,así mismo por parte de los clientes se obtuvo una

tendenciadey=1406.5x+2E7queesmayorque la tendenciaparaunsolo jugador, locual

suponequecuandoenelsistemainteractúanmásobjetos,lamemorianecesariaaumenta

en los clientes. Finalmente, en el análisis de red se ha obtenido una tendencia de

crecimientomayora ladeunsólocliente,queresultaeny=0.1375x+319.02conpromedio

de333paquetesenviadosenunsegundo,promedioelcualsemantienecomotendenciaen

la vida del sistema , sin embargo la ecuación resultante es una línea que crece con

pendientepositivaque seexplicaporqueal iniciode la vidadel servidor seenvíanpocos

paquetestipoACKhastaqueserealizanlasprimerasconexiones.

Page 31: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

31

Figura 5: Uso del CPU del Servidor en localhost

Figura 6: Uso del CPU para clientes en localhost

Page 32: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

32

Figura 7: Uso de memoria en el tiempo para servidor en localhost

Figura 8: Uso de memoria en el tiempo para clientes en localhost

Page 33: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

33

Figura 9: Número de paquetes enviados en un segundo para la conexión de clientes y servidor en localhost

Figura 10: Porcentaje de paquetes enviados según su tamaño entre cliente y servidor en localhost

Page 34: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

34

PruebasenLAN

Paraestetipodepruebassehausadolacomputadoraantesmencionada,parael

experimentoenlocalhost,comoservidoryademásunequipoparagenerarunaredLANpor

cableEthernetde10Mbpsdeanchodebanda.Ycomoenelexperimentoanterior,sehan

hechopruebasconunoycondosjugadoresconectadosalservidor.

ParaelexperimentoconunsólojugadorconectadoenLANalservidorsehaencontradouna

tendenciadey=-0.0012x+4.2814queesaproximadamenteigualalaobtenidaparalos

experimentosdelocalhost,ademásdepresentarelmismopromediode4%alestabilizarse

elusodelCPUdespuésdelintervalonúmero200.Asímismo,elclientehamostradouna

tendenciadeusodeCPUsimilaraldelexperimentoanteriorconunatendenciadey=-

0.0043x+13.047yconunpromediodeaproximadamente13%deusodelCPUdespuésdel

intervalo200.Sinembargo,enelcasodelamemoriautilizadaelservidorexperimentaun

incrementoapartirdelintervalo1500deunmáximode14Mba19Mb,sinembargopor

causadelrecolectordebasuradejavalalíneadetendenciahasidodey=522.02x+1E7que

esmenorquelaobtenidaparalocalhostperoenestecasoelusodememoriaesmenos

uniformequelasanteriores.Enelcasodelamemoriadelosclienteslamemoriasigueuna

tendenciamásuniforme,peroconunmáximode28Mb,mayorqueenelservidor,ycon

ecuacióndetendenciadey=1249.7x+2E7.Porotraparte,enelanálisisderedseencontró

unatendenciadey=0.031x+255.68conunpromediode355paquetesporsegundoyconun

33.33%depaquetesdetamañodeentre1280a2559bytesquerepresentanlasegunda

mayoríadespuésdeun33.34%depaquetesdeACK,mostrandoasíqueenconexión

ethernetseenvíanpaquetesmásgrandesqueenlocalhost,estopuedeserporqueel

protocoloesmáscomplicadoqueenlocalhost.

Page 35: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

35

EnelexperimentodeLANparamúltiplesjugadoressehanusadodoscomputadorascomo

clientesyunservidorqueeslamismacomputadorausadaanteriormente.Las

computadorasquehansidousadascomoclientestienendiferentesprocesadores,la

primerausaunIntelCorei7a2.9GHzcon16GbdememoriaRAM,lasegundausa…Cabe

mencionarqueesteexperimentofueelqueconmásdatossehancontado.Paraelanálisis

deusodelCPUdelservidorseencontrómayornúmerodepicosqueencualquierotra

pruebayunmáximoalcanzadoenmediaejecuciónde28%deusodelCPU,sinembargo

sigueunatendenciadey=-0.00017x+6.4801conunpromediode6.4%deusoeslaprueba

endondeelusodelCPUsehaduplicadoenrelaciónalasanterioresyaunquees

decrecienteelnúmerodepicosesmayorqueenotraspruebas.EnelcasodelCPUdelos

clienteslatendenciaessimilaraladeanteriorescasosdey=-0.00057x+11.54quemuestra

casiunaconstantede11.5%deuso,estohacesuponerqueelrendimientodelcliente

puedeestardadoporlaestructuraqueestáhechoProcessingmásquedelas

particularidadesdelmotorpropuesto.Enelcasodelamemoriadelservidorsehanotado

unpatrónquediferenciadelosanterioresexperimentosyesqueelusodelrecolectorde

basuraesmáscomúnqueenlosanterioresperoconunatendenciaacrecersegúnla

ecuacióndey=987.58x+1E7,peroenelcasodelosclienteselllamadodelrecolectorde

basuraesmenosfrecuentequeenanterioresexperimentosyadiferenciadelosanteriores

lamemoriarequeridatiendeabajarporlatendenciay=-1494.9x+2E7.Porotraparte,el

análisisderedhamostradoqueelnúmerodepaquetesenviadosporsegundoesmayorque

enlosanteriorespuesestádadoporlatendenciadey=0.2259x+589.62,ademásdequeel

38.63%depaqueteshantenidountamañodeentre1280a2559bytes,representandola

mayoríadeinformaciónintercambiadaenelsistema

Page 36: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

36

Figura 11:Uso del CPU vs Intervalos de tiempo del servidor con múltiples clientes en LAN

Figura 12: Uso del CPU de clientes conectados en LAN a un mismo servidor.

Page 37: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

37

Figura 13: Uso de memoria en el tiempo para el servidor con múltiples clientes en LAN.

Figura 14: Uso de memoria en el tiempo para los clientes conectados en LAN.

Page 38: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

38

Figura 15: Número de paquetes enviados en un segundo para la conexión de clientes y servidor en LAN.

Figura 16: Porcentaje de paquetes enviados según su tamaño entre clientes y servidor.

Page 39: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

39

Conclusionesdelanálisis

Comoconclusionesdeestosexperimentossepuededecirqueelsistematantoel

servidorcomoelclientesiguenunaecuacióncasiconstanteparatodosloscasos,conuna

estabilidadluegodelintervalonúmero200.

Enelcasodelamemoriausadaporelprocesodeservidorsehaencontradouna

diferenciapronunciadaentremáximosymínimoslocalesdehasta1.12Mb,perode1.5MB

paraelservidordemultijugadorenLAN.Estecomportamientodegenerarpicosdememoria

constantementedeunamaneraperiódicasedebealusodelRecolectordeBasuradeJava

quealusarestrategiasdeeliminaciónnormalyeliminaciónconcompresiónpermitequelos

objetosquenosehanusadodespuésdeciertotiemposeeliminenparadarprioridadalos

másjóvenes(Oracle,n.d.).Estecomportamientodelrecolectordebasurapuedeser

justificadoporqueelservidorrefrescalosobjetosdejuegoquemandanlosclientespor

actualizacionesdelmanejadordeeventos,loquesignificaqueelmapaqueseencargade

mantenerlosobjetosdejuegovaaestarcambiandoreferenciasdeobjetospornuevos

actualizadoscadaqueunclientehagaunaconexión,ademásqueelprocesodeintercambio,

lecturayescritura,requierelacreacióndeunSocketChannelydeunobjetodeflujode

entradaosalidadedatosquesólovanaserusadosunasolavezcuandolosclientes

requieran.

Enelanálisisdelamemoriaparalosclientessemostróunatendenciacreciente,al

igualqueelservidor,perocondiferenciaentrepicosde0.65Mbloquemuestraun

comportamientodeliberacióndememoriamenosagresivoqueenelservidor,ademáscon

unmínimode9Mbusadosparatodalavidadelprocesoyunmáximode26Mb.La

explicaciónparaestecomportamientoperiódicoesdebidoalrecolectordebasuradeJava

queesllamadocadaquelapantallaserefresca,puesProcessing,ensuPApplet,vaa

Page 40: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

40

dibujaryausarnuevosobjetos,enestecasocuadrados,parapoblardenuevoallienzoque

serefrescaenellazoprincipal,dadoporlafuncióndraw(Reas,2007).Sinembargo,enel

experimentodemultijugadoresenLAN,lamemoriadelosclienteshapresentadouna

tendenciaadisminuirelusodemásmemoria,estopuedeserelresultadodequeel

recolectordebasurausaestrategiasdecomprensiónenvezdeeliminacióndirectapara

mantenerlosobjetosqueseactualizanenlosclientes,puessóloesunoelquerepresentaal

jugadorenelmapadejuego.

LasconclusionesobtenidasdelanálisisdelusodelCPUmuestranqueambos

procesos,elclienteyelservidor,tiendenatenerunusocasiconstantedelCPU.Paraelcaso

delservidorparatodaslaspruebas,exceptolademúltiplesclientesenLAN,seobtuvouna

tendenciadeusodelCPUde4%,yenlosclientesunusodelprocesadoraproximadaal13%.

EnelcasodelusodelCPUenLANconmúltiplesclienteselusosubióa6.4%queesmayor

quelasanteriorespruebas,locualesesperadoporqueelservidortendríaqueocuparsede

máspeticionesporelnúmerodeclientesyserviracadaunosegúnsuordenenelselector.

Sinembargo,algoquecompartentodoslosexperimentosesunincrementodelusodeCPU

enlosprimeros200intervalosqueesdondesecreanyseinstancianlamayoríadeobjetos

quelosprocesoshandeusar,comoenelclientequeseinicianlosobjetosdejuegoy

propiedadesdeProcessingenelmétodosetup.

Page 41: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

41

Page 42: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

42

CONCLUSIONES

Sibienelpresentetrabajohadescritoelfuncionamientoydiseñodevariossistemasparala

organización y combinación de estos en un motor de juegos, también ha mostrado el

comportamiento de recursos que el motor ha de requerir en una computadora. Las

integracionesdetodoslossistemassonimportantesporelhechodequeunjuegorequiere

interacción entre el jugador y el mundo del juego, y estos sistemas ayudan a que esto

suceda.

Para que un jugador pueda mover a su personaje a través de la pantalla necesita

comunicarseal juegopormediodel teclado.Paraqueel sistemaentiendaqueelusuario

quieremoveralobjeto,esterecibeeventosquesetransmitenalservidor,dondeelsistema

guarda la lógica y que a su vez dicte lo que va a pasar a continuación con el objeto si

interactúaconotrosenelmundodel juego.Paraque losobjetos interactúenoactúende

ciertamanera en elmundo han de tener componentes que son dados por elmodelo de

objetos.Sinembargo,comolaarquitecturaesdeltipocliente-servidor,lapartedelalógica

y actualización de componentes se encuentra en el servidor, por lo que los eventos

generadosporelusuariohandeserenviadoporredhaciaelservidor.Esteenvíoesposible

por el uso del sistemade red paramúltiples jugadores que usa canales para representar

conexionesyselectorespararesolverel tipodeoperacionesquesenecesitan(escriturao

lectura).

Sinembargo,elsistematambiénhasidoprobadoparadefinirlosrequerimientosdered,de

procesamientoydememorialoquehamostradouncomportamientopeculiar.Eltamañoy

número de paquetes enviadosmuestran un comportamiento optimo pues lamayoría de

paquetessonenpromediode2KBy270paquetesenviadosenunsegundoporelsistema

Page 43: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

43

loquenocongestionalarednicausaproblemasdelatenciaenelsistema.Sinembargo,el

usodelamemoriahaproducidouncomportamientodeusoyliberaciónperiódicoqueno

sehapodidoatribuira lascausascomunesde liberacióndememoriapor recolectoresde

basura de Java. Así mismo, para procesos separados semostró que los clientes siempre

tienenunusodeprocesadormásaltoqueeldel servidor,13%y4% respectivamente. Lo

quehacesuponerquelaejecucióndelclienteconsumemásrecursosqueladelsistemaen

generalporelusodeProcessingenelcliente.

Por otra parte, el sistema aquí descrito puedemejorarse para poder competir con otros

motoresdejuegoscomerciales.Porhaberseconcebidocomosistemaextensible,elmotor

de juegos puede mejorar sus capacidades de programación de escenarios, personajes y

efectos al aumentar componentes al modelo de objetos. Además, para mejorar la

experienciadeusuariosconectadossepodríadepurarelsistemaparaservidoreslejanos.Sin

embargo,dichoscambiospodríanrequerirmásrecursoshumanosytécnicos.

Porúltimo,eldesarrollodeestetrabajoesperaatraer laatencióndenuevos ingenierosal

campo del desarrollo de videojuegos. De acuerdo con la página de Gamedevmap, una

página de en el Ecuador sólo existen dos empresas de videojuegos. Es por esto que los

conocimientos aquí expuestos puedan ser expuestos más abiertamente en el país y así

mejorarlariquezadeprofesionalesenelárea.

Page 44: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

44

REFERENCIASBIBLIOGRÁFICAS

Reas,C.(2007).ProcessingAprogrammingHandbookforVisualDesignersandArtists.Cambridge:MITPress.

DeLoura,M.A.(2001).GameProgrammingGems2(Vol.2).Hingham,Massachusetts,USA:

CharlesRiverMedicaINC.Hasiotis,N.(2015,Noviembre27).JavaNioSocketExample.RetrievedAbril6,2017,from

JavaCodeGeeks:https://examples.javacodegeeks.com/core-java/nio/java-nio-socket-example/

Cairó,O.(2006).EstructuradeDatos(3ed.).México:McGrawHill.Gregory,J.(2014).GameEngineArchitecture(2nded.).CRC.PaulDeitel.(2015).JavaHowtoprogram(10ed.).Pearson.Silberschtz,G.G.(2012).OperatingSystemConcepts(8ed.).USA:JohnWiley&SongsINC.Sommerville,I.(2000).SoftwareEngineering(6thed.).England:AdisonWesley.Tanenbaum.(2011).ComputerNetworks(5ed.).USA:PrenticeHall.Oracle.(2016).Selector(JavaPlatformSE7).Retrieved0211,2017,fromJava™Platform,

StandardEdition7APISpecification:https://docs.oracle.com/javase/7/docs/api/java/nio/channels/Selector.html

Oracle.(n.d.).JavaGarbageCollectionBasics.Retrieved0327,2017,fromOracle:

http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

Oracle.(2016).PriorityBlockingQueue.RetrievedAbril19,2017,fromJavaSE7:

https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/PriorityBlockingQueue.html

Roberts,D.(2015,0915).ObjectCentricModels.GameEngineFoundations.Raleigh,NC,

USA.Unity.(2017,Marzo29).UnityManual.RetrievedAbril18,2017,fromUnity3D:

https://docs.unity3d.com/Manual/index.html?_ga=1.52214889.1336573092.1492525367

R.P.,&B.M.(2015).SoftwareEngineeringAPractitioner'sapproach(edición8ed.).

McGrawHill.

Page 45: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

45

Schell.(2008).TheArtofGameDesignABookforLenses.MorganKaufman.Bithell.(2012,Junio30).mikebithellgames.RetrievedAbril18,2017,fromThomaswas

alone:http://www.mikebithellgames.com/thomaswasalone/Weiss,M.A.(2012).DataStructuresandAlgorithmAnalysisinJava.Pearson.Giancoli.(2008).Físicaparacienciaseingeniería.Pearson.Processing.(n.d.).RetrievedAbril20,2017,fromProcessing:https://processing.orgGamedevmap.(2017,Abril24).RetrievedMayo1,2017,fromGamedevmap:

https://www.gamedevmap.com/index.php?country=Ecuador&state=&city=&query=&type=

Page 46: Ingeniería en Sistemas - Repositorio Digital USFQ ...repositorio.usfq.edu.ec/bitstream/23000/6403/1/131037.pdf · clásico, en referencia a aquel diseño de sistemas que no está

46