SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
VIDEOJUEGO DE GÉNERO MOBA EMPLEANDO UN
SISTEMA DE EMPAREJAMIENTO POR NIVEL UTILIZANDO
EL MOTOR GRÁFICO UNREAL ENGINE
Ortega Díaz José Luís, Cuabro Briceño Orlando José
odiaz.jose@gmail.com, ocuabro@gmail.com
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.
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. The development methodology used
was Scrum methodology, 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.
1. 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 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 este trabajo está organizada en distintas secciones que se desglosan a
continuación: En la sección 2 se realiza el planteamiento del problema, en la sección 3 se
presenta los fundamentos teóricos, en la sección 4 se muestra la metodología empleada, en la
sección 5 se realizan los análisis de resultados, en la sección 6 se indican las conclusiones y
finalmente en la sección 7 se muestra la bibliografía.
2. Planteamiento del problema
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.
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 los cuales marchan
oleadas de NPCs que asisten a los jugadores en el cumplimiento del objetivo principal.
En Venezuela, son pocas las instituciones educativas con programas de estudio sobre el
desarrollo de videojuegos por lo que se limita notablemente la disponibilidad a la información al
respecto, por lo tanto, partiendo de esta problemática surge como motivo de investigación el
desarrollo de 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.
Trayendo una nueva interrogante a la cual se desea contestar: ¿Cómo desarrollar un videojuego
de género MOBA empleando un sistema de emparejamiento por nivel utilizando el motor gráfico
Unreal Engine?
3. Fundamentos teóricos
3.1. 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.”
3.2.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.
3.2.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.
3.3. 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.
3.4. 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 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.
3.5. 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.
3.6.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.
3.6.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.
4. Metodología de trabajo
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.
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.
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.
5. Análisis de resultados
5.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.
5.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).
5.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).
5.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 proyecto. Cada semana representa una iteración del módulo del
proyecto, obteniendo un calendario donde queda plasmado la fecha de cada “Release” o
entregable. Para este proyecto se realizó una distribución de un módulo por semana dando un
total de 9 semanas de duración
5.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.
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 (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.
5.4. Codificación
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.
 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
𝑁𝑖𝑣𝑒𝑙 𝑚í𝑛𝑖𝑚𝑜 = 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑝𝑟𝑖𝑚𝑒𝑟 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑢𝑛𝑖𝑑𝑜 − 𝑑𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑎𝑐𝑒𝑝𝑡𝑎𝑏𝑙𝑒
𝑁𝑖𝑣𝑒𝑙 𝑚á𝑥𝑖𝑚𝑜 = 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑝𝑟𝑖𝑚𝑒𝑟 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑢𝑛𝑖𝑑𝑜 + 𝑑𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑎𝑐𝑒𝑝𝑡𝑎𝑏𝑙𝑒
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.
 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.
6. Conclusiones
Se realizó el proceso de recolección de datos mediante la consulta de distintos manuales,
referencias, documentos y demás fuentes de información disponibles. Estos dieron la pauta a los
requerimientos tantos técnicos como operativos para la elaboración y funcionamiento del
videojuego de género MOBA, cumpliendo exitosamente con el objetivo de analizar los
requerimientos para el desarrollo del mismo.
Se realizó una estructura de datos que se apega a los diferentes diagramas de casos de uso
del videojuego, modelado de datos, de entidad de relación, de despliegue y de interfaces.
Se diseñaron a su vez, una serie de personajes para cumplir con el papel de underling de
los ángeles, underling de los demonios y un champion. También se logró realizar un entorno
donde se puede apreciar la jugabilidad, dando un ambiente al mundo donde se desarrolla el
videojuego.
Finalizado el diseño, se comenzó el proceso de codificación del mismo, para el cual 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. Siendo este último el motor gráfico usado para el desarrollo del videojuego. Fiablemente
se llevó un control de las respuestas emitidas por el servidor garantizando un correcto
funcionamiento del videojuego.
7. Bibliografía
Alyamkin, V. (s.f.). REST API plugin for Unreal Engine 4 . Obtenido de github.com:
https://github.com/ufna/VaRest
Atagua Marlyn, D. D. (2010). Metodologías de la investigación. Obtenido de
metodología02.blogspot.com: http://metodologia02.blogspot.com/p/tecnicas-de-la-
investigacion.html
Aura Fariñas, M. G. (2010). Técnicas e instrumentos de recolección de datos. Obtenido de
bloquemetodologicodelainvestigacionudo2010.wordpress.com:
https://bloquemetodologicodelainvestigacionudo2010.wordpress.com/tecnicas-e-
instrumentos-de-recoleccion-de-datos/
Challk, A. (2014). League of Legends has made almost $1 billion in microtransactions. . Obtenido de
www.pcgamer.com: http://www.pcgamer.com/league-of-legends-has-made-almost-1-billion-in-
microtransactions/
Dillon, R. (2011). The Golden Age of Video Games: The birth of a Multibillion Dollar Industry. Boca Raton,
USA: CRC Press.
Dimitri. (2013). DOTA 2: A history lesson. Obtenido de www.themittani.com:
htttps://www.themittani.com/features/dota-2-history-lesson
Edwards, T. F. (2013). eSports: A Brief History. Obtenido de adanai.com: http://adanai.com/esports/
Escofet, C. M. (s.f.). El lenguaje SQL. Obtenido de ocw.uoc.edu: http://ocw.uoc.edu/computer-science-
technology-and-multimedia/bases-de-datos/bases-de-datos/P06_M2109_02149.pdf
Grant, M. (2015). Desarrollo de un videojuego de navegador web de género novela visual con distibución
móvil. Maracaibo, Venezuela.
Leonardo Fuenmayor, C. S. (2015). Desarrollo de un juego de estrategia por turnos con capacidad
multijugador utilizando el motor gráfico Unity. Maracaibo, Venezuela.
Minotti, M. ( de 2014). The history of MOBAs: From mod to sensation. Obtenido de
http://venturebeat.com: http://venturebeat.com/2014/09/01/the-history-of-mobas-from-mod-
to-sensation/
Padrón, J. (2006). Bases del Concepto de "Investigación Aplicada". Obtenido de padron.entretemas.com:
http://padron.entretemas.com/InvAplicada/
Santa Palella, F. M. (2010). Metodología de la investigación cualitativa. En S. Palella Stracuzzi. Caracas,
Venezuela: FEDUPEL.
Sarmiento, J. (2016). Desarrollo de videouego de género survival horror utilizando el motor gráfico
Unreal Engine. Maracaibo, Venezuela.

Más contenido relacionado

Similar a Articulo cientifico

Desarrollo de videojuegos
Desarrollo de videojuegosDesarrollo de videojuegos
Desarrollo de videojuegosAxelMeroD
 
Ferran calpe b4_lag
Ferran calpe b4_lagFerran calpe b4_lag
Ferran calpe b4_lagFerran5
 
Ferran calpe b4_lag
Ferran calpe b4_lagFerran calpe b4_lag
Ferran calpe b4_lagFerran5
 
Simulación de guerra en tiempo real va a la web 2.0. Por Gustavo Henrique Soa...
Simulación de guerra en tiempo real va a la web 2.0. Por Gustavo Henrique Soa...Simulación de guerra en tiempo real va a la web 2.0. Por Gustavo Henrique Soa...
Simulación de guerra en tiempo real va a la web 2.0. Por Gustavo Henrique Soa...Emisor Digital
 
ECImag 2010 - Clase 1/5
ECImag 2010 - Clase 1/5ECImag 2010 - Clase 1/5
ECImag 2010 - Clase 1/5Corvalius
 
Introduccion A Xna By Lasa
Introduccion A Xna By LasaIntroduccion A Xna By Lasa
Introduccion A Xna By LasaLuis A. Sanchez
 
Carlos García Madariaga, 2023, Papel de los avatares en experiencias de RV (M...
Carlos García Madariaga, 2023, Papel de los avatares en experiencias de RV (M...Carlos García Madariaga, 2023, Papel de los avatares en experiencias de RV (M...
Carlos García Madariaga, 2023, Papel de los avatares en experiencias de RV (M...Francisco Javier Mora Serrano
 
2do ejercicio computacion 1ro basico
2do ejercicio computacion 1ro basico2do ejercicio computacion 1ro basico
2do ejercicio computacion 1ro basicoSamuel Reyes
 
10a daniel felipe peña creación de un videojuego
10a daniel felipe peña creación de un videojuego10a daniel felipe peña creación de un videojuego
10a daniel felipe peña creación de un videojuegoNicole2411
 
M1 arquitectura motor_2ed
M1 arquitectura motor_2edM1 arquitectura motor_2ed
M1 arquitectura motor_2edLuis Aceituno
 
Videojuegos más famosos del año 2000 en adelante.pptx
Videojuegos más famosos del año 2000 en adelante.pptxVideojuegos más famosos del año 2000 en adelante.pptx
Videojuegos más famosos del año 2000 en adelante.pptxpaulinamoreta11
 
Presentacion tfm adrian_alonso_gonzalez-light
Presentacion tfm adrian_alonso_gonzalez-lightPresentacion tfm adrian_alonso_gonzalez-light
Presentacion tfm adrian_alonso_gonzalez-lightAdrián Alonso González
 
Presentación videojuegos
Presentación videojuegosPresentación videojuegos
Presentación videojuegosdiegoargumosa92
 
Presentación videojuegos
Presentación videojuegosPresentación videojuegos
Presentación videojuegosdiegoargumosa
 

Similar a Articulo cientifico (20)

Desarrollo de videojuegos
Desarrollo de videojuegosDesarrollo de videojuegos
Desarrollo de videojuegos
 
Ferran calpe b4_lag
Ferran calpe b4_lagFerran calpe b4_lag
Ferran calpe b4_lag
 
Ferran calpe b4_lag
Ferran calpe b4_lagFerran calpe b4_lag
Ferran calpe b4_lag
 
Simulación de guerra en tiempo real va a la web 2.0. Por Gustavo Henrique Soa...
Simulación de guerra en tiempo real va a la web 2.0. Por Gustavo Henrique Soa...Simulación de guerra en tiempo real va a la web 2.0. Por Gustavo Henrique Soa...
Simulación de guerra en tiempo real va a la web 2.0. Por Gustavo Henrique Soa...
 
ECImag 2010 - Clase 1/5
ECImag 2010 - Clase 1/5ECImag 2010 - Clase 1/5
ECImag 2010 - Clase 1/5
 
Introduccion A Xna By Lasa
Introduccion A Xna By LasaIntroduccion A Xna By Lasa
Introduccion A Xna By Lasa
 
Desarrollo de Juegos
Desarrollo de JuegosDesarrollo de Juegos
Desarrollo de Juegos
 
Diapositiva de juegos 9A
Diapositiva de juegos 9ADiapositiva de juegos 9A
Diapositiva de juegos 9A
 
[Code Camp 2009] Desarrollo de juegos con XNA (Ángel Arcoraci)
[Code Camp 2009] Desarrollo de juegos con XNA (Ángel Arcoraci)[Code Camp 2009] Desarrollo de juegos con XNA (Ángel Arcoraci)
[Code Camp 2009] Desarrollo de juegos con XNA (Ángel Arcoraci)
 
Carlos García Madariaga, 2023, Papel de los avatares en experiencias de RV (M...
Carlos García Madariaga, 2023, Papel de los avatares en experiencias de RV (M...Carlos García Madariaga, 2023, Papel de los avatares en experiencias de RV (M...
Carlos García Madariaga, 2023, Papel de los avatares en experiencias de RV (M...
 
2do ejercicio computacion 1ro basico
2do ejercicio computacion 1ro basico2do ejercicio computacion 1ro basico
2do ejercicio computacion 1ro basico
 
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de controlCodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
 
10a daniel felipe peña creación de un videojuego
10a daniel felipe peña creación de un videojuego10a daniel felipe peña creación de un videojuego
10a daniel felipe peña creación de un videojuego
 
M1 arquitectura motor_2ed
M1 arquitectura motor_2edM1 arquitectura motor_2ed
M1 arquitectura motor_2ed
 
M1 arquitectura motor_2ed
M1 arquitectura motor_2edM1 arquitectura motor_2ed
M1 arquitectura motor_2ed
 
Videojuegos más famosos del año 2000 en adelante.pptx
Videojuegos más famosos del año 2000 en adelante.pptxVideojuegos más famosos del año 2000 en adelante.pptx
Videojuegos más famosos del año 2000 en adelante.pptx
 
Presentacion tfm adrian_alonso_gonzalez-light
Presentacion tfm adrian_alonso_gonzalez-lightPresentacion tfm adrian_alonso_gonzalez-light
Presentacion tfm adrian_alonso_gonzalez-light
 
Motores de graficos
Motores de graficosMotores de graficos
Motores de graficos
 
Presentación videojuegos
Presentación videojuegosPresentación videojuegos
Presentación videojuegos
 
Presentación videojuegos
Presentación videojuegosPresentación videojuegos
Presentación videojuegos
 

Articulo cientifico

  • 1. VIDEOJUEGO DE GÉNERO MOBA EMPLEANDO UN SISTEMA DE EMPAREJAMIENTO POR NIVEL UTILIZANDO EL MOTOR GRÁFICO UNREAL ENGINE Ortega Díaz José Luís, Cuabro Briceño Orlando José odiaz.jose@gmail.com, ocuabro@gmail.com 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. 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. The development methodology used was Scrum methodology, 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.
  • 2. 1. 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 dentro de la historia de los
  • 3. 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 este trabajo está organizada en distintas secciones que se desglosan a continuación: En la sección 2 se realiza el planteamiento del problema, en la sección 3 se presenta los fundamentos teóricos, en la sección 4 se muestra la metodología empleada, en la sección 5 se realizan los análisis de resultados, en la sección 6 se indican las conclusiones y finalmente en la sección 7 se muestra la bibliografía. 2. Planteamiento del problema 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-
  • 4. playable characters (NPCs) controlados por una inteligencia artificial; con el objetivo de destruir la estructura principal del equipo contrario. 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 los cuales marchan oleadas de NPCs que asisten a los jugadores en el cumplimiento del objetivo principal. En Venezuela, son pocas las instituciones educativas con programas de estudio sobre el desarrollo de videojuegos por lo que se limita notablemente la disponibilidad a la información al respecto, por lo tanto, partiendo de esta problemática surge como motivo de investigación el desarrollo de 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. Trayendo una nueva interrogante a la cual se desea contestar: ¿Cómo desarrollar un videojuego de género MOBA empleando un sistema de emparejamiento por nivel utilizando el motor gráfico Unreal Engine? 3. Fundamentos teóricos 3.1. 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.
  • 5. 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.” 3.2.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. 3.2.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
  • 6. 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. 3.3. 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. 3.4. 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 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.
  • 7. 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. 3.5. 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. 3.6.REST
  • 8. 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. 3.6.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. 4. Metodología de trabajo 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. 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.
  • 9. 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. 5. Análisis de resultados 5.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. 5.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). 5.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).
  • 10. 5.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 proyecto. Cada semana representa una iteración del módulo del proyecto, obteniendo un calendario donde queda plasmado la fecha de cada “Release” o entregable. Para este proyecto se realizó una distribución de un módulo por semana dando un total de 9 semanas de duración 5.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.
  • 11. 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 (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. 5.4. Codificación 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.
  • 12.  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
  • 13. 𝑁𝑖𝑣𝑒𝑙 𝑚í𝑛𝑖𝑚𝑜 = 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑝𝑟𝑖𝑚𝑒𝑟 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑢𝑛𝑖𝑑𝑜 − 𝑑𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑎𝑐𝑒𝑝𝑡𝑎𝑏𝑙𝑒 𝑁𝑖𝑣𝑒𝑙 𝑚á𝑥𝑖𝑚𝑜 = 𝑁𝑖𝑣𝑒𝑙 𝑑𝑒𝑙 𝑝𝑟𝑖𝑚𝑒𝑟 𝑗𝑢𝑔𝑎𝑑𝑜𝑟 𝑢𝑛𝑖𝑑𝑜 + 𝑑𝑖𝑓𝑒𝑟𝑒𝑛𝑐𝑖𝑎 𝑎𝑐𝑒𝑝𝑡𝑎𝑏𝑙𝑒 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.
  • 14.  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.
  • 15. 6. Conclusiones Se realizó el proceso de recolección de datos mediante la consulta de distintos manuales, referencias, documentos y demás fuentes de información disponibles. Estos dieron la pauta a los requerimientos tantos técnicos como operativos para la elaboración y funcionamiento del videojuego de género MOBA, cumpliendo exitosamente con el objetivo de analizar los requerimientos para el desarrollo del mismo. Se realizó una estructura de datos que se apega a los diferentes diagramas de casos de uso del videojuego, modelado de datos, de entidad de relación, de despliegue y de interfaces. Se diseñaron a su vez, una serie de personajes para cumplir con el papel de underling de los ángeles, underling de los demonios y un champion. También se logró realizar un entorno donde se puede apreciar la jugabilidad, dando un ambiente al mundo donde se desarrolla el videojuego. Finalizado el diseño, se comenzó el proceso de codificación del mismo, para el cual 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. Siendo este último el motor gráfico usado para el desarrollo del videojuego. Fiablemente se llevó un control de las respuestas emitidas por el servidor garantizando un correcto funcionamiento del videojuego.
  • 16. 7. Bibliografía Alyamkin, V. (s.f.). REST API plugin for Unreal Engine 4 . Obtenido de github.com: https://github.com/ufna/VaRest Atagua Marlyn, D. D. (2010). Metodologías de la investigación. Obtenido de metodología02.blogspot.com: http://metodologia02.blogspot.com/p/tecnicas-de-la- investigacion.html Aura Fariñas, M. G. (2010). Técnicas e instrumentos de recolección de datos. Obtenido de bloquemetodologicodelainvestigacionudo2010.wordpress.com: https://bloquemetodologicodelainvestigacionudo2010.wordpress.com/tecnicas-e- instrumentos-de-recoleccion-de-datos/ Challk, A. (2014). League of Legends has made almost $1 billion in microtransactions. . Obtenido de www.pcgamer.com: http://www.pcgamer.com/league-of-legends-has-made-almost-1-billion-in- microtransactions/ Dillon, R. (2011). The Golden Age of Video Games: The birth of a Multibillion Dollar Industry. Boca Raton, USA: CRC Press. Dimitri. (2013). DOTA 2: A history lesson. Obtenido de www.themittani.com: htttps://www.themittani.com/features/dota-2-history-lesson Edwards, T. F. (2013). eSports: A Brief History. Obtenido de adanai.com: http://adanai.com/esports/ Escofet, C. M. (s.f.). El lenguaje SQL. Obtenido de ocw.uoc.edu: http://ocw.uoc.edu/computer-science- technology-and-multimedia/bases-de-datos/bases-de-datos/P06_M2109_02149.pdf Grant, M. (2015). Desarrollo de un videojuego de navegador web de género novela visual con distibución móvil. Maracaibo, Venezuela. Leonardo Fuenmayor, C. S. (2015). Desarrollo de un juego de estrategia por turnos con capacidad multijugador utilizando el motor gráfico Unity. Maracaibo, Venezuela. Minotti, M. ( de 2014). The history of MOBAs: From mod to sensation. Obtenido de http://venturebeat.com: http://venturebeat.com/2014/09/01/the-history-of-mobas-from-mod- to-sensation/ Padrón, J. (2006). Bases del Concepto de "Investigación Aplicada". Obtenido de padron.entretemas.com: http://padron.entretemas.com/InvAplicada/ Santa Palella, F. M. (2010). Metodología de la investigación cualitativa. En S. Palella Stracuzzi. Caracas, Venezuela: FEDUPEL. Sarmiento, J. (2016). Desarrollo de videouego de género survival horror utilizando el motor gráfico Unreal Engine. Maracaibo, Venezuela.