Академический Документы
Профессиональный Документы
Культура Документы
FACULTAD DE INGENIERÍA
ESCUELA DE COMPUTACIÓN
ENTRETENIMIENTO EN RED
PRESENTADO POR:
C.I. 19.504.841
ASESORADO POR:
C.I. 4.539.556
ENTRETENIMIENTO EN RED
SOFTWARE GRÁFICO INTERACTIVO MULTIUSUARIO PARA EL
ENTRETENIMIENTO EN RED
PRESENTADO POR:
________________________
C.I. 19.504.841
Teléfono: 04242836722
TUTOR ACADÉMICO
________________________
C.I. 4.539.556
DEDICATORIA
A mi padre y a en especial a mi
madre, por traerme a este mundo, por el
apoyo brindado en cada momento, y por
los incontables sacrificios que han tenido
que hacer para sacar adelante mis
estudios; por ello y por mucho más les
estaré eternamente agradecido.
I
AGRADECIMIENTO
RESUMEN
III
De la Cruz Borjas Vladimir, “Interactive Graphic Software for the Networked
Entertainment”, Universidad Rafael Urdaneta, Engineering Faculty, School of
Computation. Maracaibo, Zulia 2009.
ABSTRACT
IV
ÍNDICE GENERAL
DEDICATORIA .................................................................................................................. I
AGRADECIMIENTO ......................................................................................................... II
ABSTRACT .................................................................................................................... IV
INTRODUCCIÓN ............................................................................................................. 1
CAPÍTULO I ..................................................................................................................... 4
CAPÍTULO II .................................................................................................................. 11
V
2.2.1.3 Entrega Incremental ........................................................................................ 16
2.2.5.1 Traslación........................................................................................................ 29
2.2.5.2 Escalamiento................................................................................................... 30
VI
CAPÍTULO III ................................................................................................................. 50
CAPÍTULO IV ................................................................................................................. 63
CONCLUSIONES ........................................................................................................... 94
RECOMENDACIONES .................................................................................................. 96
VII
INTRODUCCIÓN
El hombre siempre ha sentido curiosidad por el mundo que lo rodea, y ya sea por
ilustración, curiosidad o simple supervivencia, siempre ha buscado llegar más allá de
sus límites. Esta búsqueda del orden ha adquirido multitud de formas, una de ellas es la
Ciencia que mediante la aplicación de su conocimiento y técnicas, dio a luz a la
Ingeniería de la cual, gracias a los avances tecnológicos, se ha podido desprender la
Computación e Informática que fungen como base para el surgimiento y creación de los
videojuegos.
2
CAPÍTULO I. EL PROBLEMA
3
CAPÍTULO I
EL PROBLEMA
Existe una brecha tecnológica clara en materia de computación entre los países
productores de hardware y los que no, una brecha que resulta en cierto sentido difícil de
cerrar porque toda producción de material físico acarrea un costo físico neto, lo que
significa una inversión de capital, considerable en el caso general de nuevas
tecnologías por la necesidad de controles, precisión, administración y distribución. En
materia de software, tales costos de producción resultan mínimos o al menos bajos en
comparación, porque el impacto de producción inicial es menor, en el caso del
desarrollo de software más que recursos físicos se necesita es capital humano con
conocimientos adecuados para su producción, por lo que en general resulta una
industria más rentable con la que países como Venezuela pueden crecer más rápido
económicamente.
4
caso, pero no para abarcar un mercado lúdico abierto o cubrir las expectativas de
entretenimiento del consumidor.
Por otra parte, hay que resaltar el hecho interesante del auge en los últimos años
del juego multijugador masivo en línea (conocido en inglés como massively multiplayer
5
online game o MMOG) una clasificación o rama de los videojuegos que consiste en
crear, mediante una red establecida, generalmente Internet, un entorno o servicio
general para una cantidad considerable de usuarios que se conectan a la misma
interfaz e interactúan entre sí, y en donde sus acciones determinan los cambios en
dicho mundo virtual afectando a su propio entorno.
Teniendo en cuenta los aspectos antes señalados, con este proyecto de grado se
pretende incursionar en este campo con la creación de un software gráfico interactivo
multiusuario, que abarque la problemática especificada y que si bien no erradique por
completo la misma debido a su alcance, sirva de modelo tanto de desarrollo y diseño,
distribución, priorizando la importancia de solventar la necesidad de entretenimiento del
usuario final y asegurando su satisfacción con el producto.
1.3 OBJETIVOS
6
1.3.1 OBJETIVOS ESPECÍFICOS
• Definir el tipo de entretenimiento multijugador a ofrecer en red.
Cabe destacar que para que una aplicación de entretenimiento en red sea
considerada como videojuego debe incluir factores de interacción con el usuario que
conlleve la realización de un reto o actividad competitiva. La ejecución de estas
actividades, de acuerdo a la implementación de las mismas trae beneficios a los
usuarios finales como de agilización mental, memoria y desarrollo de habilidades
motoras y cognitivas. Este proyecto destaca estos aspectos positivos, y presenta ciertos
alicientes al ser un juego multijugador, de los que se resalta la socialización, al tener la
posibilidad de interactuar con otras personas dentro del mismo juego.
1.2.1 ESPACIAL
1.2.2 TEMPORAL
1.2.3 CIENTÍFICA
9
CAPÍTULO II. MARCO TEÓRICO
10
CAPÍTULO II
MARCO TEÓRICO
2.1 ANTECEDENTES
11
manera: Conceptualización, Diseño, Repositorio de trabajo, Formatos, Módulos y
Producción.
12
desarrollo de una historia animada dando a conocer las características geográficas y
míticas de Colombia.
Se aplicó una metodología desarrollada por los autores que consistía en tres
subdivisiones principales, primeramente ubicaba una metodología administrativa,
posteriormente aplicaba una enfocada en las actividades artísticas y por último la
construcción del software como tal, que permitió la integración entre los diferentes
módulos. Como resultados obtuvieron no solo la culminación en totalidad el videojuego
“Fantasía Mitológica Colombiana” sino que el diseño del videojuego condujo a la
creación de un motor con funcionalidades básicas que permite la implementación de
múltiples videojuegos en 2 dimensiones.
Este trabajo aporta una referencia bastante directa, ya que persigue un objetivo
cercano al de esta investigación, la creación de un videojuego. En la investigación se
realiza un estudio de aspectos técnicos como los motores gráficos, interfaces de
usuario, usabilidad e interacción que en conjunto con la metodología desarrollada
consisten en información muy útil para este tipo de investigaciones.
13
Además de los presentados existen otros tipo de metodologías que son
aplicadas en la actualidad, primera década del siglo XXI, tales como RUP (Rational
Unified Process) y metodologías rápidas de desarrollo o RAD (Rapid Application
Development), entre otras enfocadas a otras especificaciones de plataforma como de
desarrollo Web y software libre.
5. Funcionamiento y mantenimiento
Wikipedia (2009).
14
2.2.1.2 Modelo Espiral
IEEE (1988).
15
2.2.1.3 Entrega Incremental
Sommervile(2005).
16
a ser evaluados por el usuario o el cliente quien identificando las carencias o
necesidades de la aplicación no implementadas las presenta al desarrollador para que
la incluya en el siguiente prototipo.
Pressman (2005).
17
De igual manera es señalado que una correcta ejecución de RUP debe tener en
cuenta los siguientes aspectos principales:
Wikipedia (2009).
18
2.2.2 Metodologías de desarrollo ágil
• Crystal Clear.
• Scrum.
Del inglés Agile Unified Process, su creador Ambler(2009) lo define como una
versión simplificada del Proceso Unificado de Rational. Explica que esta metodología
tiene como objetivo describir de una manera simple y fácil de entender el desarrollo de
aplicaciones de negocios usando técnicas ágiles y al mismo tiempo siendo fiel a la
filosofía de RUP. Su estructura se divide en dos vertientes, una serial en donde
19
contempla las mismas fases de RUP (Concepción, Elabo n, Construcción, Transición) y
otra iterativa, que se desarrolla dentro las fases seriales: Modelo, en donde integra las
fases de Requisitos, Análisis y Diseño y así como el Modelado del negocio de RUP; le
siguen Implementación, Prueba, Despliegue, Gestión de configuraciones, Gestión del
proyecto y por último Entorno.
Ambler (2005).
• Codificación en parejas
20
• Crear pruebas antes de codificar entonces hacer las pruebas rígidamente
• Mantenerlo simple
2.2.2.3 SCRUM
21
Figura 2.8. Representación conceptual de SCRUM
Springer (2009).
• Construir un balance entre las mecánicas del juego, donde se logre un equilibrio
entre diversión y dificultad.
23
Juegos de acción
Son juegos en tiempo real en donde el jugador debe reaccionar rápido a lo que
está sucediendo en la pantalla para cumplir su objetivo. La categoría está dominada por
juegos de disparos en primera persona, popularmente conocidos como first-person
shooters (FPS).
Action-adventure games
Conocidos como TPS o 3PS son juegos que se centran en combate, disparar y
destruir con una perspectiva de tercera persona. En este género se encuentras juegos
como: Gears of War (2006), MDK (1997) y Grand Theft Auto (1998).
Los tactical shooters son juegos first person o third person shooter con un
contenido táctico y basado en el manejo de escuadrones de asalto. Se basan en
simular situaciones reales de combate militar, policial, anti-terrorista y no consisten en
24
dispararle a todo lo que se mueva. Entre estos encontramos, juegos como la serie
Rainbow Six (1998) de Tom Clancy, Ghost Recon (2001), SWAT (1995) entre otros.
Peleas
Pelea Competitiva
Los juegos de pelea tienden a ser juegos de dos jugadores en los cuales cada
jugador controla una figura en la pantalla, y en donde, usa una combinación de
movimientos para atacar a su oponente y defenderse en contra de sus ataques. Los
jugadores participan en una lucha uno contra uno, hasta que uno de los dos sea el
ganador. Estos juegos tienen un alto nivel de popularidad en los salones de arcade por
su alto nivel de competitividad. Entre ellos encontramos juegos como Street Fighter
(1990 - Actual), Tekken (1994) Soul Calibur (1998), Mortal Kombat (1992), King of
Fighters (1994).
25
Llamados popular mente juegos de Rol o por el acrónimo RPG se basan en los
juegos de Rol tradicionales de mesa como Dungeons and Dragons, en el desarrollo del
personaje controlado por el jugador y en la forma en que este asume un rol en la
historia. Los personajes van evolucionando a través del tiempo de juego en conjunto
con la historia. Los RPG tienen un fuerte basamento en la toma de decisiones que
tienden a cambiar el rumbo de la historia. Juegos como Final Fantasy (1987), Phantasy
Star (1987), Baldur’s Gate (1998), Oblivion (2006) y Shinning Force (1992).
Plataformas
Simulación
26
Deportes
Estrategia
2.2.5 Transformaciones en 2d
27
2.10 se presenta una transformación, mientras que en la figura 2.11 se muestra en
forma gráfica una serie de transformaciones.
Comninos (2004).
Comninos (2004).
28
2.2.5.1 Traslación
x´ = x + dx, y´ = y + dy (2.1)
(2.2)
ULA (2009).
29
2.2.5.2 Escalamiento
y en su forma matricial:
(2.4)
ULA (2009).
30
2.2.5.3 Rotación
x´ = x.Cos q - y.Sen q,
o en forma matricial:
(2.6)
ULA (2009).
31
2.2.6 Librerías Gráficas y SDKs
2.2.6.2 OpenGL
32
2.2.6.3 SDL (Simple Direct media Layer)
2.2.6.5 Java2D
De acuerdo con Sun (2009), compañía creadora de Java, y así mismo del API
Java2D, indica que es una serie de clases para realizar gráficos avanzadosen 2D e
imagen, trabajo con líneas, texto, e imágenes dentro de un mismo modelo. Se ejecuta
en cualquier ambiente que soporte la máquina virtual de Java. “También permite la
creación de bibliotecas personalizadas de gráficos avanzados o de efectos especiales
de imagen e incluso puede ser usada para el desarrollo de animaciones u otras
presentaciones multimedia al combinarla con otras APIs de Java, como puedan ser JMF
(Java Media Framework - Entorno de Trabajo de Java para Medios Audiovisuales) o
Java 3D.” Gálvez, Alcaide y Mora (2009, pag. 11).
33
2.2.6.6 Clanlib
• Licencia BSD
También puede ser definida según Sánchez (2007, pag. 5) “como la colección de
datos almacenados en un soporte informático permanente de forma que sea posible
obtener la relación entre los datos a través de un esquema conceptual que oculte la
física real de los datos.”
34
Al comparar estas evidencias, podemos determinar que una base de datos será
definida como un conjunto estructurado de datos, que representan entidades e
interrelaciones. Esta representación será única e integrada, permitiendo sin embargo,
varias utilizaciones y de manera simultánea. Dicha representación, constituye parte vital
de un sistema, puesto que contiene datos importantes de una organización, y brinda
información precisa a usuarios finales de un sistema.
Sobre este concepto, Tittel (2005, pag. 10) afirma que, es una fuente de información
compatible con la World Wide Web (WWW) que puede ser accedida desde la Internet
mediante un navegador. Esta información generalmente es presentada en formato
Hyper Text Markup Lenguage – Lenguaje de Marcas de Hipertexto (HTML) y puede
proveer enlaces hacia otras páginas mediante hipervínculos denominados links. Estas
pueden ser cargadas de una computadora local o remota, llamado servidor Web.
Por otra parte, Powell (2005, pag. 110) asevera que un sitio Web en un sentido
simple es lo que aparece en una ventana de un navegador al abrir una Universal
Resource Locator - Localizador de recurso universal (URL). Puede contener gran
cantidad de información referente a algo en particular y es dividida en diferentes
páginas, cada una de ellas debe contener información que contribuya con la idea
primaria, que pueden extenderse a múltiples sitos en un sentido coherente. La meta
final de un sitio Web es esparcir información a través una serie de documentos
interrelacionados que permita al usuario fácil entendimiento y uso.
2.2.8.1 Tipos
35
Estáticos
Las páginas estáticas según afirma Converse (2004, pag. 19) no permiten grandes
implementaciones para crear adornos, ni funcionalidades, mas allá de los enlaces.
Estas páginas son muy sencillas de crear, por lo que ofrecen pocas ventajas tanto para
el visitante como para el desarrollador, ya que solo se pueden representar texto
acompañados de imágenes y a lo sumo contenidos multimedia, como pueden ser
videos o sonidos.
Dinámicos
En lo referente a esta definición González (2001, pag. 126) comenta que, a medida
que fueron surgiendo nuevas aplicaciones para las páginas Web, surgió también la
necesidad de dotarlos de un mayor dinamismo. Las páginas dinámicas son aquellas en
las cuales el contenido puede ser modificado de forma autónoma o debido a la
interacción con el usuario.
Al comprender los conceptos planteados anteriormente se puede logra ver que los
sitios Web estáticos ofrecen una facilidad tanto para los que lo desarrollan, como para
sus visitantes pues el contenido manejado por el mismo no contiene implementaciones
complejas o extensibles. Sin embargo esto puede ser visto como una desventaja
dependiendo objetivo de este.
36
2.3. Glosario
• ASCII: “American Standard Code for Information Interchange, como otros códigos
de representación de caracteres, especifica una correspondencia entre cadenas de
bits y símbolos escritos de la lengua, permitiendo de esta forma la comunicación
entre dispositivos digitales así como su procesado y almacenamiento.” (Wikipedia,
2007)
• 2d, dos dimensiones: los planos son bidimensionales, y sólo pueden contener
cuerpos unidimensionales o bidimensionales.
• 3d, tres dimensiones: las tres dimensiones son el largo, el ancho y la profundidad
de una imagen. Hay casos en que se usa las tres dimensiones en computación para
simular una realidad virtual. También se utilizan para hacer animaciones.
37
ende, no es necesario esperar la descarga completa del archivo para poder
reproducirlo.
• Background: son básicamente los elementos "de fondo" que hay en los
videojuegos y que suelen dar una cierta atmósfera o ambiente al mismo.
• Bitmap: formato basado en "mapa de puntos", es uno de los formatos posibles para
la conservación de imágenes, usado para fotografías y gráfica analógica (como
caricaturas y pinturas). Se opone al vectorial, que utiliza coordenadas geométricas y
fórmulas trigonométricas.
• Clipping: este es el proceso que remueve porciones de una imagen que no están
definidas por el campo visual de la cámara.
38
• Engine: se usa en el lenguaje de los videojuegos para definir el tipo de entorno
gráfico de un juego.
• Escenas: conjunto de planos que forman parte de una misma acción: también,
ambiente dentro de un espacio y un tiempo concretos.
• FPS, Frames Per Second: mide la velocidad de una animación en cuadros por
Segundo.
• Game Pad: dispositivo para control de videojuegos equipado con una palanca y/o
botones con forma de cruz diseñado para mover con el dedo pulgar y con una zona
de varios botones generalmente a la derecha.
39
objetos en pantalla. Posee varios botones para acciones específicas y de una
palanca para realizar los movimientos.
• MMORPG: Los juegos de rol multijugador masivos en línea (o MMORPGs, del inglés
massively multiplayer online role-playing games), son videojuegos de rol que
permiten a miles de jugadores introducirse en un mundo virtual de forma simultánea
a través de Internet, e interactuar entre ellos.
40
• Offset: es la cantidad de bytes que hay desde el principio del stream, hasta donde
empiezan este elemento.
• RGB: es el acrónimo inglés Red, Green, Blue (Rojo, verde, Azul). Simboliza un
sistema de colores, en el cual es posible representar 256 colores mediante una
combinación de tres valores hexadecimales (uno por el rojo, otro por el verde y un
último por el azul), en esta notación el valor 0x00 representa la ausencia del color en
cuestión y el valor 0xff representa el mayor nivel del color actual posible. Viendo
esto, el color negro (ausencia total de color) se representaría mediante 0x000000.
41
• Sprites: son una categoría de mapa de bits dibujados en la pantalla del computador.
Normalmente son pequeños y parcialmente transparentes o con color de
transparencia, dejándoles así asumir otras formas a la del rectángulo. Típicamente,
los sprites son usados en videojuegos para crear los gráficos de los protagonistas.
Generalmente son utilizados para producir una animación, como un personaje
corriendo, alguna expresión facial o un movimiento corporal.
• Stream: técnica usada para transmitir archivos de los multimedia por medio de
paquetes, esto permite empezar a reproducir el archivo con los primeros paquetes,
sin necesitar de esperar a que todos los datos se hayan descargado.
• Tile, Baldosa: es un “sprite” del escenario. La reunión de varios tiles conforman una
imagen que se utiliza ya sea en las capas del foreground o del background.
42
2.5. SISTEMA DE VARIABLES
43
Cuadro de Variable: La tabla 2.2 ilustra la operacionalización de la variable, con detalle de dimensión e indicadores.
Objetivo general: Desarrollar un software gráfico interactivo multiusuario para el entretenimiento en red.
OBJETIVOS VARIABLE SUBVARIABLE INDICADORES
Definir el tipo de entretenimiento multijugador Tipo de entretenimiento • Identificación de juegos multijugador más populares disponibles para redes de área
local e Internet.
a ofrecer en red. multijugador
• Genero
• Tipo de usuario: Margen de edad, Sexo, habitualidad de juego.
44
CAPÍTULO III. MARCO METODOLÓGICO
49
CAPÍTULO III
MARCO METODOLÓGICO
Por otra parte Tamayo y Tamayo (1994, pag. 54) afirman que la investigación
descriptiva “comprende la descripción, registro, análisis e interpretación de la naturaleza
actual, y la composición o procesos de los fenómenos. El enfoque se hace sobre
conclusiones dominantes o sobre cómo una persona, grupo o cosa se conduce o
funciona en el presente”
Cázares y otros (2000, pag. 18) definen “la investigación documental como aquel
estudio que depende principalmente de la información que se recoge o consulta en
documentos, entendiéndose este término, como todo material de índole permanente, es
decir al que se puede acudir como fuente de referencia en cualquier momento y lugar,
sin que se altere su naturaleza o sentido para que aporte o rinda cuentas de una
realidad o acontecimiento.”
51
Por otra parte para Fidias (2006, pag. 27) la investigación o diseño documental
“es un proceso basado en la búsqueda, recuperación, análisis, critica e interpretación
de datos secundarios, es decir los obtenidos y registrados por otros investigadores en
fuentes documentales: impresas, audiovisuales o electrónicas”.
En otro orden de ideas según Hernández, Fernández y Baptista (pag 184, 2003)
establecen que el diseño no experimental es aquel que “se realiza sin manipular
deliberadamente variables. Es decir, se trata de la investigación donde no hacemos
variar intencionadamente las variables independientes. Lo que hacemos en la
investigación no experimental es observar fenómenos tal y como se dan en su contexto
natural, para después analizarlos.”
Así mismo de acuerdo a los mismos autores (2003, pag 270), los diseños
transeccionales descriptivos son aquellos en los que “se recolectan datos en un solo
momento, en un tiempo único. Su propósito es describir variables y analizar su
incidencia e interrelación en un momento dado (o describir comunidades, eventos,
fenómenos o contextos)”.
En este sentido, teniendo como base los conceptos anteriores este proyecto de
grado se define del tipo no experimental transeccional descriptivo en su diseño debido a
que no busca alterar de ninguna forma sus fuentes de información para obtener algún
resultado probable, simplemente recaba la información de acuerdo a un método y
realiza el análisis de la muestra una única vez sin cambiar la naturaleza de los
resultados que hayan aportado dichas fuentes. El periodo bajo el cual se realizó la
52
recopilación y búsqueda de dichos datos se sucedió en el transcurso del mes de
octubre del año 2009.
La muestra, según Balestrini (2006, pag. 141), “es una parte de la población, un
número de individuos u objetos seleccionados científicamente, cada uno de los cuales
es un elemento del universo”. La toma de la muestra se determinó como no probabilista
e intencional, debido al corto lapso de tiempo para realizar la investigación así como por
el alcance en donde se puede contar inclusive con que la población objetivo se
encuentre en distintas localidades del mundo.
En este sentido la muestra está delimitada por los usuarios de software gráfico
interactivo multiusuario en red en Venezuela, conformado de acuerdo criterios
determinados por el autor tales como popularidad de género, temática, tecnologías
utilizadas, cantidad de usuarios y margen de mercado. Así mismo se contó con la
asistencia de tres expertos (3) a los que se consultó mediante la realización de
entrevistas para la conformación del marco técnico y teórico del software.
Para Muños (1998, pag. 202) las técnicas investigativas son “Todos los métodos,
procedimientos y habilidades que se aplican para desarrollar un arte o una ciencia”. Por
otra parte según Fidias (2006, pag. 53),”los instrumentos son los medios materiales que
se emplean para recoger y almacenar la información.” Para la elaboración de este
proyecto de grado se utilizaron como instrumentos de recolección de datos el guión de
53
entrevista, el registro de observación documental, observación directa e indirecta, así
como una encuesta para constatar la correcta aproximación desarrollada sobre el
problema planteado.
Observación Documental
Pardinas (2003, pag. 60) afirma que “este tipo de observación o de datos, está
contenido en escritos de diversos tipos” esto se debe a que se realiza el estudio de
estadísticas, artículos científicos, valoraciones críticas y otros documentos relacionados
a la muestra.
54
Observación Directa
Muños (1998, pag. 215) define la observación directa como “la inspección que
se hace directamente a un fenómeno dentro del medio en que se presenta, a fin de
contemplar todos los aspectos inherentes a su comportamiento y características dentro
de ese campo. En estos casos el observador entra en contacto directo con el fenómeno
observado, pudiendo permanecer aislado del mismo o participar en él”.
Encuesta
55
respecto Hurtado y Toro comentan que las preguntas son “cerradas cuando se contesta
con un sí o un no. Y abiertas cuando se contestan a criterios y juicio al entrevistado.”
Entrevista Estructurada
57
c) Consulta Abierta en Foros de Discusión Electrónica y Asociaciones Afines a la
Computación Gráfica Aplicada
58
• Se recopilaron y analizaron bibliografía técnica específicamente relacionada con
el desarrollo y diseño de videojuegos en diversos lenguajes de programación,
abarcando no sólo aspectos programáticos sino también algunos tales como el
artístico, el conceptual, teórico, administrativo, tecnológico, entre otros, que
fungen en un conjunto lo que un videojuego completo como tal se representa.
FASE 4: Diseño Lógico y Físico del Software Gráfico Interactivo Multiusuario para
el Entretenimiento en Red
a) Desarrollo Metodológico
Para establecer y delimitar un marco de referencia lógica para cada uno de los
procesos, entradas y salidas del sistema, previo a la codificación del mismo, el
investigador se apoya en técnicas de análisis y diseño de sistemas generales y
dependencias tales como las listadas a continuación:
• Mapas de Navegación
• Diseño de Pantallas
• Diagrama de Red
c) Elaboración de Prototipos
60
de las versiones anteriores del sistema, convirtiéndose en la versión más
adaptada a las necesidades e inquietudes presentadas por los usuarios.
En esta última fase se realizaron las pruebas pertinentes del software, en donde
de acuerdo al esquema seguido y al público que le es accesible dicha prueba se
clasificaron en tres tipos: pruebas alfa y pruebas beta en las modalidades de beta
cerrada y beta abierta.
61
CAPÍTULO IV. ANÁLISIS E INTERPRETACIÓN DE
LOS RESULTADOS
62
CAPÍTULO IV
• Tendencias Digitales (2009) Señala que el grupo etario que más usa internet es
el que se encuentra entre los 12 y los 17 años, en Venezuela, teniendo como
63
media los 22 años de edad para la población venezolana que usa internet y en
donde el 53% de dichos usuarios son hombres.
Nota: Para las clasificaciones por edades se utilizó como referencia la clasificación ESRB
Género Acción
Desarrollo de acciones
Tiempo real
del jugador
66
Figura 4.2. Logo de la compañía
Se planteó así mismo la posibilidad del desarrollo de una página web que tuviese
como intención ser un centro de encuentro y promoción del videojuego, usando medios
tales como la publicidad no invasiva para generar ingresos que ayudasen a rentabilizar
el producto. En esta página no solo se podría ver información relevante del juego,
descripciones del mismo, mínimos requerimientos para ejecutarlo en una computadora,
fotos del sistema de juego, entre otros, sino también el usuario podrá ponerse en
contacto con otros jugadores e interactuar con ellos.
67
4.3 ANÁLISIS DE LOS ELEMENTOS NECESARIOS PARA LA ELABORACIÓN DEL
SOFTWARE
sistema (ver tabla 4.3) en función de los requerimientos mínimos en conjunto del
entrevistados, así como por la consulta abierta realizada en foros de discusión abierta y
desarrollado para los usuarios finales, los mismos se listan en la tabla 4.4.
68
Tabla 4.3. Requerimientos de Hardware
Componente Hardware
Mouse
Dispositivo de Entrada
Teclado
Cornetas u audífonos
Red
Conexión a Internet con un
mínimo de velocidad de
descarga y de subida de
512Kbps
(4) USB
Puertos
](1) Ethernet
69
Tabla 4.4. Requerimientos de Software
Componente Software
Sistema de Gestión de
Drupal 6.14
Contenidos
Versión: Se refiere a una versión del programa activa y completa, es decir un paso
incremental de una funcionalidad o actividad necesaria discernible y separable. Cada
versión representa un avance significativo en la elaboración del software, escalando
sobre las funcionalidades de versiones anteriores. Si bien los Dash son flexibles
temporalmente, en conjunto deben cumplir estrictamente los plazos establecidos para la
versión. La longitud de una versión se estipula en un mínimo de tres Dash.
71
como base algún Desarrollo previo o establecerse de manera independiente como un
módulo de software.
Tipos de Dash:
72
aplicación de las distintas fases de la metodología descrita a continuación se puede
apreciar en este capítulo, Análisis e Interpretación de los Resultados, siendo el punto
4.1 y 4.2 la Conceptualización, el punto 4.3 la fase de Evaluación y por último los
puntos 4.4 y 4.5 abarcan de manera general la Producción.
73
Figura 4.4. Ciclo de desarrollo de la metodología DVD
En este sentido para elaborar de una manera más adecuada la página web se
estableció la necesidad de la realización de nuevas funcionalidades y capacidades de
interacción, así como de presentación, que fueron tomados en cuenta para la elaborar
una nueva versión de la página web. El diseño final se presentó como una interfaz con
los usuarios del videojuego e interesados, que de manera sencilla en un diseño
estructurado de arquitectónica en red y basado en módulos, se busca que el usuario
consiga el contenido que desea de manera rápida y precisa.
75
Figura 4.6. Pestaña de Información TankNation Web v0.1
76
Envíos
Recientes
Foros Ver
Editar
Cuenta
Entrada Rastreo
Cuestionario
Identidades
OpenID
Bitácoras
Inicio
Galería Crear Imagen
Crear
Crear
Bitácora
Contenido
Crear Tema
Clasificación Foro
Enlaces de
Descargas
descarga
internos
Terminar
Sesión Enlaces de
descarga
externos
Enlaces
recomendados
Salida
77
Figura 4.8. Página inicial de TankNation v1.0
78
Figura 4.9. Diagrama de Red Servidor Global
79
Figura
4.10. Estructura de Tablas en Base de Datos Web. Primera parte.
81
System
Cambiar nombre
Mover Tanque
Disparar
Jugador
Salir de la partida
Mostrar/Ocultar Estadísticas
82
Mundo
+recursos: CL_ResourceManager
+objetos: std::list<GameObject *>
+tanques: std::list<Tanque *>
+powerups: std::list<Powerup *>
-TanqueJugador: Tanque
-servidor: Servidor
-cliente: Cliente
-TipoConex: CL_String
-NumJugadores: int
-EsCliente: bool
-EsServidor: bool
-errormysql: bool
-borrarchat: bool
-quit: bool
-slotMouseDown: CL_Slot
-slotMouseUp: CL_Slot
-slotMouseMove: CL_Slot
-slotKeyDown: CL_Slot
-slotKeyUp: CL_Slot
-slot_quit: CL_Slot
-teclado: CL_InputDevice
-mouse: CL_InputDevice
-ftextura22: CL_Font_System
-ftextura20: CL_Font_System
-fondo: CL_Texture
-Cursor: CL_Sprite
-window_rect: CL_Rect
-ventana: CL_DisplayWindow
-gc: CL_GraphicContext
-NombreJugador: CL_String
-puedescribir: bool
-cadenachat: CL_String
-VChat: vector <CL_String>
-tcadenachat: int
-temp: int
-segundos: int
-minutos: int
-rlj_asc: bool
-rlj_segundos: int
-rlj_minutos: int
-cadenatiempo: CL_String
-tiempopowerup: float
-sonidocomienzo: CL_SoundBuffer
-musica: CL_SoundBuffer
-sonido_ataereo: CL_SoundBuffer
-SpawnPoints: vector <CL_Vec2f>
-frame_handler: GFrameHandler
-particula_1: L_Particle
-particula_2: L_Particle
-disparo_efecto: L_ShootingEffect
-exp_efecto: L_ExplosionEffect
-exp_emisor: L_EffectEmitter
-motion_ctrl: L_MotionController
<<create>>-Mundo(display_window: CL_DisplayWindow)
<<destroy>>-Mundo()
+get_gc(): CL_GraphicContext
+iniciarNivel(): void
+iniciarParticulas(): void
+matarParticulas(): void
+revisarColision(outline: CL_CollisionOutline, otro: GameObject): int
+teclatanquedown(idtanque: int, tecla: int): void
+teclatanqueup(idtanque: int, tecla: int): void
+agregarObjeto(object: GameObject): void
+agregarPowerup(tipo: PowerupTipo, _pos: CL_Vec2f): void
+quitarPowerup(id: int): void
+revisarPosicion(_pos: CL_Vec2f, id: int): bool
+agregarTanque(id: int, tipo: TanqueTipo, nombre: CL_String, _esIA: bool): CL_Vec2f
+agregarTanque(id: int, tipo: TanqueTipo, nombre: CL_String, _esIA: bool, _pos: CL_Vec2f, _angulo: float, _angulotorreta: float): void
+quitarTanque(id: int): void
+getPowerupPosMin(tipo: PowerupTipo, tanque: Tanque): CL_Vec2f
+getPosMinTanque(tanque: Tanque): CL_Vec2f
+getTanquePosMin(tanque: Tanque): Tanque
+estoySolo(tanque: Tanque): bool
+getPosicionSpawn(): CL_Vec2f
+AgregarCadenaChat(cadena: CL_String): void
+getReloj(): CL_Vec2i
+setReloj(_minutos: int, _segundos: int): void
+setReloj(_minutos: int, _segundos: int, es_ascendente: bool): void
+chequeaReloj(): void
+getTanqueID(idtanque: int): Tanque
+CreaBarrita(tam: int): CL_String
+getNombreJugador(): CL_String
+gameloop(): void
+efectoExplosion(pto: CL_Pointf): void
-draw(): void
-update(): void
-calcularTiempoTranscurrido(): float
-onKeyDown(key: CL_InputEvent, state: CL_InputState): void
-onKeyUp(key: CL_InputEvent, state: CL_InputState): void
-onMouseDown(key: CL_InputEvent, state: CL_InputState): void
-onMouseMove(key: CL_InputEvent, state: CL_InputState): void
-on_window_close(): void
83
<<enumeration>>
PowerupTipo
Application
+MEDIKIT
<<create>>-Application() +ESCUDO UsuarioServidor
+main(args: std::vector<CL_String>): int +RAPIDEZ_TANQUE
+id: int
+RAPIDEZ_MISIL
+nombre_usuario: CL_String
+FUEGO
-conexion: CL_NetGameConnection
+ACIDO
<<enumeration>> +BALAS +get_usuario(conexion: CL_NetGameConnection): UsuarioServidor
TanqueTipo +BREBOTAN <<create>>-UsuarioServidor()
+ACEITE +adjuntar_conexion(conexion: CL_NetGameConnection): void
+DEFAULT +AIRBORNE +enviar_evento(juegoEvento: CL_NetGameEvent): void
+BOT +HIPERSHIELD
+BRU +NUKE
+VOLDO +LOCURA
+ROSA
Cliente
+cliente_red: CL_NetGameClient
-slots: CL_SlotContainer
Servidor -eventos_login: CL_NetGameEventDispatcher_v0
+servidor_red: CL_NetGameServer -eventos_juego: CL_NetGameEventDispatcher_v0
-slots: CL_SlotContainer -ip_servidor: CL_String
-Usuarios: list<UsuarioServidor*> -puerto: CL_String
-numjugadores: int -quit: bool
-siguiente_usuario_id: int -logged_in: bool
-eventos_login: CL_NetGameEventDispatcher_v1<UsuarioServidor*> -idlogin: CL_String
-eventos_juego: CL_NetGameEventDispatcher_v1<UsuarioServidor*> -password: CL_String
-puerto: CL_String -mundo: Mundo
-mundo: Mundo
<<create>>-Cliente()
<<create>>-Servidor() <<create>>-Cliente(mun: Mundo)
<<create>>-Servidor(mun: Mundo, njugadores: int) <<destroy>>-Cliente()
<<destroy>>-Servidor() +procesareventos(): void
+procesareventos(): void -conectar_a_servidor(): void
+enviaratodos(evento: CL_NetGameEvent): void -on_conectado(): void
+enviaratodosEx(evento: CL_NetGameEvent, idexcepcion: int): void -on_desconectado(): void
+parar(): void -on_evento_recibido(e: CL_NetGameEvent): void
-on_cliente_conectado(conexion: CL_NetGameConnection): void
-on_evento_login_completado(e: CL_NetGameEvent): void
-on_cliente_desconectado(conexion: CL_NetGameConnection): void
-on_evento_login_fallado(e: CL_NetGameEvent): void
-on_evento_recibido(conexion: CL_NetGameConnection, e: CL_NetGameEvent): void
-on_evento_login_servidorfull(e: CL_NetGameEvent): void
-on_evento_login(e: CL_NetGameEvent, usuario: UsuarioServidor): void
-on_evento_juego_solicitudcomenzar(e: CL_NetGameEvent, usuario: UsuarioServidor): void -on_evento_juego_cargarmapa(e: CL_NetGameEvent): void
-on_evento_juego_mensajechat(e: CL_NetGameEvent, usuario: UsuarioServidor): void -on_evento_juego_iniciar_tiempo(e: CL_NetGameEvent): void
-on_evento_juego_actualizar_teclado(e: CL_NetGameEvent, usuario: UsuarioServidor): void -on_evento_juego_comenzar(e: CL_NetGameEvent): void
-on_evento_juego_actualizar_mouse(e: CL_NetGameEvent, usuario: UsuarioServidor): void -on_evento_juego_mensajechat(e: CL_NetGameEvent): void
-on_evento_juego_jugador_conectado(e: CL_NetGameEvent): void
-on_evento_juego_jugador_desconectado(e: CL_NetGameEvent): void
-on_evento_juego_actualizar_teclado(e: CL_NetGameEvent): void
-on_evento_juego_actualizar_mouse(e: CL_NetGameEvent): void
84
GameObject
Tanque
#mundo: Mundo
-spriteCuerpo: CL_Sprite #id: int
-spriteTorreta: CL_Sprite
<<create>>-GameObject(mundo: Mundo)
-spriteCuerpoNormal: CL_Sprite
+draw(): void
-spriteCuerpoMoviendose: CL_Sprite
+update(dt: float): bool
-spriteTorretaNormal: CL_Sprite
+revisarColision(outline: CL_CollisionOutline, object: GameObject): bool
-spriteTorretaDisparando: CL_Sprite
+getID(): int
-spriteTorretaRecargando: CL_Sprite
+setID(id: int): void
-spriteSeleccionado: CL_Sprite
-spriteTorretatFlashDisparo: CL_Sprite
-spriteBrilloRojo: CL_Sprite
-cuerpoColision: CL_CollisionOutline
-sonidoTorreta: CL_SoundBuffer
-nombre: CL_String
-anguloCuerpo: float
-anguloDestCuerpo: float
-anguloDeltaCuerpo: float
-anguloTorreta: float
-anguloDestTorreta: float
-anguloDeltaTorreta: float
-Posicion: CL_Vec2f
-PosDest: CL_Vec2f
-PosDelta: CL_Vec2f
-velocidadGiroCuerpo: float
-velocidadGiroTorreta: float
-velocidad: float
-seleccionado: bool
-seMovAdelante: bool
-seMovAtras: bool
-seMovDer: bool
-seMovIzq: bool Powerup
-estaDisparando: bool
-vida: int -sprite: CL_Sprite
-maxvida: int -collisionPowerup: CL_CollisionOutline
-armadura: int -angulo: float
-maxarmadura: int -Posicion: CL_Vec2f
-demoramuerte: int -tiempovivo: int
-horamuerte: int -tipo: PowerupTipo
Construccion -explotando: bool
-estamuerto: bool
-miTipo: TanqueTipo -sprite: CL_Sprite -<create> Powerup(powerup_tipo: PowerupTipo, mundo: Mundo)
-score: int -collisionConstruccion: CL_CollisionOutline <<destroy>>-Powerup()
-esIA: bool -angulo: float +getTipo(): PowerupTipo
-TargetPosIA: CL_Vec2f -Posicion: CL_Vec2f +setPos(_pos: CL_Vec2f): void
-TargetPosTorretaIA: CL_Vec2f -explotando: bool +getPos(): CL_Vec2f
-tiempoagarroPowerup: int
-<create> Construccion(construccion_tipo: ConstruccionTipo, mundo: Mundo) +setAngulo(_angulo: float): void
-tienePowerup: bool
<<destroy>>-Construccion() +setTiempovivo(_tiempo: int): void
-tipoPowerup: int
+setPos(_pos: CL_Vec2f): void +getTiempovivo(): int
-<create> Tanque(tipo: TanqueTipo, esIA: bool, mundo: Mundo) +setAngulo(_angulo: float): void +draw(): void
+estaSeleccionado(): bool +draw(): void +update(timeElapsed: float): bool
+getanguloCuerpo(): float +update(dt: float): bool +revisarColision(outline: CL_CollisionOutline, otro: GameObject): bool
+setAngulo(_angulo: float): void +hitCheck(outline: CL_CollisionOutline, otro: GameObject): bool +getCollisionPowerup(): CL_CollisionOutline
+setAnguloDest(_angulodest: float): void
+setAnguloTorreta(_angulo: float): void
Misil
+getAnguloTorreta(): float
+setAnguloDestTorreta(_angulodest: float): void -spriteMisil: CL_Sprite
+setTargetPosTorreta(_pos: CL_Vec2f): void -sonido: CL_SoundBuffer
+getPos(): CL_Vec2f -sprite: CL_Sprite
+setPos(_pos: CL_Vec2f): void -collisionMisil: CL_CollisionOutline
+setTargetPos(_pos: CL_Vec2f): void -angulo: float
+getVida(): int -velocidad: float
+setVida(_vida: int): void -Posicion: CL_Vec2f
+getArmadura(): int -oculto: bool
+setArmadura(_armadura: int): void -explotando: bool
+getMaxVida(): int -perseguidor: bool
+setMaxVida(_mvida: int): void -tiempodisparo: int
+getMaxArmadura(): int -TargetTanque: Tanque
+setMaxArmadura(_maxarmadura: int): void -angulodelta: float
+setSalud(vida: int, armadura: int, vida: int, marmadura: int): void
+modSalud(_valor: int): bool <<destroy>>-Misil()
+subirScore(): void +setPos(_pos: CL_Vec2f): void
+getScore(): int +setAngulo(_angulo: float): void
+setScore(record: int): void +setVelocidad(_velocidad: float): void
+setEstaMuerto(_estam: bool): void +mover(dt: float): void
+Matar(_tiempoahora: int, _demora: int): void +setPerseguidor(tanqueaPerseguir: Tanque, _tiempodisparo: int): void
+estaMuerto(): bool +draw(): void
+movAdelante(): void +update(dt: float): bool
+movAtras(): void
+movDer(): void
+movIzq(): void
+noMovAdelante(): void
+noMovAtras(): void
+noMovDer(): void
+noMovIzq(): void
+avanzar(): void
+retroceder(): void
+giroDerecha(): void
+giroIzquierda(): void
+estaMovAde(): bool
+estaMovAtr(): bool
+estaMovDer(): bool
+estaMovIzq(): bool
+seleccionar(): void
+deseleccionar(): void
+disparar(): void
+revisarColision(outline: CL_CollisionOutline, otro: GameObjct): bool
+setParametros(tipo: TanqueTipo): void
+setNombre(nombre: CL_String): void
+getNombre(): CL_String
+getTipo(): TanqueTipo
+draw(): void
+update(dt: float): bool
+getCuerpoCollision(): CL_CollisionOutline
85
Se trabajó con interfaces de usuarios simples para tratar de confundir en la
menor medida de lo posible al usuario a la hora de ejecutar el juego, en este sentido se
diseñó un diagrama (ver figura 4.17) para navegación entre las distintas acciones y
posibilidades que son accesibles al usuario, así mismo se incluyó un enlace de ayuda
para orientar al jugador en las diversas acciones que pueda realizar. En la figura 4.18.
se puede verificar la implementación del menú ‘En juego’.
87
4.5. PRUEBAS DEL SOFTWARE GRÁFICO INTERACTIVO MULTIUSUARIO PARA
EL ENTRETENIMEINTO EN RED
Tipo de Adaptador de ATI Radeon 3100 Mobile Intel(R) 965 VIA Chrome9 HC IGP
Monitor Graphics Express Chipset Family Family
89
Grafico 4.1. Cantidad de usuarios por edad que respondieron la encuesta por edad
90
Grafico 4.3. Grupo de usuarios que gusta los videojuegos multijugador
Grafico 4.4. Grupo de usuarios que le gustaría el prototipo presentado fuese multijugador
91
0 0
92
1. Powerups mas balanceados (Ej: que el heal recupere mas vida)
2. Un menu para poder seleccionar caracteristicas del juego como: nombre del jugador,
cantidad de jugadores contrarios, tipo de mapa, tiempo de duracion del juego, entre otras
opciones multijugador
3. Otro ripo de disparos, machinegun por ejemplo
4. mejorar velocidad del juego es muy lento o.o
5. que el tanque se haga mas grande a medida que tengas mas puntuación
6. que vaya aumentando la vida a medida que aumenten los enemigos
7. que se suban de niveles y en cada uno sea un mapa diferente que requiera una
estrategia en especifico
8. esta muy bueno pero como q tan muy lento esta un poco dificil de manejara las
direciones, y q tuviera mas pj
9. Multiplayer online
10. un chat para hablar
11. opciones para crear mi propio ejercito con mis amigos.
1. Muy buena AI
2. Se hace un poco complicado el mando de los controles sobre todo para mover el tanque
atraves del mapa, pero es cuestión de agarrar la practica, en un poco de tiempo jugando
se puede llegar a dominar.
3. ME volvieron Sebillo xD.
4. hubo un momento que un tanke enemigo estaba en donde me toco hacer respawm y me
quede trancado, no pude moverme
5. me parece un poco incomodo el manejo del tanque, me enrredo
6. esta bnn como te dije las teclas de direciones estan un poco lentas por mi
93
CONCLUSIONES
95
RECOMENDACIONES
96
REFERENCIAS BIBLIOGRÁFICAS
Active Network (2009). Frequently Asked Questions: Microsoft DirectX. Disponible en:
http://www.activewin.com/faq/faq_7.shtml Consultado el 15 de Septiembre de 2009.
Crawford, C. (1984). The Art of Computer Game Design. Berkeley, California: McGraw-
Hill/Osborne Media
Converse, T. Park, J y Morgan, C. (2004). PHP5 and MySQL Bible. 1ª, ED. Indianapolis.
Wiley Publishing, Inc.
97
Comninos, P. (2005). Mathematical and computer programming technique for computer
graphics. USA: Springer.
Entertainment Software Association (2008). 2008 Essential Facts About the Computer
and Video Game Industry. Disponible en:
www.theesa.com/facts/pdfs/ESA_EF_2008.pdf Consultado el 02 de Septiembre de
2009
Entertainment Software Rating Board. ESRB (2009) Game Ratings & Descriptor Guide.
Disponible en: http://www.esrb.org/ratings/ratings_guide.jsp Consultado el 15 de
Septiembre de 2009
Gálvez, S., Alcaide M., y Mora, M. (2009). Java a Tope: Java2D. Disponible en:
http://www.lcc.uma.es/~galvez/ftp/libros/Java2D.pdf Consultado el 15 de Septiembre de
2009.
International Game Developer Association (2004). 2004 Web and Downloadable Games
White Paper. Disponible en:
http://m-plabs.com/mmogarticles/IGDA_WebDL_Whitepaper_2004.pdf Consultado el 02
de Septiembre de 2009
Lindley, C. (2009). Game Taxonomies: A High Level Framework for Game Analysis and
Design. Disponible en:
http://www.gamasutra.com/features/20031003/lindley_01.shtml Consultado el 04 de
Septiembre de 2009
98
Méndez, C. (2003). Diseño y desarrollo del proceso de investigación. 3ª.ED. Bogotá,
Colombia: McGraw Hill.
Muñoz, C. (1998). Cómo elaborar una investigación de tesis. México: Prentice Hall
Hispanoamericana.
Rollings, A. y Adams, E. (2003). Andrew Rollings and Ernest Adams on Game Design.
New Riders Publishing
Sánchez, Jorge (2007). Principios sobre Base de Datos Relacionales. Disponible en:
http://www.jorgesanchez.net/bd/index.html Consultado el 22 de Septiembre de 2009.
Schwaber, M., Beedle, K. (2001). Agile Software Development with Scrum. USA:
Prentice Hall
99
Universidad de Los Andes (2009) Disponible en:
http://www.pgcomp.ula.ve/Semestre/ComputacionGraficaA2009/semestreaA09/compugr
af3.ppt16 de noviembre de 2009 Consultado el 30 de Agosto de 2009
Wired (2008). World of Warcraft Hits 11.5 Million Users. Disponible en:
http://www.wired.com/gamelife/2008/12/world-of-warc-1/ Consultado el 15 de
Septiembre de 2009
Wolf, M. J. (2002). Chapter 6: Genre and the Video Game. En M. J. Wolf, The
Medium of the Video Game. Texas: University of Texas Press.
100
ANEXO A. CUESTIONARIO
101
Preguntas del Cuestionario tal como aparece en la dirección electrónica:
http://tanknation.servegame.org/machform/view.php?id=1
Última vez consultado el 02 de Diciembre de 2009.
102
103
ANEXO B. PREGUNTAS REALIZADAS EN ENTREVISTA
ESTRUCTURADA
104
1. ¿Actualmente cómo considera usted el estado de la industria del videojuego a
nivel mundial y nacional, y cómo puede observar el panorama de su desarrollo
en los próximos 5 años?
5. ¿Para los videojuegos multijugador en red cuál esquema considera más exitoso
o idóneo como interfaz con el usuario, basado en web-browser, en una
plataforma específica u otro?
105