SlideShare una empresa de Scribd logo
1 de 92
Descargar para leer sin conexión
REPÚBLICA BOLIVARIANA DE VENEZUELA
UNIVERSIDAD RAFAEL URDANETA
FACULTAD DE INGENIERÍA
ESCUELA DE INGENIERÍA EN COMPUTACIÓN
VIDEOJUEGO DE GÉNERO MOBA EMPLEANDO UN SISTEMA DE EMPAREJAMIENTO POR
NIVEL UTILIZANDO EL MOTOR GRÁFICO UNREAL ENGINE
Trabajo Especial de Grado presentado ante la
Universidad Rafael Urdaneta para optar al título de:
INGENIERO EN COMPUTACIÓN
Autor: Br. José Ortega
Br. Orlando Cuabro
Tutor: Ing. Carlos Montes
Maracaibo, Julio 2016
ii
VIDEOJUEGO DE GÉNERO MOBA EMPLEANDO UN SISTEMA DE
EMPAREJAMIENTO POR NIVEL UTILIZANDO EL MOTOR GRÁFICO
UNREAL ENGINE
______________________________
Ortega Díaz, José Luis
CI: 24.735.389
Telf.: (0424) 6695999
odiaz.jose@gmail.com
Cantidad HC Aprobadas: 212
Cantidad HC Restantes: 9
______________________________
Cuabro Briceño, Orlando José
CI: 23.739.143
Telf.: (0424) 6846391
ocuabro@gmail.com
Cantidad HC Aprobadas: 221
Cantidad HC Restantes: 0
______________________________
Montes Santillí, Calos Adolfo
CI: 20.776.875
Telf.: (0414) 0602398
uru.carlosmontes@gmail.com
Tutor Académico
1
DEDICATORIA
Principalmente a mis padres que brindaron siempre un gran apoyo emocional
y económico durante toda mi carrera, a mi madre por estar siempre recordándome
de mis deberes como estudiante y a mi padre por estar siempre dándome la
confianza para seguir adelante como futuro ingeniero Y a todas esas amistades que
creé, se mantuvieron y siempre estuvieron conmigo en las buenas y en las malas,
en especial a aquellas que conformaron el grupo cuyo nombre siempre lo recordaré
como “Yaoi” o “Maikólicos”.
Orlando Cuabro
2
DEDICATORIA
Dedico este trabajo a mis padres por garantizar que nunca me faltara nada,
sobre todo la educación, y por haber comprado mi primer PlayStation en mi 6to
cumpleaños y a todos los desarrolladores de videojuegos, ya que gracias a ellos
desde una edad muy temprana supe exactamente a qué carrera quería dedicar mi
vida.
José Ortega
3
AGRADECIMIENTOS
Quisiera agradecer a mi familia por el constante apoyo que me han dado en
estos 4 años.
A mis amigos Felipe Peña, Carlos Barboza, Isabel Rincón, Sergio Portillo,
Majo, Luzmery, Gabriela Rodríguez y Carlos Prado, que hicieron de mi vida
universitaria una completa aventura que nunca olvidaré.
Un agradecimiento especial a Maikol Pirela por otorgarme todos esos
momentos de comedia y chalequeo que siempre necesitare en mi vida y que nunca
serán iguales.
A mi compañero de tesis y amigo José Ortega por acompañarme en los
momentos más desesperantes de mi carrera y salir victoriosos de ellos.
A mis compañeros y amigos de carrera que se estuvieron conmigo en esta
gran odisea donde hubo diversos confrontamientos, pero también momentos
alegres y divertidos.
A los profesores de la Universidad Rafael Urdaneta Carlos Montes,
Genyelber Acosta, Jubert Pérez y Nerio Villalobos por brindarme los conocimientos
necesarios para seguir con mi carrera profesional.
Orlando Cuabro
4
AGRADECIMIENTOS
A mis padres por estar dispuestos a ayudarme en todo lo que sea necesario
con tal de cumplir mis metas.
Agradezco a todos mis amigos de la escuela de computación por distraerme
constantemente del estrés de la vida y la universidad, los momentos de risa y
frustración: Andrea Rosales, Hernan Reyes, Orlando Cuabro, Luis Turcio, Pablo
Seijas, Andrés Medina, Edixon Vergel, Christian Chourio, Mariangely Loaiza.
A mis amigos más cercanos desde hace años: Cristian Moreno, Carlos Rivera
y Angel Rivera, las tres amistades inquebrantables que tengo.
A todos los maestros y profesores que he tenido a lo largo de mi vida, quienes
de una buena o mala manera me ayudaron a formar mi percepción del conocimiento
y aprendizaje que me llevado hasta este punto.
Finalmente, a mi mejor amiga Gabriela Rodríguez por estar allí cuando no
tenía a nadie más para apoyarme y acompañarme en buenos y malos momentos,
muchas gracias por tu amistad, una de las más significativas que he tenido.
}
José Ortega
5
ÍNDICE GENERAL
DEDICATORIA................................................................................................................................. 1
DEDICATORIA................................................................................................................................. 2
AGRADECIMIENTOS ..................................................................................................................... 3
AGRADECIMIENTOS ..................................................................................................................... 4
ÍNDICE GENERAL........................................................................................................................... 5
ÍNDICE DE FIGURAS ..................................................................................................................... 7
RESUMEN......................................................................................................................................... 9
ABSTRACT..................................................................................................................................... 10
INTRODUCCIÓN............................................................................................................................ 11
CAPÍTULO I.................................................................................................................................... 14
1. PLANTEAMIENTO DEL PROBLEMA............................................................................. 14
2. FORMULACIÓN DEL PROBLEMA ................................................................................. 16
3. OBJETIVO GENERAL....................................................................................................... 17
4. OBJETIVOS ESPECÍFICOS ............................................................................................ 17
5. JUSTIFICACIÓN................................................................................................................. 17
6. DELIMITACIÓN TEMPORAL ........................................................................................... 19
7. DELIMITACIÓN ESPACIAL.............................................................................................. 19
8. DELIMITACIÓN CIENTÍFICA ........................................................................................... 19
CAPITULO II................................................................................................................................... 20
1. ANTECEDENTES .............................................................................................................. 20
2. BASES TEÓRICAS............................................................................................................ 22
2.1. Videojuego ................................................................................................................. 22
2.2. Géneros....................................................................................................................... 22
2.3. Elementos básicos................................................................................................... 34
CAPÍTULO III.................................................................................................................................. 37
1. NIVEL DE LA INVESTIGACIÓN ...................................................................................... 37
2. DISEÑO DE LA INVESTIGACIÓN................................................................................... 38
3. TÉCNICAS E INSTRUMENTOS DE OBTENCIÓN DE DATOS................................. 39
6
4. UNIDAD DE ANÁLISIS...................................................................................................... 40
5. METODOLOGÍA DE DESARROLLO.............................................................................. 40
6. FASES DEL PROYECTO ................................................................................................. 42
Capítulo IV...................................................................................................................................... 44
1. ANÁLISIS DE REQUERIMIENTOS BÁSICOS.............................................................. 44
1.1. REQUERIMIENTOS TÉCNICOS............................................................................. 44
1.2. REQUERIMIENTOS OPERATIVOS ....................................................................... 44
2. PLANIFICACIÓN ................................................................................................................ 45
3. DISEÑO ............................................................................................................................... 46
3.1. ELEMENTOS VISUALES Y MULTIMEDIA........................................................... 46
3.2. ESTRUCTURAS DE INFORMACIÓN .................................................................... 56
4. CODIFICACIÓN.................................................................................................................. 68
4.1. SERVIDOR.................................................................................................................. 68
4.2. UNIDADES DE JUEGO ............................................................................................ 71
5. Evaluación del funcionamiento del videojuego.............................................................. 84
5.1. Rendimiento............................................................................................................... 84
CONCLUSIONES........................................................................................................................... 86
RECOMENDACIONES ................................................................................................................. 88
BIBLIOGRAFÍA.............................................................................................................................. 89
7
ÍNDICE DE FIGURAS
FIGURA 1 FUENTE: HTTP://WWW.RESERV.COM.AR/IMAGES/SCRUM.JPG......................... 40
FIGURA 2 PLANIFICACIÓN. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA...................... 45
FIGURA 3 UNDERLING ANGEL. FUENTE: MIXAMO ANIMATION PACK .............................. 48
FIGURA 4 UNDERLING ANGEL. FUENTE: MIXAMO ANIMATION PACK .............................. 48
FIGURA 5 FUENTE:HTTP://SANMIGUELARCANGEL.INFO/GRUPOS-
COMUNIDADES/COMUNIDADES ............................................................................ 49
FIGURA 6 UNDERLING DEMON. FUENTE: MIXAMO ANIMATION PACK ............................. 50
FIGURA 7 UNDERLING DEMON. FUENTE: MIXAMO ANIMATION PACK ............................. 51
FIGURA 8 CHAMPION GANFAULT . FUENTE: MIXAMO ANIMATION PACK ......................... 52
FIGURA 9 CHAMPION GANFAULT. FUENTE: MIXAMO ANIMATION PACK.......................... 53
FIGURA 10 MAPA DE COMBATE 5V5. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA....... 54
FIGURA 11 MAPA DE COMBATE 5V5. VISTO DE PLANTA. FUENTE: ORLANDO CUABRO Y
JOSÉ ORTEGA................................................................................................... 55
FIGURA 12 DIAGRAMA DE USO DEL MENU PRINCIPAL. FUENTE: ORLANDO CUABRO Y JOSÉ
ORTEGA ........................................................................................................... 56
FIGURA 13 DIAGRAMA DE USO DURANTE MODO DE JUEGO. FUENTE: ORLANDO CUABRO Y
JOSÉ ORTEGA................................................................................................... 57
FIGURA 14 DIAGRAMA ENTIDAD RELACIÓN. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA
........................................................................................................................ 59
FIGURA 15 INICIO DE SESIÓN. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................. 62
FIGURA 16 REGISTRO. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA .......................... 62
FIGURA 17 MENÚ PRINCIPAL. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ................. 63
FIGURA 18 COMPONENTE DE COMPOSICIÓN DE EQUIPO: JUGADOR. FUENTE: ORLANDO
CUABRO Y JOSÉ ORTEGA................................................................................... 63
FIGURA 19 COMPONENTE DE COMPOSICIÓN DE EQUIPO. FUENTE: ORLANDO CUABRO Y
JOSÉ ORTEGA................................................................................................... 64
FIGURA 20 DISEÑO PRELIMINAR DE VENTANA DE LOBBY. FUENTE: ORLANDO CUABRO Y
JOSÉ ORTEGA................................................................................................... 64
FIGURA 21 COMPONENTE DE PUNTUACIÓN. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA
........................................................................................................................ 65
FIGURA 22 VENTANA DE ESTADO DE JUGADOR. FUENTE: ORLANDO CUABRO Y JOSÉ
ORTEGA ........................................................................................................... 66
FIGURA 23 BARRA DE ESTATUS DE CHAMPIONS. FUENTE: ORLANDO CUABRO Y JOSÉ
ORTEGA ........................................................................................................... 66
FIGURA 24 BARRA DE ESTATUS DE UNIT. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA 67
FIGURA 25 ÁRBOL DE COMPORTAMIENTO DE UNIT. FUENTE: ORLANDO CUABRO Y JOSÉ
ORTEGA ........................................................................................................... 74
8
FIGURA 26 UNDERLINGS EN COMBATE. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ... 76
FIGURA 27 ÁRBOL DE COMPORTAMIENTO DE TURRET. FUENTE: ORLANDO CUABRO Y
JOSÉ ORTEGA................................................................................................... 78
FIGURA 28 ÁRBOL DE COMPORTAMIENTO DE CHAMPION. FUENTE: ORLANDO CUABRO Y
JOSÉ ORTEGA................................................................................................... 83
9
Cuabro Briceño Orlando José, Ortega Díaz José Luís, “Videojuego de género
MOBA empleando un sistema de emparejamiento por nivel utilizando el
motor gráfico Unreal Engine”, Universidad Rafael Urdaneta, Facultad de
Ingeniería de Computación. Trabajo especial de Grado, Maracaibo Julio, 2016
RESUMEN
El presente trabajo de investigación tuvo como objetivo el desarrollo de un
videojuego de género MOBA empleando un sistema de emparejamiento por nivel
utilizando el motor gráfico Unreal Engine. La investigación fue de tipo aplicativa, con
un diseño de tipo no experimental o de campo. Se utilizaron las técnicas de
Observación directa y la recopilación de documentos para obtener la información
necesaria para la elaboración del videojuego. Se empleó la metodología de
desarrollo llamada Scrum, la cual implica la elaboración de módulos en distintas
iteraciones. Se empleó la Librería rest JAX-RS 2.0 en conjunto con Java como
lenguaje del servidor. Como lenguaje de desarrollo se empleó C++ complementado
por el editor Blueprints que posee Unreal Engine. Para el manejo de bases de datos
se utilizó PostgreSQL. Finalmente se realizaron evaluaciones de las respuestas del
servidor para llevar seguimiento de una correcta funcionalidad del juego, logrando
desarrollar un videojuego de género MOBA donde los usuarios pueden registrarse,
ver sus estadísticas de partida y jugar a su vez con otros jugadores en línea.
Palabras Clave: Videojuego, Unreal Engine, MOBA, Sistema
MatchMaking.
ocuabro@gmail.com - odiaz.jose@gmail.com
10
Cuabro Briceño Orlando José, Ortega Díaz José Luís, “MOBA Videogame using a
level based matchmaking on Unreal Engine” Universidad Rafael Urdaneta,
Facultad de Ingeniería de Computación.Degree Thesis, Maracaibo July, 2016.
ABSTRACT
This research aimed to develop a video game genre MOBA using a matching
system by level using the Unreal Engine. The research was of the aplicative type,
with a non-experimental design or field. Direct observation techniques and collecting
documents were used to obtain the information necessary for the development of
the game. Development methodology called Scrum was used, which involves the
development of modules in different iterations. The library rest JAX-RS 2.0 was used
in conjunction with Java for the backend. As for the development language, C++
along with the editor Blueprints supplemented by having Unreal Engine were used.
For databases management, PostgreSQL was used. Finally, the server responses
were used to check for the proper functionality of the game, achieving the
development of a MOBA videogame where users can register, see their own game
statistics and play with other players online.
Key words: Videogame, Unreal Engine, MOBA, Matchmaking System.
11
INTRODUCCIÓN
A lo largo de las últimas décadas, se han podido observar una gran cantidad
de cambios dentro de la industria de los videojuegos. Al principio, solo existían
juegos donde una sola persona podía interactuar mediante un control, con un
entorno gráfico. Luego con el auge de la tecnología y la salida de la nueva rama en
cuanto a diseños de entornos informáticos, se logró dar una forma a cada
componente del mismo, incluyendo un factor de estética dentro de estos métodos
de entretenimiento.
Con el paso del tiempo y gracias a la sorprendente evolución de las
computadoras los videojuegos fueron creciendo en cuanto a su contenido y
diversificándose a su vez, dando como resultado la creación de distintos géneros a
partir de los cuales, la industria de videojuegos se ha surtido de distintas entregas
que marcaron en la historia de los mismos. Desde juegos de plataformas como
“Super Mario Bros”, hasta juegos de realidad virtual como aquellos diseñados para
el “Oculus Rift”; se han podido observar una numerosa cantidad de géneros que
han dominado dicho el mercado de los videojuegos.
A su vez, la aparición de nuevas herramientas de desarrollo, han permitido la
creación de diversas entregas que han incursionado dentro de este mercado tan
extenso. Entre estas herramientas resalta el motor gráfico Unreal Engine, el cual ha
permitido a los programadores la posibilidad de crear un videojuego desde cero y a
su vez, promoviendo el desarrollo independiente de estos.
Dentro de estos géneros se destacan los “Multiplayer Online Battle Arena”
mejor conocidos por sus acrónimos de MOBA. Estos derivados de los RTS (Real
Time Strategy o videojuegos de estrategia en tiempo real) han marcado su pie
12
dentro de la historia de los videojuegos, cambiando a su vez la manera en como el
público general reacciona ante estos, llegando al punto de transformar el arte de
jugar un videojuego en un deporte. Como es el caso de League Of Legends y
Defense Of The Acients 2, los cuales son considerados como los máximos
exponentes de este género, a su vez como los dos más populares y exitosos
videojuegos de género MOBA.
Sin embargo, pese a esta popularidad el desarrollo de este género se ha visto
muy escaso, por lo que una respectiva documentación resulta complicada de
encontrar. Esto yace en el reciente surgimiento de este género.
Este trabajo busca desarrollar un videojuego de género MOBA, donde los
jugadores logren registrar una cuenta y conectarse a ella. A su vez, estos podrán
entrar en una cola donde un sistema de matchmaking los conectará con otros
jugadores en línea de acuerdo al nivel de sus respectivas cuentas empleando el
motor gráfico Unreal Engine; permitiendo tener una documentación sobre el
desarrollo de este género.
La estructura de investigación se realizó en cuatro capítulos, los cuales son
descritos a continuación para dar una breve referencia. En el capítulo I se plantea
el problema a tratar, su formación, los objetivos que marcarán las actividades a
desempeñar a lo largo del proyecto, la justificación de la presente investigación y la
delimitación de la misma.
En el capítulo II consiste del Marco Teórico, y en éste se reflejan las bases
de la investigación, tales como teoría vital para la realización del proyecto, aportes
y trabajos previos a la investigación, al igual que términos básicos que sirven de
13
sustento para la justificación de la misma. Finalmente se discuten las variables del
estudio.
El capítulo III refleja todo lo relacionado con la metodología utilizada para el
trabajo. Se explican el nivel y diseño de la investigación empleados, la técnica de
recopilación de información y la metodología de desarrollo a emplear, mencionando
las fases que esta abarca para la ejecución del proyecto.
Finalmente, en el capítulo IV se describen los resultados de los objetivos
planteados de acuerdo a la metodología seleccionada para el desarrollo del
videojuego de género MOBA.
14
CAPÍTULO I
EL PROBLEMA
1. PLANTEAMIENTO DEL PROBLEMA
Gracias a los avances tecnológicos del siglo XX, fue posible la creación de
las primeras computadoras electrónicas en la década de 1940 con el propósito de
solucionar problemas matemáticos complejos como descifrado de códigos.
Algunos años después de la creación de las computadoras, los primeros
videojuegos fueron creados en laboratorios de universidades o en institutos de
investigación debido al alto costo para el público general y ocupaban grandes
espacios. A medida que la tecnología avanzaba, las capacidades de procesamiento
de los computadores fueron incrementando, sus tamaños y los costos de los
componentes electrónicos fueron reduciendo, lo que los hizo más accesibles con el
paso del tiempo.
Por primera vez, en la década de 1970, surgen los primeros videojuegos
comerciales y las consolas de videojuegos para el entretenimiento casero, las
cuales fueron durante varios años el único medio económicamente accesible a los
videojuegos hasta la proliferación de los computadores personales dirigidos al
público general.
El desarrollo de videojuegos es un área más del desarrollo de software con
fines recreativos, de entretenimiento, e incluso con usos educativos. En su inicio,
los videojuegos fueron muy sencillos en términos de funcionalidad e interacción, y
a medida la tecnología avanzaba su accesibilidad y complejidad se fue
incrementando videojuegos.
15
En el desarrollo de videojuegos, se cuenta con la participación de distintos
profesionales de diversas disciplinas y especialidades como programadores,
artistas, diseñadores, animadores, actores de voz, músicos, entre otros; estos
colaboran entre sí para crear un videojuego, lo que implica semanas, meses o años
de planeamiento, coordinación y desarrollo la varía dependiendo de la escala y
alcance del proyecto, entre otros factores.
Los videojuegos pueden ser clasificados en diversos géneros dependiendo
de las mecánicas implementadas en este, como, por ejemplo: carrera, disparos,
estrategia, acción, plataformas o incluso combinaciones de estos. Los géneros
sirven como herramientas para agrupar diferentes videojuegos a partir de sus
características, objetivos, interacciones y muchos otros factores.
El género Multiplayer online battle arena (MOBA) es considerado en sí mismo
como un sub-género de los videojuegos de estrategia en tiempo real o real-time
strategy (RTS) y consiste dos equipos que combaten entre sí, conformados por
jugadores y personajes no jugables o non-playable characters (NPCs) controlados
por una inteligencia artificial; con el objetivo de destruir la estructura principal del
equipo contrario.
Los MOBAs tuvieron sus orígenes en el videojuego Starcraft cuando Blizzard
Entertainment, su publicador, lanzó un paquete de edición de mapas con el cual
jugadores podían crear mapas especiales. Uno de esos mapas fue “Aeon of strife,”
creado por un jugador en 1998 y que fue la base de los MOBAs modernos, los
cuales se hicieron más y más populares con el paso de los años y en 2008 varias
compañías empezaron a notar el potencial económico de este género.
En un MOBA, cada jugador controla un “campeón” o “héroe” el cual posee un
conjunto de habilidades únicas cuya efectividad varía de acuerdo a la situación. Los
juegos se desenvuelven en un campo de batalla distribuido en líneas o carriles en
16
los cuales marchan oleadas de NPCs que asisten a los jugadores en el
cumplimiento del objetivo principal.
En Venezuela, gran parte de la sociedad ha demostrado desinterés en el
tema de los videojuegos y su desarrollo durante muchos años debido en parte a la
cultura deportista que caracteriza al país, así como también a la temática y estética
de muchos videojuegos, en especial durante sus primeros años, por lo que la
sociedad en general ha visto los videojuegos sólo como un método de
entretenimiento para niños y adolescentes.
Para este tipo de proyectos se requiere de una inversión para adquirir
computadores adecuados, herramientas, licencias, entrenamiento y demás, lo que
implica una considerable inversión de recursos; esto, en conjunto a la situación
económica de Venezuela y su marcada inestabilidad, desalienta tanto a personas
como estudios a iniciar un proyecto de esta naturaleza y optan por buscar otra área
a la que dedicarse.
En Venezuela, son pocas las instituciones educativas con programas de
estudio sobre el desarrollo de videojuegos y, en conjunto con los factores
anteriormente mencionados, limita notablemente la disponibilidad a la información
al respecto, por lo tanto, el objetivo de este trabajo de grado es el de promover el
crecimiento de la industria de los videojuegos en Venezuela desarrollando un
videojuego de género MOBA utilizando en motor gráfico Unreal Engine, que pueda
servir como base referencial para futuros proyectos relacionados con el esta área.
2. FORMULACIÓN DEL PROBLEMA
Tomando en cuenta lo antes señalado, se planteó la siguiente interrogante:
17
¿Cómo desarrollar un videojuego de género MOBA empleando un sistema
de emparejamiento por nivel utilizando el motor gráfico Unreal Engine?
3. 4OBJETIVO GENERAL
Desarrollar un videojuego de género MOBA empleando un sistema de
emparejamiento por nivel utilizando el motor gráfico Unreal Engine.
4. OBJETIVOS ESPECÍFICOS
 Analizar los requerimientos funcionales para el desarrollo de un videojuego de
género MOBA con sistema de emparejamiento por nivel utilizando el motor
gráfico de Unreal Engine.
 Realizar una estructura de datos que se ajuste al desarrollo de un videojuego
de género MOBA con sistema de emparejamiento por nivel utilizando el motor
gráfico de Unreal Engine.
 Diseñar una serie de personajes, entornos y demás aspectos visuales para el
desarrollo del videojuego.
 Realizar la codificación de cada funcionalidad requerida para el desarrollo de un
videojuego de género MOBA con sistema de emparejamiento por nivel
utilizando el motor gráfico de Unreal Engine.
 Evaluar el funcionamiento correcto del videojuego desarrollado.
5. JUSTIFICACIÓN
Sí bien en un inicio en la sociedad venezolana los videojuegos fueron
tomados un medio de entretenimiento infantil, con el paso del tiempo, los
videojuegos se han vuelto más y más comunes, estando presentes en diversas
18
plataformas como computadores, consolas y teléfonos a la vez que la sociedad en
general los ha aceptado gradualmente, permitiendo así la proliferación de estos,
cuya industria crece continuamente y representa buenas oportunidades de empleo
y negocio para profesionales de diversas áreas. Algunos géneros de videojuegos
han llegado incluso a ser considerados deportes por muchos a nivel mundial,
realizando torneos por cientos de miles de dólares por organizaciones como la Major
League Gaming (MLG).
En el ámbito social, esta investigación busca incentivar a aquellos
interesados en los videojuegos y su desarrollo a incursionar en esta área, sirviendo
como una base o referencia para proyectos futuros y de este modo fomentar el
desarrollo de la industria de los videojuegos en Venezuela.
La elaboración de un videojuego puede tardar semanas, meses o años
dependiendo de la escala de este, adicionalmente, se requiere una gran inversión
de muchos otros recursos, sin embargo, la elaboración exitosa de un videojuego
de género MOBA logra una remuneración que puede superar con creces a la
inversión inicial, como es el caso del videojuego League of Legends, el cual ha
logrado obtener una ganancia de aproximadamente $624 millones durante el 2013
y $964 millones entre enero-septiembre del 2014 (Andy Chalk, 2014), entrando así
en la lista de juegos con mayores ganancias a nivel mundial.
En el área teórico-metodológica, este trabajo de investigación servirá como
base para futuros proyectos relacionados con el proceso de desarrollo de
videojuegos y aquellos interesados en el uso del motor gráfico Unreal Engine.
Adicionalmente, también servirá como referencia para futuros proyectos cuyos
objetivos sean similares o relacionados a los objetivos de esta investigación.
En cuanto al aspecto tecnológico, se hará uso del motor gráfico Unreal
Engine y de las herramientas que esta tecnología ofrece para el desarrollo de
19
diversos aspectos del juego, desde los ambientes presentes en el videojuego hasta
la inteligencia artificial; así como también de recursos accesibles de forma gratuita
gracias al Marketplace disponible para Unreal Engine en la plataforma de Epic
Games.
6. DELIMITACIÓN TEMPORAL
La investigación se llevará a cabo durante el período de Septiembre (2015)
– Julio (2016).
7. DELIMITACIÓN ESPACIAL
El desarrollo del videojuego, tendrá ubicación en la Universidad Rafael
Urdaneta localizada en la Av. 2, el Milagro con calle 86, entrada sur del parque La
Vereda del Lago, Maracaibo, estado Zulia.
8. DELIMITACIÓN CIENTÍFICA
El estudio se circunscribió al ámbito de la Ingeniería de Computación, en las
áreas de Ingeniería de Software y Computación Gráfica, específicamente en las
sub-áreas de programación de videojuegos.
20
CAPITULO II
MARCO TEORICO
1. ANTECEDENTES
El desarrollo de videojuegos ha sido objetivo de diversas investigaciones a lo
largo del siglo XXI, entre dichas investigaciones se pueden encontrar distintas
problemáticas que han sido planteadas por sus autores y las cuales se mencionan
a continuación.
Grant (2015), en su tesis titulada Desarrollo de un videojuego de navegador
web de género novela visual con distribución móvil para optar por el título de
ingeniero de computación, en la universidad Rafael Urdaneta, Venezuela, explica
los distintos tipos de videojuegos que se han creado a lo largo del año, logrando
exaltar un repentino auge de nuevas tecnologías y géneros dentro del desarrollo de
los videojuegos. Entre sus objetivos expone la búsqueda del desarrollo de un
videojuego de un género relativamente nuevo, con el fin de brindar una nueva forma
de entretenimiento a la sociedad. Ella concluye que, después de realizado el
respectivo proceso de recolección de datos, planificación, diseño y evaluación, logró
el acometido planteado en sus objetivos, desarrollando exitosamente un juego
dentro de los márgenes del el género de videojuego propuesto.
La investigación de Grant posee información que es de sumo interés para
este proyecto, dado a su empleo de una metodología (SCRUM), de igual manera
que este proyecto. A su vez, Grant exhibe variadas formas de desarrollo de un
videojuego y como su investigación, habiéndose ocupado de un género
relativamente reciente en comparación con otros, es aceptado dentro de la
sociedad.
Fuenmayor y Sotolongo (2015), realizaron un trabajo de investigación bajo el
nombre de Desarrollo de un juego de estrategia por turnos con capacidad
multijugador utilizando el motor gráfico UNITY, para alcanzar sus respectivos títulos
de ingeniero de Computación en la universidad Rafael Urdaneta, Venezuela. En ella
exponen como objetivos el incursionar en el campo de desarrollo de videojuegos en
Venezuela, mediante el desarrollo de un videojuego de estrategias en una
plataforma web, logrando examinar las funcionalidades que conllevan al desarrollo
de este, así como una pequeña descripción de cómo se puede emplear una
mecánica de juego basado en estrategias para el desarrollo del mismo.
En sus conclusiones mencionaron que el desarrollo de su videojuego fue
exitoso, empleando la metodología SCRUM la cual describen como “una
metodología que consiste en trabajar por módulos y realizarlos en varias iteraciones
de alrededor de dos semanas cada uno”. A su vez, el trabajo de Fuenmayor y
Sotolongo proveen una experiencia acerca del desarrollo de videojuegos. Entre
estos destaca la implementación de un sistema de multijugador que permite una
conectividad asíncrona con el servidor para que distintas personas logren jugar una
misma partida.
Sarmiento (2015), realizó un trabajo de investigación titulado Desarrollo de
un videojuego del género survival horror implementando el motor Unreal Engine
para obtener el título de ingeniero de computación en la universidad Rafael
Urdaneta, Venezuela. En su investigación explora las distintas funcionalidades que
presenta el motor gráfico Unreal Engine, llevando a cabo el desarrollo de un demo
de un videojuego horror acuático. También señala que, en la actualidad, la calidad
de los videojuegos está altamente relacionada con el nivel de procesamiento y
capacidad gráfica que poseen las nuevas computadoras.
Sarmiento argumenta que los nuevos avances en el desarrollo terminan
brindando un nivel de realidad tan avanzado que el hecho de incrementar el número
de polígonos que posee un modelo resulta hasta indiferente para el ojo humano a
22
partir de cierto punto, prácticamente malgastando recursos que podrían
aprovecharse en diferentes aplicaciones. Dicho poder de procesamiento restante
podría invertirse en técnicas de generación por procedimientos de mundos y otros
elementos que participen en la elaboración del videojuego.
Entre sus conclusiones, señala que pudo determinar los requerimientos
técnicos y operativos para el desarrollo y funcionamiento de un videjouego, así
como el uso de distintas herramientas de diseño como son World Maker, Blender,
entre otros; para trabajarlas en conjunto con el motor gráfico Unreal Engine y lograr
la elaboración videojuego. El trabajo de Sarmiento brinda una gama de
conocimientos en cuanto al uso del motor gráfico Unreal Engine enfocándose en la
cuarta versión del mismo, la cual se conoce como Unreal Engine 4, y ello representa
un gran aporte para la presente investigación el cual utiliza la misma versión del
motor gráfico anteriormente mencionado.
2. BASES TEÓRICAS
2.1.Videojuego
Según Alegsa (2008), “un videojuego es aquel tipo de juego que consiste en
la interacción de un jugador con cualquier interfaz de usuario gráfica con el fin de
generar una respuesta visual y sonora en dicho dispositivo de juego”. A su vez, el
concepto de videojuego hace referencia a cualquier tipo de juego que se visualiza
y juega en algún dispositivo de salida, ya sea una pantalla gráfica, mediante una
plataforma, así sea un dispositivo al que se le ha añadido la capacidad para
reproducirlo, como una computadora personal, o un aparato creado con el sólo
objetivo de ello, como una consola de videojuegos.
2.2.Géneros
De acuerdo con Gil (2009), existen distintas clasificaciones para los
videojuegos, las cuales contienen a su vez distintas subdivisiones. Entre estas se
23
encuentran un agama extenso de géneros y subgéneros que se intercalan entre sí
al exponer un producto final, pues en la actualidad se puede admirar la manera en
la que un juego, utilizando atributos de dos o más géneros diferentes, crea una
experiencia singular y, a su vez, otro género más. Por lo anteriormente mencionado,
han sido expuestos exclusivamente los géneros de mayor relevancia para el manejo
de la presente información:
2.2.1. Acción/Aventura
Son aquellos en los que el jugador mantiene una constante interacción con
el usuario. Generalmente estos obligan al jugador a valerse de sus reflejos,
apuntaría y demás habilidades para el cumplimiento de objetivos o simplemente la
ejecución del juego.
2.2.2. Disparos (FPS/TPS)
Se definen aquellos en el que el jugador tiene una vista en primera persona
sobre el ambiente en el interactúa utilizando un arsenal de armas para el
cumplimiento de distintos objetivos ambientados generalmente en algún tipo de
guerra o tema militar.
2.2.3. Deporte
Se presentan como aquellos juegos que simulan un deporte de la vida real,
donde pueden estar incluidas todas las reglas oficiales de estos o hacer una simple
referencia de estas. En este género se emplea una inteligencia artificial cuya
complejidad queda determinada por el tipo de deporte que queda representado
dentro del juego.
24
2.2.4. Plataformas
Este género se caracteriza por presentar elementos de otros géneros como
acción y aventura, con la particularidad que se presentan mediante una vista de
desplazamiento horizontal o vertical, donde el jugador tiene que evitar diversos
obstáculos y enemigos desplazándose entre plataformas para lograr su objetivo.
2.2.5. Estrategias
En estos, al jugador se le conceden una serie de recursos y una vista global
del mapa donde este se verá obligado a desempeñar distintas estrategias y tácticas,
ya sean en equipo o individuales, que le permitirán cumplir con su objetivo. En este
género, el jugador posee una visión general del mapa y una localización de objetivos
principales y secundarios en un HUD (Despliegue de Información sobre la partida)
así como la barra de vida de cada unidad, cantidad de recursos, tiempo de juego,
entre otros.
2.2.6. MOBA
Dos equipos compuestos por jugadores y personajes no jugadores (NPC) se
enfrentan en un campo de batalla que se compone de diferentes caminos –también
conocidos como líneas–, separados entre sí por áreas especiales conocidas como
“junglas”. Cada equipo posee una base en puntos opuestos del mapa de donde
surgen NPCs que asistirán a los jugadores en el cumplimiento del objetivo principal,
el cual es la destrucción de la base del adversario.
Los jugadores controlan unidades con características y habilidades
especiales cuyo nombre varía dependiendo del contexto de la historia, sin embargo,
comúnmente son llamadas “campeones.”
25
2.2.7. Motor de juego
El motor de juego puede ser descrito como la estructura sobre la que se
desarrollan los videojuegos. La funcionalidad de un motor de juego puede ser menor
o mayor, dependiendo del propósito para el que este sea desarrollado, las
necesidades de los desarrolladores, los recursos disponibles y el alcance del
proyecto, por lo que es difícil concretar una definición sobre estos, sin embargo, es
común que un motor de juego sea el software que determina cómo se renderiza un
videojuego, cómo se reproducen la música y los sonidos, la física y su interacción
con los elementos en el mundo, cómo son manejadas las conexiones entre
jugadores y los datos relevantes para videojuegos en línea, las interfaces de control
para el usuario, el procesamiento de eventos, gestión de recursos, provee
herramientas de desarrollo, animación y creación de mundos, entre otros.
2.2.7.1. Unreal Engine
Unreal Engine 4 es una suite completa de herramientas de desarrollo de
juegos hecha por Epic Games para los desarrolladores de juegos, sean
independientes. Desde juegos móviles en 2D a superproducciones para consola,
Unreal Engine 4 ofrece todo lo que necesita para empezar, llevar al mercado, crecer
y destacar entre la multitud. Nuevas características de flujo de trabajo
revolucionarias y un conjunto de herramientas profunda ayudan a los
desarrolladores para iterar rápidamente en las ideas y ver resultados inmediatos,
mientras que el acceso C++ código fuente completo trae la experiencia a un nivel
completamente nuevo. Es necesario conocer el entorno del Unreal Engine para
incursionar en el desarrollo de videojuegos con este motor.
26
2.2.7.1.1. Plataformas
En Unreal Engine 4, los proyectos pueden ser desarrollados para diversos
sistemas de manera simultánea, también llamados plataformas. Cada plataforma
tiene diferentes grados de funcionalidad y límites.
Las plataformas soportadas por Unreal Engine 4 son:
 Dispositivos móviles: Específicamente Android y iOS.
 Dispositivos de realidad virtual: Samsung Gear, Oculus Rift, SteamVR
y otros.
 HTML5
 Linux.
 Mac OS X.
 Windows.
 PlayStation 3 y 4.
 Xbox.
2.2.7.1.2. Licencias
Las licencias determinan el nivel de acceso a la funcionalidad de un software,
los permisos, obligaciones, limitaciones que el usuario de dicho software tiene sobre
el producto creado con este, la distribución del software en cuestión, entre otros.
La licencia de uso para Unreal Engine 4 permite a los desarrolladores
comercializar el contenido creado con Unreal Engine, quienes deberán pagar a Epic
Games regalías de 5% de los ingresos netos sólo sí este produce más de $3000 en
ingresos. Los desarrolladores tienen acceso a plantillas, contribuciones de la
27
comunidad, actualizaciones, código fuente y a toda la funcionalidad de Unreal
Engine, sin embargo, cualquier modificación hecha al código fuente no puede ser
comercializada y cualquier recurso distribuido específicamente para uso en Unreal
Engine no puede ser utilizado en ningún otro Game Engine, sin excepciones.
2.2.7.1.3. Proyecto
El proyecto es la unidad que contiene todo el contenido y código que
constituye un videojuego individual, y coincide con un conjunto de directorios que
son almacenados en el disco duro.
2.2.7.1.4. Objeto
Los elementos base en Unreal Engine se llaman Objetos y contienen la gran
parte de la funcionalidad de los elementos de juego. En Unreal Engine 4 todo hereda
(u obtiene parte de la funcionalidad) elementos de un Objeto.
2.2.7.1.5. Clase
Una clase define los comportamientos y propiedades de un Actor u Objeto en
particular utilizado en la creación de un juego con Unreal Engine. Las clases son
jerárquicas, lo que significa que una clase hereda información de sus clases padre
y pasa esta información a sus clases hijo.
2.2.7.1.6. Actor
Un Actor es cualquier objeto que pueda ser colocado en un nivel. El Actor es
una Clase genérica que soporta transformaciones 3D tales como traslación,
rotación, y escala. Estos pueden ser creados y destruidos a través de código de
juego como C++ o Blueprints.
28
2.2.7.1.7. Componente
Un componente es una pieza de funcionalidad que puede ser añadida a un
Actor. Los componentes no pueden existir por sí mismos, pero cuando estos son
agregados a un Actor, el Actor tendrá acceso y funciones suministradas por el
Componente.
2.2.7.1.8. Peón
Un Peón es una subclase de Actor y sirve como el avatar o persona, por
ejemplo los personajes en un juego. Los peones pueden ser controlador por un
jugador o por el AI del juego, en forma de personajes no jugador (NPC).
2.2.7.1.9. Personaje
Un Personaje es una subclase del Actor Peón cuyo propósito es ser utilizado
como un personaje jugador. La subclase Personaje incluye colisiones, controles
para movimiento bípedo, y código adicional para el movimiento controlado por el
jugador.
2.2.7.1.10. Player Controller
La Clase PlayerController es utilizada para obtener entradas de control del
jugador y traducirlas en interacciones dentro del juego. Todos los juegos tienen al
menos un PlayerController en el. Un PlayerController a menudo posee un Peón o
Personaje como una representación del jugador dentro del juego.
29
2.2.7.1.11. AI Controller
Así como el PlayerController posee un Peón como una representación del
jugador en un juego, un AIController posee un Peón que representa un personaje
no jugador (NPC) dentro del juego. Por defecto, los Peones y Personajes terminan
con una AIController base a menos que específicamente tengan un PlayerController
o se les especifique que no tengan un AIController.
2.2.7.1.12. Brush
Una Brush es un Actor que describe un volumen 3D que es colocado en un
nivel para definir la geometría del mismo (referidos como BSP) y los volúmenes de
juego. Usualmente se utilizan Brushes BSP para crear prototipos de nivel para
pruebas de jugabilidad.
Los Volumes (volúmenes), por otro lado, tienen distintos usos dependiendo
de los efectos que se deseen sobre ellos, como Blocking Volumes (los cuales son
invisibles y se utilizan para prevenir que los actores no pasen a través de ellos),
Pain Causing Volumes (causan daño con el tiempo a cualquier jugador que pase
por encima) o Trigger Volumes (usados para llamar eventos cuando un Actor entra
o sale de ellos).
2.2.7.1.13. Niveles
Un nivel es un área definida por el usuario creador. Los niveles son creados,
vistos y modificados principalmente mediante la colocación, transformación, y
edición de las propiedades de los Actores que contiene. Como los niveles son
guardados como archivos. umap los niveles también son llamados Mapas.
30
2.2.7.1.14. Mundo
Un Mundo contiene una lista de Niveles los cuales son cargados Se encarga
del orden de los niveles y de la creación de Actores dinámicos. La interacción directa
con el Mundo no es necesaria, pero ayuda a proveer un punto específico de
referencia dentro de la estructura del juego.
2.2.7.1.15. Game Mode (Modalidad de juego)
La Clase GameMode se encarga de fijar las reglas del juego. Las reglas
pueden incluir cuantos jugadores se pueden unir a la partida, si un juego puede ser
pausado o no, al igual que cualquier comportamiento especifico de juegos como las
condiciones de victoria. En juegos multijugador, el GameMode solo existe en el
servidor y las reglas son replicadas (enviadas) a cada uno de los clientes
conectados.
2.2.7.1.16. Player State (Estado del jugador)
Un PlayerState es el estado de un participante dentro del juego, ya sea un
jugador humano o un NPC simulando ser un jugador. Un ejemplo apropiado de
PlayerState sería el nombre o puntuación del jugador, su nivel o vida actual, o si
llevan la bandera en un juego de Capturar la Bandera.
2.2.7.1.17. Unreal Editor
El Unreal Editor, también llamado UnrealEd, es el editor de niveles utilizado
para crear niveles de un juego basado en el Unreal Engine. Para poder trabajar con
el Unreal Editor, es necesario saber cuáles son sus componentes.
31
2.2.7.1.18. Editor de niveles
El Editor de Niveles provee el nivel principal de la funcionalidad de creación
de niveles del Unreal Editor. Permite crear niveles, verlos, y modificarlos mediante
la colocación, transformación y edición de las propiedades de Actores. El editor de
Niveles se divide en varias secciones:
2.2.7.1.18.1. Barra de Pestañas
El Editor de Niveles posee una pestaña en la parte superior que muestra el
nombre del nivel que se está editando. Pestañas de otras ventanas podrán verse
junto a la pestaña activa para una rápida y fácil navegación, similar a un navegador
web. A la derecha se ve el nombre del proyecto actual.
2.2.7.1.18.2. Barra de Menús
La barra de Menús provee acceso a las herramientas generales y comandos
que se utilizan cuando se trabaja con niveles en el editor.
2.2.7.1.18.3. Barra de herramientas
El panel de Barra de Herramientas consiste de un grupo de comandos que
ofrecen acceso rápido a las herramientas más utilizadas y operaciones más
comunes.
2.2.7.1.18.4. Viewport
El Viewport permite ver las creaciones a tiempo real. Contiene un conjunto
de vistas que pueden ser maximizadas para ocupar el panel completo en una de
tres perspectivas posibles (Desde Arriba, Desde un Lado o Desde el Frente).
32
2.2.7.1.18.5. Panel de detalles
El panel de Detalles contiene información, utilidades y funciones específicas
a la selección actual en el Viewport. Contiene campos de edición para mover, rotar
y asignar una escala a los Actores, muestra todas las propiedades editables de los
Actores seleccionados y ofrece un acceso rápido a funcionalidades adicionales de
edición dependiendo de tipo de Actor(es) seleccionados en el Viewport.
2.2.7.1.18.6. Panel de modos
El panel de modos contiene una selección de herramientas de edición. Estas
herramientas cambian el comportamiento primario del Editor de Niveles para una
tarea especializada, como insertar nuevos elementos al mundo, crear Brushes y
Volumes, pintar objetos, generar plantaciones y esculpir paisajes. Los iconos
representan.
2.2.7.1.18.7. Esquematizador de mundos (World Outliner)
El Esquematizador de Mundo muestra todos los Actores dentro de la escena
en un árbol jerárquico. Los Actores pueden ser seleccionados y modificados
directamente en el Esquematizador de Mundo. También se dispone de una columna
extra que muestra los Niveles, Etiquetas o Identificadores. Entre las herramientas
se encuentran:
 Modo de colocación de Actores
 Modo de Pintura
 Modo de Escultura de Paisajes
 Modo de Plantación
 Modo de Edición de Geometría.
33
2.2.7.1.18.8. Capas
El Panel de capas permite organizar los Actores dentro del Nivel. Ofrecen la
posibilidad de seleccionar de forma rápida al igual que controlar la visibilidad de
grupos de Actores relacionados. Permite esconder elementos de una escena
dejando solo los actores con los que se esté trabajando.
2.2.7.1.18.9. Árboles de comportamiento
Es una herramienta utilizada para describir gráficamente y programar el
comportamiento de un actor a través de inteligencia artifical. Está conformado por
dos partes:
 Blackboard (pizarra o tablero de datos): Constituye la memoria de la
inteligencia artificial, almacenando datos en forma de pares de llave-valor
(key-value pairs).
 Árbol de comportamiento: Constituye el procesador de la inteligencia
artificial. Toma decisiones y actúa de acuerdo a ellas. Dentro del árbol de
comportamiento existen tres tipos de procesos que pueden ser
realizados: decoradores o condiciones (decorators), denotados con un
color azul oscuro; servicios (services), los cuales son nodos de color
verde marino; y tareas (tasks), nodos de color morado; a su vez, existen
tres ramas de procesamiento para la realización de diferentes tareas:
selectores (selector), los cuales reportan éxito siempre y cuando una de
sus tareas o ramas tengan éxito; las secuencias (sequences), las cuales
reportan éxito sí y sólo sí todas sus ramas o procesos son exitosos; y
finalmente los paralelos simples (simple paralel), similares a los
selectores con la diferencia que pueden realizar una tarea de manera
simultánea a la ejecución de sus ramas o procesos propios.
34
2.3.Elementos básicos
2.3.1. PostgreSQL
Según Marc Gibert Ginestà y Oscar Pérez Mora en su libro Bases de datos
en PostgreSQL:
“PostgreSQL es un gestor de bases de datos orientadas a objetos distribuido
bajo la licencia BSD, cuyos orígenes se remontan a 1994 cuando en la
Universidad de Berkeley se desarrollaba el gestor de base de datos
POSTGRES el cual fue abandonado en favor del proyecto PostgreSQL.”
PostgreSQL es un gestor de base de datos multiplataforma de alto
rendimiento que fuertemente se apega al estándar ANSI-SQL:2008, es de código
abierto y posee interfaces de programación para los lenguajes C/C++, Java, .Net,
Perl, Python, Ruby, Tcl, ODBC, entre otros, lo que lo hace muy versátil y accesible.
2.3.2. SQL
Carme Martín Escofet en su libro El lenguaje SQL define: “El SQL es el
lenguaje estándar ANSI/ISO de definición, manipulación y control de bases de datos
relacionales” (p 5).
El lenguaje SQL o Lenguaje Estructurado de Consultas por su traducción al
español, es un lenguaje declarativo diseñado para la gestión de datos, debido a
esto, Escofet resalta que no es necesario especificar cómo se realiza el manejo de
la información, sólo cuál es el objetivo.
2.3.3. C++
Herbert Schildt en su libro Java:The complete reference explica que C++ es
un lenguaje de programación orientado a objetos creado por Bjarne Stroustrup
alrededor en 1979 mientras trabajaba en Bell Laboratories para extender las
capacidades del lenguaje C. Es uno de los lenguajes de programación con mayor
35
popularidad debido a su flexibilidad y que hereda todas las características y
beneficios del lenguaje C, como lo es su bajo nivel y alto rendimiento.
Los proyectos desarrollados con Unreal Engine 4 son compilados a código
C++, lo que permite a los desarrolladores hacer el mejor uso posible de los recursos
y capacidades de cada dispositivo.
En Unreal Engine 4 el comportamiento y las propiedades de los objetos
pueden ser programados directamente en C++, extendiendo las capacidades del
motor gráfico más allá del sistema de programación gráfica por blueprints.
2.3.4. JAVA
Herbert Schildt en su libro Java:The complete reference describe Java como
un lenguaje de programación creado por Sun Microsystems en 1991 originalmente
bajo el nombre de “Oak” con un enfoque en la independencia del dispositivo en que
se ejecuta. Schildt expresa que Java está cercanamente relacionado con C y C++,
heredando la sintaxis de C e influenciado por C++ en sus características orientadas
a objetos.
Patrick Niemeyer y Daniel Leuckes en su libro Learning Java, describen Java
como un lenguaje compilado e interpretado, “diseñado como un lenguaje
independiente del dispositivo lo suficientemente seguro para cruzar las redes y lo
suficientemente poderoso para reemplazar código nativo ejecutable.”
Definimos entonces Java como un lenguaje de programación orientado a
objetos, multiplataforma que sigue una filosofía de “Write once, run anywhere” que
significa “Escríbelo una vez, ejecútalo donde sea”, debido a que es interpretado por
una máquina virtual que traduce el código de bytes (bytecode) al código
comprendido por el computador donde se ejecuta. Hoy en día, Java es un lenguaje
muy popular en el desarrollo de aplicaciones web, particularmente en el lado del
servidor.
36
2.3.5. REST
Constituye a la arquitectura de software existentes para los sistemas de
hipermedia distribuidos. Este describe cualquier interfaz donde exista una
transmisión de datos mediante HTTP ya sea en formato de JSON, XML, entre otros;
sin abstracciones adicionales.
2.3.5.1. VaREST
Es un plugin especial para Unreal Engine 4 que permite realizar
comunicaciones mediante REST. Este es manejado mediante Blueprints y no
requiere algún código adicional.
2.3.6. BLENDER
Blender es un programa de diseño en 3D completamente gratuito y Open
Source, el cual soporta cualquier tipo de modelado, animación, simulación,
renderización, composición y todo tipo de edición de video y entornos de
videojuegos.
CAPÍTULO III
MARCO METODOLÓGICO
En este capítulo se busca describir el tipo y diseño de la investigación, así
como las técnicas utilizadas durante la recolección de información, la unidad de
análisis y finalmente la metodología de desarrollo a utilizar, incluyendo cada una de
las fases contempladas dentro de estas.
1. NIVEL DE LA INVESTIGACIÓN
De acuerdo a la naturaleza y objetivos, este trabajo se puede ubicar dentro
del nivel de una investigación Aplicativa. Como menciona Padrón (2006):
La expresión "Investigación Aplicada" se propagó durante el siglo XX
para hacer referencia, en general, a aquel tipo de estudios científicos
orientados a resolver problemas de la vida cotidiana o a controlar
situaciones prácticas. Dentro de esa concepción general, pueden
distinguirse, a su vez, dos sentidos más específicos de dicha expresión:
Aquella que incluye cualquier esfuerzo sistemático y socializado por
resolver problemas o intervenir situaciones, aunque no sea programático,
es decir, aunque no pertenezca a una trayectoria de investigaciones
descriptivas y teóricas. En ese sentido se concibe como investigación
aplicada tanto la innovación técnica, artesanal e industrial como la
propiamente científica. O Aquella que sólo considera los estudios que
explotan teorías científicas previamente validadas para la solución
Dada la definición se puede confirmar que el nivel de la presente
investigación es aplicativo ya que el objetivo principal de la misma no es más que
la de desarrollar un juego de género MOBA con capacidad de multijugador y un
sistema de emparejamiento utilizando el motor gráfico Unreal Engine.
2. DISEÑO DE LA INVESTIGACIÓN
El diseño de una investigación consiste en el desglose de los diferentes
planteamientos que abarcan la planificación o diferentes estrategias, que se
tomaron en cuenta para el cumplimiento de los objetivos, así como la obtención de
los resultados.
Se entiende por Investigación de Campo, el análisis sistemático de
problemas de la realidad, con el propósito bien sea de describirlos,
interpretarlos, entender su naturaleza y factores constituyentes, explicar
sus causas y efectos, o predecir su ocurrencia; haciendo uso de métodos
característicos de cualquiera de los paradigmas o enfoques de
investigación conocidos o en desarrollo. Los datos de interés son
recogidos de forma directa de la realidad; en este sentido se trata de
investigaciones a partir de datos originales o primarios. Sin embargo, se
aceptan también estudios sobre datos censales o muestrales no
recogidos por el estudiante, siempre y cuando se utilicen los registros
originales con los datos no agregados; o cuando se trate de estudios que
impliquen la construcción o uso de series históricas y, en general, la
recolección y organización de datos publicados para su análisis mediante
procedimientos estadísticos, modelos matemáticos, econométricos o de
otro tipo.
Como objetivo principal se tiene el desarrollo de un videojuego, es decir, el
desarrollo de una aplicación con motivos de entretenimiento donde no existe
ninguna manipulación, modificación o algún tipo de alteración en las variables de
estudio, por lo que el diseño del trabajo de investigación presente es de Campo o
no experimental.
Para corroborar, se puede tomar en cuenta lo que definen Sata Palella y
Feliberto Martins (2010, pag.87), ellos definen al diseño no experimental o de
campo como aquel que se realiza sin ninguna manipulación de variables. En esta
el investigador no sustituye intencionalmente las variables independientes. Solo
recrea y observa los hechos tal y como se presentan en su contexto real y en un
tiempo determinado, para posteriormente analizarlos.
39
3. TÉCNICAS E INSTRUMENTOS DE OBTENCIÓN DE DATOS
Fariñas, Gómez, Ramos y Rivero (2010) mencionan: “Un instrumento de
recolección de datos es en principio cualquier recurso de que pueda valerse el
investigador para acercarse a los fenómenos y extraer de ellos información.” Lo que
implica que al uso de cualquier medio por el cual el investigador logre obtener
información referente a su fenómeno de estudio, puede ser considerado como un
instrumento de recolección de datos.
Para la recolección de datos en este trabajo de investigación, se optó por la
recopilación documental de aquellas personas que cumplieron con los objetivos que
se tenían planteados. Esta técnica se basa en la consulta de textos asociados al
tema principal de la investigación en un entorno web. Cada uno de los documentos
fueron analizados y estudiados para lograr obtener distinta información que no
puede ser encontrada en un entorno en general.
Finalmente se aplicó observación directa del proceso de desarrollo del
videojuego. Según el grupo Metodología (2010) “Es el conjunto de instrumentos y
medios a través de los cual se efectúa la investigación. La técnica es indispensable
en el proceso de la investigación científica, ya que integra la estructura por medio
de la cual se organiza la investigación” dado esto, se puede definir la Observación
directa como una técnica de investigación, ya que esta implica una forma por el cual
se lleva a cabo la investigación. En este caso, se aplica una observación enfocada
en el desarrollo del videojuego de género MOBA.
40
4. UNIDAD DE ANÁLISIS
Según Hurtado (2010 p. 267) “La Unidad de Análisis se refiere al ser o entidad
poseedora del evento que se desea estudiar; se definen de tal modo que a través
de ellas se puede dar una respuesta a la interrogante de la investigación”. Dada la
definición y al respectivo análisis de los eventos a estudiar, se determinó la unidad
de análisis de este proyecto como el videojuego de genero MOBA.
5. METODOLOGÍA DE DESARROLLO
La metodología empleada en el proyecto es la de Scrum. Esta consiste en un
proceso donde se aplican diferentes practicas donde el trabajo de equipo ayuda a
obtener los mejores resultados posibles para un proyecto. Cada practica ayuda a
su vez a la siguiente lo cual brinda una agilidad en cuanto a desarrollo de grandes
proyectos.
Para cumplir con lo establecido en la metodología de Scrum, se deberá
trabajar en ciclos de iteraciones llamados Sprints, donde se realizan un proceso de
análisis, diseño, desarrollo y evaluación del proyecto o entregable final.
Figura 1.Figura 1 Fuente: http://www.reserv.com.ar/images/scrum.jpg
41
La fase de análisis, consiste en la obtención de definiciones y requerimientos
funcionales para llevar a cabo el resto del proyecto. Estos requerimientos son
técnicos y operativos.
La fase de diseño, contempla el diseño de las distintas estructuras de datos
sobre los que descansa el videojuego. Dichas estructuras son los distintos
diagramas de uso que pueda presentar el proyecto, diagramas de despliegue,
diagramas de interfaces, entre otros. A su vez, Dentro del diseño está incorporado
todos los elementos visuales y/o de multimedia que pueda poseer el videojuego,
como los personajes, ambientes, mundos, sonidos, efectos, entre otros. Esta fase
sirve como guía para la cuarta fase de codificación.
42
La fase de codificación, viene dado por el proceso en el cual se crean todas
funciones y métodos que han sido diseñados en la fase anterior, utilizando las
herramientas de desarrollo elegidas durante la fase de análisis.
La fase de evaluación ocurre cuando se finaliza todo el proceso de
codificación. En esta, el programa es puesto a prueba para determinar su
efectividad mediante pruebas funcionales.
6. FASES DEL PROYECTO
 Analizar los requerimientos funcionales para el desarrollo de un videojuego de
género MOBA con sistema de emparejamiento por nivel utilizando el motor
gráfico de Unreal Engine.
 Definir las especificaciones necesarias de un computador para el uso del
motor gráfico Unreal Engine.
 Definir las características principales que presentará el videojuego MOBA.
 Determinar las funciones a codificar que contemplen el desarrollo del
videojuego MOBA.
 Definir que otras posibles herramientas se implementarán para la elaboración
del videojuego MOBA.
 Realizar una planificación del desarrollo de cada funcionalidad del videojuego
MOBA.
 Realizar un diagrama de Gantt presentando las actividades contenidas en la
planificación elaborada.
43
 Diseñar un videojuego de género MOBA con sistema de emparejamiento por
nivel utilizando el motor gráfico de Unreal Engine.
 Plantear el esquema del videojuego MOBA, su historia, personajes y
modalidad de juego, así como su arquitectura de software.
 Determinar un modelado de datos que se apegue al desarrollo del videojuego
MOBA.
 Crear un modelo de campo que mantenga consistencia con la historia del
juego.
 Crear un modelo de personaje que mantenga consistencia con la historia del
juego.
 Codificar cada funcionalidad creada para el desarrollo de un videojuego de
género MOBA con sistema de emparejamiento por nivel utilizando el motor
gráfico de Unreal Engine.
 Realizar la codificación del cliente que ejecutará el videojuego de género
MOBA desarrollado.
 Realizar la codificación del servidor que gestionara el juego.
 Evaluar el funcionamiento correcto del videojuego desarrollado.
 Plantear distintos casos para realizar una prueba de estrés.
 Realizar un test de estrés que determine el posible malfuncionamiento de
alguna de las funcionalidades del videojuego de género MOBA.
 Realizar las respectivas modificaciones para mejorar el desempeño y la
jugabilidad del videojuego de género MOBA
Capítulo IV
ANÁLISIS DE LOS RESULTADOS
En este capítulo se plasman los resultados de la investigación, los cuales
permiten dar respuesta a los objetivos planteados.
1. ANÁLISIS DE REQUERIMIENTOS BÁSICOS
Para el debido funcionamiento del videojuego de género MOBA, se realizan una
serie de recomendaciones sobre los requerimientos, tanto mínimos como óptimos
que debe poseer el equipo donde se ejecutará el nombrado juego.
1.1.REQUERIMIENTOS TÉCNICOS
 Computadora de escritorio o Laptop con Windows 7 o posterior. De
32 o 64 bits.
 Memoria RAM de 6GB.
 Tarjeta gráfica Nvidia GeForce GTX (Cualquiera de la familia GTX).
1.2.REQUERIMIENTOS OPERATIVOS
 Windows 7 o posterior.
 Servidor GlassFish 4.1.1
 Gestor de base de datos PostgreSQL 9.3 o superior.
 Unreal Engine 4.11 (Source Built)
 IDE Visual Studio 2015.
 NetBeans 8.1.2
 Librería rest JAX-RS 2.0 (Java).
2. PLANIFICACIÓN
Para el desarrollo del videojuego, se manejó una metodología de desarrollo
llamada Scrum. Éste consiste en distribuir todas las fases de desarrollo en módulos
entregables que determinan los a avances del mismo. Cada semana representa una
iteración de módulo del proyecto donde se buscar cubrir todos los entregables,
obteniendo un calendario donde queda plasmado la fecha de entrega de cada
“Release” o entregable. Para este proyecto se realizó una distribución de un módulo
por semana durante el período de Septiembre del 2015 hasta Julio 2016.
Figura 2 Planificación. Fuente: Orlando Cuabro y José Ortega
46
3. DISEÑO
Terminada la fase de planificación del cumplimiento de los objetivos para el
desarrollo del título de tesis. Se prosiguió a diseñar los distintos aspectos que
conforman un videojuego MOBA, por lo que se decidió observar distintos elementos
de este género con la finalidad de encontrar las bases con las cuales se
fundamentan un videojuego de género MOBA. Terminada la observación, se logró
concretar un diseño preliminar del videojuego, así como su jugabilidad.
Dicho diseño, servirá de guía para el proceso de codificación del mismo dando
apoyo al desarrollo de métodos y funciones que permitirán al jugador una rápida
adaptación al entorno del juego. Unreal Engine a su vez posee una tecnología capaz
de crear interfaces que van no solo para un entorno de escritorio, sino también para
distintas plataformas móviles (Smartphones, tablets, entre otros); y se extiende a
otros sistemas operativos como son iOS, Linux, Windows, entre otros.
3.1.ELEMENTOS VISUALES Y MULTIMEDIA
3.1.1. HISTORIA
Debido a la naturaleza de este género de videojuego, no se ha creado una
historia base que enrole a todo el juego. Se ha optado por el desarrollo de una
jugabilidad basada en el cumplimiento de objetivos tanto secundarios como
primarios que concedan la victoria sobre otros jugadores.
De acuerdo con los objetivos del proyecto, se busca en este trabajo de grado la
finalidad de crear un videojuego de género MOBA, el cual involucra elementos RTS
donde los jugadores buscan destruir un objetivo principal denominado “Nexus”. Para
el cual tendrán que enfrentarse a oleadas de “Underlings” (Unidades pequeñas y
débiles en comparación con los campeones) y a su vez a otros campeones
47
(Unidades mayores, controladas por otros jugadores), cumpliendo con objetivos
secundarios en su camino los cuales le otorgaran bonificaciones al equipo. En el
juego existen dos equipos definidos, los ángeles y los demonios.
3.1.2. PERSONAJES Y ESCENARIOS
Para los personajes (Underlings y Campeones) se utilizaron diferentes paquetes
de personajes prediseñados disponibles al público en general de forma gratuita,
entre los cuales resaltan los del usuario “Mixamo”, el cual contiene personajes con
sus esqueletos de animaciones ya configurados y una serie de animaciones básicas
común a todos los personajes.
Para la selección del “mesh” o estructura de esqueleto del personaje, se eligieron
aquellos entre el paquete del usuario mencionado anteriormente, cyos rasgos
físicos se asemejan a los rasgos fantasiosos de alguna de las dos facciones
existentes dentro del juego.
Dentro del equipo de los Ángeles, se empleó el personaje de “Maria” de Mixamo
el cual se muestra una imagen de su pose básica o idle y su esqueleto:
48
Figura 3 Underling Angel. Fuente: Mixamo Animation Pack
Figura 4 Underling Angel. Fuente: Mixamo Animation Pack
49
El personaje de María fue seleccionado debido a su gran parecido con el
arcángel San Miguel de las creencias católicas. El personaje “María” posee una
forma de cara y un color de armadura muy semejante al que lleva en la imagen a
continuación. El arcángel Miguel:
Figura 5 Fuente:http://sanmiguelarcangel.info/grupos-comunidades/comunidades
Este personaje representa dentro de la religión cristiana, el guardián de la iglesia
de Dios. Por lo que se decidió que los underlings del equipo de los ángeles tuviese
este rostro con la premisa de “Proteger el templo de Dios” el cual es representado
dentro del juego como el “Nexus” del equipo de los ángeles y objetivo principal de
los demonios.
50
Para el equipo de los demonios, se buscaba un aspecto general que se llevara
de la mano con la creencia general de estos, la cual son de “Criaturas humanoides
que tengan aspecto sobrenatural”. Por lo que se decidió utilizar el personaje
“Vampire” de Mixamo para ocupar el rol de los underlings de los demonios. A
continuación se mostrarán las imágenes del idle y esqueleto correspondiente a
dicho personaje:
Figura 6 Underling Demon. Fuente: Mixamo Animation Pack
51
Figura 7 Underling Demon. Fuente: Mixamo Animation Pack
Como se podrá observar “Vampire” posee una apariencia sobrenatural y su
combinación de colores (rojo, gris y negro) le ayudan a sembrar el ambiente de
“demonio” que se busca para el videojuego.
52
A parte de los underlings, también se tiene pensado seleccionar un personaje
para los champions. Sin embargo, dado que el videojuego no posee una historia de
la cual nutrirse para dar vida a sus personajes, se optó por el uso de un personaje
con apariencia “Neutra” el cual pudiese representar cualquiera de los dos bandos.
Este personaje es “Ganfault” el cual se muestra a continuación:
Figura 8 Champion Ganfault . Fuente: Mixamo Animation Pack
53
Figura 9 Champion Ganfault. Fuente: Mixamo Animation Pack
“Ganfault” tiene una apariencia mitad humana y mitad demoníaca, teniendo un
balance en cuanto a su facción. Por lo que los jugadores podrán jugarlo tanto en el
equipo de los ángeles como en el de los demonios.
54
Para el mundo y el entorno donde se desenvuelven las partidas del videojuego
MOBA se utilizó el editor de nivel, el cual brinda una gama de herramientas de
diseño de superficies y entornos en 3D que ayudan al usuario a montar un mundo
genérico donde las limitaciones vienen dadas por la creatividad del usuario.
También, se empleó Blender para el diseño de distintos componentes cuya
complejidad es mínima.
A continuación, se presentaran varias tomas del mundo creado denominado
“5v5” donde se lleva a cabo las distintas partidas:
Figura 10 Mapa de combate 5v5. Fuente: Orlando Cuabro y José Ortega
55
Figura 11 Mapa de combate 5v5. Visto de planta. Fuente: Orlando Cuabro y José Ortega
Para el diseño del campo, se tomó en cuanta la observación realizada de los mapas
de distintos juegos de género MOBA como son League Of Legends, Defense Of
The Acients y el mapa de Heroes of the Storm llamado “Garden Of Terror”. El mapa
posee tres líneas por donde se aparecen infinitas oleadas de underlings en un
determinado intervalo de tiempo. El jugador, podrá mover libremente su champion
por el mapa exceptuando los bordes del mismos y los obstáculos que en él se
encuentran.
56
3.2.ESTRUCTURAS DE INFORMACIÓN
3.2.1. DISEÑO DE DIAGRAMAS DE CASOS DE USO
Figura 12 Diagrama de uso del menu principal. Fuente: Orlando Cuabro y José Ortega
En el presente diagrama se muestran la interacción entre el usuario con
el videojuego. Dentro de este el usuario puede realizar distintas funciones
como se muestran en el diagrama. Entre estas se encuentran:
 Login: El usuario inicia sesión en una cuenta creada.
 Registro: Si el usuario no posee una cuenta, este realiza una
petición de registro y los datos llenados en el formulario son
guardados en la base de datos.
 Buscar una partida: El jugador busca un lobby o “Room” donde el
usuario cumpla las condiciones necesarias para unirse.
57
 Inicio de la partida: Un jugador en conjunto con otros 9,
comienzan a cargar el entorno del juego.
 Cerrar Sesión: El jugador cierra su sesión de su cuenta, volviendo
al menú principal del juego.
A continuación, se presenta el diagrama de casos de uso para la
jugabilidad de cada partida que se genera:
Figura 13 Diagrama de uso durante modo de juego. Fuente: Orlando Cuabro y José Ortega
 Inicio de partida: Los jugadores aparecen en la partida listos para
jugar.
 Destrucción de objetivos secundarios: Los jugadores intentan de
destruir todos los objetivos secundarios o torretas.
 Destrucción de objetivo primario: Los jugadores destruyen el
objetivo primario o “Nexus” para dar fin a la partida.
 Terminar Juego: A cada usuario se le muestra una información
sobre su victoria o derrota en el juego, terminando el juego.
58
3.2.2. DISEÑO DEL MODELO DE DATOS Y DIAGRAMA DE ENTIDAD
RELACIÓN
Para la estructura de base de datos, se utilizó el gestionador de bases
de datos PostgreSQL, donde se creó la base de datos “MOBA”. Como se
puede observar en la figura, ésta está compuesta por 2 tablas, “users” y
“statistics”.
Entre los campos de la tabla “Usuario” se tienen los siguientes campos:
 Id: Contiene la llave primaria de la tabla.
 Username: Contiene el nombre de usuario del jugador. El cual
utiliza para iniciar sesión.
 Password: Contiene la clave que utiliza el usuario para validar su
inicio de sesión dentro del juego.
 Name: Contiene el nombre por el que el jugador es reconocido
dentro de una partida.
 Registered_date: Fecha en la que el usuario fue registrado.
 Level: Nivel del jugador utilizado para el sistema de
emparejamiento.
 Experience: Experiencia acumulada a través de los juegos que
determina el nivel del jugador.
La tabla “statistics” abarca los siguientes campos:
 Id: Contiene la llave foránea de la tabla.
 wins: Contiene el número de victorias que el jugador ha obtenido
desde su registro.
 losses: Contiene el número de derrotas que el jugadore ha
obtenido desde su registro.
 kills: Contiene la suma de asesinatos que ha realizado el jugador
en todas sus partidas.
 deaths: Contiene la suma de las muertes que ha sufrido el jugador
en todas sus partidas.
59
 underling_kill: Contiene la suma de todos los asesinatos de
underlings y creeps que ha cometido el jugador en todas sus
partidas
 turret_Kills: Contiene la suma de todas las torretas que ha
destruido el jugador durante sus partidas.
La tabla “levels” abarca los siguientes campos:
 level: Llave primaria e indicador del nivel.
 experience: Cantidad de experiencia necesaria para alcanzar el
siguiente nivel.
Figura 14 Diagrama entidad relación. Fuente: Orlando Cuabro y José Ortega
60
3.2.3. DISEÑO DE DIAGRAMA DE DESPLIEGUE
En el presente trabajo se empleó una arquitectura de 2 niveles donde la
primera, es la capa de “Cliente” donde los usuarios interactúan con el
sistema mediante una interfaz gráfica. Luego, procede a la capa de
“Comunicación” donde son gestionadas cada una de las peticiones
realizadas por el jugador; estas comprenden el control de acceso,
matchmaking, instanciamiento de la partida y actualización de estadísticas
al finalizar una partida. Por último, la capa de “Comunicación” se comunica
con la capa de “Acceso a datos” donde se realizan los respectivos
almacenamientos de datos dentro del gestionador de bases de datos,
retornando todos los datos necesarios para el funcionamiento del juego.
3.2.4. DISEÑO DE DIAGRAMA DE INTERFACES
Con la ayuda de la herramienta de interfaz de Unreal llamada “Unreal
Motion Graphics (UMG)” se pudo obtener y crear un modelo de la interfaz
gráfica dentro del videojuego. Esta herramienta permite un rápido diseño de
61
interfaz donde cada componente posee sus propias funciones, las cuales
pueden se sobrescritas. Para el videojuego MOBA se decidió elaborar una
interfaz sencilla de botones e inputs que permitieran al usuario iniciar
sesión, buscar una partida, desconectarse y cerrar el juego, así como
también informarse del estado de la partida durante la misma y de los
jugadores que participan dentro de ella.
A continuación, se muestran las distintas pantallas utilizadas dentro del
videojuego:
62
Figura 15 Inicio de sesión. Fuente: Orlando Cuabro y José Ortega
Figura 16 Registro. Fuente: Orlando Cuabro y José Ortega
63
Figura 17 Menú principal. Fuente: Orlando Cuabro y José Ortega
Figura 18 Componente de composición de equipo: Jugador. Fuente: Orlando Cuabro y José Ortega
64
Figura 19 Componente de composición de equipo. Fuente: Orlando Cuabro y José Ortega
Figura 20 Diseño preliminar de ventana de lobby. Fuente: Orlando Cuabro y José Ortega
65
Figura 21 Componente de puntuación. Fuente: Orlando Cuabro y José Ortega
66
Figura 22 Ventana de estado de jugador. Fuente: Orlando Cuabro y José Ortega
Figura 23 Barra de estatus de champions. Fuente: Orlando Cuabro y José Ortega
67
Figura 24 Barra de estatus de Unit. Fuente: Orlando Cuabro y José Ortega
68
4. CODIFICACIÓN
Obtenidos los diferentes diseños del videojuego, se procede a la codificación del
mismo empleando diferentes herramientas de desarrollo que se han decidido
emplear para crear y cumplir con el objetivo planteado de este proyecto. Mediante
la metodología Scrum, se procedió a los períodos de desarrollo o también llamados
“Sprints” donde se establecieron todos los puntos lógicos y gráficos del proyecto. La
fase de desarrollo duró alrededor de 9 semanas donde su culminación viene dada
por el cumplimiento del segundo objetivo planteado en el presente trabajo de
investigación.
4.1.SERVIDOR
El servidor ofrece servicios REST para las comunicaciones con el cliente de
juego, el cual utiliza el plugin VaRest para la realización de pedidos. Los servicios
disponibles son: módulo de control de acceso llamado “AccountsResource”,
módulo de creación de partidas y matchmaking “GamesResource” y el módulo
de estadísticas “StatisticsResource”. Cuenta con un “Connection pool” de
manera que puede realizar múltiples transacciones simultáneamente a la base
de datos, mejorando así su escalabilidad.
El servidor dedicado Unreal consiste en una instancia del juego, sin ningún
proceso gráfico, que se ejecuta en segundo plano y realiza todos los procesos
lógicos de la partida: actualizar posiciones de jugadores, realizar cambios en las
variables, replicación de variables, inteligencia artificial, crear unidades del
juego, monitorear el progreso de la partida, es decir, toda la lógica esencial para
el flujo de la partida es realizada en esta instancia del juego.
El módulo de control de acceso está compuesto por los métodos de inicio de
sesión, cierre de sesión y registro.
69
 Inicio de sesión: Recibe como parámetros un nombre de usuario y una
contraseña, comprueba sus credenciales con la base de datos y sí el usuario
existe lo agrega a una lista de usuarios actualmente conectados, bloqueando
el acceso de esta cuenta hasta que se finalice la sesión. Retorna un JSON
conteniendo los datos del jugador tales como su nombre dentro del juego,
nivel, experiencia y un ID.
 Cerrar sesión: Recibe como parámetro el ID previamente asignado al jugador
y los elimina de la lista de usuarios conectados, permitiendo el acceso
subsecuente de dicho usuario.
 Registro: Recibe como parámetros un nombre de usuario, correo electrónico,
contraseña y un nombre a utilizar dentro del juego y lo agrega a la base de
datos sí el nombre de usuario o el correo electrónico no han sido previamente
utilizados.
El módulo de creación de partidas se compone de los métodos de búsqueda
de partidas, comprobación de partida, actualización de lobby y abandono de
cola. Este módulo contiene una lista de partidas creadas y partidas en curso.
 Búsqueda de partida: Recibe datos de identificación del usuario
previamente asignados en el inicio de sesión y busca una partida a la cual
el jugador pueda unirse, tomando en consideración su nivel como
jugador. El proceso de búsqueda consiste en iterar en la lista de juegos
disponibles y comprobar las siguientes condiciones:
𝐽𝑢𝑔𝑎𝑑𝑜𝑟𝑒𝑠 𝑒𝑛 𝑙𝑎 𝑝𝑎𝑟𝑡𝑖𝑑𝑎 < 𝐽𝑢𝑔𝑎𝑑𝑜𝑟𝑒𝑠 𝑝𝑒𝑟𝑚𝑖𝑡𝑖𝑑𝑜𝑠
𝑁𝑖𝑣𝑒𝑙 𝑀í𝑛𝑖𝑚𝑜 ≤ 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑠𝑜𝑙𝑖𝑐𝑖𝑡𝑎𝑛𝑑𝑜 𝑢𝑛𝑖𝑟𝑠𝑒 ≤ 𝑁𝑖𝑣𝑒𝑙 𝑚á𝑥𝑖𝑚𝑜
Dónde
𝑁𝑖𝑣𝑒𝑙 𝑚í𝑛𝑖𝑚𝑜 = 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑝𝑟𝑖𝑚𝑒𝑟 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑢𝑛𝑖𝑑𝑜 − 𝑑𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑎𝑐𝑒𝑝𝑡𝑎𝑏𝑙𝑒
70
𝑁𝑖𝑣𝑒𝑙 𝑚á𝑥𝑖𝑚𝑜
= 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑝𝑟𝑖𝑚𝑒𝑟 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑢𝑛𝑖𝑑𝑜 + 𝑑𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑎𝑐𝑒𝑝𝑡𝑎𝑏𝑙𝑒
De no existir una partida que cumpla con estas condiciones, una
nueva partida es creada y el jugador solicitante es unido automáticamente,
asignando su nivel como el nivel base de la partida y al cliente solicitante
le es devuelto un ID único de esta partida para su futuro acceso.
Cuando la cantidad máxima de jugadores permitidos ha sido
alcanzada, los equipos son asignados de manera alternativa: equipo 1
está conformado por los jugadores con número de entrada impar y el
equipo 2 está compuesto por los jugadores de número de entrada par.
A su vez, una instancia del servidor dedicado Unreal es iniciada,
se le asigna un puerto, y la dirección del servidor es configurada para ser
transmitida a los clientes.
 Comprobación de partida: Este método es solicitado periódicamente por
los clientes que hayan solicitado una búsqueda de partida, recibiendo
como parámetro el ID único de partida para comprobar sí su partida está
lista para ser iniciada, en cuyo caso la respuesta enviada al cliente
consistirá en un JSON que contiene los equipos con los nombres de los
jugadores, sus niveles, números de jugador dentro del equipo y la
dirección de la instancia del servidor dedicado para unirse al mapa de
juego y pasarán a la ventana de lobby, dónde cada jugador escogerá a
su personaje de preferencia y entrará al juego.
 Actualización de lobby: Recibe datos del cliente solicitante sobre cuál
personaje ha escogido, el nombre del personaje y actualiza la
composición del equipo que será utilizada para actualizar la interfaz
gráfica del lobby.
71
 Abandono de cola: Recibe como parámetro el ID del jugador, el ID de la
partida a la que actualmente está unido y lo remueve. Sí la partida
quedase con cero jugadores unidos, esta es eliminada.
El módulo de estadísticas se encarga de la actualización de estadísticas al
finalizar una partida y su recuperación a solicitud del jugador.
 Actualizar estadísticas: Recibe como parámetros el resultado de la partida
(victoria o derrota), jugadores asesinados, underlings y creeps
asesinados, torretas destruidas, muertes personales y experiencia
ganada en la partida, los almacena en base de datos y comprueba sí el
jugador cumple con la cuota para incrementar su nivel.
 Recuperar estadísticas: Recibe como parámetro el ID del jugador y
recupera todas las estadísticas, nivel, experiencia y el requisito para el
siguiente nivel.
4.2.UNIDADES DE JUEGO
Unreal Engine hace un uso extensivo de la propiedad de herencia de la
programación orientada a objetos, por lo que se tomó provecho de ello creando
una clase básica de juego sobre la que se rigen todas las reglas del mismo.
4.2.1. Unit
Es la clase básica de juego a partir de la cual las demás unidades de juego
derivan. Posee todas las propiedades básicas, métodos y eventos esenciales para
la interacción entre las diversas unidades, es decir, todas las reglas del juego giran
en torno a esta clase.
 Propiedades
- Alive: Indica sí esta unidad está viva.
- Health: Salud actual de la unidad.
72
- Max health: Salud máxima de la unidad.
- Health regen: Cantidad de salud regenerada periódicamente.
- Mana: Puntos mágicos de la unidad.
- Max mana: Puntos mágicos máximos de la unidad.
- Mana regen: Cantidad de puntos mágicos regenerada periódicamente.
- Regenerates: Indica sí esta unidad es capaz de regenerar salud y
puntos mágicos periódicamente.
- Regen rate: Intervalo de renegeración de la unidad.
- Physical damage: Capacidad de daño de ataques básicos y físicos de
esta unidad.
- Magical damage: Capacidad de daño de ataques mágicos de esta
unidad.
- Physical defense: Reducción de daño físico.
- Magical defense: Reducción de daño mágico.
- Critical chance: Probabilidades de asestar un golpe crítico al momento
de atacar, realizando más daño de lo usual.
- Attack range: Distancia de ataque de esta unidad.
- Attack speed: Tiempo mínimo posible entre cada ataque.
- Aggression range: Distancia dentro de la cual la inteligencia artificial es
capaz de detectar un enemigo.
- Cooldown: Indica sí esta unidad puede atacar en un instante dado. Esta
variable está regida por la variable Attack speed.
- Can Move: Indica sí esta unidad puede moverse. Utilizada
principalmente por la inteligencia artificial.
73
- Team number: Indica el equipo al que pertenece esta unidad. Utilizada
para comprobar la agresión entre unidades.
- Name: Nombre genérico de esta unidad.
- Behaviour tree: Árbol de comportamiento utilizado por la inteligencia
artificial.
- Target: Unidad objetivo. Utilizado principalmente para ataques y
movimiento automático hacia dicho objetivo.
 Métodos
- Unit death: Define las acciones a realizar cuando una unidad muere, es
decir, su salud cae por debajo de 0. El procedimiento por defecto
consiste en destruir la unidad.
- Attack: Hace una llamada al método de ataque básico por de la unidad.
Por defecto, el ataque básico es Meele attack.
- Meele attack: Método genérico de ataque cercano.
- Ranged attack: Método genérico de ataque a distancia. Crea un
proyectil que persigue al objetivo.
- Take damage: Método estándar para realizar daño a una unidad,
tomando en consideración el tipo de daño realizado, la cantidad de daño
y las defensas de la unidad siendo dañada.
- Is vulnerable: Método genérico que indica sí una unidad es vulnerable.
Por defecto, cualquier unidad viva es vulnerable.
 Eventos
- Regeneration: Evento periódico que incrementa la salud y los puntos
mágicos de la unidad. La restauración realizada no puede exceder los
límites de ninguno de ambos atributos.
- Attack cooldown: Evento llamado al realizar una llamada a Attack.
Bloquea cualquier intento de ataque subsecuente por el intervalo de
tiempo Attack speed.
74
- Update status bar: Actualiza periódicamente una barra de estado que
flota sobre la unidad. Por defecto esta barra de estado muestra la salud
de la unidad.
 Inteligencia artificial
La unidad básica de juego sigue el siguiente árbol de comportamiento:
Explicación: Sí la unidad está viva, periódicamente comprobará sí existen
enemigos cercanos. En el caso que lo haya, confirmará contacto visual. Sí el
objetivo está en alcance, lo atacará y reiniciará el tiempo de persecución, de lo
Figura 25 Árbol de comportamiento de Unit. Fuente: Orlando Cuabro y José Ortega
75
contrario lo perseguirá y llevará seguimiento del tiempo durante el cual ha
perseguido, abandonando la persecución después de 3 segundos. Sí el objetivo
fue destruido o no es válido, lo eliminará de su tablero de datos. En el caso de
no haber un enemigo, la unidad se dirigirá al waypoint o punto objetivo
especificado o en su defecto a su posición inicial.
4.2.2. Underling
Es la unidad principal de cada equipo, la cual es creada periódicamente con
el objetivo de asistir a los jugadores en la destrucción de la base del equipo opuesto,
moviéndose a través de las diferentes líneas atacando cualquier enemigo en su
paso. Por lo general, estas unidades son poco resistentes y no son capaces de
hacer mucho daño, sin embargo, siempre son creadas en grupos y en grandes
cantidades pueden rodear al enemigo y presentar una amenaza.
Existen underlings de ataque cercano y ataque a distancia, cada uno con
propiedades ligeramente diferentes entre sí, siendo aquellos de combate cercano
los más resistentes y los de ataque lejano más vulnerables, pero con mejores
capacidades ofensivas.
 Propiedades
Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana,
daño, defensas, etc. No añade ninguna propiedad nueva.
 Métodos
Se sobrescribe el método Attack para redefinir el método de ataque básico,
dependiendo sí el tipo de underling en cuestión ataca a distancia o en
combate cercano.
 Eventos
No posee eventos nuevos ni sobrescribe aquellos de la clase Unit.
 Inteligencia artificial
Emplea el mismo árbol de comportamiento que Unit.
76
4.2.3. Creeps
Son unidades neutrales que pueden ser encontradas en los bosques del campo
de juego y constituyen un obstáculo para aquellos que intentan cruzar líneas,
emboscar oponentes o pueden ser guiados hacia el enemigo para que lo ataquen.
 Propiedades
Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana,
daño, defensas, etc. No añade ninguna propiedad nueva.
 Métodos
Se sobrescribe el método Attack para redefinir el método de ataque básico,
dependiendo sí el tipo de creep en cuestión ataca a distancia o en combate
cercano.
Figura 26 Underlings en combate. Fuente: Orlando Cuabro y José Ortega
77
 Eventos
No posee eventos nuevos ni sobrescribe aquellos de la clase Unit.
 Inteligencia artificial
Emplea el mismo árbol de comportamiento que Unit.
4.2.4. Turrets
Son las unidades de defensa principales de cada equipo. Estructuras resistentes,
capaces de causar grandes daños a distancia en poco tiempo a cualquier enemigo
que se acerque.
Forman parte del objetivo principal del juego, ya que deben ser destruidas
primero para poder avanzar en una línea del campo de batalla y así volver
vulnerables a las estructuras subsecuentes.
 Propiedades
Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana,
daño, defensas, etc. No añade ninguna propiedad nueva.
 Métodos
Se sobrescribe el método Attack para redefinir el método de ataque básico al
método de ataque a distancia.
 Eventos
No posee eventos nuevos ni sobrescribe aquellos de la clase Unit.
 Inteligencia artificial
Emplea un árbol de comportamiento especial:
78
Explicación: Sí la unidad está viva, periódicamente comprobará sí existen
enemigos cercanos y comprobará sí son visibles. Al encontrar un enemigo,
la primera tarea a realizar es comprobar que la unidad esté preparada para
atacar y que el objetivo esté en alcance para así atacarlo. Sí el objetivo deja
de ser válido, muere o sale de alcance, el objetivo el eliminado del tablero de
datos para así poder escoger otro en la próxima iteración.
Figura 27 Árbol de comportamiento de Turret. Fuente: Orlando Cuabro y José Ortega
79
4.2.5. Altar
Objetivo principal del juego y su destrucción constituye la finalización del partido,
resultando victorioso el equipo que primero destruya el altar opuesto.
Es una estructura resistente y fuertemente defendida por Turrets capaz de
regenerarse lentamente; a su vez, es el punto de aparición de los underlings y
cercano al punto de reaparición de los Champions, por lo que el combate en las
cercanías de esta estructura es altamente peligroso.
 Propiedades
Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana,
daño, defensas, etc. No añade ninguna propiedad nueva.
 Métodos
No posee método de ataque.
 Eventos
En su destrucción la partida es finalizada, cada jugador reporta al servidor
sus estadísticas, la partida es destruida y cada jugador vuelve a su menú
principal.
 Inteligencia artifical
No posee árbol de comportamiento.
4.2.6. Champions
Unidades especiales empleadas por los jugadores. Sus atributos son más altos
que los underlings o los creeps y poseen habilidades especiales con variedades de
efectos. Tienen la capacidad de regenerarse y al morir son revividos después de un
80
intervalo de tiempo. A medida que derrotan más enemigos sus atributos
incrementan, haciéndose progresivamente más fuertes
 Propiedades
Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana,
daño, defensas, etc.
Posee propiedades adicionales a las heredadas:
- Deaths: Cantidad de muertes personales.
- Kills: Cantidad de enemigos jugadores asesinados.
- Creep kills: Cantidad de underlings y creeps asesinados.
- Health growth: Cantidad de salud incrementada al subir nivel.
- Mana growth: Cantidad de puntos mágicos incrementados al subir de
nivel.
- Health regen growth: Incremento en la regeneración de salud al subir
nivel.
- Mana regen growth: Incremento en la regeneración de puntos mágicos al
subir de nivel.
- Physical damage growth: Incremento en los puntos de daño físico al subir
nivel.
- Physical defense growth: Incremento en los puntos de defensa físicos al
subir nivel.
- Magical damage growth: Incremento en los puntos de daño mágico al
subir nivel.
- Magical defense growth: Incremento en los puntos de defensa mágicos al
subir nivel.
81
- Attack speed growth: Reducción del tiempo de espera entre ataques
consecutivos al subir nivel.
- Level: Nivel de la unidad. Incrementa al acumular la cantidad de
experiencia especificada por Level breakpoints.
- Experience: Cantidad de experiencia adquirida al derrotar oponentes.
- Level breakpoints: Puntos de experiencia necesarios para subir nivel.
- Attack order: Indicador de order de ataque. Disparada por el controlador
para que la inteligencia artificial ignore el comportamiento automático.
- Move order: Indicador de order de movimiento. Disparada por el
controlador para que la inteligencia artificial ignore el comportamiento
automático.
 Métodos
Se sobrescribe el método Attack para redefinir el método de ataque básico,
dependiendo sí el tipo de creep en cuestión ataca a distancia o en combate
cercano.
 Eventos
- Update status bar: Adaptado para una barra de estado diferente, especial
de los Champions.
- Receive attack order: Recibe orden del controlador para atacar a una
unidad y desactiva la orden de movimiento.
- Finish attack order: Finaliza la orden y entra en modo libre.
- Receive move order: Recibe una orden de movimiento del controlador y
desactiva la orden de ataque.
- Finish move order: Finaliza la orden de movimiento y entra en modo Libre.
82
- AI Sequence: Secuencia de eventos para recrear una inteligencia
artificial, entre los cuales se verifica regularmente la validez del objetivo,
la unidad gira para ver hacia donde se encuentra el objetivo, buscar
objetivos cercanos y atacarlos.
- Look for enemies: Modo libre. Cuando no hay órdenes activas, busca
periódicamente por enemigos cercanos.
- Attack target if available: Cuando un objetivo está dispobile, esta unidad
se acerca a atacar al objetivo.
- Eventos varios de entrada: Tales como acercar y alejar la cámara, centrar
la cámara y activar habilidades.
 Inteligencia artifical
Debido a limitaciones de Unreal Engine y motivos de seguridad
implementados por Unreal Engine, no fue posible implementar un árbol de
comportamiento a esta unidad, sin embargo, la inteligencia artificial fue
83
implementada a través de eventos disparados periódicamente en base al
siguiente árbol de comportamiento:
Explicación: Sí la unidad está viva, periódicamente comprobará sí existen
enemigos cercanos.
Cuando no hayan ordenes de movimiento explicitas, pero un objetivo esté
presente, la unidad comprobará su distancia del enemigo y se acercará sí es
necesario hasta que esté en alcance, luego comprobará que puede atacar al
enemigo y finalmente verificará sí el objetivo sigue siendo válido, en el caso
de no serlo, elimina el objetivo del tablero de datos y sí la ejecución de esta
rama se trataba de una orden de ataque explícita, la orden es finalizada.
Figura 28 Árbol de comportamiento de champion. Fuente: Orlando Cuabro y José Ortega
84
En el caso que haya una orden explícita, se verifica la validez del destino y
luego la unidad se desplazará al destino hasta estar a una distancia
aceptable considerada como un movimiento exitoso.
5. Evaluación del funcionamiento del videojuego
Durante las pruebas del juego, ejecutando el servidor dedicado en modo de
consola ocasionalmente se producen mensajes de error sobre acceso a variables
sin valor alguno, las cuales pueden ocurrir al tratar de acceder a variables no
replicadas correctamente, asignaciones de valores indebidas desde el lado del
cliente o tratando de acceder a las propiedades de un actor destruido, sin embargo,
después de extensas pruebas fue posible reducir estos mensajes de error
mayormente al último caso mencionado.
Constantemente se comprueba la validez de unidades al momento de realizar
operaciones con estas pero en ocasiones es posible que un actor o unidad sea
destruido justo después de realizar una validación, surgiendo en ocasiones
mensajes de error al momento de realizar operaciones subsecuentes con la variable
en cuestión, sin embargo, estos mensajes de error de acceso no constituyen un
problema para el flujo normal y adecuado del juego.
En el lado del cliente es posible que ocurran mensajes de error de peticiones
fallidas al realizar peticiones al servidor HTTP, las cuales pueden deberse a un
acceso a una dirección errónea, el servidor no se encuentra disponible o no hay
acceso a internet.
5.1.Rendimiento
Una instancia del servidor dedicado consume desde 80MB hasta alrededor
de 140MB de memoria RAM a medida que transcurre el juego.
Aproximadamente, cada 30 minutos se ejecuta el recolector de basura,
disminuyendo el consumo de RAM hasta 80MB. El uso de CPU es bastante
bajo, se realizaron pruebas con un procesador Intel Core i7-4510U a una
85
velocidad entre 2GHz y 2.6GHz y una instancia utiliza entre 7% y 15% de la
capacidad del procesador, por lo que podrían ejecutarse aproximadamente 5
instancias de manera estable.
Trabajo especial de grado
Trabajo especial de grado
Trabajo especial de grado
Trabajo especial de grado
Trabajo especial de grado

Más contenido relacionado

La actualidad más candente

Tgmr85 g842007yumelysruiz
Tgmr85 g842007yumelysruizTgmr85 g842007yumelysruiz
Tgmr85 g842007yumelysruiz
orlando silva
 

La actualidad más candente (16)

13 2537
13 253713 2537
13 2537
 
Factores asociados con el bajo rendimiento
Factores asociados con el bajo rendimientoFactores asociados con el bajo rendimiento
Factores asociados con el bajo rendimiento
 
Actividad Sindical de la Mujer en la ANEF: 1980 - 2000
Actividad Sindical de la Mujer en la ANEF: 1980 - 2000Actividad Sindical de la Mujer en la ANEF: 1980 - 2000
Actividad Sindical de la Mujer en la ANEF: 1980 - 2000
 
TD DARVIN V A TERMINADO.docx
TD DARVIN V A TERMINADO.docxTD DARVIN V A TERMINADO.docx
TD DARVIN V A TERMINADO.docx
 
Libro 5 guia semanal 9
Libro 5 guia semanal 9Libro 5 guia semanal 9
Libro 5 guia semanal 9
 
Trabajo de grado
Trabajo de gradoTrabajo de grado
Trabajo de grado
 
Tgmr85 g842007yumelysruiz
Tgmr85 g842007yumelysruizTgmr85 g842007yumelysruiz
Tgmr85 g842007yumelysruiz
 
Guía didáctica final
Guía didáctica finalGuía didáctica final
Guía didáctica final
 
Tesis de juan acosta julio 2006 la propuesta1 presentacion (1)
Tesis de juan acosta julio 2006 la propuesta1 presentacion (1)Tesis de juan acosta julio 2006 la propuesta1 presentacion (1)
Tesis de juan acosta julio 2006 la propuesta1 presentacion (1)
 
Uleam ed.fis-0027
Uleam ed.fis-0027Uleam ed.fis-0027
Uleam ed.fis-0027
 
Tesis sobre homosexualidad y cine del 2010 - 2013
Tesis sobre homosexualidad y cine del 2010 - 2013Tesis sobre homosexualidad y cine del 2010 - 2013
Tesis sobre homosexualidad y cine del 2010 - 2013
 
TD PAOLA.pdf
TD PAOLA.pdfTD PAOLA.pdf
TD PAOLA.pdf
 
Tesis de Estrategia Comunitaria para el Fortalecimiento de la Educación Ambi...
 Tesis de Estrategia Comunitaria para el Fortalecimiento de la Educación Ambi... Tesis de Estrategia Comunitaria para el Fortalecimiento de la Educación Ambi...
Tesis de Estrategia Comunitaria para el Fortalecimiento de la Educación Ambi...
 
Biomasa caldera
Biomasa calderaBiomasa caldera
Biomasa caldera
 
TD JISSEL.pdf
TD JISSEL.pdfTD JISSEL.pdf
TD JISSEL.pdf
 
Influencias del régimen del buen vivir en la adaptación escolar de los estudi...
Influencias del régimen del buen vivir en la adaptación escolar de los estudi...Influencias del régimen del buen vivir en la adaptación escolar de los estudi...
Influencias del régimen del buen vivir en la adaptación escolar de los estudi...
 

Similar a Trabajo especial de grado

cancha sinteticaProyecto final cancha sintetica en duran
cancha sinteticaProyecto final cancha sintetica en durancancha sinteticaProyecto final cancha sintetica en duran
cancha sinteticaProyecto final cancha sintetica en duran
Daniel Laquise
 
Manual motor-chevrolet-trailblazer-42l-sistema-inyeccion-encendido-electronic...
Manual motor-chevrolet-trailblazer-42l-sistema-inyeccion-encendido-electronic...Manual motor-chevrolet-trailblazer-42l-sistema-inyeccion-encendido-electronic...
Manual motor-chevrolet-trailblazer-42l-sistema-inyeccion-encendido-electronic...
Diego Benitez
 
INT PLAN DE DESARROLLO TURÍSTICO SOSTENIBLE mpio berlin 2019.pdf
INT PLAN DE DESARROLLO TURÍSTICO SOSTENIBLE mpio berlin 2019.pdfINT PLAN DE DESARROLLO TURÍSTICO SOSTENIBLE mpio berlin 2019.pdf
INT PLAN DE DESARROLLO TURÍSTICO SOSTENIBLE mpio berlin 2019.pdf
LuisanaFonseca1
 
Agradecimientos, dedicatorias, indices y demas
Agradecimientos, dedicatorias, indices y demasAgradecimientos, dedicatorias, indices y demas
Agradecimientos, dedicatorias, indices y demas
eder zela
 
Agradecimientos, dedicatorias, indices y demas
Agradecimientos, dedicatorias, indices y demasAgradecimientos, dedicatorias, indices y demas
Agradecimientos, dedicatorias, indices y demas
eder zela
 

Similar a Trabajo especial de grado (20)

Info plc net_0063171
Info plc net_0063171Info plc net_0063171
Info plc net_0063171
 
Proyecto final
Proyecto finalProyecto final
Proyecto final
 
, Indices y demas
, Indices y demas, Indices y demas
, Indices y demas
 
Diseño e Implementacion del Sistema de Control para la Automatizacion del Pro...
Diseño e Implementacion del Sistema de Control para la Automatizacion del Pro...Diseño e Implementacion del Sistema de Control para la Automatizacion del Pro...
Diseño e Implementacion del Sistema de Control para la Automatizacion del Pro...
 
cancha sinteticaProyecto final cancha sintetica en duran
cancha sinteticaProyecto final cancha sintetica en durancancha sinteticaProyecto final cancha sintetica en duran
cancha sinteticaProyecto final cancha sintetica en duran
 
Anteproyecto Arquitectonico de la Terminal de Transporte COOGRANT R,L en el M...
Anteproyecto Arquitectonico de la Terminal de Transporte COOGRANT R,L en el M...Anteproyecto Arquitectonico de la Terminal de Transporte COOGRANT R,L en el M...
Anteproyecto Arquitectonico de la Terminal de Transporte COOGRANT R,L en el M...
 
Manual motor-chevrolet-trailblazer-42l-sistema-inyeccion-encendido-electronic...
Manual motor-chevrolet-trailblazer-42l-sistema-inyeccion-encendido-electronic...Manual motor-chevrolet-trailblazer-42l-sistema-inyeccion-encendido-electronic...
Manual motor-chevrolet-trailblazer-42l-sistema-inyeccion-encendido-electronic...
 
Tesis trailblazer gt
Tesis trailblazer gtTesis trailblazer gt
Tesis trailblazer gt
 
Reposi
ReposiReposi
Reposi
 
Tesis arroz
Tesis arrozTesis arroz
Tesis arroz
 
INT PLAN DE DESARROLLO TURÍSTICO SOSTENIBLE mpio berlin 2019.pdf
INT PLAN DE DESARROLLO TURÍSTICO SOSTENIBLE mpio berlin 2019.pdfINT PLAN DE DESARROLLO TURÍSTICO SOSTENIBLE mpio berlin 2019.pdf
INT PLAN DE DESARROLLO TURÍSTICO SOSTENIBLE mpio berlin 2019.pdf
 
T12.11 z84p
T12.11 z84pT12.11 z84p
T12.11 z84p
 
TEG. Full (version impresion final) (1).docx
TEG. Full (version impresion final) (1).docxTEG. Full (version impresion final) (1).docx
TEG. Full (version impresion final) (1).docx
 
T-UCSG-PRE-ECO-GES-652.pdf
T-UCSG-PRE-ECO-GES-652.pdfT-UCSG-PRE-ECO-GES-652.pdf
T-UCSG-PRE-ECO-GES-652.pdf
 
Tesis síntomas neurotóxicos y niveles de colinesterasa.docx
Tesis síntomas neurotóxicos y niveles de colinesterasa.docxTesis síntomas neurotóxicos y niveles de colinesterasa.docx
Tesis síntomas neurotóxicos y niveles de colinesterasa.docx
 
diseno de acueductos utilizando
diseno de acueductos utilizando diseno de acueductos utilizando
diseno de acueductos utilizando
 
Avicola de huevos
Avicola de huevosAvicola de huevos
Avicola de huevos
 
Agradecimientos, dedicatorias, indices y demas
Agradecimientos, dedicatorias, indices y demasAgradecimientos, dedicatorias, indices y demas
Agradecimientos, dedicatorias, indices y demas
 
Agradecimientos, dedicatorias, indices y demas
Agradecimientos, dedicatorias, indices y demasAgradecimientos, dedicatorias, indices y demas
Agradecimientos, dedicatorias, indices y demas
 
AUDITORIA INTEGRAL TESIS DE INVESTIGACIÓN
AUDITORIA INTEGRAL TESIS DE INVESTIGACIÓNAUDITORIA INTEGRAL TESIS DE INVESTIGACIÓN
AUDITORIA INTEGRAL TESIS DE INVESTIGACIÓN
 

Trabajo especial de grado

  • 1. REPÚBLICA BOLIVARIANA DE VENEZUELA UNIVERSIDAD RAFAEL URDANETA FACULTAD DE INGENIERÍA ESCUELA DE INGENIERÍA EN COMPUTACIÓN VIDEOJUEGO DE GÉNERO MOBA EMPLEANDO UN SISTEMA DE EMPAREJAMIENTO POR NIVEL UTILIZANDO EL MOTOR GRÁFICO UNREAL ENGINE Trabajo Especial de Grado presentado ante la Universidad Rafael Urdaneta para optar al título de: INGENIERO EN COMPUTACIÓN Autor: Br. José Ortega Br. Orlando Cuabro Tutor: Ing. Carlos Montes Maracaibo, Julio 2016
  • 2. ii VIDEOJUEGO DE GÉNERO MOBA EMPLEANDO UN SISTEMA DE EMPAREJAMIENTO POR NIVEL UTILIZANDO EL MOTOR GRÁFICO UNREAL ENGINE ______________________________ Ortega Díaz, José Luis CI: 24.735.389 Telf.: (0424) 6695999 odiaz.jose@gmail.com Cantidad HC Aprobadas: 212 Cantidad HC Restantes: 9 ______________________________ Cuabro Briceño, Orlando José CI: 23.739.143 Telf.: (0424) 6846391 ocuabro@gmail.com Cantidad HC Aprobadas: 221 Cantidad HC Restantes: 0 ______________________________ Montes Santillí, Calos Adolfo CI: 20.776.875 Telf.: (0414) 0602398 uru.carlosmontes@gmail.com Tutor Académico
  • 3. 1 DEDICATORIA Principalmente a mis padres que brindaron siempre un gran apoyo emocional y económico durante toda mi carrera, a mi madre por estar siempre recordándome de mis deberes como estudiante y a mi padre por estar siempre dándome la confianza para seguir adelante como futuro ingeniero Y a todas esas amistades que creé, se mantuvieron y siempre estuvieron conmigo en las buenas y en las malas, en especial a aquellas que conformaron el grupo cuyo nombre siempre lo recordaré como “Yaoi” o “Maikólicos”. Orlando Cuabro
  • 4. 2 DEDICATORIA Dedico este trabajo a mis padres por garantizar que nunca me faltara nada, sobre todo la educación, y por haber comprado mi primer PlayStation en mi 6to cumpleaños y a todos los desarrolladores de videojuegos, ya que gracias a ellos desde una edad muy temprana supe exactamente a qué carrera quería dedicar mi vida. José Ortega
  • 5. 3 AGRADECIMIENTOS Quisiera agradecer a mi familia por el constante apoyo que me han dado en estos 4 años. A mis amigos Felipe Peña, Carlos Barboza, Isabel Rincón, Sergio Portillo, Majo, Luzmery, Gabriela Rodríguez y Carlos Prado, que hicieron de mi vida universitaria una completa aventura que nunca olvidaré. Un agradecimiento especial a Maikol Pirela por otorgarme todos esos momentos de comedia y chalequeo que siempre necesitare en mi vida y que nunca serán iguales. A mi compañero de tesis y amigo José Ortega por acompañarme en los momentos más desesperantes de mi carrera y salir victoriosos de ellos. A mis compañeros y amigos de carrera que se estuvieron conmigo en esta gran odisea donde hubo diversos confrontamientos, pero también momentos alegres y divertidos. A los profesores de la Universidad Rafael Urdaneta Carlos Montes, Genyelber Acosta, Jubert Pérez y Nerio Villalobos por brindarme los conocimientos necesarios para seguir con mi carrera profesional. Orlando Cuabro
  • 6. 4 AGRADECIMIENTOS A mis padres por estar dispuestos a ayudarme en todo lo que sea necesario con tal de cumplir mis metas. Agradezco a todos mis amigos de la escuela de computación por distraerme constantemente del estrés de la vida y la universidad, los momentos de risa y frustración: Andrea Rosales, Hernan Reyes, Orlando Cuabro, Luis Turcio, Pablo Seijas, Andrés Medina, Edixon Vergel, Christian Chourio, Mariangely Loaiza. A mis amigos más cercanos desde hace años: Cristian Moreno, Carlos Rivera y Angel Rivera, las tres amistades inquebrantables que tengo. A todos los maestros y profesores que he tenido a lo largo de mi vida, quienes de una buena o mala manera me ayudaron a formar mi percepción del conocimiento y aprendizaje que me llevado hasta este punto. Finalmente, a mi mejor amiga Gabriela Rodríguez por estar allí cuando no tenía a nadie más para apoyarme y acompañarme en buenos y malos momentos, muchas gracias por tu amistad, una de las más significativas que he tenido. } José Ortega
  • 7. 5 ÍNDICE GENERAL DEDICATORIA................................................................................................................................. 1 DEDICATORIA................................................................................................................................. 2 AGRADECIMIENTOS ..................................................................................................................... 3 AGRADECIMIENTOS ..................................................................................................................... 4 ÍNDICE GENERAL........................................................................................................................... 5 ÍNDICE DE FIGURAS ..................................................................................................................... 7 RESUMEN......................................................................................................................................... 9 ABSTRACT..................................................................................................................................... 10 INTRODUCCIÓN............................................................................................................................ 11 CAPÍTULO I.................................................................................................................................... 14 1. PLANTEAMIENTO DEL PROBLEMA............................................................................. 14 2. FORMULACIÓN DEL PROBLEMA ................................................................................. 16 3. OBJETIVO GENERAL....................................................................................................... 17 4. OBJETIVOS ESPECÍFICOS ............................................................................................ 17 5. JUSTIFICACIÓN................................................................................................................. 17 6. DELIMITACIÓN TEMPORAL ........................................................................................... 19 7. DELIMITACIÓN ESPACIAL.............................................................................................. 19 8. DELIMITACIÓN CIENTÍFICA ........................................................................................... 19 CAPITULO II................................................................................................................................... 20 1. ANTECEDENTES .............................................................................................................. 20 2. BASES TEÓRICAS............................................................................................................ 22 2.1. Videojuego ................................................................................................................. 22 2.2. Géneros....................................................................................................................... 22 2.3. Elementos básicos................................................................................................... 34 CAPÍTULO III.................................................................................................................................. 37 1. NIVEL DE LA INVESTIGACIÓN ...................................................................................... 37 2. DISEÑO DE LA INVESTIGACIÓN................................................................................... 38 3. TÉCNICAS E INSTRUMENTOS DE OBTENCIÓN DE DATOS................................. 39
  • 8. 6 4. UNIDAD DE ANÁLISIS...................................................................................................... 40 5. METODOLOGÍA DE DESARROLLO.............................................................................. 40 6. FASES DEL PROYECTO ................................................................................................. 42 Capítulo IV...................................................................................................................................... 44 1. ANÁLISIS DE REQUERIMIENTOS BÁSICOS.............................................................. 44 1.1. REQUERIMIENTOS TÉCNICOS............................................................................. 44 1.2. REQUERIMIENTOS OPERATIVOS ....................................................................... 44 2. PLANIFICACIÓN ................................................................................................................ 45 3. DISEÑO ............................................................................................................................... 46 3.1. ELEMENTOS VISUALES Y MULTIMEDIA........................................................... 46 3.2. ESTRUCTURAS DE INFORMACIÓN .................................................................... 56 4. CODIFICACIÓN.................................................................................................................. 68 4.1. SERVIDOR.................................................................................................................. 68 4.2. UNIDADES DE JUEGO ............................................................................................ 71 5. Evaluación del funcionamiento del videojuego.............................................................. 84 5.1. Rendimiento............................................................................................................... 84 CONCLUSIONES........................................................................................................................... 86 RECOMENDACIONES ................................................................................................................. 88 BIBLIOGRAFÍA.............................................................................................................................. 89
  • 9. 7 ÍNDICE DE FIGURAS FIGURA 1 FUENTE: HTTP://WWW.RESERV.COM.AR/IMAGES/SCRUM.JPG......................... 40 FIGURA 2 PLANIFICACIÓN. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA...................... 45 FIGURA 3 UNDERLING ANGEL. FUENTE: MIXAMO ANIMATION PACK .............................. 48 FIGURA 4 UNDERLING ANGEL. FUENTE: MIXAMO ANIMATION PACK .............................. 48 FIGURA 5 FUENTE:HTTP://SANMIGUELARCANGEL.INFO/GRUPOS- COMUNIDADES/COMUNIDADES ............................................................................ 49 FIGURA 6 UNDERLING DEMON. FUENTE: MIXAMO ANIMATION PACK ............................. 50 FIGURA 7 UNDERLING DEMON. FUENTE: MIXAMO ANIMATION PACK ............................. 51 FIGURA 8 CHAMPION GANFAULT . FUENTE: MIXAMO ANIMATION PACK ......................... 52 FIGURA 9 CHAMPION GANFAULT. FUENTE: MIXAMO ANIMATION PACK.......................... 53 FIGURA 10 MAPA DE COMBATE 5V5. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA....... 54 FIGURA 11 MAPA DE COMBATE 5V5. VISTO DE PLANTA. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................................................................................................... 55 FIGURA 12 DIAGRAMA DE USO DEL MENU PRINCIPAL. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ........................................................................................................... 56 FIGURA 13 DIAGRAMA DE USO DURANTE MODO DE JUEGO. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................................................................................................... 57 FIGURA 14 DIAGRAMA ENTIDAD RELACIÓN. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ........................................................................................................................ 59 FIGURA 15 INICIO DE SESIÓN. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................. 62 FIGURA 16 REGISTRO. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA .......................... 62 FIGURA 17 MENÚ PRINCIPAL. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ................. 63 FIGURA 18 COMPONENTE DE COMPOSICIÓN DE EQUIPO: JUGADOR. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................................................................................... 63 FIGURA 19 COMPONENTE DE COMPOSICIÓN DE EQUIPO. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................................................................................................... 64 FIGURA 20 DISEÑO PRELIMINAR DE VENTANA DE LOBBY. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................................................................................................... 64 FIGURA 21 COMPONENTE DE PUNTUACIÓN. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ........................................................................................................................ 65 FIGURA 22 VENTANA DE ESTADO DE JUGADOR. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ........................................................................................................... 66 FIGURA 23 BARRA DE ESTATUS DE CHAMPIONS. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ........................................................................................................... 66 FIGURA 24 BARRA DE ESTATUS DE UNIT. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA 67 FIGURA 25 ÁRBOL DE COMPORTAMIENTO DE UNIT. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ........................................................................................................... 74
  • 10. 8 FIGURA 26 UNDERLINGS EN COMBATE. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA ... 76 FIGURA 27 ÁRBOL DE COMPORTAMIENTO DE TURRET. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................................................................................................... 78 FIGURA 28 ÁRBOL DE COMPORTAMIENTO DE CHAMPION. FUENTE: ORLANDO CUABRO Y JOSÉ ORTEGA................................................................................................... 83
  • 11. 9 Cuabro Briceño Orlando José, Ortega Díaz José Luís, “Videojuego de género MOBA empleando un sistema de emparejamiento por nivel utilizando el motor gráfico Unreal Engine”, Universidad Rafael Urdaneta, Facultad de Ingeniería de Computación. Trabajo especial de Grado, Maracaibo Julio, 2016 RESUMEN El presente trabajo de investigación tuvo como objetivo el desarrollo de un videojuego de género MOBA empleando un sistema de emparejamiento por nivel utilizando el motor gráfico Unreal Engine. La investigación fue de tipo aplicativa, con un diseño de tipo no experimental o de campo. Se utilizaron las técnicas de Observación directa y la recopilación de documentos para obtener la información necesaria para la elaboración del videojuego. Se empleó la metodología de desarrollo llamada Scrum, la cual implica la elaboración de módulos en distintas iteraciones. Se empleó la Librería rest JAX-RS 2.0 en conjunto con Java como lenguaje del servidor. Como lenguaje de desarrollo se empleó C++ complementado por el editor Blueprints que posee Unreal Engine. Para el manejo de bases de datos se utilizó PostgreSQL. Finalmente se realizaron evaluaciones de las respuestas del servidor para llevar seguimiento de una correcta funcionalidad del juego, logrando desarrollar un videojuego de género MOBA donde los usuarios pueden registrarse, ver sus estadísticas de partida y jugar a su vez con otros jugadores en línea. Palabras Clave: Videojuego, Unreal Engine, MOBA, Sistema MatchMaking. ocuabro@gmail.com - odiaz.jose@gmail.com
  • 12. 10 Cuabro Briceño Orlando José, Ortega Díaz José Luís, “MOBA Videogame using a level based matchmaking on Unreal Engine” Universidad Rafael Urdaneta, Facultad de Ingeniería de Computación.Degree Thesis, Maracaibo July, 2016. ABSTRACT This research aimed to develop a video game genre MOBA using a matching system by level using the Unreal Engine. The research was of the aplicative type, with a non-experimental design or field. Direct observation techniques and collecting documents were used to obtain the information necessary for the development of the game. Development methodology called Scrum was used, which involves the development of modules in different iterations. The library rest JAX-RS 2.0 was used in conjunction with Java for the backend. As for the development language, C++ along with the editor Blueprints supplemented by having Unreal Engine were used. For databases management, PostgreSQL was used. Finally, the server responses were used to check for the proper functionality of the game, achieving the development of a MOBA videogame where users can register, see their own game statistics and play with other players online. Key words: Videogame, Unreal Engine, MOBA, Matchmaking System.
  • 13. 11 INTRODUCCIÓN A lo largo de las últimas décadas, se han podido observar una gran cantidad de cambios dentro de la industria de los videojuegos. Al principio, solo existían juegos donde una sola persona podía interactuar mediante un control, con un entorno gráfico. Luego con el auge de la tecnología y la salida de la nueva rama en cuanto a diseños de entornos informáticos, se logró dar una forma a cada componente del mismo, incluyendo un factor de estética dentro de estos métodos de entretenimiento. Con el paso del tiempo y gracias a la sorprendente evolución de las computadoras los videojuegos fueron creciendo en cuanto a su contenido y diversificándose a su vez, dando como resultado la creación de distintos géneros a partir de los cuales, la industria de videojuegos se ha surtido de distintas entregas que marcaron en la historia de los mismos. Desde juegos de plataformas como “Super Mario Bros”, hasta juegos de realidad virtual como aquellos diseñados para el “Oculus Rift”; se han podido observar una numerosa cantidad de géneros que han dominado dicho el mercado de los videojuegos. A su vez, la aparición de nuevas herramientas de desarrollo, han permitido la creación de diversas entregas que han incursionado dentro de este mercado tan extenso. Entre estas herramientas resalta el motor gráfico Unreal Engine, el cual ha permitido a los programadores la posibilidad de crear un videojuego desde cero y a su vez, promoviendo el desarrollo independiente de estos. Dentro de estos géneros se destacan los “Multiplayer Online Battle Arena” mejor conocidos por sus acrónimos de MOBA. Estos derivados de los RTS (Real Time Strategy o videojuegos de estrategia en tiempo real) han marcado su pie
  • 14. 12 dentro de la historia de los videojuegos, cambiando a su vez la manera en como el público general reacciona ante estos, llegando al punto de transformar el arte de jugar un videojuego en un deporte. Como es el caso de League Of Legends y Defense Of The Acients 2, los cuales son considerados como los máximos exponentes de este género, a su vez como los dos más populares y exitosos videojuegos de género MOBA. Sin embargo, pese a esta popularidad el desarrollo de este género se ha visto muy escaso, por lo que una respectiva documentación resulta complicada de encontrar. Esto yace en el reciente surgimiento de este género. Este trabajo busca desarrollar un videojuego de género MOBA, donde los jugadores logren registrar una cuenta y conectarse a ella. A su vez, estos podrán entrar en una cola donde un sistema de matchmaking los conectará con otros jugadores en línea de acuerdo al nivel de sus respectivas cuentas empleando el motor gráfico Unreal Engine; permitiendo tener una documentación sobre el desarrollo de este género. La estructura de investigación se realizó en cuatro capítulos, los cuales son descritos a continuación para dar una breve referencia. En el capítulo I se plantea el problema a tratar, su formación, los objetivos que marcarán las actividades a desempeñar a lo largo del proyecto, la justificación de la presente investigación y la delimitación de la misma. En el capítulo II consiste del Marco Teórico, y en éste se reflejan las bases de la investigación, tales como teoría vital para la realización del proyecto, aportes y trabajos previos a la investigación, al igual que términos básicos que sirven de
  • 15. 13 sustento para la justificación de la misma. Finalmente se discuten las variables del estudio. El capítulo III refleja todo lo relacionado con la metodología utilizada para el trabajo. Se explican el nivel y diseño de la investigación empleados, la técnica de recopilación de información y la metodología de desarrollo a emplear, mencionando las fases que esta abarca para la ejecución del proyecto. Finalmente, en el capítulo IV se describen los resultados de los objetivos planteados de acuerdo a la metodología seleccionada para el desarrollo del videojuego de género MOBA.
  • 16. 14 CAPÍTULO I EL PROBLEMA 1. PLANTEAMIENTO DEL PROBLEMA Gracias a los avances tecnológicos del siglo XX, fue posible la creación de las primeras computadoras electrónicas en la década de 1940 con el propósito de solucionar problemas matemáticos complejos como descifrado de códigos. Algunos años después de la creación de las computadoras, los primeros videojuegos fueron creados en laboratorios de universidades o en institutos de investigación debido al alto costo para el público general y ocupaban grandes espacios. A medida que la tecnología avanzaba, las capacidades de procesamiento de los computadores fueron incrementando, sus tamaños y los costos de los componentes electrónicos fueron reduciendo, lo que los hizo más accesibles con el paso del tiempo. Por primera vez, en la década de 1970, surgen los primeros videojuegos comerciales y las consolas de videojuegos para el entretenimiento casero, las cuales fueron durante varios años el único medio económicamente accesible a los videojuegos hasta la proliferación de los computadores personales dirigidos al público general. El desarrollo de videojuegos es un área más del desarrollo de software con fines recreativos, de entretenimiento, e incluso con usos educativos. En su inicio, los videojuegos fueron muy sencillos en términos de funcionalidad e interacción, y a medida la tecnología avanzaba su accesibilidad y complejidad se fue incrementando videojuegos.
  • 17. 15 En el desarrollo de videojuegos, se cuenta con la participación de distintos profesionales de diversas disciplinas y especialidades como programadores, artistas, diseñadores, animadores, actores de voz, músicos, entre otros; estos colaboran entre sí para crear un videojuego, lo que implica semanas, meses o años de planeamiento, coordinación y desarrollo la varía dependiendo de la escala y alcance del proyecto, entre otros factores. Los videojuegos pueden ser clasificados en diversos géneros dependiendo de las mecánicas implementadas en este, como, por ejemplo: carrera, disparos, estrategia, acción, plataformas o incluso combinaciones de estos. Los géneros sirven como herramientas para agrupar diferentes videojuegos a partir de sus características, objetivos, interacciones y muchos otros factores. El género Multiplayer online battle arena (MOBA) es considerado en sí mismo como un sub-género de los videojuegos de estrategia en tiempo real o real-time strategy (RTS) y consiste dos equipos que combaten entre sí, conformados por jugadores y personajes no jugables o non-playable characters (NPCs) controlados por una inteligencia artificial; con el objetivo de destruir la estructura principal del equipo contrario. Los MOBAs tuvieron sus orígenes en el videojuego Starcraft cuando Blizzard Entertainment, su publicador, lanzó un paquete de edición de mapas con el cual jugadores podían crear mapas especiales. Uno de esos mapas fue “Aeon of strife,” creado por un jugador en 1998 y que fue la base de los MOBAs modernos, los cuales se hicieron más y más populares con el paso de los años y en 2008 varias compañías empezaron a notar el potencial económico de este género. En un MOBA, cada jugador controla un “campeón” o “héroe” el cual posee un conjunto de habilidades únicas cuya efectividad varía de acuerdo a la situación. Los juegos se desenvuelven en un campo de batalla distribuido en líneas o carriles en
  • 18. 16 los cuales marchan oleadas de NPCs que asisten a los jugadores en el cumplimiento del objetivo principal. En Venezuela, gran parte de la sociedad ha demostrado desinterés en el tema de los videojuegos y su desarrollo durante muchos años debido en parte a la cultura deportista que caracteriza al país, así como también a la temática y estética de muchos videojuegos, en especial durante sus primeros años, por lo que la sociedad en general ha visto los videojuegos sólo como un método de entretenimiento para niños y adolescentes. Para este tipo de proyectos se requiere de una inversión para adquirir computadores adecuados, herramientas, licencias, entrenamiento y demás, lo que implica una considerable inversión de recursos; esto, en conjunto a la situación económica de Venezuela y su marcada inestabilidad, desalienta tanto a personas como estudios a iniciar un proyecto de esta naturaleza y optan por buscar otra área a la que dedicarse. En Venezuela, son pocas las instituciones educativas con programas de estudio sobre el desarrollo de videojuegos y, en conjunto con los factores anteriormente mencionados, limita notablemente la disponibilidad a la información al respecto, por lo tanto, el objetivo de este trabajo de grado es el de promover el crecimiento de la industria de los videojuegos en Venezuela desarrollando un videojuego de género MOBA utilizando en motor gráfico Unreal Engine, que pueda servir como base referencial para futuros proyectos relacionados con el esta área. 2. FORMULACIÓN DEL PROBLEMA Tomando en cuenta lo antes señalado, se planteó la siguiente interrogante:
  • 19. 17 ¿Cómo desarrollar un videojuego de género MOBA empleando un sistema de emparejamiento por nivel utilizando el motor gráfico Unreal Engine? 3. 4OBJETIVO GENERAL Desarrollar un videojuego de género MOBA empleando un sistema de emparejamiento por nivel utilizando el motor gráfico Unreal Engine. 4. OBJETIVOS ESPECÍFICOS  Analizar los requerimientos funcionales para el desarrollo de un videojuego de género MOBA con sistema de emparejamiento por nivel utilizando el motor gráfico de Unreal Engine.  Realizar una estructura de datos que se ajuste al desarrollo de un videojuego de género MOBA con sistema de emparejamiento por nivel utilizando el motor gráfico de Unreal Engine.  Diseñar una serie de personajes, entornos y demás aspectos visuales para el desarrollo del videojuego.  Realizar la codificación de cada funcionalidad requerida para el desarrollo de un videojuego de género MOBA con sistema de emparejamiento por nivel utilizando el motor gráfico de Unreal Engine.  Evaluar el funcionamiento correcto del videojuego desarrollado. 5. JUSTIFICACIÓN Sí bien en un inicio en la sociedad venezolana los videojuegos fueron tomados un medio de entretenimiento infantil, con el paso del tiempo, los videojuegos se han vuelto más y más comunes, estando presentes en diversas
  • 20. 18 plataformas como computadores, consolas y teléfonos a la vez que la sociedad en general los ha aceptado gradualmente, permitiendo así la proliferación de estos, cuya industria crece continuamente y representa buenas oportunidades de empleo y negocio para profesionales de diversas áreas. Algunos géneros de videojuegos han llegado incluso a ser considerados deportes por muchos a nivel mundial, realizando torneos por cientos de miles de dólares por organizaciones como la Major League Gaming (MLG). En el ámbito social, esta investigación busca incentivar a aquellos interesados en los videojuegos y su desarrollo a incursionar en esta área, sirviendo como una base o referencia para proyectos futuros y de este modo fomentar el desarrollo de la industria de los videojuegos en Venezuela. La elaboración de un videojuego puede tardar semanas, meses o años dependiendo de la escala de este, adicionalmente, se requiere una gran inversión de muchos otros recursos, sin embargo, la elaboración exitosa de un videojuego de género MOBA logra una remuneración que puede superar con creces a la inversión inicial, como es el caso del videojuego League of Legends, el cual ha logrado obtener una ganancia de aproximadamente $624 millones durante el 2013 y $964 millones entre enero-septiembre del 2014 (Andy Chalk, 2014), entrando así en la lista de juegos con mayores ganancias a nivel mundial. En el área teórico-metodológica, este trabajo de investigación servirá como base para futuros proyectos relacionados con el proceso de desarrollo de videojuegos y aquellos interesados en el uso del motor gráfico Unreal Engine. Adicionalmente, también servirá como referencia para futuros proyectos cuyos objetivos sean similares o relacionados a los objetivos de esta investigación. En cuanto al aspecto tecnológico, se hará uso del motor gráfico Unreal Engine y de las herramientas que esta tecnología ofrece para el desarrollo de
  • 21. 19 diversos aspectos del juego, desde los ambientes presentes en el videojuego hasta la inteligencia artificial; así como también de recursos accesibles de forma gratuita gracias al Marketplace disponible para Unreal Engine en la plataforma de Epic Games. 6. DELIMITACIÓN TEMPORAL La investigación se llevará a cabo durante el período de Septiembre (2015) – Julio (2016). 7. DELIMITACIÓN ESPACIAL El desarrollo del videojuego, tendrá ubicación en la Universidad Rafael Urdaneta localizada en la Av. 2, el Milagro con calle 86, entrada sur del parque La Vereda del Lago, Maracaibo, estado Zulia. 8. DELIMITACIÓN CIENTÍFICA El estudio se circunscribió al ámbito de la Ingeniería de Computación, en las áreas de Ingeniería de Software y Computación Gráfica, específicamente en las sub-áreas de programación de videojuegos.
  • 22. 20 CAPITULO II MARCO TEORICO 1. ANTECEDENTES El desarrollo de videojuegos ha sido objetivo de diversas investigaciones a lo largo del siglo XXI, entre dichas investigaciones se pueden encontrar distintas problemáticas que han sido planteadas por sus autores y las cuales se mencionan a continuación. Grant (2015), en su tesis titulada Desarrollo de un videojuego de navegador web de género novela visual con distribución móvil para optar por el título de ingeniero de computación, en la universidad Rafael Urdaneta, Venezuela, explica los distintos tipos de videojuegos que se han creado a lo largo del año, logrando exaltar un repentino auge de nuevas tecnologías y géneros dentro del desarrollo de los videojuegos. Entre sus objetivos expone la búsqueda del desarrollo de un videojuego de un género relativamente nuevo, con el fin de brindar una nueva forma de entretenimiento a la sociedad. Ella concluye que, después de realizado el respectivo proceso de recolección de datos, planificación, diseño y evaluación, logró el acometido planteado en sus objetivos, desarrollando exitosamente un juego dentro de los márgenes del el género de videojuego propuesto. La investigación de Grant posee información que es de sumo interés para este proyecto, dado a su empleo de una metodología (SCRUM), de igual manera que este proyecto. A su vez, Grant exhibe variadas formas de desarrollo de un videojuego y como su investigación, habiéndose ocupado de un género relativamente reciente en comparación con otros, es aceptado dentro de la sociedad.
  • 23. Fuenmayor y Sotolongo (2015), realizaron un trabajo de investigación bajo el nombre de Desarrollo de un juego de estrategia por turnos con capacidad multijugador utilizando el motor gráfico UNITY, para alcanzar sus respectivos títulos de ingeniero de Computación en la universidad Rafael Urdaneta, Venezuela. En ella exponen como objetivos el incursionar en el campo de desarrollo de videojuegos en Venezuela, mediante el desarrollo de un videojuego de estrategias en una plataforma web, logrando examinar las funcionalidades que conllevan al desarrollo de este, así como una pequeña descripción de cómo se puede emplear una mecánica de juego basado en estrategias para el desarrollo del mismo. En sus conclusiones mencionaron que el desarrollo de su videojuego fue exitoso, empleando la metodología SCRUM la cual describen como “una metodología que consiste en trabajar por módulos y realizarlos en varias iteraciones de alrededor de dos semanas cada uno”. A su vez, el trabajo de Fuenmayor y Sotolongo proveen una experiencia acerca del desarrollo de videojuegos. Entre estos destaca la implementación de un sistema de multijugador que permite una conectividad asíncrona con el servidor para que distintas personas logren jugar una misma partida. Sarmiento (2015), realizó un trabajo de investigación titulado Desarrollo de un videojuego del género survival horror implementando el motor Unreal Engine para obtener el título de ingeniero de computación en la universidad Rafael Urdaneta, Venezuela. En su investigación explora las distintas funcionalidades que presenta el motor gráfico Unreal Engine, llevando a cabo el desarrollo de un demo de un videojuego horror acuático. También señala que, en la actualidad, la calidad de los videojuegos está altamente relacionada con el nivel de procesamiento y capacidad gráfica que poseen las nuevas computadoras. Sarmiento argumenta que los nuevos avances en el desarrollo terminan brindando un nivel de realidad tan avanzado que el hecho de incrementar el número de polígonos que posee un modelo resulta hasta indiferente para el ojo humano a
  • 24. 22 partir de cierto punto, prácticamente malgastando recursos que podrían aprovecharse en diferentes aplicaciones. Dicho poder de procesamiento restante podría invertirse en técnicas de generación por procedimientos de mundos y otros elementos que participen en la elaboración del videojuego. Entre sus conclusiones, señala que pudo determinar los requerimientos técnicos y operativos para el desarrollo y funcionamiento de un videjouego, así como el uso de distintas herramientas de diseño como son World Maker, Blender, entre otros; para trabajarlas en conjunto con el motor gráfico Unreal Engine y lograr la elaboración videojuego. El trabajo de Sarmiento brinda una gama de conocimientos en cuanto al uso del motor gráfico Unreal Engine enfocándose en la cuarta versión del mismo, la cual se conoce como Unreal Engine 4, y ello representa un gran aporte para la presente investigación el cual utiliza la misma versión del motor gráfico anteriormente mencionado. 2. BASES TEÓRICAS 2.1.Videojuego Según Alegsa (2008), “un videojuego es aquel tipo de juego que consiste en la interacción de un jugador con cualquier interfaz de usuario gráfica con el fin de generar una respuesta visual y sonora en dicho dispositivo de juego”. A su vez, el concepto de videojuego hace referencia a cualquier tipo de juego que se visualiza y juega en algún dispositivo de salida, ya sea una pantalla gráfica, mediante una plataforma, así sea un dispositivo al que se le ha añadido la capacidad para reproducirlo, como una computadora personal, o un aparato creado con el sólo objetivo de ello, como una consola de videojuegos. 2.2.Géneros De acuerdo con Gil (2009), existen distintas clasificaciones para los videojuegos, las cuales contienen a su vez distintas subdivisiones. Entre estas se
  • 25. 23 encuentran un agama extenso de géneros y subgéneros que se intercalan entre sí al exponer un producto final, pues en la actualidad se puede admirar la manera en la que un juego, utilizando atributos de dos o más géneros diferentes, crea una experiencia singular y, a su vez, otro género más. Por lo anteriormente mencionado, han sido expuestos exclusivamente los géneros de mayor relevancia para el manejo de la presente información: 2.2.1. Acción/Aventura Son aquellos en los que el jugador mantiene una constante interacción con el usuario. Generalmente estos obligan al jugador a valerse de sus reflejos, apuntaría y demás habilidades para el cumplimiento de objetivos o simplemente la ejecución del juego. 2.2.2. Disparos (FPS/TPS) Se definen aquellos en el que el jugador tiene una vista en primera persona sobre el ambiente en el interactúa utilizando un arsenal de armas para el cumplimiento de distintos objetivos ambientados generalmente en algún tipo de guerra o tema militar. 2.2.3. Deporte Se presentan como aquellos juegos que simulan un deporte de la vida real, donde pueden estar incluidas todas las reglas oficiales de estos o hacer una simple referencia de estas. En este género se emplea una inteligencia artificial cuya complejidad queda determinada por el tipo de deporte que queda representado dentro del juego.
  • 26. 24 2.2.4. Plataformas Este género se caracteriza por presentar elementos de otros géneros como acción y aventura, con la particularidad que se presentan mediante una vista de desplazamiento horizontal o vertical, donde el jugador tiene que evitar diversos obstáculos y enemigos desplazándose entre plataformas para lograr su objetivo. 2.2.5. Estrategias En estos, al jugador se le conceden una serie de recursos y una vista global del mapa donde este se verá obligado a desempeñar distintas estrategias y tácticas, ya sean en equipo o individuales, que le permitirán cumplir con su objetivo. En este género, el jugador posee una visión general del mapa y una localización de objetivos principales y secundarios en un HUD (Despliegue de Información sobre la partida) así como la barra de vida de cada unidad, cantidad de recursos, tiempo de juego, entre otros. 2.2.6. MOBA Dos equipos compuestos por jugadores y personajes no jugadores (NPC) se enfrentan en un campo de batalla que se compone de diferentes caminos –también conocidos como líneas–, separados entre sí por áreas especiales conocidas como “junglas”. Cada equipo posee una base en puntos opuestos del mapa de donde surgen NPCs que asistirán a los jugadores en el cumplimiento del objetivo principal, el cual es la destrucción de la base del adversario. Los jugadores controlan unidades con características y habilidades especiales cuyo nombre varía dependiendo del contexto de la historia, sin embargo, comúnmente son llamadas “campeones.”
  • 27. 25 2.2.7. Motor de juego El motor de juego puede ser descrito como la estructura sobre la que se desarrollan los videojuegos. La funcionalidad de un motor de juego puede ser menor o mayor, dependiendo del propósito para el que este sea desarrollado, las necesidades de los desarrolladores, los recursos disponibles y el alcance del proyecto, por lo que es difícil concretar una definición sobre estos, sin embargo, es común que un motor de juego sea el software que determina cómo se renderiza un videojuego, cómo se reproducen la música y los sonidos, la física y su interacción con los elementos en el mundo, cómo son manejadas las conexiones entre jugadores y los datos relevantes para videojuegos en línea, las interfaces de control para el usuario, el procesamiento de eventos, gestión de recursos, provee herramientas de desarrollo, animación y creación de mundos, entre otros. 2.2.7.1. Unreal Engine Unreal Engine 4 es una suite completa de herramientas de desarrollo de juegos hecha por Epic Games para los desarrolladores de juegos, sean independientes. Desde juegos móviles en 2D a superproducciones para consola, Unreal Engine 4 ofrece todo lo que necesita para empezar, llevar al mercado, crecer y destacar entre la multitud. Nuevas características de flujo de trabajo revolucionarias y un conjunto de herramientas profunda ayudan a los desarrolladores para iterar rápidamente en las ideas y ver resultados inmediatos, mientras que el acceso C++ código fuente completo trae la experiencia a un nivel completamente nuevo. Es necesario conocer el entorno del Unreal Engine para incursionar en el desarrollo de videojuegos con este motor.
  • 28. 26 2.2.7.1.1. Plataformas En Unreal Engine 4, los proyectos pueden ser desarrollados para diversos sistemas de manera simultánea, también llamados plataformas. Cada plataforma tiene diferentes grados de funcionalidad y límites. Las plataformas soportadas por Unreal Engine 4 son:  Dispositivos móviles: Específicamente Android y iOS.  Dispositivos de realidad virtual: Samsung Gear, Oculus Rift, SteamVR y otros.  HTML5  Linux.  Mac OS X.  Windows.  PlayStation 3 y 4.  Xbox. 2.2.7.1.2. Licencias Las licencias determinan el nivel de acceso a la funcionalidad de un software, los permisos, obligaciones, limitaciones que el usuario de dicho software tiene sobre el producto creado con este, la distribución del software en cuestión, entre otros. La licencia de uso para Unreal Engine 4 permite a los desarrolladores comercializar el contenido creado con Unreal Engine, quienes deberán pagar a Epic Games regalías de 5% de los ingresos netos sólo sí este produce más de $3000 en ingresos. Los desarrolladores tienen acceso a plantillas, contribuciones de la
  • 29. 27 comunidad, actualizaciones, código fuente y a toda la funcionalidad de Unreal Engine, sin embargo, cualquier modificación hecha al código fuente no puede ser comercializada y cualquier recurso distribuido específicamente para uso en Unreal Engine no puede ser utilizado en ningún otro Game Engine, sin excepciones. 2.2.7.1.3. Proyecto El proyecto es la unidad que contiene todo el contenido y código que constituye un videojuego individual, y coincide con un conjunto de directorios que son almacenados en el disco duro. 2.2.7.1.4. Objeto Los elementos base en Unreal Engine se llaman Objetos y contienen la gran parte de la funcionalidad de los elementos de juego. En Unreal Engine 4 todo hereda (u obtiene parte de la funcionalidad) elementos de un Objeto. 2.2.7.1.5. Clase Una clase define los comportamientos y propiedades de un Actor u Objeto en particular utilizado en la creación de un juego con Unreal Engine. Las clases son jerárquicas, lo que significa que una clase hereda información de sus clases padre y pasa esta información a sus clases hijo. 2.2.7.1.6. Actor Un Actor es cualquier objeto que pueda ser colocado en un nivel. El Actor es una Clase genérica que soporta transformaciones 3D tales como traslación, rotación, y escala. Estos pueden ser creados y destruidos a través de código de juego como C++ o Blueprints.
  • 30. 28 2.2.7.1.7. Componente Un componente es una pieza de funcionalidad que puede ser añadida a un Actor. Los componentes no pueden existir por sí mismos, pero cuando estos son agregados a un Actor, el Actor tendrá acceso y funciones suministradas por el Componente. 2.2.7.1.8. Peón Un Peón es una subclase de Actor y sirve como el avatar o persona, por ejemplo los personajes en un juego. Los peones pueden ser controlador por un jugador o por el AI del juego, en forma de personajes no jugador (NPC). 2.2.7.1.9. Personaje Un Personaje es una subclase del Actor Peón cuyo propósito es ser utilizado como un personaje jugador. La subclase Personaje incluye colisiones, controles para movimiento bípedo, y código adicional para el movimiento controlado por el jugador. 2.2.7.1.10. Player Controller La Clase PlayerController es utilizada para obtener entradas de control del jugador y traducirlas en interacciones dentro del juego. Todos los juegos tienen al menos un PlayerController en el. Un PlayerController a menudo posee un Peón o Personaje como una representación del jugador dentro del juego.
  • 31. 29 2.2.7.1.11. AI Controller Así como el PlayerController posee un Peón como una representación del jugador en un juego, un AIController posee un Peón que representa un personaje no jugador (NPC) dentro del juego. Por defecto, los Peones y Personajes terminan con una AIController base a menos que específicamente tengan un PlayerController o se les especifique que no tengan un AIController. 2.2.7.1.12. Brush Una Brush es un Actor que describe un volumen 3D que es colocado en un nivel para definir la geometría del mismo (referidos como BSP) y los volúmenes de juego. Usualmente se utilizan Brushes BSP para crear prototipos de nivel para pruebas de jugabilidad. Los Volumes (volúmenes), por otro lado, tienen distintos usos dependiendo de los efectos que se deseen sobre ellos, como Blocking Volumes (los cuales son invisibles y se utilizan para prevenir que los actores no pasen a través de ellos), Pain Causing Volumes (causan daño con el tiempo a cualquier jugador que pase por encima) o Trigger Volumes (usados para llamar eventos cuando un Actor entra o sale de ellos). 2.2.7.1.13. Niveles Un nivel es un área definida por el usuario creador. Los niveles son creados, vistos y modificados principalmente mediante la colocación, transformación, y edición de las propiedades de los Actores que contiene. Como los niveles son guardados como archivos. umap los niveles también son llamados Mapas.
  • 32. 30 2.2.7.1.14. Mundo Un Mundo contiene una lista de Niveles los cuales son cargados Se encarga del orden de los niveles y de la creación de Actores dinámicos. La interacción directa con el Mundo no es necesaria, pero ayuda a proveer un punto específico de referencia dentro de la estructura del juego. 2.2.7.1.15. Game Mode (Modalidad de juego) La Clase GameMode se encarga de fijar las reglas del juego. Las reglas pueden incluir cuantos jugadores se pueden unir a la partida, si un juego puede ser pausado o no, al igual que cualquier comportamiento especifico de juegos como las condiciones de victoria. En juegos multijugador, el GameMode solo existe en el servidor y las reglas son replicadas (enviadas) a cada uno de los clientes conectados. 2.2.7.1.16. Player State (Estado del jugador) Un PlayerState es el estado de un participante dentro del juego, ya sea un jugador humano o un NPC simulando ser un jugador. Un ejemplo apropiado de PlayerState sería el nombre o puntuación del jugador, su nivel o vida actual, o si llevan la bandera en un juego de Capturar la Bandera. 2.2.7.1.17. Unreal Editor El Unreal Editor, también llamado UnrealEd, es el editor de niveles utilizado para crear niveles de un juego basado en el Unreal Engine. Para poder trabajar con el Unreal Editor, es necesario saber cuáles son sus componentes.
  • 33. 31 2.2.7.1.18. Editor de niveles El Editor de Niveles provee el nivel principal de la funcionalidad de creación de niveles del Unreal Editor. Permite crear niveles, verlos, y modificarlos mediante la colocación, transformación y edición de las propiedades de Actores. El editor de Niveles se divide en varias secciones: 2.2.7.1.18.1. Barra de Pestañas El Editor de Niveles posee una pestaña en la parte superior que muestra el nombre del nivel que se está editando. Pestañas de otras ventanas podrán verse junto a la pestaña activa para una rápida y fácil navegación, similar a un navegador web. A la derecha se ve el nombre del proyecto actual. 2.2.7.1.18.2. Barra de Menús La barra de Menús provee acceso a las herramientas generales y comandos que se utilizan cuando se trabaja con niveles en el editor. 2.2.7.1.18.3. Barra de herramientas El panel de Barra de Herramientas consiste de un grupo de comandos que ofrecen acceso rápido a las herramientas más utilizadas y operaciones más comunes. 2.2.7.1.18.4. Viewport El Viewport permite ver las creaciones a tiempo real. Contiene un conjunto de vistas que pueden ser maximizadas para ocupar el panel completo en una de tres perspectivas posibles (Desde Arriba, Desde un Lado o Desde el Frente).
  • 34. 32 2.2.7.1.18.5. Panel de detalles El panel de Detalles contiene información, utilidades y funciones específicas a la selección actual en el Viewport. Contiene campos de edición para mover, rotar y asignar una escala a los Actores, muestra todas las propiedades editables de los Actores seleccionados y ofrece un acceso rápido a funcionalidades adicionales de edición dependiendo de tipo de Actor(es) seleccionados en el Viewport. 2.2.7.1.18.6. Panel de modos El panel de modos contiene una selección de herramientas de edición. Estas herramientas cambian el comportamiento primario del Editor de Niveles para una tarea especializada, como insertar nuevos elementos al mundo, crear Brushes y Volumes, pintar objetos, generar plantaciones y esculpir paisajes. Los iconos representan. 2.2.7.1.18.7. Esquematizador de mundos (World Outliner) El Esquematizador de Mundo muestra todos los Actores dentro de la escena en un árbol jerárquico. Los Actores pueden ser seleccionados y modificados directamente en el Esquematizador de Mundo. También se dispone de una columna extra que muestra los Niveles, Etiquetas o Identificadores. Entre las herramientas se encuentran:  Modo de colocación de Actores  Modo de Pintura  Modo de Escultura de Paisajes  Modo de Plantación  Modo de Edición de Geometría.
  • 35. 33 2.2.7.1.18.8. Capas El Panel de capas permite organizar los Actores dentro del Nivel. Ofrecen la posibilidad de seleccionar de forma rápida al igual que controlar la visibilidad de grupos de Actores relacionados. Permite esconder elementos de una escena dejando solo los actores con los que se esté trabajando. 2.2.7.1.18.9. Árboles de comportamiento Es una herramienta utilizada para describir gráficamente y programar el comportamiento de un actor a través de inteligencia artifical. Está conformado por dos partes:  Blackboard (pizarra o tablero de datos): Constituye la memoria de la inteligencia artificial, almacenando datos en forma de pares de llave-valor (key-value pairs).  Árbol de comportamiento: Constituye el procesador de la inteligencia artificial. Toma decisiones y actúa de acuerdo a ellas. Dentro del árbol de comportamiento existen tres tipos de procesos que pueden ser realizados: decoradores o condiciones (decorators), denotados con un color azul oscuro; servicios (services), los cuales son nodos de color verde marino; y tareas (tasks), nodos de color morado; a su vez, existen tres ramas de procesamiento para la realización de diferentes tareas: selectores (selector), los cuales reportan éxito siempre y cuando una de sus tareas o ramas tengan éxito; las secuencias (sequences), las cuales reportan éxito sí y sólo sí todas sus ramas o procesos son exitosos; y finalmente los paralelos simples (simple paralel), similares a los selectores con la diferencia que pueden realizar una tarea de manera simultánea a la ejecución de sus ramas o procesos propios.
  • 36. 34 2.3.Elementos básicos 2.3.1. PostgreSQL Según Marc Gibert Ginestà y Oscar Pérez Mora en su libro Bases de datos en PostgreSQL: “PostgreSQL es un gestor de bases de datos orientadas a objetos distribuido bajo la licencia BSD, cuyos orígenes se remontan a 1994 cuando en la Universidad de Berkeley se desarrollaba el gestor de base de datos POSTGRES el cual fue abandonado en favor del proyecto PostgreSQL.” PostgreSQL es un gestor de base de datos multiplataforma de alto rendimiento que fuertemente se apega al estándar ANSI-SQL:2008, es de código abierto y posee interfaces de programación para los lenguajes C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, entre otros, lo que lo hace muy versátil y accesible. 2.3.2. SQL Carme Martín Escofet en su libro El lenguaje SQL define: “El SQL es el lenguaje estándar ANSI/ISO de definición, manipulación y control de bases de datos relacionales” (p 5). El lenguaje SQL o Lenguaje Estructurado de Consultas por su traducción al español, es un lenguaje declarativo diseñado para la gestión de datos, debido a esto, Escofet resalta que no es necesario especificar cómo se realiza el manejo de la información, sólo cuál es el objetivo. 2.3.3. C++ Herbert Schildt en su libro Java:The complete reference explica que C++ es un lenguaje de programación orientado a objetos creado por Bjarne Stroustrup alrededor en 1979 mientras trabajaba en Bell Laboratories para extender las capacidades del lenguaje C. Es uno de los lenguajes de programación con mayor
  • 37. 35 popularidad debido a su flexibilidad y que hereda todas las características y beneficios del lenguaje C, como lo es su bajo nivel y alto rendimiento. Los proyectos desarrollados con Unreal Engine 4 son compilados a código C++, lo que permite a los desarrolladores hacer el mejor uso posible de los recursos y capacidades de cada dispositivo. En Unreal Engine 4 el comportamiento y las propiedades de los objetos pueden ser programados directamente en C++, extendiendo las capacidades del motor gráfico más allá del sistema de programación gráfica por blueprints. 2.3.4. JAVA Herbert Schildt en su libro Java:The complete reference describe Java como un lenguaje de programación creado por Sun Microsystems en 1991 originalmente bajo el nombre de “Oak” con un enfoque en la independencia del dispositivo en que se ejecuta. Schildt expresa que Java está cercanamente relacionado con C y C++, heredando la sintaxis de C e influenciado por C++ en sus características orientadas a objetos. Patrick Niemeyer y Daniel Leuckes en su libro Learning Java, describen Java como un lenguaje compilado e interpretado, “diseñado como un lenguaje independiente del dispositivo lo suficientemente seguro para cruzar las redes y lo suficientemente poderoso para reemplazar código nativo ejecutable.” Definimos entonces Java como un lenguaje de programación orientado a objetos, multiplataforma que sigue una filosofía de “Write once, run anywhere” que significa “Escríbelo una vez, ejecútalo donde sea”, debido a que es interpretado por una máquina virtual que traduce el código de bytes (bytecode) al código comprendido por el computador donde se ejecuta. Hoy en día, Java es un lenguaje muy popular en el desarrollo de aplicaciones web, particularmente en el lado del servidor.
  • 38. 36 2.3.5. REST Constituye a la arquitectura de software existentes para los sistemas de hipermedia distribuidos. Este describe cualquier interfaz donde exista una transmisión de datos mediante HTTP ya sea en formato de JSON, XML, entre otros; sin abstracciones adicionales. 2.3.5.1. VaREST Es un plugin especial para Unreal Engine 4 que permite realizar comunicaciones mediante REST. Este es manejado mediante Blueprints y no requiere algún código adicional. 2.3.6. BLENDER Blender es un programa de diseño en 3D completamente gratuito y Open Source, el cual soporta cualquier tipo de modelado, animación, simulación, renderización, composición y todo tipo de edición de video y entornos de videojuegos.
  • 39. CAPÍTULO III MARCO METODOLÓGICO En este capítulo se busca describir el tipo y diseño de la investigación, así como las técnicas utilizadas durante la recolección de información, la unidad de análisis y finalmente la metodología de desarrollo a utilizar, incluyendo cada una de las fases contempladas dentro de estas. 1. NIVEL DE LA INVESTIGACIÓN De acuerdo a la naturaleza y objetivos, este trabajo se puede ubicar dentro del nivel de una investigación Aplicativa. Como menciona Padrón (2006): La expresión "Investigación Aplicada" se propagó durante el siglo XX para hacer referencia, en general, a aquel tipo de estudios científicos orientados a resolver problemas de la vida cotidiana o a controlar situaciones prácticas. Dentro de esa concepción general, pueden distinguirse, a su vez, dos sentidos más específicos de dicha expresión: Aquella que incluye cualquier esfuerzo sistemático y socializado por resolver problemas o intervenir situaciones, aunque no sea programático, es decir, aunque no pertenezca a una trayectoria de investigaciones descriptivas y teóricas. En ese sentido se concibe como investigación aplicada tanto la innovación técnica, artesanal e industrial como la propiamente científica. O Aquella que sólo considera los estudios que explotan teorías científicas previamente validadas para la solución Dada la definición se puede confirmar que el nivel de la presente investigación es aplicativo ya que el objetivo principal de la misma no es más que la de desarrollar un juego de género MOBA con capacidad de multijugador y un sistema de emparejamiento utilizando el motor gráfico Unreal Engine.
  • 40. 2. DISEÑO DE LA INVESTIGACIÓN El diseño de una investigación consiste en el desglose de los diferentes planteamientos que abarcan la planificación o diferentes estrategias, que se tomaron en cuenta para el cumplimiento de los objetivos, así como la obtención de los resultados. Se entiende por Investigación de Campo, el análisis sistemático de problemas de la realidad, con el propósito bien sea de describirlos, interpretarlos, entender su naturaleza y factores constituyentes, explicar sus causas y efectos, o predecir su ocurrencia; haciendo uso de métodos característicos de cualquiera de los paradigmas o enfoques de investigación conocidos o en desarrollo. Los datos de interés son recogidos de forma directa de la realidad; en este sentido se trata de investigaciones a partir de datos originales o primarios. Sin embargo, se aceptan también estudios sobre datos censales o muestrales no recogidos por el estudiante, siempre y cuando se utilicen los registros originales con los datos no agregados; o cuando se trate de estudios que impliquen la construcción o uso de series históricas y, en general, la recolección y organización de datos publicados para su análisis mediante procedimientos estadísticos, modelos matemáticos, econométricos o de otro tipo. Como objetivo principal se tiene el desarrollo de un videojuego, es decir, el desarrollo de una aplicación con motivos de entretenimiento donde no existe ninguna manipulación, modificación o algún tipo de alteración en las variables de estudio, por lo que el diseño del trabajo de investigación presente es de Campo o no experimental. Para corroborar, se puede tomar en cuenta lo que definen Sata Palella y Feliberto Martins (2010, pag.87), ellos definen al diseño no experimental o de campo como aquel que se realiza sin ninguna manipulación de variables. En esta el investigador no sustituye intencionalmente las variables independientes. Solo recrea y observa los hechos tal y como se presentan en su contexto real y en un tiempo determinado, para posteriormente analizarlos.
  • 41. 39 3. TÉCNICAS E INSTRUMENTOS DE OBTENCIÓN DE DATOS Fariñas, Gómez, Ramos y Rivero (2010) mencionan: “Un instrumento de recolección de datos es en principio cualquier recurso de que pueda valerse el investigador para acercarse a los fenómenos y extraer de ellos información.” Lo que implica que al uso de cualquier medio por el cual el investigador logre obtener información referente a su fenómeno de estudio, puede ser considerado como un instrumento de recolección de datos. Para la recolección de datos en este trabajo de investigación, se optó por la recopilación documental de aquellas personas que cumplieron con los objetivos que se tenían planteados. Esta técnica se basa en la consulta de textos asociados al tema principal de la investigación en un entorno web. Cada uno de los documentos fueron analizados y estudiados para lograr obtener distinta información que no puede ser encontrada en un entorno en general. Finalmente se aplicó observación directa del proceso de desarrollo del videojuego. Según el grupo Metodología (2010) “Es el conjunto de instrumentos y medios a través de los cual se efectúa la investigación. La técnica es indispensable en el proceso de la investigación científica, ya que integra la estructura por medio de la cual se organiza la investigación” dado esto, se puede definir la Observación directa como una técnica de investigación, ya que esta implica una forma por el cual se lleva a cabo la investigación. En este caso, se aplica una observación enfocada en el desarrollo del videojuego de género MOBA.
  • 42. 40 4. UNIDAD DE ANÁLISIS Según Hurtado (2010 p. 267) “La Unidad de Análisis se refiere al ser o entidad poseedora del evento que se desea estudiar; se definen de tal modo que a través de ellas se puede dar una respuesta a la interrogante de la investigación”. Dada la definición y al respectivo análisis de los eventos a estudiar, se determinó la unidad de análisis de este proyecto como el videojuego de genero MOBA. 5. METODOLOGÍA DE DESARROLLO La metodología empleada en el proyecto es la de Scrum. Esta consiste en un proceso donde se aplican diferentes practicas donde el trabajo de equipo ayuda a obtener los mejores resultados posibles para un proyecto. Cada practica ayuda a su vez a la siguiente lo cual brinda una agilidad en cuanto a desarrollo de grandes proyectos. Para cumplir con lo establecido en la metodología de Scrum, se deberá trabajar en ciclos de iteraciones llamados Sprints, donde se realizan un proceso de análisis, diseño, desarrollo y evaluación del proyecto o entregable final. Figura 1.Figura 1 Fuente: http://www.reserv.com.ar/images/scrum.jpg
  • 43. 41 La fase de análisis, consiste en la obtención de definiciones y requerimientos funcionales para llevar a cabo el resto del proyecto. Estos requerimientos son técnicos y operativos. La fase de diseño, contempla el diseño de las distintas estructuras de datos sobre los que descansa el videojuego. Dichas estructuras son los distintos diagramas de uso que pueda presentar el proyecto, diagramas de despliegue, diagramas de interfaces, entre otros. A su vez, Dentro del diseño está incorporado todos los elementos visuales y/o de multimedia que pueda poseer el videojuego, como los personajes, ambientes, mundos, sonidos, efectos, entre otros. Esta fase sirve como guía para la cuarta fase de codificación.
  • 44. 42 La fase de codificación, viene dado por el proceso en el cual se crean todas funciones y métodos que han sido diseñados en la fase anterior, utilizando las herramientas de desarrollo elegidas durante la fase de análisis. La fase de evaluación ocurre cuando se finaliza todo el proceso de codificación. En esta, el programa es puesto a prueba para determinar su efectividad mediante pruebas funcionales. 6. FASES DEL PROYECTO  Analizar los requerimientos funcionales para el desarrollo de un videojuego de género MOBA con sistema de emparejamiento por nivel utilizando el motor gráfico de Unreal Engine.  Definir las especificaciones necesarias de un computador para el uso del motor gráfico Unreal Engine.  Definir las características principales que presentará el videojuego MOBA.  Determinar las funciones a codificar que contemplen el desarrollo del videojuego MOBA.  Definir que otras posibles herramientas se implementarán para la elaboración del videojuego MOBA.  Realizar una planificación del desarrollo de cada funcionalidad del videojuego MOBA.  Realizar un diagrama de Gantt presentando las actividades contenidas en la planificación elaborada.
  • 45. 43  Diseñar un videojuego de género MOBA con sistema de emparejamiento por nivel utilizando el motor gráfico de Unreal Engine.  Plantear el esquema del videojuego MOBA, su historia, personajes y modalidad de juego, así como su arquitectura de software.  Determinar un modelado de datos que se apegue al desarrollo del videojuego MOBA.  Crear un modelo de campo que mantenga consistencia con la historia del juego.  Crear un modelo de personaje que mantenga consistencia con la historia del juego.  Codificar cada funcionalidad creada para el desarrollo de un videojuego de género MOBA con sistema de emparejamiento por nivel utilizando el motor gráfico de Unreal Engine.  Realizar la codificación del cliente que ejecutará el videojuego de género MOBA desarrollado.  Realizar la codificación del servidor que gestionara el juego.  Evaluar el funcionamiento correcto del videojuego desarrollado.  Plantear distintos casos para realizar una prueba de estrés.  Realizar un test de estrés que determine el posible malfuncionamiento de alguna de las funcionalidades del videojuego de género MOBA.  Realizar las respectivas modificaciones para mejorar el desempeño y la jugabilidad del videojuego de género MOBA
  • 46. Capítulo IV ANÁLISIS DE LOS RESULTADOS En este capítulo se plasman los resultados de la investigación, los cuales permiten dar respuesta a los objetivos planteados. 1. ANÁLISIS DE REQUERIMIENTOS BÁSICOS Para el debido funcionamiento del videojuego de género MOBA, se realizan una serie de recomendaciones sobre los requerimientos, tanto mínimos como óptimos que debe poseer el equipo donde se ejecutará el nombrado juego. 1.1.REQUERIMIENTOS TÉCNICOS  Computadora de escritorio o Laptop con Windows 7 o posterior. De 32 o 64 bits.  Memoria RAM de 6GB.  Tarjeta gráfica Nvidia GeForce GTX (Cualquiera de la familia GTX). 1.2.REQUERIMIENTOS OPERATIVOS  Windows 7 o posterior.  Servidor GlassFish 4.1.1  Gestor de base de datos PostgreSQL 9.3 o superior.  Unreal Engine 4.11 (Source Built)  IDE Visual Studio 2015.  NetBeans 8.1.2  Librería rest JAX-RS 2.0 (Java).
  • 47. 2. PLANIFICACIÓN Para el desarrollo del videojuego, se manejó una metodología de desarrollo llamada Scrum. Éste consiste en distribuir todas las fases de desarrollo en módulos entregables que determinan los a avances del mismo. Cada semana representa una iteración de módulo del proyecto donde se buscar cubrir todos los entregables, obteniendo un calendario donde queda plasmado la fecha de entrega de cada “Release” o entregable. Para este proyecto se realizó una distribución de un módulo por semana durante el período de Septiembre del 2015 hasta Julio 2016. Figura 2 Planificación. Fuente: Orlando Cuabro y José Ortega
  • 48. 46 3. DISEÑO Terminada la fase de planificación del cumplimiento de los objetivos para el desarrollo del título de tesis. Se prosiguió a diseñar los distintos aspectos que conforman un videojuego MOBA, por lo que se decidió observar distintos elementos de este género con la finalidad de encontrar las bases con las cuales se fundamentan un videojuego de género MOBA. Terminada la observación, se logró concretar un diseño preliminar del videojuego, así como su jugabilidad. Dicho diseño, servirá de guía para el proceso de codificación del mismo dando apoyo al desarrollo de métodos y funciones que permitirán al jugador una rápida adaptación al entorno del juego. Unreal Engine a su vez posee una tecnología capaz de crear interfaces que van no solo para un entorno de escritorio, sino también para distintas plataformas móviles (Smartphones, tablets, entre otros); y se extiende a otros sistemas operativos como son iOS, Linux, Windows, entre otros. 3.1.ELEMENTOS VISUALES Y MULTIMEDIA 3.1.1. HISTORIA Debido a la naturaleza de este género de videojuego, no se ha creado una historia base que enrole a todo el juego. Se ha optado por el desarrollo de una jugabilidad basada en el cumplimiento de objetivos tanto secundarios como primarios que concedan la victoria sobre otros jugadores. De acuerdo con los objetivos del proyecto, se busca en este trabajo de grado la finalidad de crear un videojuego de género MOBA, el cual involucra elementos RTS donde los jugadores buscan destruir un objetivo principal denominado “Nexus”. Para el cual tendrán que enfrentarse a oleadas de “Underlings” (Unidades pequeñas y débiles en comparación con los campeones) y a su vez a otros campeones
  • 49. 47 (Unidades mayores, controladas por otros jugadores), cumpliendo con objetivos secundarios en su camino los cuales le otorgaran bonificaciones al equipo. En el juego existen dos equipos definidos, los ángeles y los demonios. 3.1.2. PERSONAJES Y ESCENARIOS Para los personajes (Underlings y Campeones) se utilizaron diferentes paquetes de personajes prediseñados disponibles al público en general de forma gratuita, entre los cuales resaltan los del usuario “Mixamo”, el cual contiene personajes con sus esqueletos de animaciones ya configurados y una serie de animaciones básicas común a todos los personajes. Para la selección del “mesh” o estructura de esqueleto del personaje, se eligieron aquellos entre el paquete del usuario mencionado anteriormente, cyos rasgos físicos se asemejan a los rasgos fantasiosos de alguna de las dos facciones existentes dentro del juego. Dentro del equipo de los Ángeles, se empleó el personaje de “Maria” de Mixamo el cual se muestra una imagen de su pose básica o idle y su esqueleto:
  • 50. 48 Figura 3 Underling Angel. Fuente: Mixamo Animation Pack Figura 4 Underling Angel. Fuente: Mixamo Animation Pack
  • 51. 49 El personaje de María fue seleccionado debido a su gran parecido con el arcángel San Miguel de las creencias católicas. El personaje “María” posee una forma de cara y un color de armadura muy semejante al que lleva en la imagen a continuación. El arcángel Miguel: Figura 5 Fuente:http://sanmiguelarcangel.info/grupos-comunidades/comunidades Este personaje representa dentro de la religión cristiana, el guardián de la iglesia de Dios. Por lo que se decidió que los underlings del equipo de los ángeles tuviese este rostro con la premisa de “Proteger el templo de Dios” el cual es representado dentro del juego como el “Nexus” del equipo de los ángeles y objetivo principal de los demonios.
  • 52. 50 Para el equipo de los demonios, se buscaba un aspecto general que se llevara de la mano con la creencia general de estos, la cual son de “Criaturas humanoides que tengan aspecto sobrenatural”. Por lo que se decidió utilizar el personaje “Vampire” de Mixamo para ocupar el rol de los underlings de los demonios. A continuación se mostrarán las imágenes del idle y esqueleto correspondiente a dicho personaje: Figura 6 Underling Demon. Fuente: Mixamo Animation Pack
  • 53. 51 Figura 7 Underling Demon. Fuente: Mixamo Animation Pack Como se podrá observar “Vampire” posee una apariencia sobrenatural y su combinación de colores (rojo, gris y negro) le ayudan a sembrar el ambiente de “demonio” que se busca para el videojuego.
  • 54. 52 A parte de los underlings, también se tiene pensado seleccionar un personaje para los champions. Sin embargo, dado que el videojuego no posee una historia de la cual nutrirse para dar vida a sus personajes, se optó por el uso de un personaje con apariencia “Neutra” el cual pudiese representar cualquiera de los dos bandos. Este personaje es “Ganfault” el cual se muestra a continuación: Figura 8 Champion Ganfault . Fuente: Mixamo Animation Pack
  • 55. 53 Figura 9 Champion Ganfault. Fuente: Mixamo Animation Pack “Ganfault” tiene una apariencia mitad humana y mitad demoníaca, teniendo un balance en cuanto a su facción. Por lo que los jugadores podrán jugarlo tanto en el equipo de los ángeles como en el de los demonios.
  • 56. 54 Para el mundo y el entorno donde se desenvuelven las partidas del videojuego MOBA se utilizó el editor de nivel, el cual brinda una gama de herramientas de diseño de superficies y entornos en 3D que ayudan al usuario a montar un mundo genérico donde las limitaciones vienen dadas por la creatividad del usuario. También, se empleó Blender para el diseño de distintos componentes cuya complejidad es mínima. A continuación, se presentaran varias tomas del mundo creado denominado “5v5” donde se lleva a cabo las distintas partidas: Figura 10 Mapa de combate 5v5. Fuente: Orlando Cuabro y José Ortega
  • 57. 55 Figura 11 Mapa de combate 5v5. Visto de planta. Fuente: Orlando Cuabro y José Ortega Para el diseño del campo, se tomó en cuanta la observación realizada de los mapas de distintos juegos de género MOBA como son League Of Legends, Defense Of The Acients y el mapa de Heroes of the Storm llamado “Garden Of Terror”. El mapa posee tres líneas por donde se aparecen infinitas oleadas de underlings en un determinado intervalo de tiempo. El jugador, podrá mover libremente su champion por el mapa exceptuando los bordes del mismos y los obstáculos que en él se encuentran.
  • 58. 56 3.2.ESTRUCTURAS DE INFORMACIÓN 3.2.1. DISEÑO DE DIAGRAMAS DE CASOS DE USO Figura 12 Diagrama de uso del menu principal. Fuente: Orlando Cuabro y José Ortega En el presente diagrama se muestran la interacción entre el usuario con el videojuego. Dentro de este el usuario puede realizar distintas funciones como se muestran en el diagrama. Entre estas se encuentran:  Login: El usuario inicia sesión en una cuenta creada.  Registro: Si el usuario no posee una cuenta, este realiza una petición de registro y los datos llenados en el formulario son guardados en la base de datos.  Buscar una partida: El jugador busca un lobby o “Room” donde el usuario cumpla las condiciones necesarias para unirse.
  • 59. 57  Inicio de la partida: Un jugador en conjunto con otros 9, comienzan a cargar el entorno del juego.  Cerrar Sesión: El jugador cierra su sesión de su cuenta, volviendo al menú principal del juego. A continuación, se presenta el diagrama de casos de uso para la jugabilidad de cada partida que se genera: Figura 13 Diagrama de uso durante modo de juego. Fuente: Orlando Cuabro y José Ortega  Inicio de partida: Los jugadores aparecen en la partida listos para jugar.  Destrucción de objetivos secundarios: Los jugadores intentan de destruir todos los objetivos secundarios o torretas.  Destrucción de objetivo primario: Los jugadores destruyen el objetivo primario o “Nexus” para dar fin a la partida.  Terminar Juego: A cada usuario se le muestra una información sobre su victoria o derrota en el juego, terminando el juego.
  • 60. 58 3.2.2. DISEÑO DEL MODELO DE DATOS Y DIAGRAMA DE ENTIDAD RELACIÓN Para la estructura de base de datos, se utilizó el gestionador de bases de datos PostgreSQL, donde se creó la base de datos “MOBA”. Como se puede observar en la figura, ésta está compuesta por 2 tablas, “users” y “statistics”. Entre los campos de la tabla “Usuario” se tienen los siguientes campos:  Id: Contiene la llave primaria de la tabla.  Username: Contiene el nombre de usuario del jugador. El cual utiliza para iniciar sesión.  Password: Contiene la clave que utiliza el usuario para validar su inicio de sesión dentro del juego.  Name: Contiene el nombre por el que el jugador es reconocido dentro de una partida.  Registered_date: Fecha en la que el usuario fue registrado.  Level: Nivel del jugador utilizado para el sistema de emparejamiento.  Experience: Experiencia acumulada a través de los juegos que determina el nivel del jugador. La tabla “statistics” abarca los siguientes campos:  Id: Contiene la llave foránea de la tabla.  wins: Contiene el número de victorias que el jugador ha obtenido desde su registro.  losses: Contiene el número de derrotas que el jugadore ha obtenido desde su registro.  kills: Contiene la suma de asesinatos que ha realizado el jugador en todas sus partidas.  deaths: Contiene la suma de las muertes que ha sufrido el jugador en todas sus partidas.
  • 61. 59  underling_kill: Contiene la suma de todos los asesinatos de underlings y creeps que ha cometido el jugador en todas sus partidas  turret_Kills: Contiene la suma de todas las torretas que ha destruido el jugador durante sus partidas. La tabla “levels” abarca los siguientes campos:  level: Llave primaria e indicador del nivel.  experience: Cantidad de experiencia necesaria para alcanzar el siguiente nivel. Figura 14 Diagrama entidad relación. Fuente: Orlando Cuabro y José Ortega
  • 62. 60 3.2.3. DISEÑO DE DIAGRAMA DE DESPLIEGUE En el presente trabajo se empleó una arquitectura de 2 niveles donde la primera, es la capa de “Cliente” donde los usuarios interactúan con el sistema mediante una interfaz gráfica. Luego, procede a la capa de “Comunicación” donde son gestionadas cada una de las peticiones realizadas por el jugador; estas comprenden el control de acceso, matchmaking, instanciamiento de la partida y actualización de estadísticas al finalizar una partida. Por último, la capa de “Comunicación” se comunica con la capa de “Acceso a datos” donde se realizan los respectivos almacenamientos de datos dentro del gestionador de bases de datos, retornando todos los datos necesarios para el funcionamiento del juego. 3.2.4. DISEÑO DE DIAGRAMA DE INTERFACES Con la ayuda de la herramienta de interfaz de Unreal llamada “Unreal Motion Graphics (UMG)” se pudo obtener y crear un modelo de la interfaz gráfica dentro del videojuego. Esta herramienta permite un rápido diseño de
  • 63. 61 interfaz donde cada componente posee sus propias funciones, las cuales pueden se sobrescritas. Para el videojuego MOBA se decidió elaborar una interfaz sencilla de botones e inputs que permitieran al usuario iniciar sesión, buscar una partida, desconectarse y cerrar el juego, así como también informarse del estado de la partida durante la misma y de los jugadores que participan dentro de ella. A continuación, se muestran las distintas pantallas utilizadas dentro del videojuego:
  • 64. 62 Figura 15 Inicio de sesión. Fuente: Orlando Cuabro y José Ortega Figura 16 Registro. Fuente: Orlando Cuabro y José Ortega
  • 65. 63 Figura 17 Menú principal. Fuente: Orlando Cuabro y José Ortega Figura 18 Componente de composición de equipo: Jugador. Fuente: Orlando Cuabro y José Ortega
  • 66. 64 Figura 19 Componente de composición de equipo. Fuente: Orlando Cuabro y José Ortega Figura 20 Diseño preliminar de ventana de lobby. Fuente: Orlando Cuabro y José Ortega
  • 67. 65 Figura 21 Componente de puntuación. Fuente: Orlando Cuabro y José Ortega
  • 68. 66 Figura 22 Ventana de estado de jugador. Fuente: Orlando Cuabro y José Ortega Figura 23 Barra de estatus de champions. Fuente: Orlando Cuabro y José Ortega
  • 69. 67 Figura 24 Barra de estatus de Unit. Fuente: Orlando Cuabro y José Ortega
  • 70. 68 4. CODIFICACIÓN Obtenidos los diferentes diseños del videojuego, se procede a la codificación del mismo empleando diferentes herramientas de desarrollo que se han decidido emplear para crear y cumplir con el objetivo planteado de este proyecto. Mediante la metodología Scrum, se procedió a los períodos de desarrollo o también llamados “Sprints” donde se establecieron todos los puntos lógicos y gráficos del proyecto. La fase de desarrollo duró alrededor de 9 semanas donde su culminación viene dada por el cumplimiento del segundo objetivo planteado en el presente trabajo de investigación. 4.1.SERVIDOR El servidor ofrece servicios REST para las comunicaciones con el cliente de juego, el cual utiliza el plugin VaRest para la realización de pedidos. Los servicios disponibles son: módulo de control de acceso llamado “AccountsResource”, módulo de creación de partidas y matchmaking “GamesResource” y el módulo de estadísticas “StatisticsResource”. Cuenta con un “Connection pool” de manera que puede realizar múltiples transacciones simultáneamente a la base de datos, mejorando así su escalabilidad. El servidor dedicado Unreal consiste en una instancia del juego, sin ningún proceso gráfico, que se ejecuta en segundo plano y realiza todos los procesos lógicos de la partida: actualizar posiciones de jugadores, realizar cambios en las variables, replicación de variables, inteligencia artificial, crear unidades del juego, monitorear el progreso de la partida, es decir, toda la lógica esencial para el flujo de la partida es realizada en esta instancia del juego. El módulo de control de acceso está compuesto por los métodos de inicio de sesión, cierre de sesión y registro.
  • 71. 69  Inicio de sesión: Recibe como parámetros un nombre de usuario y una contraseña, comprueba sus credenciales con la base de datos y sí el usuario existe lo agrega a una lista de usuarios actualmente conectados, bloqueando el acceso de esta cuenta hasta que se finalice la sesión. Retorna un JSON conteniendo los datos del jugador tales como su nombre dentro del juego, nivel, experiencia y un ID.  Cerrar sesión: Recibe como parámetro el ID previamente asignado al jugador y los elimina de la lista de usuarios conectados, permitiendo el acceso subsecuente de dicho usuario.  Registro: Recibe como parámetros un nombre de usuario, correo electrónico, contraseña y un nombre a utilizar dentro del juego y lo agrega a la base de datos sí el nombre de usuario o el correo electrónico no han sido previamente utilizados. El módulo de creación de partidas se compone de los métodos de búsqueda de partidas, comprobación de partida, actualización de lobby y abandono de cola. Este módulo contiene una lista de partidas creadas y partidas en curso.  Búsqueda de partida: Recibe datos de identificación del usuario previamente asignados en el inicio de sesión y busca una partida a la cual el jugador pueda unirse, tomando en consideración su nivel como jugador. El proceso de búsqueda consiste en iterar en la lista de juegos disponibles y comprobar las siguientes condiciones: 𝐽𝑢𝑔𝑎𝑑𝑜𝑟𝑒𝑠 𝑒𝑛 𝑙𝑎 𝑝𝑎𝑟𝑡𝑖𝑑𝑎 < 𝐽𝑢𝑔𝑎𝑑𝑜𝑟𝑒𝑠 𝑝𝑒𝑟𝑚𝑖𝑡𝑖𝑑𝑜𝑠 𝑁𝑖𝑣𝑒𝑙 𝑀í𝑛𝑖𝑚𝑜 ≤ 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑠𝑜𝑙𝑖𝑐𝑖𝑡𝑎𝑛𝑑𝑜 𝑢𝑛𝑖𝑟𝑠𝑒 ≤ 𝑁𝑖𝑣𝑒𝑙 𝑚á𝑥𝑖𝑚𝑜 Dónde 𝑁𝑖𝑣𝑒𝑙 𝑚í𝑛𝑖𝑚𝑜 = 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑝𝑟𝑖𝑚𝑒𝑟 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑢𝑛𝑖𝑑𝑜 − 𝑑𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑎𝑐𝑒𝑝𝑡𝑎𝑏𝑙𝑒
  • 72. 70 𝑁𝑖𝑣𝑒𝑙 𝑚á𝑥𝑖𝑚𝑜 = 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑝𝑟𝑖𝑚𝑒𝑟 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑢𝑛𝑖𝑑𝑜 + 𝑑𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑎𝑐𝑒𝑝𝑡𝑎𝑏𝑙𝑒 De no existir una partida que cumpla con estas condiciones, una nueva partida es creada y el jugador solicitante es unido automáticamente, asignando su nivel como el nivel base de la partida y al cliente solicitante le es devuelto un ID único de esta partida para su futuro acceso. Cuando la cantidad máxima de jugadores permitidos ha sido alcanzada, los equipos son asignados de manera alternativa: equipo 1 está conformado por los jugadores con número de entrada impar y el equipo 2 está compuesto por los jugadores de número de entrada par. A su vez, una instancia del servidor dedicado Unreal es iniciada, se le asigna un puerto, y la dirección del servidor es configurada para ser transmitida a los clientes.  Comprobación de partida: Este método es solicitado periódicamente por los clientes que hayan solicitado una búsqueda de partida, recibiendo como parámetro el ID único de partida para comprobar sí su partida está lista para ser iniciada, en cuyo caso la respuesta enviada al cliente consistirá en un JSON que contiene los equipos con los nombres de los jugadores, sus niveles, números de jugador dentro del equipo y la dirección de la instancia del servidor dedicado para unirse al mapa de juego y pasarán a la ventana de lobby, dónde cada jugador escogerá a su personaje de preferencia y entrará al juego.  Actualización de lobby: Recibe datos del cliente solicitante sobre cuál personaje ha escogido, el nombre del personaje y actualiza la composición del equipo que será utilizada para actualizar la interfaz gráfica del lobby.
  • 73. 71  Abandono de cola: Recibe como parámetro el ID del jugador, el ID de la partida a la que actualmente está unido y lo remueve. Sí la partida quedase con cero jugadores unidos, esta es eliminada. El módulo de estadísticas se encarga de la actualización de estadísticas al finalizar una partida y su recuperación a solicitud del jugador.  Actualizar estadísticas: Recibe como parámetros el resultado de la partida (victoria o derrota), jugadores asesinados, underlings y creeps asesinados, torretas destruidas, muertes personales y experiencia ganada en la partida, los almacena en base de datos y comprueba sí el jugador cumple con la cuota para incrementar su nivel.  Recuperar estadísticas: Recibe como parámetro el ID del jugador y recupera todas las estadísticas, nivel, experiencia y el requisito para el siguiente nivel. 4.2.UNIDADES DE JUEGO Unreal Engine hace un uso extensivo de la propiedad de herencia de la programación orientada a objetos, por lo que se tomó provecho de ello creando una clase básica de juego sobre la que se rigen todas las reglas del mismo. 4.2.1. Unit Es la clase básica de juego a partir de la cual las demás unidades de juego derivan. Posee todas las propiedades básicas, métodos y eventos esenciales para la interacción entre las diversas unidades, es decir, todas las reglas del juego giran en torno a esta clase.  Propiedades - Alive: Indica sí esta unidad está viva. - Health: Salud actual de la unidad.
  • 74. 72 - Max health: Salud máxima de la unidad. - Health regen: Cantidad de salud regenerada periódicamente. - Mana: Puntos mágicos de la unidad. - Max mana: Puntos mágicos máximos de la unidad. - Mana regen: Cantidad de puntos mágicos regenerada periódicamente. - Regenerates: Indica sí esta unidad es capaz de regenerar salud y puntos mágicos periódicamente. - Regen rate: Intervalo de renegeración de la unidad. - Physical damage: Capacidad de daño de ataques básicos y físicos de esta unidad. - Magical damage: Capacidad de daño de ataques mágicos de esta unidad. - Physical defense: Reducción de daño físico. - Magical defense: Reducción de daño mágico. - Critical chance: Probabilidades de asestar un golpe crítico al momento de atacar, realizando más daño de lo usual. - Attack range: Distancia de ataque de esta unidad. - Attack speed: Tiempo mínimo posible entre cada ataque. - Aggression range: Distancia dentro de la cual la inteligencia artificial es capaz de detectar un enemigo. - Cooldown: Indica sí esta unidad puede atacar en un instante dado. Esta variable está regida por la variable Attack speed. - Can Move: Indica sí esta unidad puede moverse. Utilizada principalmente por la inteligencia artificial.
  • 75. 73 - Team number: Indica el equipo al que pertenece esta unidad. Utilizada para comprobar la agresión entre unidades. - Name: Nombre genérico de esta unidad. - Behaviour tree: Árbol de comportamiento utilizado por la inteligencia artificial. - Target: Unidad objetivo. Utilizado principalmente para ataques y movimiento automático hacia dicho objetivo.  Métodos - Unit death: Define las acciones a realizar cuando una unidad muere, es decir, su salud cae por debajo de 0. El procedimiento por defecto consiste en destruir la unidad. - Attack: Hace una llamada al método de ataque básico por de la unidad. Por defecto, el ataque básico es Meele attack. - Meele attack: Método genérico de ataque cercano. - Ranged attack: Método genérico de ataque a distancia. Crea un proyectil que persigue al objetivo. - Take damage: Método estándar para realizar daño a una unidad, tomando en consideración el tipo de daño realizado, la cantidad de daño y las defensas de la unidad siendo dañada. - Is vulnerable: Método genérico que indica sí una unidad es vulnerable. Por defecto, cualquier unidad viva es vulnerable.  Eventos - Regeneration: Evento periódico que incrementa la salud y los puntos mágicos de la unidad. La restauración realizada no puede exceder los límites de ninguno de ambos atributos. - Attack cooldown: Evento llamado al realizar una llamada a Attack. Bloquea cualquier intento de ataque subsecuente por el intervalo de tiempo Attack speed.
  • 76. 74 - Update status bar: Actualiza periódicamente una barra de estado que flota sobre la unidad. Por defecto esta barra de estado muestra la salud de la unidad.  Inteligencia artificial La unidad básica de juego sigue el siguiente árbol de comportamiento: Explicación: Sí la unidad está viva, periódicamente comprobará sí existen enemigos cercanos. En el caso que lo haya, confirmará contacto visual. Sí el objetivo está en alcance, lo atacará y reiniciará el tiempo de persecución, de lo Figura 25 Árbol de comportamiento de Unit. Fuente: Orlando Cuabro y José Ortega
  • 77. 75 contrario lo perseguirá y llevará seguimiento del tiempo durante el cual ha perseguido, abandonando la persecución después de 3 segundos. Sí el objetivo fue destruido o no es válido, lo eliminará de su tablero de datos. En el caso de no haber un enemigo, la unidad se dirigirá al waypoint o punto objetivo especificado o en su defecto a su posición inicial. 4.2.2. Underling Es la unidad principal de cada equipo, la cual es creada periódicamente con el objetivo de asistir a los jugadores en la destrucción de la base del equipo opuesto, moviéndose a través de las diferentes líneas atacando cualquier enemigo en su paso. Por lo general, estas unidades son poco resistentes y no son capaces de hacer mucho daño, sin embargo, siempre son creadas en grupos y en grandes cantidades pueden rodear al enemigo y presentar una amenaza. Existen underlings de ataque cercano y ataque a distancia, cada uno con propiedades ligeramente diferentes entre sí, siendo aquellos de combate cercano los más resistentes y los de ataque lejano más vulnerables, pero con mejores capacidades ofensivas.  Propiedades Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana, daño, defensas, etc. No añade ninguna propiedad nueva.  Métodos Se sobrescribe el método Attack para redefinir el método de ataque básico, dependiendo sí el tipo de underling en cuestión ataca a distancia o en combate cercano.  Eventos No posee eventos nuevos ni sobrescribe aquellos de la clase Unit.  Inteligencia artificial Emplea el mismo árbol de comportamiento que Unit.
  • 78. 76 4.2.3. Creeps Son unidades neutrales que pueden ser encontradas en los bosques del campo de juego y constituyen un obstáculo para aquellos que intentan cruzar líneas, emboscar oponentes o pueden ser guiados hacia el enemigo para que lo ataquen.  Propiedades Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana, daño, defensas, etc. No añade ninguna propiedad nueva.  Métodos Se sobrescribe el método Attack para redefinir el método de ataque básico, dependiendo sí el tipo de creep en cuestión ataca a distancia o en combate cercano. Figura 26 Underlings en combate. Fuente: Orlando Cuabro y José Ortega
  • 79. 77  Eventos No posee eventos nuevos ni sobrescribe aquellos de la clase Unit.  Inteligencia artificial Emplea el mismo árbol de comportamiento que Unit. 4.2.4. Turrets Son las unidades de defensa principales de cada equipo. Estructuras resistentes, capaces de causar grandes daños a distancia en poco tiempo a cualquier enemigo que se acerque. Forman parte del objetivo principal del juego, ya que deben ser destruidas primero para poder avanzar en una línea del campo de batalla y así volver vulnerables a las estructuras subsecuentes.  Propiedades Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana, daño, defensas, etc. No añade ninguna propiedad nueva.  Métodos Se sobrescribe el método Attack para redefinir el método de ataque básico al método de ataque a distancia.  Eventos No posee eventos nuevos ni sobrescribe aquellos de la clase Unit.  Inteligencia artificial Emplea un árbol de comportamiento especial:
  • 80. 78 Explicación: Sí la unidad está viva, periódicamente comprobará sí existen enemigos cercanos y comprobará sí son visibles. Al encontrar un enemigo, la primera tarea a realizar es comprobar que la unidad esté preparada para atacar y que el objetivo esté en alcance para así atacarlo. Sí el objetivo deja de ser válido, muere o sale de alcance, el objetivo el eliminado del tablero de datos para así poder escoger otro en la próxima iteración. Figura 27 Árbol de comportamiento de Turret. Fuente: Orlando Cuabro y José Ortega
  • 81. 79 4.2.5. Altar Objetivo principal del juego y su destrucción constituye la finalización del partido, resultando victorioso el equipo que primero destruya el altar opuesto. Es una estructura resistente y fuertemente defendida por Turrets capaz de regenerarse lentamente; a su vez, es el punto de aparición de los underlings y cercano al punto de reaparición de los Champions, por lo que el combate en las cercanías de esta estructura es altamente peligroso.  Propiedades Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana, daño, defensas, etc. No añade ninguna propiedad nueva.  Métodos No posee método de ataque.  Eventos En su destrucción la partida es finalizada, cada jugador reporta al servidor sus estadísticas, la partida es destruida y cada jugador vuelve a su menú principal.  Inteligencia artifical No posee árbol de comportamiento. 4.2.6. Champions Unidades especiales empleadas por los jugadores. Sus atributos son más altos que los underlings o los creeps y poseen habilidades especiales con variedades de efectos. Tienen la capacidad de regenerarse y al morir son revividos después de un
  • 82. 80 intervalo de tiempo. A medida que derrotan más enemigos sus atributos incrementan, haciéndose progresivamente más fuertes  Propiedades Difiere de la clase Unit en cuanto a sus valores por defecto de salud, mana, daño, defensas, etc. Posee propiedades adicionales a las heredadas: - Deaths: Cantidad de muertes personales. - Kills: Cantidad de enemigos jugadores asesinados. - Creep kills: Cantidad de underlings y creeps asesinados. - Health growth: Cantidad de salud incrementada al subir nivel. - Mana growth: Cantidad de puntos mágicos incrementados al subir de nivel. - Health regen growth: Incremento en la regeneración de salud al subir nivel. - Mana regen growth: Incremento en la regeneración de puntos mágicos al subir de nivel. - Physical damage growth: Incremento en los puntos de daño físico al subir nivel. - Physical defense growth: Incremento en los puntos de defensa físicos al subir nivel. - Magical damage growth: Incremento en los puntos de daño mágico al subir nivel. - Magical defense growth: Incremento en los puntos de defensa mágicos al subir nivel.
  • 83. 81 - Attack speed growth: Reducción del tiempo de espera entre ataques consecutivos al subir nivel. - Level: Nivel de la unidad. Incrementa al acumular la cantidad de experiencia especificada por Level breakpoints. - Experience: Cantidad de experiencia adquirida al derrotar oponentes. - Level breakpoints: Puntos de experiencia necesarios para subir nivel. - Attack order: Indicador de order de ataque. Disparada por el controlador para que la inteligencia artificial ignore el comportamiento automático. - Move order: Indicador de order de movimiento. Disparada por el controlador para que la inteligencia artificial ignore el comportamiento automático.  Métodos Se sobrescribe el método Attack para redefinir el método de ataque básico, dependiendo sí el tipo de creep en cuestión ataca a distancia o en combate cercano.  Eventos - Update status bar: Adaptado para una barra de estado diferente, especial de los Champions. - Receive attack order: Recibe orden del controlador para atacar a una unidad y desactiva la orden de movimiento. - Finish attack order: Finaliza la orden y entra en modo libre. - Receive move order: Recibe una orden de movimiento del controlador y desactiva la orden de ataque. - Finish move order: Finaliza la orden de movimiento y entra en modo Libre.
  • 84. 82 - AI Sequence: Secuencia de eventos para recrear una inteligencia artificial, entre los cuales se verifica regularmente la validez del objetivo, la unidad gira para ver hacia donde se encuentra el objetivo, buscar objetivos cercanos y atacarlos. - Look for enemies: Modo libre. Cuando no hay órdenes activas, busca periódicamente por enemigos cercanos. - Attack target if available: Cuando un objetivo está dispobile, esta unidad se acerca a atacar al objetivo. - Eventos varios de entrada: Tales como acercar y alejar la cámara, centrar la cámara y activar habilidades.  Inteligencia artifical Debido a limitaciones de Unreal Engine y motivos de seguridad implementados por Unreal Engine, no fue posible implementar un árbol de comportamiento a esta unidad, sin embargo, la inteligencia artificial fue
  • 85. 83 implementada a través de eventos disparados periódicamente en base al siguiente árbol de comportamiento: Explicación: Sí la unidad está viva, periódicamente comprobará sí existen enemigos cercanos. Cuando no hayan ordenes de movimiento explicitas, pero un objetivo esté presente, la unidad comprobará su distancia del enemigo y se acercará sí es necesario hasta que esté en alcance, luego comprobará que puede atacar al enemigo y finalmente verificará sí el objetivo sigue siendo válido, en el caso de no serlo, elimina el objetivo del tablero de datos y sí la ejecución de esta rama se trataba de una orden de ataque explícita, la orden es finalizada. Figura 28 Árbol de comportamiento de champion. Fuente: Orlando Cuabro y José Ortega
  • 86. 84 En el caso que haya una orden explícita, se verifica la validez del destino y luego la unidad se desplazará al destino hasta estar a una distancia aceptable considerada como un movimiento exitoso. 5. Evaluación del funcionamiento del videojuego Durante las pruebas del juego, ejecutando el servidor dedicado en modo de consola ocasionalmente se producen mensajes de error sobre acceso a variables sin valor alguno, las cuales pueden ocurrir al tratar de acceder a variables no replicadas correctamente, asignaciones de valores indebidas desde el lado del cliente o tratando de acceder a las propiedades de un actor destruido, sin embargo, después de extensas pruebas fue posible reducir estos mensajes de error mayormente al último caso mencionado. Constantemente se comprueba la validez de unidades al momento de realizar operaciones con estas pero en ocasiones es posible que un actor o unidad sea destruido justo después de realizar una validación, surgiendo en ocasiones mensajes de error al momento de realizar operaciones subsecuentes con la variable en cuestión, sin embargo, estos mensajes de error de acceso no constituyen un problema para el flujo normal y adecuado del juego. En el lado del cliente es posible que ocurran mensajes de error de peticiones fallidas al realizar peticiones al servidor HTTP, las cuales pueden deberse a un acceso a una dirección errónea, el servidor no se encuentra disponible o no hay acceso a internet. 5.1.Rendimiento Una instancia del servidor dedicado consume desde 80MB hasta alrededor de 140MB de memoria RAM a medida que transcurre el juego. Aproximadamente, cada 30 minutos se ejecuta el recolector de basura, disminuyendo el consumo de RAM hasta 80MB. El uso de CPU es bastante bajo, se realizaron pruebas con un procesador Intel Core i7-4510U a una
  • 87. 85 velocidad entre 2GHz y 2.6GHz y una instancia utiliza entre 7% y 15% de la capacidad del procesador, por lo que podrían ejecutarse aproximadamente 5 instancias de manera estable.