Post on 27-Jul-2022
1
HUMANIZACION DE PERSONAJES NO JUGABLES USANDO HERRAMIENTAS
DE INTELIGENCIA ARTIFICIAL PARA ANALISIS DE PERSONALIDAD DE LOS
USUARIOS
HUMANIZATION OF NPCs USING ARTIFICIAL INTELLIGENCE TOOLS FOR
ANALYSIS OF PERSONALITY OF USERS
JULIAN FELIPE MAGAÑA SAA
SERGIO ANDRES MAGAÑA SAA
UNIVERSIDAD DE SAN BUENAVENTURA CALI
FACULTAD INGENIERIA
PROGRAMA INGENIERIA MULTIMEDIA
SANTIAGO DE CALI
2016
2
HUMANIZACION DE PERSONAJES NO JUGABLES USANDO HERRAMIENTAS
DE INTELIGENCIA ARTIFICIAL PARA ANALISIS DE PERSONALIDAD DE LOS
USUARIOS
HUMANIZATION OF NPCs USING ARTIFICIAL INTELLIGENCE TOOLS FOR
ANALYSIS OF PERSONALITY OF USERS
JULIAN FELIPE MAGAÑA SAA
SERGIO ANDRES MAGAÑA SAA
Trabajo de proyecto de grado para optar por el título de Ingeniero Multimedia
Asesora Ing. Sandra Cano
UNIVERSIDAD DE SAN BUENAVENTURA CALI
FACULTAD INGENIERIA
PROGRAMA INGENIERIA MULTIMEDIA
SANTIAGO DE CALI
2016
3
NOTA ACEPTACION
_________________________
PRESIDENTE DEL JURADO
_________________________
JURADO
_________________________
JURADO
_________________________
SANTIAGO DE CALI 22 DE JUNIO DE 2016
4
A nuestras familias
que nos han apoyado en
todo este largo proceso y
siempre nos impulsaron a
seguir adelante.
Con mucho amor para ellos.
5
AGRADECIMIENTOS
Los autores dan los agradecimientos a los docentes involucrados en este proceso de
aprendizaje en la carrera de ingeniería multimedia, todas aquellas personas que de
algún modo formaron parte de nuestros proyectos durante y después de los estudios,
nuestros compañeros de clase y primordialmente a nuestra familia por su eterno apoyo,
pero más que nada a nuestro padre quien ha sido el que ha hecho posible el que
hayamos cursado esta carrera y formarnos como profesionales.
6
INDICE
1. Introducción …………………………………………………………. 7
2. Descripción del problema ………………………………………….. 8
2.1 Desk reserach ……………………………………………… 9
3. Análisis e ideación …………………………………………………..13
4. Justificación y solución …………………………………………….. 15
5. Objetivos …………………………………………………………….. 22
6. Acta del proyecto …………………………………………………… 23
7. Matriz de marco lógico ………………………………………………25
8. Definición de actividades (EDT) …………………………………… 26
9. Definición del equipo de trabajo …………………………………… 27
10. Cronograma de actividades, tiempos, holguras y ruta crítica....... 28
11. Desarrollo e implementación ……………………………………….. 29
12. Validación del prototipo ………………………………………………35
13. Conclusiones …………………………………………………………. 36
14. Trabajos futuros ……………………………………………………… 37
15. Bibliografía ……………………………………………………………. 38
16. Anexos ………………………………………………………………… 41
17. Glosario …………………………………………………………..…… 55
7
1. Introducción
Este documento muestra el desarrollo de una aplicación web que tendrá un ambiente
3d generado por el motor gráfico Unity, que se comunicará con un servicio de
inteligencia artificial prestado por IBM Watson, por medio del navegador web de un
dispositivo, para otorgarle ciertas características de personalidad a un modelo virtual o
personaje no jugable (PNJ) que será parte de un videojuego.
Esto con el fin de lograr, gracias al análisis de personalidad, que los PNJ de los
videojuegos tengan ciertas características más humanas, abstraídas de los usuarios de
la aplicación, generando una experiencia más individual, dando nuevas posibilidades de
interacción con los PNJ y abriendo las puertas para futuros desarrollos que involucran
servicios de inteligencia artificial con los videojuegos y el usuario.
No se va a profundizar en el contexto psicológico del análisis de personalidad ni en los
métodos de abstracción de estos datos para su posterior análisis. Se enfocará en el uso
de los servicios prestados por IBM Watson, más específicamente Personality Insights,
con los cuales se obtendrán los datos de personalidad del usuario necesarios para
realizar la unión e interacción entre la inteligencia artificial, la aplicación web Unity y el
usuario para así darle los rasgos de personalidad adecuados al PNJ.
1. RESUME
This document shows the development of a web application that will have a 3D
environment generated by the graphics engine Unity, which will communicate with a
service of artificial intelligence provided by IBM Watson, via the web browser of a device
to give certain personality characteristics to a virtual model or non-playable character
(NPC) that will be part of a video game.
This in order to achieve, through analysis of personality, the NPC in the videogames
have some more human characteristics, abstracted from the users of the application,
creating a more individual experience, giving new possibilities of interaction with NPCs
and opening doors for future developments involving artificial intelligence services with
video games and the user.
Not going to delve into the psychological context of personality analysis or methods of
abstraction of these data for later analysis. It will focus on the use of the services provided
by IBM Watson, more specifically Personality Insights, with which data user's personality
necessary will be obtained for the union and interaction between artificial intelligence,
Unity web application and the user so give appropriate personality traits to the NPC.
8
2. Descripción del problema
En la historia de los videojuegos se ha visto una gran evolución en todos los campos,
gráficos, interacción, historias y demás. Se puede ver que con el pasar de los años el
diseño de los juegos y los personajes ya no es solo de aspecto visual, sino que ya lleva
un trasfondo, una historia más compleja llegando a tocar muy profundamente los
sentimientos de los usuarios, esto solo se aplicaba a los personajes principales, dejando
una brecha en el cual los personajes secundarios y los no jugables no llegaban a formar
parte importante del desarrollo de la historia.
Conforme fueron avanzando los años se empezaron a implementar dichos procesos a
los personajes secundarios de los juegos, para crear una mejor historia y darle más
atención y profundidad a la trama que rodea los personajes, dando gran importancia a
las decisiones que los personajes deban tomar en torno a la historia y al ambiente en
donde se encuentran, otorgando así la opción de generar o desbloquear múltiples finales
en base a las decisiones tomadas durante en el juego. Algunos pocos juegos logran
manejar cambios en el transcurso de la historia, de modo que el juego toma rumbos
distintos por cada decisión que toma la persona que lo juega.
Aunque como vemos se ha hecho énfasis en el diseño interno de los personajes y sus
acciones durante el juego, aun así se deja un poco de lado la interacción y personalidad
de los personajes secundarios y terciarios, pues como se puede encontrar en el artículo
El perfil del personaje en el dinamismo del videojuego de Raul Factory (Octubre 17 de
2014): “hay que tener claro que no todos los personajes necesitarán de esta
profundidad, ya que, o bien por tener su origen en las primeras etapas del videojuego,
o bien por formar parte de un videojuego donde vincularse con el personaje sea
intrascendente”; para estos personajes terciarios el solo cumplir con su origen o el cómo
se vincula o interpone en la aventura es suficiente para los detalles de este tipo de
personajes.
Ha sido en este ámbito que se ha encontrado un déficit el cual se puede atacar, gracias
a los grandes avances de la Inteligencia Artificial (IA), en donde se puede empezar a
ahondar en los personajes terciarios para así mejorar la experiencia de los jugadores en
los diferentes tipos de videojuegos ya que en cada tipo de videojuego la interacción y
creación de los PNJ es totalmente diferente. y es aquí en donde se encuentra el
problema a afrontar, como lograr humanizar la interacción y personalidad de los PNJ
para brindar una experiencia de juego casi única a los usuarios, mezclando los métodos
ya establecidos de creación de personajes junto con los servicios de inteligencia artificial
que se puedan usar para lograr este fin.
Cuando se habla de humanizar se hace referencia al dejar a un lado la interacción
monótona y lineal que se le otorgan a los PNJ como lo son los muy pocos o cero diálogos
durante el juego, no brindan información adecuada o relevante para la historia o para el
desarrollo de alguna actividad, su presencia en el videojuego puede llegar a ser nula o
casi nula, no poseen una personalidad o rasgos que los hagan notar en el ambiente del
videojuego. todas estas características que opacan o que no dan relevancia a los PNJ
9
son las que se plantea modificar y como resultado obtener un PNJ que, aunque no sea
un nodo vital en la historia o desarrollo del videojuego, pueda llegar a tener una
interacción muy similar o igual como con los personajes que influyen dentro del
videojuego.
2.1. Desk Research
Uno de los videojuegos de última generación que han tenido un acercamiento a la
humanización de los PNJ ha sido Metal Gear Solid V: The Phantom Pain, ya que posee
una inteligencia artificial que es capaz de analizar las acciones del usuario y la
interacción que tiene este con el mapa, o los asentamientos militares dentro del mapa,
como lo mostraron en la conferencia del E3 del año 2014 y en entrevistas y otras
conferencias y eventos de videojuegos durante el mismo año y previos a su lanzamiento
en 2015, además dentro de sus informes anteriores al lanzamiento en su página oficial.
En su manual del juego muestran el cómo se da por enterado cuando las fuerzas
enemigas se preparan y cambian sus defensas según la cantidad de ataques que se les
han realizado, como ellos mismo los explican en la sección de Preparación de enemigos:
“Las fuerzas enemigas responderás a tus tácticas. Por ejemplo, si realizas una gran
cantidad de tiros a la cabeza, los soldados enemigos pronto serán equipados con
cascos. Los iconos en la derecha del mapa iDroid indican la fuerza de preparación del
enemigo. Entre más rojo el icono, más preparado estarán tus enemigos”
Este videojuego agregó a su modalidad de juego, que los PNJ tuvieran diferentes
opciones de personalidades y cada personaje varía sus atributos de personalidad. Los
PNJ dependiendo de su personalidad reaccionan de distintas maneras a los ataques
que el usuario realice, encontrando desde enfrentamiento directo hasta llamada de
refuerzos y huidas desesperadas. Otro gran adelanto en la humanización de los PNJ ha
sido que los personajes dependiendo de que tantas veces el usuario ataca un
asentamiento, o de qué partes del cuerpo han recibido más impactos los PNJ, estos
comienzan a aumentar su protección, si es el asentamiento empiezan a llamar camiones
10
o carros guardianes y en el caso extremo cañones de ataque, cuando son los impactos
a los PNJ, estos dependiendo de las estadísticas del juego comienzan a cubrir sus
partes más vulnerables; Por ejemplo, el usuario ha atacado más de 6 veces un
asentamiento y ha matado a los PNJ con impactos mayormente en el torso y en la
cabeza, la próxima vez que el usuario vaya a atacar ese asentamiento, este estará
protegido por algún carro guardián y los PNJ tendrán chalecos o escudos protectores y
cascos. y será el único lugar del mapa donde los PNJ estarían así de protegidos.
Este caso de éxito en la humanización de los PNJ es el más nuevo y uno de los primeros
en implementar decisiones en los PNJ y darle personalidades diferentes, pero, aun así,
sigue guardando una linealidad que después de cierto punto estas decisiones dejan de
suceder y no se vuelve a ver ningún tipo de cambio en cuanto a protección personal o
del asentamiento.
El segundo caso es Silent Hill Shattered Memories, este juego lo dividen en dos
modalidades, la primera en donde el personaje principal se encuentra en el consultorio
de un psicoterapeuta el cual le realiza ciertas preguntas al personaje principal (usuario)
y las respuestas dadas afectan directamente la ambientación, modelos y jugabilidad de
la segunda parte, que es cuando el personaje se encuentra en el pueblo Silent Hill. En
este caso, se utilizan varios test psicológicos, siete en total, para realizar análisis del
usuario, modificar el ambiente de acuerdo a los resultados de estos test y la interacción
con los PNJ del pueblo, estos son también afectados por los resultados de los test
psicológicos realizados, esta modalidad de juego fue muy aclamada durante su
exposición en la E3 del 2009, cuando fue su presentación oficial. Desafortunadamente
no se pudo acceder a fuentes oficiales de Konami para acceder más profundamente al
desarrollo del juego ya que las paginas oficiales del juego han sido desmontadas de los
servidores de Konami, pero en los archivos de las conferencias E3 y en sitios
especializados, no oficiales, del juego se logró obtener la suficiente información para
obtener los datos necesarios y que se ajustan a la investigación en curso.
11
Ambos videojuegos son claros ejemplos de cómo se puede interactuar con los PNJ y
darle un peso mayor en la historia y jugabilidad para mejorar la experiencia del usuario
durante el juego, haciendo uso de la inteligencia artificial para que el juego
automáticamente asigna los valores y datos necesarios para modificar adecuadamente
el ambiente y los PNJ.
Por otro lado, uno de los avances más grandes que se dieron en los últimos años ha
sido el nacimiento de la máquina cognitiva de IBM, Watson, esta plataforma tecnológica
utiliza lenguaje natural para comunicarse y varios algoritmos de aprendizaje de máquina
para estructurar y revelar grandes cantidades de datos no estructurados. Según IBM en
su reporte y presentación de Watson encontrado en la página oficial de IBM Watson, el
80% de los datos que actualmente podemos encontrar son de manera no estructurada
como lo pueden ser artículos de periódicos, reportes investigativos, publicaciones en las
redes sociales y datos de sistemas de empresas.
Watson se alimenta de la interacción diaria que tenga con la información, entre más se
interactúa sobre cierto tema con Watson, éste más aprende y cada vez obtiene un grado
mayor de finura en la entrega de resultados, es por eso que los desarrolladores de
Watson recomiendan dentro de los manuales de uso de sus servicios de IA una alta
interacción y fidelidad de los datos a entregar, para que su grado de confidencia a la
hora de analizar si la respuesta o el dato a entregar es verdadero o falso se vuelva
mayor cada vez que se alimenta con más datos y se entrena el servicio a utilizar.
Para entrenar un servicio de Watson se debe suministrar un volumen de datos, desde
páginas web enteras, artículos investigativos, documentos de texto y hasta imágenes,
lo bastante robusto para que este tenga muy buenas fuentes de aprendizaje y análisis
para poder hacer una minera adecuada de datos y poder generar choques entre estos
y así obtener las validaciones adecuadas entre falsos y verdaderos de acuerdo a el tema
o el dato a retornar, todo depende de qué tipo de servicio se va a entrenar, cada servicio
tiene su propio manual de entrenamiento, si es necesario, y estos se pueden acceder
en la documentación de cada servicio desde el sitio oficial de IBM Watson.
De entre la gran variedad de servicios que Watson ofrece, para el desarrollo de esta
aplicación se va a utilizar el Personality Insights, este servicio extrae y analiza un
espectro de atributos de personalidad para ayudar a descubrir información interactiva
de las personas y entidades, y poder guiar a los usuarios finales en interacciones
altamente personalizadas. El servicio hace uso de un modelo psicológico que detalla las
características de personalidad y las divide en 3 grandes rasgos: Los cinco grandes,
Valores y Necesidades. Como dice el propio IBM en su sitio “La ciencia detrás del
servicio”: “Una muy aceptada teoría de la psicología, marketing y otros campos es que
el lenguaje humano refleja la personalidad, el modo de pensar, interacción social y
estados emocionales. La frecuencia con que usamos ciertas categorías de palabras
pueden entregar claves en estos campos” … “Varios investigadores encontraron que la
variación en el uso de ciertas palabras en escritos como blogs, ensayos y tweets pueden
predecir aspectos de la personalidad del usuario.”
12
Dentro de la documentación del servicio “Personality Insights” se encuentra una muestra
de lo que la psicología contemporánea denomina los cinco grandes factores de la
personalidad, estos son cinco grandes dominios que definen la personalidad humana y
que explican las diferencias individuales, estos rasgos individuales son:
- Apertura a la Experiencia: personas a las que les gusta aprender cosas nuevas
y disfrutar de experiencias nuevas
- Responsabilidad: personas que tienen un alto nivel de tesón son fiables y
resolutivos.
- Extraversión: los extrovertidos obtienen energía de la interacción con los
demás, mientras que los introvertidos la obtienen de ellos mismos.
- Cordialidad/Amabilidad: personas amables, cooperativas y compasivas. Las
personas con un nivel bajo de cordialidad son más distantes.
- Estabilidad Emocional: esta dimensión está relacionada con la estabilidad
emocional de la persona y el nivel de emociones negativas.
Cada uno de los Cinco Grandes rasgos de personalidad está compuesto por seis rangos
internos.
- Apertura a la Experiencia: Fantasía, Estética, Sentimientos, Acciones, Ideas,
Valores.
- Responsabilidad: Competencia, Orden, Sentido del deber, Necesidad de logro,
Autodisciplina, Pensamiento planificado (deliberación).
- Extraversión: Afecto, Gregarismo, Asertividad, Actividad, Búsqueda de
excitación/emociones, Emociones positivas.
- Cordialidad/Amabilidad: Confianza, Franqueza, Altruismo, Actitud conciliadora
(honradez), Modestia, Sensibilidad a los demás.
- Estabilidad Emocional: Ansiedad, Hostilidad, Depresión, Ansiedad social,
Impulsividad, Vulnerabilidad ante el estrés.
Además, se encuentra también dentro de esta documentación entregada por IBM que
Watson utiliza análisis lingüísticos para definir características intrínsecas de
personalidad del usuario por medio de la lectura de sus correos, mensaje de texto,
tweets, publicaciones en redes sociales o algún texto que haya sido escrito directamente
por el usuario, para luego entregar un archivo JSON o CSV con la información final del
análisis para ser recorrido y analizado por la aplicación para así luego poder interactuar
adecuadamente con los datos necesarios.
13
3. Análisis e Ideación
Según en la conferencia de análisis y construcción de perfiles psicológicos para
personajes de videojuegos dictada por la psicóloga Juanita Rivera, dada el 30 de abril
del 2016 en el centro cultural de Cali, quien ha creado perfiles psicológicos para
personajes de videojuegos y series animadas, en la creación de videojuegos se lleva a
cabo un estudio psicológico para los personajes principales y secundarios que tendrá el
juego, en ellos se plantea una inteligencia artificial eficiente en base a un perfil, pero con
ello dejan de lado los demás personajes, PNJ, y solo se les da una inteligencia artificial
simple y un leve porcentaje de interacción, lo cual puede volver monótono interactuar
con dichos PNJ, pero no se puede aplicar el mismo tratamiento que se le hace a los
personajes principales y secundarios, por ello en muchos juegos generan una
inteligencia artificial única que funcione perfectamente con todos los PNJ, o a aquellos
que son para interactuar se les brinda una cantidad de textos limitados los cuales
funcionan con un random o algún tipo de código para obtener el texto de forma aleatoria
o coordinada sin repetición tan seguida del mismo diálogo, como los Assets de guiones
y diálogos que hay en la Unity store.
Mercedes Hachuel y Liliana Carrabs comentan en su tesis Redacción de un guion para
videojuego no lineal partiendo del viaje de un héroe, sobre los PNJ: “Los personajes no
Jugadores, son aquellos que pueblan el mundo del juego, le dan vida a ese mundo
haciéndolo más real y ayudan al jugador a avanzar: le dan pistas, le facilitan los equipos
que necesita para continuar al siguiente nivel o simplemente ambientan la escena.”,
como se puede ver los PNJ idealmente son una parte muy importante en la interacción
con el mundo por parte del personaje principal, pero a pesar de que están definidos de
esta manera, no en todos los juegos los PNJ tienen esta relevancia.
La idea de humanización se debe a la monotonía que desencadena la interacción única
que tienen los personajes terciarios y a veces los secundarios, con acciones
predeterminadas, diálogos lineales y en ocasiones nula interacción. En la gran variedad
de tipos de videojuegos todos los PNJ tienen distintos tipos de interacción con los
usuarios, pero se generaliza lo monótono en todos; Se sabe que la idea principal del
desarrollo del guion es para los personajes principales y la interacción con el medio es
primordialmente acciones que intervengan directamente con la historia o línea de acción
del juego, como comentan Mercedes Hachuel y Liliana Carrabs de nuevo en su tesis:
“un guion para cualquier producto clásico audiovisual y el guion para un videojuego
tienen muchos puntos en común, características similares, al ambos contar una historia.
La diferencia radica en la permisibilidad que se le otorga al jugador para moverse en los
distintos ambientes.”, es esta permisibilidad que dicen la que atrae a los usuarios y la
que enfoca la línea del juego, pero esta misma permisividad se restringe ella misma al
dejar a un lado los PNJ y no otorgar o no dejar a los jugadores interactuar libremente
con estos.
Pero no en todos los videojuegos esta historia va de primera mano, existen tipo de
videojuegos, como los MMORPG (Massively Multiplayer Online Role Playing Game) en
los que la historia e interacción con los PNJ es más relevante que otros tipos de juegos,
14
dándole un giro a la línea del juego al ser lo principal una búsqueda de acciones o
misiones alrededor de un mapa para conseguir beneficios que son el resultados de
terminar dichas acciones, y que los PNJ son los encargados de guiar, entregar y
colaborar en ciertos casos con la realización de dichas misiones.
La idea de humanizar los PNJ es que este tipo de interacciones, como la que se puede
ver en los MMORPG, se pueda ampliar y mejorar un poco más y que se pueda aplicar
de igual manera a los demás tipos de videojuegos generando una experiencia más
personal y atractiva para los jugadores. Se plantea a través de análisis al jugador
amoldar el ambiente del juego según la personalidad del mismo, para así otorgar o
generar una experiencia más profunda dentro del juego y única para cada usuario.
Para facilitar este proceso de humanización por análisis al usuario se usarán los
servicios prestados por IBM Watson referente al análisis de personalidad. Watson tiene
un servicio llamado Personality Insights, esta entrega un análisis completo de
personalidad de acuerdo a un modelo psicológico llamado “The Big 5” o los grandes 5,
con el cual se puede obtener una vasta gama de información sobre la personalidad del
usuario.
Paralelamente se tendrá un ambiente 3d inmerso en una página web generado por Unity
el cual se obtendrá los datos entregados por Watson y se inyectarán los más relevantes
del análisis entregado para así darle al PNJ dentro del espacio virtual un tipo de
personalidad que será obtenida directamente del usuario que estará en ese momento
haciendo uso de la aplicación.
15
4. Justificación y Solución
Sergio Andrés y Julián Felipe durante mucho tiempo han sido apasionados por los
videojuegos, y en el transcurso de sus estudios de Ingeniería Multimedia ahondaron el
placer por los videojuegos y obtuvieron conocimientos sobre estos mismos que no
poseían antes como jugadores empíricos, al aprender sobre desarrollo de guiones,
diseño de plataformas e interacción humano computador obtuvieron una visión más
amplia de lo que pueden llegar a ser los videojuegos y es gracias a esta unión de
conceptos y la experiencia individual que les permitió generar ciertas ideas de cómo
poder mejorar la interacción de los PNJ en los videojuegos.
Tras revisar cuidadosamente los posibles motores gráficos que se conocen y hay en el
mercado, se dejó un poco de lado la potencia grafica que pueda dar cada motor para
enfocarse un poco más en el desarrollo de interacción y experiencia del usuario. Se
tenía como opciones el motor gráfico Unreal Engine (Unreal Development Kit),
CRYENGINE y Unity como los mejores y más amplios motores para realizar un
videojuego o aplicación interactiva.
Teniendo estos 3 motores como principales opciones, se prosiguió a ver cuál de los 3
se adapta mejor a la necesidad y al desarrollo de la aplicación esperada, aplicación web
que permita la comunicación directa con el navegador para la recolección de datos de
Watson y posterior modificación del ambiente virtual.
Se hizo a un lado el motor Cryengine puesto que no se encontró un soporte amplio en
cuanto a dudas, problemas o comunidad de desarrollo para entrar en contacto a la hora
de tener dificultades con el motor y el desarrollo, quedando UDK y Unity para ver cual
se amoldaba más a la idea de desarrollo. Se encontró que UDK y Unity poseen una
comunidad de desarrollo bastante amplia, soporta varias plataformas para exportar los
proyectos incluyendo Web. Ambos motores poseen versiones gratuitas y versiones
pagas e individualidades en ambos casos, opciones que no se encuentran en la versión
gratuita y si en la paga, mejoras y facilidades que se les otorgan a los usuarios pagos y
no a los gratuitos, etc.
16
Cuadro pros y contras motores gráficos
17
18
19
A la hora de revisar la comunidad de desarrollo, para efectos de soporte, ayuda o
resolución de dudas durante el desarrollo de la aplicación y omitiendo YouTube como
medio de búsqueda, Unity ofrece una comunidad más amplia, con mayor facilidad de
acceso a códigos, foros y conversaciones directas con los desarrolladores de la
plataforma que lo que se puede encontrar con UDK, además Unity permite desarrollar y
mezclar bajo varios lenguajes de programación, C# y Javascript, mientras que UDK se
limita al uso de C++ como lenguaje de programación para sus desarrollos.
Es en este punto que se logra tomar la decisión adecuada, debido a que la aplicación a
desarrollar será bajo HTML5, Javascript (jQuery, Angular JS). Unity es el motor que más
se ajusta a las necesidades del desarrollo debido a sus facilidades de exportar la
aplicación para web, Unity permite exportar bajo HTML5 o WebGL, permitiendo que todo
esté en un mismo entorno, en este caso una página web que contendrá un espacio
virtual 3d generado por Unity y los campos de interacción con el usuario, formulario web,
que a su vez, internamente, tendrá la comunicación con Watson para así poder modificar
el ambiente 3d con los datos generados por la interacción del usuario con el navegador
y el navegador con el ambiente virtual.
Otra de las decisiones tomadas de acuerdo a la necesidad del desarrollo, ha sido el uso
de web como plataforma de despliegue, la razón principal para elegir un desarrollo web
es el hecho que Watson al ser una aplicación se consumó en línea, no tiene aún soporte
para otro tipo de plataforma que no sea web o móvil, es decir, ninguna consola de
videojuego por el momento tiene un desarrollo o soporte los servicios de Watson en
ellas, el consumir servicios de Watson está por ahora únicamente para desarrollo web.
A pesar que los servicios de Watson soportan gran cantidad de lenguajes de
programación, no se encontró ningún tipo de aplicación que use alguna consola de
videojuegos como centro de desarrollo.
20
Dentro de HTML5 se utilizará jQuery, gracias a que unity permite el uso de Javascript,
existen funciones y métodos dentro de javascript y jQuery que permiten la comunicación
directa entre el navegador y el entorno virtual dentro del navegador, así que de esta
manera se pueden manipular los datos entregados por Watson y pasar solamente lo
necesario a Unity para realizar las modificaciones al PNJ o al ambiente virtual. Y se
pretende emplear Angular JS puesto que sus complementos al uso de HTML permiten
una lectura más rápida y sencilla del JSON y facilita la creación de los formularios y la
interacción de estos con los datos a enviar hacia Watson y su posterior lectura de los
resultados, aunque no se tiene un conocimiento basto de Angular JS, se ha investigado
lo suficiente para decidir que este complemento va a ser de gran utilidad a la hora del
desarrollo de la aplicación.
Al tener todas estas herramientas disponibles para el uso y poder desarrollar la idea
para humanizar los PNJ, se encontró un dilema bastante grande, lo abierto y amplio que
es “Humanizar” los PNJ de los videojuegos. Teniendo tantos tipos de videojuegos y tanta
variedad de PNJ la idea de humanizarlos se ve bastante lejana al mirarla desde un punto
general. Así que se empezó a acotar el medio, ya no se enfoca en todos los videojuegos,
se va a enfocar en los videojuegos de modo de juego de una persona (Single Player),
aun aquí es muy amplio el medio, entonces se enfocara en los videojuegos de una
persona y de tipo RPG, que son los que mayor posibilidad de interacción tienen. En este
momento ya se definió a qué tipo de videojuegos se le aplicará el proceso de
humanización. Pero por el tiempo que se tiene para el desarrollo del prototipo se decidió
simplificar el proceso de humanización posible del PNJ a modificar el estado inicial del
PNJ por los datos obtenidos del análisis de la personalidad del usuario que entrega
Watson.
Teniendo todo esto, se ha podido idear entonces una página web que va a interactuar
con el usuario por medio de unos formularios web, en los cuales se tendrán preguntas
con las que se va a abstraer unos pequeños rasgos de la personalidad del usuario, esto
generará un texto el cual debe tener un mínimo de 100 palabras para poder hacer uso
del servicio personality insights de Watson, aunque con 100 palabras se obtiene un
análisis un poco pobre, el texto a realizarse se promedia entre 300 y 600 palabras, aun
así Watson entrega un análisis bajo, para que Watson entregue un análisis profundo y
exhaustivo debe entregar un texto de 3500 palabras como mínimo, se espera para
futuros desarrollos usar el máximo potencial del servicio Watson.
Luego de entregarle a Watson el texto y que este lo analice, este devolverá un JSON
con todos los datos del análisis de personalidad, se debe recorrer este JSON para poder
realizar la limpieza adecuada y obtener los datos más relevantes para el uso de la
aplicación, en este caso se deberá separar los datos dentro del campo “Estabilidad
emocional”, que este es uno de las tantas dimensiones que tienen datos vitales sobre la
personalidad del usuario, luego de obtener los valores necesarios son almacenados
dentro de la página web y a su vez esta se los envía a Unity, en donde serán analizados
para así poder tomar la decisión de qué tipo de personalidad se le va a asignar al
personaje de prueba, dependiendo de los resultados del análisis del usuario.
21
Al final del proceso, se podrá ver que el personaje cambiará de su estado inicial de
reposo a alguna de las animaciones que representaran las distintas personalidades que
se podrían llegar a agregar al PNJ dentro del videojuego.
22
5. Objetivos
Objetivo Principal
● Modificar el estado inicial de un PNJ con datos obtenidos del análisis de la
personalidad del usuario por medio de Watson.
Objetivos Secundarios
- Adecuar un test para la obtención del texto necesario para el análisis de
personalidad por Watson.
- Utilizar adecuadamente los datos que nos brinda Watson del análisis de la
personalidad.
- Vincular Watson con el navegador Web y con Unity para poder modificar la
personalidad del PNJ.
23
6. Acta del proyecto
SITUACIÓN INICIAL
Los Personajes No Jugables (PNJ) en los videojuegos no poseen un desarrollo
psicológico detallado ya que no son personajes principales en sus historias y por esta
razón la interacción con estos personajes es algo monótona e incómoda en algunos
casos, dado que solo utilizan un código que selecciona los diálogos al azar o que
acomode textos estándares. Se ha visto que es más interesante un juego con mejor
interacción con los personajes del juego que tienen su propia personalidad, se plantea el
humanizar los PNJ para mejorar la interacción de estos con los jugadores y darles una
mejor experiencia a los usuarios.
CARTA DEL PROYECTO
NOMBRE DEL PROYECTO Humanización de los PNJ en los videojuegos
RESPONSABLE DEL
PROYECTO Sergio Andrés Magaña Saa, Julián Felipe Magaña Saa
CLIENTE,
PATROCINADOR,
USUARIO
Cliente: Programa Ingeniería Multimedia
Patrocinador:
Usuario: Personas que realizarán las pruebas del
prototipo
OBJETIVOS DEL
PROYECTO
General y específicos
● Modificar el estado inicial de un PNJ con datos
obtenidos del análisis de la personalidad del
usuario por medio de Watson.
- Adecuar un test para la obtención del texto
necesario para el análisis de personalidad por
Watson.
- Manejar adecuadamente los datos que nos brinda
Watson del análisis de la personalidad.
- Vincular Watson con el navegador Web y con Unity
para poder modificar la personalidad del PNJ.
BENEFICIOS DEL
PROYECTO
- Se abrirán las puertas a futuras investigaciones y
desarrollos en las que intervengan servicios de
inteligencia artificial y ambientes 3d.
- Dar a conocer los servicios de Inteligencia Artificial
de Watson y dar a conocer que son de fácil uso y
acceso.
- Unión de las plataformas Unity con servicios de
Watson y comunicación entre ellas.
24
REQUISITOS DEL
PROYECTO
- Manejo medio de Unity para poder generar un
ambiente 3D que se comunique con el navegador
web y viceversa.
- Crear un test corto que nos brinde una abstracción
de datos del usuario y que genere un texto de
mínimo 300 palabras para que Watson realice el
análisis de la personalidad.
- Manejo medio alto de HTML y Javascript para
lograr la lectura de datos de Watson y la
comunicación del navegador con Unity.
STAKEHOLDERS Universidad San Buenaventura Cali, IBM, Unity.
DESCRIPCIÓN
Se realizará una aplicación web que contiene un espacio
virtual 3d el cual se comunicará con el navegador para
obtener los datos de un análisis de personalidad que se
le realizará al usuario por medio de Watson y con el
resultado de este análisis modificar el estado inicial de la
personalidad de un personaje virtual generado por Unity.
JUSTIFICACIÓN
“Sentirse identificado con un personaje de ficción forma parte del proceso imaginativo al que nos aboca jugar un videojuego” - Raul Factory -
Al humanizar la interacción de los PNJ se logra generar una experiencia más inclusiva dentro del juego para los usuarios, haciendo que los diálogos, ayudas y opciones de juego sean de un uso más fácil y los PNJ tengan una personalidad más acorde al usuario teniendo en cuenta datos que son obtenidos de los usuarios y analizados para crear un contexto más personal dentro del juego.
PRODUCTOS A
ENTREGAR Aplicación web.
QUIEN APRUEBA
Ing. Mario Julián Mora, Ing. Andrés Calderón, Ing. Sandra
Cano y Jueces de proyecto de grado.
25
7. Matriz de marco lógico
26
8. Definición de actividades (EDT)
27
9. Definición del equipo de trabajo
El equipo de trabajo consta de dos integrantes:
- Sergio Andrés Magaña Saa, ingeniero multimedia con enfoque en desarrollo
Web, es el líder de este proyecto, encargado de la investigación de los servicios
de Watson, métodos de análisis de personalidad, unión entre el navegador web
y Unity y la recolección de datos del análisis de personalidad de Watson.
- Julián Felipe Magaña Saa, ingeniero multimedia con enfoque en desarrollo de
videojuegos, encargado de la investigación de servicios de Watson,
implementación de Unity web que permita la comunicación entre el navegador y
el ambiente virtual, desarrollo ambiente virtual que permita el uso de los datos
capturados desde la web para modificar el estado inicial del personaje.
La unión de la investigación del equipo de trabajo va a dar como resultado una aplicación
web que permita la comunicación del navegador con el ambiente virtual generado por
Unity y se puedan intercambiar datos para así generar cambios al ambiente virtual desde
el navegador web.
28
10. Cronograma con tiempos, holguras y ruta crítica
CRONOGRAMA
RUTA CRITICA
A. Revisión de los servicios útiles de Watson para nuestro proyecto.
B. Investigar vinculación Web-Watson.
C. Crear aplicación Unity que maneje valores del 1-100 para generar una
personalidad animada.
D. Prototipo Web-Watson, toma y envió de datos.
E. Prototipo Unity.
F. Investigar vinculación Web-Unity.
G. Prototipo Web-Unity Player.
H. Prototipo Web-Unity-Watson.
Como se puede apreciar en la gráfica la ruta crítica a tomar son las actividades más
enfocadas al trabajo de Watson y Web, puesto que el trabajo de Unity se le puede dar
un tiempo de espera o retraso de 10 días sin afectar los tiempos establecidos.
29
11. Desarrollo e Implementación
Para empezar a desarrollar el prototipo se tenía que investigar bien sobre Watson, qué
servicios ofrece, cuál es el alcance de sus servicios y cuales o cuál de ellos nos servirá
para nuestro proyecto. Al empezar a investigar sobre este en la página oficial de IBM
Watson, se encontró la gran variedad de servicios que se tienen, desde análisis de
datos, reconocimiento de imágenes y patrones y los servicios que implementan el
lenguaje natural como entrada principal.
De acuerdo a nuestro proyecto, la extracción de datos para el análisis de personalidad
del usuario da como resultado un texto descriptivo de la persona que ha realizado el
test, entonces se debe mirar qué servicios de los que actúan con lenguaje natural es o
son los que se acomodan al proyecto.
Dentro de estos servicios de lenguaje natural ofrecidos por IBM Watson, se encontraron
varios que satisfacen lo suficiente la idea de humanización de los personajes desde los
análisis al usuario, pero desde el punto de vista enfocado al proyecto y al desarrollo del
prototipo, se debía escoger un servicio que permitiera la realización del prototipo
funcional en el menor tiempo posible, entre todos los servicios de lenguaje natural de
Watson, se decidió escoger Personality insights debido a que es el servicio que
entregaría por completo un análisis de personalidad bajo el modelo psicológico de los
grandes 5, en donde se tendría una completa abstracción de lo que sería la interacción
del usuario en ciertas situaciones en las que podría verse afectado dentro de un
videojuego.
Este modelo psicológico se separa en 3 dimensiones, como se encuentra en la
documentación propia de este servicio, que agrupan diferentes datos sobre la
personalidad del usuario, los grandes 5, necesidades y valores.
- Los grandes 5 (The Big 5): Contiene las características de personalidad que
representan ampliamente el cómo una persona se desempeña en su ambiente.
Este modelo contiene 5 dimensiones o características primarias.
30
● Apertura a la Experiencia: personas a las que les gusta aprender cosas
nuevas y disfrutar de experiencias nuevas
● Responsabilidad: personas que tienen un alto nivel de tesón son fiables
y resolutivos.
● Extraversión: los extrovertidos obtienen energía de la interacción con
los demás, mientras que los introvertidos la obtienen de ellos mismos.
● Cordialidad/Amabilidad: personas amables, cooperativas y
compasivas. Las personas con un nivel bajo de cordialidad son más
distantes.
● Estabilidad Emocional: esta dimensión está relacionada con la
estabilidad emocional de la persona y el nivel de emociones negativas.
Y estas 5 características principales a su vez contienen cada una, características que
describen internamente cada dimensión.
- Apertura a la Experiencia
● Emocionalidad
● Intereses artísticos
● Desafío de la autoridad
● Intelecto
● Imaginación
● Audacia
- Extroversión
● Alegría
● Búsqueda de emociones
● Sociabilidad
● Seguridad de uno mismo
● Simpatía
● Nivel de actividad
- Rango emocional
● Tendencia a la preocupación
● Timidez
● Susceptibilidad a la tensión
● Vehemencia
● Melancolía
● Desmesura
- Amabilidad
● Altruismo
● Compasión
● Intransigencia
● Cooperación
● Modestia
● Confianza
31
- Responsabilidad
● Disciplina
● Cautela
● Necesidad de éxito
● Obediencia
● Autoeficacia
● Autodisciplina
Necesidades: Describe qué aspectos de un producto tendrían afinidad con una
persona, estas necesidades se dividen en:
● Armonía
● Amor
● Familiaridad
● Estabilidad
● Estructura
● Libertad
● Entusiasmo
● Autoexpresión
● Curiosidad
● Practicidad
● Desafío
● Ideación
Valores: Describe los factores que motivan e influencian a la persona a tomar
decisiones. estos factores son:
● Auto trascendencia
● Conservación
● Superación personal
● Apertura al cambio
● Hedonismo
Toda esta cantidad de datos y sus porcentajes de afinidad referentes para sus análisis
son entregados por Watson en un archivo JSON o un CSV, según lo desee uno.
Dentro de toda esta gama de datos se seleccionó “Rango emocional” dentro de las
dimensiones de los grandes 5 como los datos que se van a analizar para realizar las
modificaciones pertinentes a nuestro prototipo para poder generar el primer paso de
humanización de un PNJ.
Ya sabiendo qué tipo de dato es el que vamos a obtener, se investigó el modo de uso
de este servicio dentro de la documentación oficial de IBM Watson, encontrando que es
una API de consumo web, la cual se le debe entregar un texto, un perfil de twitter o un
link de una página web la cual contenga un mínimo de 3500 palabras para que se
entregue un análisis exhaustivo, o un mínimo de 100 palabras de texto escrito, pero se
obtendría un análisis muy bajo, pero con rasgos notorios sobre la personalidad del
usuario.
32
Sobre este servicio entonces es que se ha dispuesto implementar una página web que
contenga un ambiente virtual que permite ver lo que sería un personaje de un
videojuego, PNJ, el cual tendrá su animación inicial de modo espera, y que se le
inyectara los datos analizados y entregados por Watson para que este modifique su
animación a alguna de las personalidades abstraídas del análisis de personalidad y
sacadas de la dimensión “Estabilidad Emocional” del cúmulo de datos de Watson.
Para poder obtener este ambiente 3d vía Web, y permitir la comunicación de este
ambiente con el navegador, no se sabía bajo qué plataforma se podría desarrollar,
empezando por el corto tiempo poseído para el desarrollo del proyecto, la experticia de
los investigadores a la hora de desarrollar y las curvas de aprendizaje de los lenguajes
o programas posibles a utilizar para la producción.
En ese orden de ideas se procede a investigar cuál de los motores gráficos de desarrollo
de videojuegos es el que más se acerca a la necesidad del proyecto, teniendo como
base lo estudiado en las clases en la universidad y el conocimiento de videojuegos de
los investigadores, se coge de primera mano los motores Unity y UDK como principales
opciones para el desarrollo. Pero para calidad de decisión se realiza una búsqueda más
profunda dentro de la documentación oficial de cada motor gráfico y en foros y paginas
referentes a tecnología y videojuegos para poder encontrar y analizar los pros y contras
de los varios motores encontrados y que al parecer podrían amoldarse a las
necesidades del proyecto.
Luego de validar los pros y los contras, se encontró que no todos los motores de
desarrollo poseen soporte web, o exportan para plataforma web, que es principalmente
lo que se va a trabajar, se encontró que Unity es el único motor de desarrollo que brinda
la facilidad de exportar el ambiente virtual hacia web, HTML5, paso siguiente se decide
descargar la última versión de Unity para así proceder a desarrollar el prototipo.
Ahondando un poco en el modo de exportación web de Unity, se encontró que posee
dos métodos de exportación, HTML5 y WebGL. Esto generó la duda del porque las dos
opciones, y se encontró, dentro de la misma documentación de Unity, que se le va a
33
dejar de brindar soporte HTML5 a esta plataforma, por lo que están implementando
WebGL para futuros proyectos que se piensen realizar en web, pero no han quitado aún
el soporte a HTML5 mientras los usuarios realizan la migración a WebGL.
Para efectos del proyecto se enfoca el trabajo en HTML5 por dos motivos, primero, el
tiempo para aprender e implementar WebGL para realizar un buen prototipo funcional
era muy corto, segundo, la experticia de los investigadores promueve el rápido
desarrollo y validación del prototipo bajo lenguaje HTML5 y javascript, por lo que se dejó
a un lado, pero con miras a un futuro poder migrar el resultado de este prototipo a
WebGL.
Ya se conoce entonces que motor gráfico se va a usar, que servicio de Watson y que
datos de este servicio se van a adquirir y bajo qué lenguaje web se va a hacer la
aplicación, ahora se debe idear el cómo será en conjunto la aplicación.
Primero que todo, se va a organizar un pequeño cuestionario, formulario web, para el
usuario el cual generará el texto que se le debe entregar a Watson, este texto va a ser
obtenido por la selección de las opciones del cuestionario, cada selección internamente
tiene un texto que plantea el por qué el usuario está seleccionando esa opción y en qué
afecta eso su personalidad. La suma de todas las selecciones de las opciones del
formulario entrega un texto de entre 300 y 500 palabras, suficientemente amplio para
que Watson realice el análisis de personalidad y pueda generar los datos necesarios
para su lectura posterior.
34
Ya que Watson es un servicio web, se debe hacer uso de la API de IBM, ellos
propiamente tienen una guía de como cargar los datos y cómo consumir sus API,
siguiendo los ejemplos de cómo usar CURL en php e interactuando php y jQuery se
logra pasarle el texto obtenido por el cuestionario en HTML a php, con ayuda de jQuery,
este php se comunica por CURL con Watson, se le entrega el texto y a continuación
Watson devuelve el JSON con todos los resultados del análisis. Ahora se debe hacer
los mismos pasos, pero en dirección contraria, el JSON está almacenado en una
variable en PHP, la cual se debe descargar por medio de jQuery a un controlador de
Angular JS, el cual permitirá realizar la lectura del JSON más fácil y así poder visualizar
mejor a qué profundidad dentro del JSON se debe ingresar para sacar los datos
necesarios. Luego de obtener los datos necesarios, serán entregados a unas variables
en jQuery, las cuales por medio del navegador se enviarán al espacio virtual 3d
generado por Unity, en donde ya internamente este realizara el análisis de estos datos
y modifica la personalidad del PNJ de acuerdo a los resultados entregados.
Finalizado todo este proceso se podrá ver que la animación de espera ha cambiado a
alguna referente a los datos de Watson, y en la página se podrán ver los datos del
análisis.
35
12. Validación del Prototipo (funcional)
Este prototipo se divide en 3 fases:
- Primero: la obtención de los datos sobre el usuario por medio de un cuestionario,
sus respuestas generarán un texto que brindara información sobre la
personalidad del usuario para ser enviado a Watson vía web.
- Segundo: se enviará el texto resultante a la plataforma Watson vía web, de la
cual se consumirá el servicio “Personality Insights” para realizar el análisis de
personalidad del usuario y devolver los datos resultantes a la aplicación para ser
analizados y separar los datos relevantes para el desarrollo del prototipo, en este
caso serían los datos de cambio de personalidad.
- Tercero, se le envían a Unity los datos filtrados para que este realice las
validaciones adecuadas y paso siguiente modifique la personalidad del PNJ
dentro del ambiente virtual teniendo como base los resultados de personalidad
del usuario y la validación de qué tipo de personalidad se le asignará según el
resultado entregado.
Al final el PNJ cambiara de su estado “idle” o en espera a alguna de las animaciones
referentes a las personalidades que se han seleccionado como prueba (insertar
nombres de las animaciones que se van a poner), se mostrarán los números para
comprobar el uso y la comunicación del navegador y Unity, y paso siguiente se podrá
realizar una interacción del PNJ con un objeto dentro del ambiente virtual, la cual
modifica sus datos y se podrá llegar a cambiar la personalidad del PNJ de nuevo
dependiendo de que modificación le aplique la interacción realizada. (escribir bien que
tipos de interacción se van a poner).
Al final se podrá observar todos los datos que intervienen en el proceso de cambio de
estado del PNJ dependiendo de los datos de personalidad del usuario.
36
13. Conclusiones
Como resultado de la investigación, se demuestra que es posible que a un PNJ se le
puede generar una personalidad según los resultados obtenidos del usuario después de
un análisis de personalidad por medio de servicios de inteligencia artificial, IBM Watson
en este caso, brindando así una forma de generar nuevas experiencias a los usuarios.
Los servicios de inteligencia artificial son accesibles, sencillos en ciertos casos y además
los mismos desarrolladores realizan guías de uso y ejemplos de desarrollo, las maquina
cognitivas son de gran ayuda para solucionar y simplificar problemas y situaciones tanto
laborales, educacionales y de ocio.
Se debe salir del área de confort en el que se encuentra uno para poder aprender y abrir
los ojos ante la inmensa cantidad de datos, significados e interacciones con el medio
que se tienen, la inteligencia artificial y la tecnología actualmente nos brindan una gran
ayuda para percatarnos de lo que nos rodea afinando nuestros sentidos, abriendo
nuestros ojos para ver cosas que a simple vista no son perceptibles, etc.
Los videojuegos no solo son una herramienta de entretenimiento, ojalá este tipo de
investigaciones puedan llegar a generar nuevas aplicaciones en el ámbito educativo y
poder quitar ese estigma que se le tienen a los videojuegos, la unión de áreas del
conocimiento con la tecnología permitiría un mayor avance en nuestra interacción
humana y con las máquinas.
37
14. Trabajos futuros
A futuro se plantea aumentar el tipo de datos a obtener del análisis de Watson de
personalidad del usuario para así poder no solo cambiar el estado del PNJ si no también
darle una gran variedad de estados, como se puede ver en la creación de personajes
de juegos de Rol, los PNJ tienen, como los personajes principales, habilidades,
debilidades, conocimiento, personalidad, herramientas, armas, etc. se pretende generar
la creación de perfiles totales para los PNJ así como se crean para los Personajes
principales pero todo desde el análisis del usuario, para que así su experiencia en el
juego sea bastante inmersiva.
Además, se espera utilizar otros de los servicios de Watson para complementar el
desarrollo, se espera llegar a utilizar el servicio “Dialog” el cual se puede entrenar con
datos de temas muy específicos para que luego la máquina pueda llegar a tener
conversaciones fluidas y coherentes con los usuarios, quitando así la linealidad de los
diálogos que actualmente se manejan en los PNJ y abriendo el campo para que los
usuarios puedan llegar a tener conversaciones más “Humanas” con los PNJ.
Implementar el servicio “Speech to text” y “Text to Speech” para habilitar la
comunicación verbal entre los usuarios y la aplicación. esto permite que los usuarios ya
no solo tengan un chat más ameno con el videojuego si no que puedan llegar a dialogar
y escuchar lo que el videojuego responda, esto sería la experiencia más inmersiva que
se pueda realizar con los servicios de Watson y combinados con los videojuegos.
En el campo académico, se espera poder llegar a mejorar la interacción que pueda
haber en aplicaciones de análisis de personalidad. Las posibilidades son infinitas, las
herramientas están a disposición de la gente, solo es encontrar en qué enfocar los
servicios y cómo aplicarlos para poder solucionar, mejorar o crear aplicaciones, servicios
o productos que contengan estas tecnologías que se han hablado aquí y hasta más.
38
15. Bibliografía
Gonzalez Tardon Carlos, 2014, Videojuegos para la transformación social, aportaciones
conceptuales y metodología, España, Universidad de Deusto.
Pérez Latorre Óliver, 2011, Géneros de juegos y videojuegos. Una aproximación desde
diversas perspectivas teórica, España, Universidad Pompeu Fabra
Llansó Garcia David, 2014, Metodología ontológica para el desarrollo de videojuegos,
España, Universidad Complutense de Madrid.
Bateman Chris, 2013, Guionismo para videojuegos, IGDA (International Game
Developers Association)
Lopez Vallejo Enrique Javier, 2014, Conceptualización y desarrollo de un videojuego
RPG para PC, España, Universidad de Barcelona.
García Pérez Enrique, 2011, Emplazamiento de producto y guión de videojuegos:
aproximación teórica, España, Universidad de Sevilla.
Hachuel Benzaquen Mercedes, Magdalena Carrabs M. Liliana, 2013, Redacción para
el guión de un videojuego no lineal partiendo del modelo del viaje del héroe, Venezuela,
Universidad Catolica Andres Bello.
Procesos de desarrollo para videojuegos - Gerardo Abraham Morales Urrutia, Claudia
Esther Nava López, Luis Felipe Fernández Martínez, y Mirsha Aarón Rey Corral
Documentación sobre IBM Watson y sus servicios, tomado de:
http://www.ibm.com/smarterplanet/us/en/ibmwatson/ el 15 de abril de 2016.
Documentación sobre la nube de desarrollo de IBM Watson, tomado de:
http://www.ibm.com/smarterplanet/us/en/ibmwatson/watson-cloud.html el 15 de abril de
2016.
Catálogo de servicios de IBM Watson, tomado de:
http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/services-
catalog.html el 15 de abril de 2016.
Documentación servicio Personality Insights IBM Watson, tomado de:
http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/personality-
insights/ el 17 de abril de 2016.
Documentación sobre el modelo psicológico que usa Personality Insights, tomado de:
http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/personality-
insights/models.shtml el 20 de Abril de 2016.
39
Ciencia detrás del servicio Personality Insights IBM Watson, tomado de:
http://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/doc/personality-
insights/science.shtml el 14 de mayo de 2016.
Perfiles psicológicos de Silent Hill Shattered Memories, tomado de:
http://www.silenthillmemories.net/sh_shattered_memories/psych_profile_en.htm el 19
de junio de 2016.
Funcionamiento de los perfiles psicológicos en Silent Hill Shattered Memories, tomado
de:
http://silenthill.wikia.com/wiki/Psych_Profile el 19 de Junio de 2016.
Artículo que habla sobre los perfiles de los personajes en los videojuegos, tomado de;
http://www.zehngames.com/articulos/el-perfil-del-personaje-en-el-dinamismo-del-
videojuego/ el 16 de Junio de 2016.
Artículo sobre la psicología en los videojuegos y el perfil de los personajes, tomado de:
https://lapsicologiauniversitaria.wordpress.com/2014/03/06/psicologia-y-videojuegos-el-
nuevo-perfil-de-los-personajes/ el 16 de junio de 2016.
Artículo sobre cinco grandes motores gráficos, tomado de:
https://www.behance.net/gallery/21839385/5-Incredible-Game-Engines-and-Their-
Pros-and-Cons el 20 de junio de 2016.
Foro sobre source engine y unreal engine, toma de:
http://forums.steampowered.com/forums/archive/index.php/t-1824429.html el dia 20 de
junio de 2016.
Articulo de sobre las ventajas de unity engine, unreal engine, source engine o hacer tu
idea de juego por tu cuenta, tomado de :
http://www.gamasutra.com/blogs/AndrewHaining/20150306/238146/Unity_Unreal_Engi
ne_Source_or_Roll_your_own_engine_Pros_and_Cons.php el dia 20 de junio de 2016.
Foro sobre cual motor gráfico para videojuegos es tu favorito, tomado de:
https://forums.unrealengine.com/showthread.php?89580-Feature-comparison-of-all-
game-engines-currently-out-pros-and-cons el dia 20 de junio de 2016.
Artículo sobre el unreal engine y sus ventajas y desventajas, tomado de:
https://www.quora.com/What-are-the-main-pros-and-cons-of-Unreal-Engine-4-in-
general el 20 de junio de 2016.
Artículo sobre los pros y contras de Unity y unreal, tomado de:
https://www.quora.com/What-are-the-main-pros-and-cons-of-Unity-3D-and-Unreal-
Engine el 20 de junio de 2016.
40
Manual de usuario Metal Gear Solid V: The Phantom Pain, tomado de: http://mgstpp-
app.konamionline.com/manual/ps4/na/es/ps4_14.html el 4 de Julio de 2016
41
16. Anexos
Códigos Utilizados para comunicación Unity, navegador y Watson
Código Unity
Datos.css
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class datos : MonoBehaviour {
prueba test;
string name;
int numero;
Text texto1, texto2, texto3;
// Use this for initialization
void Start () {
texto1 = GameObject.Find("est_ini").GetComponent<Text>();
texto2 = GameObject.Find("est_nav").GetComponent<Text>();
texto3 = GameObject.Find("val_cambio").GetComponent<Text>();
test = GameObject.Find ("Beta").GetComponent<prueba> ();
}
// Update is called once per frame
void FixedUpdate () {
texto1.text = test.highest_text ();
texto2.text = name;
texto3.text = numero.ToString ();
}
//CAMBIO DE PERSONALIDAD
void personality_name(string datos)
{
name = datos;
}
void personality_value (int dato2){
numero = dato2;
switch (name) {
case "timido":
test.settimi (numero);
break;
case "tenso":
test.settens (numero);
break;
case "vehemente":
test.setvehe (numero);
break;
case "preocupado":
test.setpreo (numero);
break;
case "melancolico":
test.setmelan (numero);
break;
case "desmesurado":
test.setdesm (numero);
break;
default:
42
break;
}
test.set_temp ();
}
public void personality_prom (int[] prom){
test.setvehe (prom [0]);
test.setpreo (prom[1]);
test.setmelan (prom [2]);
test.setdesm (prom[3]);
test.settimi (prom [4]);
test.settens (prom [5]);
}
}
events.css
using UnityEngine;
using System.Collections;
public class events : MonoBehaviour {
prueba prub;
public bool gift, scare, once;
// Use this for initialization
void Start () {
prub = GameObject.Find ("Beta").GetComponent<prueba> ();
}
// Update is called once per frame
void FixedUpdate () {
if (gift) {
if(!once){
if (prub.highest_text ().Equals ("timi") ||
prub.highest_text ().Equals ("tens") ||
prub.highest_text ().Equals ("preo")) {
prub.setvehe (prub.getvehe () + 25);
} else if (prub.highest_text ().Equals ("melan")) {
prub.settimi (prub.gettimi () + 25);
} else {
prub.setdesm (prub.getdesm () + 25);
}
once = true;
int[] datosUnity = new int[] { prub.gettimi(), prub.gettens(),
prub.getvehe(), prub.getpreo(), prub.getmelan(), prub.getdesm() };
Application.ExternalCall ("actualizar", datosUnity);
}
} else if (scare) {
if(!once){
if (prub.highest_text ().Equals ("timi") ||
prub.highest_text ().Equals ("melan") ||
prub.highest_text ().Equals ("preo")) {
prub.settens (prub.gettens () + 25);
} else if (prub.highest_text ().Equals ("vehe") ||
prub.highest_text ().Equals ("desm")) {
prub.settimi (prub.gettimi () + 25);
} else {
prub.setpreo (prub.getpreo () + 25);
}
once = true;
43
int[] datosUnity = new int[] { prub.gettimi(), prub.gettens(),
prub.getvehe(), prub.getpreo(), prub.getmelan(), prub.getdesm() };
Application.ExternalCall ("actualizar", datosUnity);
}
}
}
public void gift_bot (){
if (!once)
prub.set_temp ();
else {
prub.restore_values ();
prub.set_temp ();
}
scare = false;
gift = true;
once = false;
}
public void scare_bot (){
if (!once)
prub.set_temp ();
else {
prub.restore_values ();
prub.set_temp ();
}
scare = true;
gift = false;
once = false;
}
public void restore_bot(){
prub.restore_values ();
scare = false;
gift = false;
once = false;
int[] datosUnity = new int[] { prub.gettimi(), prub.gettens(), prub.getvehe(), prub.getpreo(),
prub.getmelan(), prub.getdesm() };
Application.ExternalCall ("actualizar", datosUnity);
}
}
Prueba.css
using UnityEngine;
using System.Collections;
public class prueba : MonoBehaviour {
Animator myani;
public int timi;
int timi_temp;
public int tens;
int tens_temp;
public int vehe;
int vehe_temp;
public int preo;
int preo_temp;
public int melan;
int melan_temp;
public int desm;
int desm_temp;
44
bool change;
string person;
int max = 100;
int min = 0;
void Start(){
myani = GetComponent<Animator>();
person = "";
timi = Random.Range (20,70);
tens = Random.Range (20,70);
vehe = Random.Range (20,70);
preo = Random.Range (20,70);
melan = Random.Range (20,70);
desm = Random.Range (20,70);
int[] datosUnity = new int[] { timi, tens, vehe, preo, melan, desm };
Application.ExternalCall ("recibir", datosUnity);
}
// Update is called once per frame
void Update () {
if (timi < min)
timi = min;
if (timi > max)
timi = max;
if (tens < min)
tens = min;
if (tens > max)
tens = max;
if (vehe < min)
vehe = min;
if (vehe > max)
vehe = max;
if (preo < min)
preo = min;
if (preo > max)
preo = max;
if (melan < min)
melan = min;
if (melan > max)
melan = max;
if (desm < min)
desm = min;
if (desm > max)
desm = max;
if (Mathf.Max (timi, tens, vehe, preo, melan, desm) == timi) {
myani.SetInteger ("Timido", timi);
person = "timi";
}else
myani.SetInteger ("Timido", 0);
if (Mathf.Max (timi, tens, vehe, preo, melan, desm) == tens) {
myani.SetInteger ("Tenso", tens);
person = "tens";
}else
myani.SetInteger ("Tenso", 0);
if (Mathf.Max (timi, tens, vehe, preo, melan, desm) == vehe) {
myani.SetInteger ("Vehemente", vehe);
45
person = "vehe";
}else
myani.SetInteger ("Vehemente", 0);
if (Mathf.Max (timi, tens, vehe, preo, melan, desm) == preo) {
myani.SetInteger ("Preocupado", preo);
person = "preo";
}else
myani.SetInteger ("Preocupado", 0);
if (Mathf.Max (timi, tens, vehe, preo, melan, desm) == melan) {
myani.SetInteger ("Melancolico", melan);
person = "melan";
}else
myani.SetInteger ("Melancolico", 0);
if (Mathf.Max (timi, tens, vehe, preo, melan, desm) == desm) {
myani.SetInteger ("Desmezurado", desm);
person = "desm";
}else
myani.SetInteger ("Desmezurado", 0);
}
public void restore_values(){
if (change) {
timi = timi_temp;
tens = tens_temp;
vehe = vehe_temp;
preo = preo_temp;
melan = melan_temp;
desm = desm_temp;
change = false;
this.gameObject.GetComponent<Transform> ().rotation = new Quaternion (0,
180, 0, 0);
}
}
public void set_temp(){
if (!change) {
timi_temp = timi;
tens_temp = tens;
vehe_temp = vehe;
preo_temp = preo;
melan_temp = melan;
desm_temp = desm;
change = true;
}
}
public string highest_text(){
return person;
}
public int gettimi(){
return timi;
}
public int gettens(){
return tens;
}
public int getvehe(){
46
return vehe;
}
public int getpreo(){
return preo;
}
public int getmelan(){
return melan;
}
public int getdesm(){
return desm;
}
public void settimi(int n){
timi=n;
}
public void settens(int n){
tens = n;
}
public void setvehe(int n){
vehe = n;
}
public void setpreo(int n){
preo = n;
}
public void setmelan(int n){
melan = n;
}
public void setdesm(int n){
desm = n;
}
public bool cambio(){
return change;
}
}
Código HTML
<!DOCTYPE html>
<html lang="en" ng-app="controlador">
<head>
<meta charset="UTF-8">
<title>Generados de Historias</title>
<script src="angular/angular.min.js"></script>
<script src="js/jquery-1.12.3.min.js"></script>
<script src="js/controlador_watson.js"></script>
<style>
.texto1 {display: none;}
.texto2 {display: none;}
.texto3 {display: none;}
.texto4 {display: none;}
</style>
</head>
<body>
<h1>Cuestionario al Usuario</h1>
47
<h3>A continuación, encontrara una serie de preguntas,
por favor responderlas todas, muchas gracias</h3>
<form ng-controller="Lectura">
<h3>Test del Huevo</h3>
<p>Que animal podría salir de un huevo?</p>
<label data-ng-repeat="var in huevo">
<input name="huevo" type="radio" value="{{var.ave}}" ng-model="huevo1"> Ave</br>
<input name="huevo" type="radio" value="{{var.cocodrilo}}" ng-model="huevo1">
Cocodrilo</br>
<input name="huevo" type="radio" value="{{var.dinosaurio}}" ng-model="huevo1">
Dinosaurio</br>
<p>Que harías con el animal?</p>
<input type="radio" name="huevo2" value="{{var.naturaleza}}" ng-model="huevo2">
Dejarlo libre</br>
<input type="radio" name="huevo2" value="{{var.mascota}}" ng-model="huevo2">
Cogerlo de mascota</br>
<input type="radio" name="huevo2" value="{{var.veterinario}}" ng-model="huevo2">
Llevarlo a un veterinario</br>
<p class="texto1">{{huevo1}} {{huevo2}}</p>
</label>
<h3>Test de las Figuras</h3>
<p>Que figura te gusta mas?</p>
<label data-ng-repeat="var in figuras">
<input name="figuras" type="radio" value="{{var.cuadrado}}" ng-model="fig1">
Cuadrado</br>
<input name="figuras" type="radio" value="{{var.triangulo}}" ng-model="fig1">
Triangulo</br>
<input name="figuras" type="radio" value="{{var.rectangulo}}" ng-model="fig1">
Rectángulo</br>
<input name="figuras" type="radio" value="{{var.circulo}}" ng-model="fig1"> Circulo</br>
<input name="figuras" type="radio" value="{{var.linea}}" ng-model="fig1"> Línea</br>
<p class="texto2">{{fig1}}</p>
</label>
<h3>Test de los Colores</h3>
<p>Que color te atrae más?</p>
<label data-ng-repeat="var in colores">
<input name="colores" type="radio" value="{{var.azul1}}" ng-model="color1"> Azul</br>
<input name="colores" type="radio" value="{{var.verde1}}" ng-model="color1">
Verde</br>
<input name="colores" type="radio" value="{{var.rojo1}}" ng-model="color1"> Rojo</br>
<input name="colores" type="radio" value="{{var.amarillo1}}" ng-model="color1">
Amarillo</br>
<input name="colores" type="radio" value="{{var.rosado1}}" ng-model="color1">
Rosado</br>
48
<input name="colores" type="radio" value="{{var.cafe1}}" ng-model="color1"> Café</br>
<input name="colores" type="radio" value="{{var.gris1}}" ng-model="color1"> Gris</br>
<input name="colores" type="radio" value="{{var.negro1}}" ng-model="color1">
Negro</br>
<p>Que color te atrae menos?</p>
<input name="colores2" type="radio" value="{{var.azul2}}" ng-model="color2"> Azul</br>
<input name="colores2" type="radio" value="{{var.verde2}}" ng-model="color2">
Verde</br>
<input name="colores2" type="radio" value="{{var.rojo2}}" ng-model="color2"> Rojo</br>
<input name="colores2" type="radio" value="{{var.amarillo2}}" ng-model="color2">
Amarillo</br>
<input name="colores2" type="radio" value="{{var.rosado2}}" ng-model="color2">
Rosado</br>
<input name="colores2" type="radio" value="{{var.cafe2}}" ng-model="color2"> Café</br>
<input name="colores2" type="radio" value="{{var.gris2}}" ng-model="color2"> Gris</br>
<input name="colores2" type="radio" value="{{var.negro2}}" ng-model="color2">
Negro</br>
<p>Que color te parece mas llamativo?</p>
<input name="colores3" type="radio" value="{{var.azul3}}" ng-model="color3"> Azul</br>
<input name="colores3" type="radio" value="{{var.verde3}}" ng-model="color3">
Verde</br>
<input name="colores3" type="radio" value="{{var.rojo3}}" ng-model="color3"> Rojo</br>
<input name="colores3" type="radio" value="{{var.amarillo3}}" ng-model="color3">
Amarillo</br>
<input name="colores3" type="radio" value="{{var.rosado3}}" ng-model="color3">
Rosado</br>
<input name="colores3" type="radio" value="{{var.cafe3}}" ng-model="color3"> Café</br>
<input name="colores3" type="radio" value="{{var.gris3}}" ng-model="color3"> Gris</br>
<input name="colores3" type="radio" value="{{var.negro3}}" ng-model="color3">
Negro</br>
<p>Que color te parece mas atractivo?</p>
<input name="colores4" type="radio" value="{{var.azul4}}" ng-model="color4"> Azul</br>
<input name="colores4" type="radio" value="{{var.verde4}}" ng-model="color4">
Verde</br>
<input name="colores4" type="radio" value="{{var.rojo4}}" ng-model="color4"> Rojo</br>
<input name="colores4" type="radio" value="{{var.amarillo4}}" ng-model="color4">
Amarillo</br>
<input name="colores4" type="radio" value="{{var.rosado4}}" ng-model="color4">
Rosado</br>
<input name="colores4" type="radio" value="{{var.cafe4}}" ng-model="color4"> Café</br>
<input name="colores4" type="radio" value="{{var.gris4}}" ng-model="color4"> Gris</br>
<input name="colores4" type="radio" value="{{var.negro4}}" ng-model="color4">
Negro</br>
<p class="texto3">{{color1}} {{color2}} {{color3}} {{color4}} </p>
</label>
<h3>Test de los Caminos</h3>
<p>A donde te gustaría ir a caminar?</p>
<label data-ng-repeat="var in caminos">
49
<input name="caminos" type="radio" value="{{var.bosque}}" ng-model="camino1">
Bosque</br>
<input name="caminos" type="radio" value="{{var.maizal}}" ng-model="camino1">
Maizal</br>
<input name="caminos" type="radio" value="{{var.colinas}}" ng-model="camino1">
Colinas</br>
<p>En el camino te encuentras con...?</p>
<input name="caminos2" type="radio" value="{{var.lago}}" ng-model="camino2"> Un
Lago</br>
<input name="caminos2" type="radio" value="{{var.cascada}}" ng-model="camino2">
Una Cascada</br>
<input name="caminos2" type="radio" value="{{var.rio}}" ng-model="camino2"> Un
Rio</br>
<p>Mientras caminas vez que se acerca un animal, de que tamaño es?</p>
<input name="caminos3" type="radio" value="{{var.pequeno1}}" ng-model="camino3">
Pequeño</br>
<input name="caminos3" type="radio" value="{{var.mediano1}}" ng-model="camino3">
Mediano</br>
<input name="caminos3" type="radio" value="{{var.grande1}}" ng-model="camino3">
Grande</br>
<p>Al final de tu recorrido encuentras una casa, de que tamaño es?</p>
<input name="caminos4" type="radio" value="{{var.pequeno2}}" ng-model="camino4">
Pequeña</br>
<input name="caminos4" type="radio" value="{{var.mediano2}}" ng-model="camino4">
Mediana</br>
<input name="caminos4" type="radio" value="{{var.grande2}}" ng-model="camino4">
Grande</br>
<p>Detras de la casa puedes ver un Lago, de que tamaño seria?</p>
<input name="caminos5" type="radio" value="{{var.pequeno3}}" ng-model="camino5">
Pequeño</br>
<input name="caminos5" type="radio" value="{{var.mediano3}}" ng-model="camino5">
Mediano</br>
<input name="caminos5" type="radio" value="{{var.grande3}}" ng-model="camino5">
Grande</br>
<p class="texto4"> {{camino1}} {{camino2}} {{camino3}} {{camino4}} {{camino5}}</p>
</label>
</form>
<button ng-click="putInfo()" onclick="texto()">Enviar</button>
<script>
function texto(){
var textoWatson;
textoWatson = $(".texto1").text() + $(".texto2").text() + $(".texto3").text() +
$(".texto4").text();
console.log(textoWatson);
$.ajax({ url: "watson.php", type: "POST", data: "text="+textoWatson,
success: function(data){ console.log(data); } });
}
</script>
</body>
</html>
50
Código PHP <?php
//perfil para enviar a Watson proveniente de HTML
$perfil= $_POST['text'];
//webservice
$conapi = "https://gateway.watsonplatform.net/personality-insights/api";
//$homepage = file_get_contents('http://23.253.151.143/cognitiva/es/index.html');
$curl = curl_init();
$post_args = array(
'body' => $perfil,
);
$header_args = array(
'Content-Type: text/plain',
'Accept: application/json',
'content-language:es'
);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_args);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header_args);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "8c07a8e2-51c5-4639-a628-
a1b15d2f19ab:bhd3dKWWNpC7");
curl_setopt($curl, CURLOPT_URL, "https://gateway.watsonplatform.net/personality-
insights/api/v2/profile");
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER , false);
$result = curl_exec($curl);
//cerrar la seccion de curl
curl_close($curl);
$decoded = json_decode($result, true);
// echo "<pre>";
// print_r($decoded);
// echo "</pre>";
echo $decoded;
?>
51
Controlador Angular JS
var app = angular.module("controlador",[]);
app.controller("Lectura", function($scope){
$scope.huevo = [
{
ave: 'Soy tradicional, una persona muy racional que espera resolver los
problemas que se me presenten en la vida utilizando la lógica, pero muchas
veces la vida me sorprende con un resultado que escapa de la lógica.',
cocodrilo: 'Me cuesta reconocerlo, pero soy algo pesimista y espero lo peor en
cualquier situación. Sin embargo, eso no es del todo malo, pues siempre me
preparo para afrontar dicha situación y poder superarla como sea.',
dinosaurio: 'Soy una persona creativa y que le gusta pensar diferente a los
demás. Tengo sueños y metas, pero a veces mis metas son poco realistas, trato
de ser más realista y de luchar por convertir mis sueños en realidad.',
naturaleza: 'Soy una persona muy considerada y pienso que la familia es uno de
los valores más grandes que puede tener una persona o animal. Respeto a los
demás y me gusta que respeten mi espacio.',
mascota: 'Soy una persona un poco impulsiva, que actúa por el corazón primero
que la razón. Muchas veces no considero las consecuencias de mis acciones y
por eso a veces tengo muchos problemas.',
veterinario: 'Soy una persona capaz de controlar mi corazón y trato de analizar
una situación antes de tomar una decisión. Me esmero por el bienestar de los
que me rodean y eso me hace feliz.'
}
];
$scope.figuras = [
{
cuadrado: "Soy una persona que se siente más seguro en un entorno estable y
con instrucciones claras de lo que tiene uno que hacer. Cumplo con las tareas
que se me encomiendan siguiendo las instrucciones que se me dan. Me gusta
estar Cómodo con la rutina, prefiero que todo funcione en orden y sin cambios.
Las situaciones imprevistas me perturban. So de las personas que están felices
si a donde van. Me planteo objetivos específicos y lucho por alcanzarlos de
manera esquematizada y lógica. Jamás dejo una tarea inconclusa por más que
esta sea aburrida, repetitiva o complicada. Soy una persona conservadora,
respetuosa de las formalidades, que no se preocupa mucho por desarrollar su
creatividad personal.",
triangulo: "Soy una persona orientada permanentemente hacia un objetivo.
Disfruto tanto de la planificación como la realización de mis metas. Si me asignan
una tarea, rápidamente elaboro un plan lógico para realizarlo. Soy un buen
ejecutivo que se asegura de obtener los resultados esperados. Tiendo a
planificar a largo plazo, tomando en cuenta los pasos intermedios para lograr el
objetivo final. Me motiva que estos se vayan cumpliendo de acuerdo al plan
inicial. En mi afán por avanzar puede que olvide detalles, pero soy capaz de
adaptarme perfectamente a un orden superior, aunque esta implique un cambio
en la estrategia inicial.",
rectangulo: "Soy el tipo de persona que se adhiere a un tipo de vida estructurada
y con reglas específicas a seguir. En este sentido, todo tiene que estar hecho de
la manera apropiada y correcta. Tomando en cuenta las reglas y los parámetros
sociales. Organizo las tareas para realizarlas en forma sistemática. Me planteo
52
objetivos específicos e intento alcanzarlos de manera lógica pero no me
preocupo por desarrollar mi creatividad personal. Disfruto de la aplicación de
teorías y técnicas. Para mi descubrir y comprender el proceso de cualquier cosa
es un placer.",
circulo: "Soy una persona social y extrovertida, con facilidad para las relaciones
interpersonales. Resuelvo los problemas hablando sobre ellos y a menudo suelo
ejercer las funciones como moderador del grupo social en el que me
desenvuelvo. La comunicación es primordial para mi, es allí donde encuentro
armonía. Si se me asigna una tarea, comienzo por hablar de ella y buscar la
estrategia que se llevaría a cabo. Le doy prioridad a lograr una situación de
armonía con el grupo antes que aplicar las técnicas predeterminadas. Soy una
persona creativa e intuitiva, la cual busca siempre ideas innovadoras. No
necesito trabajar en base a planes predeterminados, por el contrario, me
desmotiva. Los que trabajan conmigo deben apelar a su flexibilidad para
entenderse conmigo y poder trabajar juntos.",
linea: "Soy una persona sumamente creativa e innovadora. Me agrada realizar
cosas nuevas y diferentes todo el tiempo. Suelo aburrirme con la rutina y rechazo
la aplicación de técnicas o procedimientos sistemáticos. Los hechos
inesperados me motivan. Cuando se me asigna una tarea nueva, respondo con
ideas brillantes para realizarlas. Soy una persona extrovertida e intuitiva, capaz
de ver la realidad desde diferentes ángulos. Los que interactúan conmigo deben
apelar a su flexibilidad y evitar las ideas preconcebidas para entenderse conmigo
y poder trabajar."
}
];
$scope.colores = [
{
azul1: "Me atrae todo lo nuevo, moderno o misterioso. Tengo tendencia a
aburrirme fácilmente con la monotonía de lo tradicional y lo corriente.",
verde1: "Soy sensible. Busco expresar mi necesidad de identificación en una
atmosfera sensible e íntima donde una delicadeza estética y sentimental puede
proveer de protección y educación.",
rojo1: "Me siento intranquilo e inseguro en la situación presente. Necesito mayor
seguridad y un ambiente más afectuoso o que imponga un esfuerzo físico
menor.",
amarillo1: "Soy una persona neutral, represento una barrera entre los colores
compensatorios que me preceden y los restantes; el punto en el cual la
desconexión se ha realizado.",
rosado1: "Soy un poco agresivo. Conflictos e insatisfacciones de todo tipo
refuerzan mi necesidad de las compensaciones indicadas por mis objetivos.",
cafe1: "Estoy en armonía. Pues me siento calmado y con un mínimo de
trastornos. Me gusta sentirme relajado y llevarme bien con mis compañeros y
todos sus íntimos.",
gris1: "He logrado mi autoafirmación y persistencia. Exijo lo que creo que me es
debido y me esfuerzo para mantener mi posición intacta.",
negro1: "Poseo una actividad efectiva. Mi estado, activo, con progresos limitados
que me dan una recompensa insuficiente por los esfuerzos que realizo.",
azul2: "Tengo deseos de agresividad y enfrentamiento. Considero que las
circunstancias presentes son desagradables y sobre impositivas. Me niego a
permitir que algo pueda influir sobre mis puntos de vista.",
verde2: "Tengo deseos de armonía. Deseo un estado armonioso de vida
tranquila y apacible que ofrezca una serena satisfacción y una sensación de
pertenencia a algo o a alguien.",
rojo2: "Tengo deseos de autoafirmación. Quiero superar toda oposición y
conseguir el reconocimiento de los demás.",
53
amarillo2: "Tengo un deseo de actividad intensa, vital y animada. Ansias de
conseguir éxitos y conquistas; Gran deseo de vivir mi vida lo más intensamente
posible.",
rosado2: "Soy optimista. Necesito un cambio de situación o de amistades que
me alivie de la tensión. Busco una solución que me abra nuevas y mejores
posibilidades y que me permita realizar mis metas.",
cafe2: "Soy vanidoso. Necesito sentirme identificado con algo o con alguien y
deseo ganar el apoyo de los demás por su trato agradable y amabilidad. Soy
sentimental y anhelo una ternura de tipo romántico.",
gris2: "Necesito liberarme de mis problemas y lograr un estado seguro de
bienestar físico en el cual pueda relajarme y recuperarme.",
negro2: "Deseo una neutralidad. Soy renuente a participar; quiero evitar todo
tipo de estímulos. He tenido que soportar demasiadas cosas de índole
agotadoras y exhaustivas y ahora deseo protección y desligarme de todo.",
azul3: "Deseo tener control. Deseo ser independiente, estar desligado de
ataduras y libre de cualquier limitación, excepto aquellas que yo mismo me
imponga por propia elección y decisión.",
verde3: "Alguna situación presente o alguna relación es insatisfactoria, pero me
siento incapaz de cambiarla para conseguir el sentido de pertenencia a algo o a
alguien que necesito. Mi capacidad para concentrarme puede disminuir.",
rojo3: "La dependencia, la tenacidad y la fuerza de voluntad necesaria para
luchar contra las dificultades presentes se han debilitado. Me siento
sobrecargado, agotado y desorientado, pero continúa manteniéndose firme en
mi puesto. Resisto adoptar las medidas necesarias para resolver la situación
tensa.",
amarillo3: "Tengo rechazo a la actividad. Situación amenazadora y peligrosa.
Me violento ante la idea de que me es imposible alcanzar mis objetivos y me
aflijo con mi sentimiento de impotencia para solucionarlo.",
rosado3: "Tengo miedo a las decepciones. Esperanzas irrealizadas me han
llevado a un estado de incertidumbre y aprehensión. Necesito sentirme seguro
y evitar cualquier otra decepción.",
cafe3: "Me atrae todo lo que es de buen gusto, gracioso y sensible, pero
mantengo mi actitud crítica. Exijo sinceridad, así como protección contra su
propia tendencia a ser excesivamente confiado.",
gris3: "Tengo una necesidad insatisfecha de asociarme con aquellos cuyas
normas de vida sean tan elevadas como las suyas; este deseo de sobresalir me
aísla e inhibe mi disposición para darme libremente. Aunque quiero entregarme
y dejarme llevar, considero que ello es una debilidad que debe ser resistida.",
negro3: "Creo que la vida tiene mucho más que ofrecer y que existen todavía
muchas cosas importantes por realizar; creo que se debe sacar provecho a la
vida lo más intensamente posible.",
azul4: "Creo que ciertas cosas se me interponen en mi camino y que las
circunstancias me están forzando a buscar vías alternas y a abstenerme por el
momento de algunos placeres.",
verde4: "Quiero alcanzar la armonía puesto que permanezco desvinculado
sentimentalmente.",
rojo4: "Las situaciones me impiden establecerme según mi conveniencia, pero
creo que debo sacar el mejor provecho posible de todas las cosas tal como se
me presentan.",
amarillo4: "Mi potencial, una actividad frenada. Paz y tranquilidad. Busco la
tranquilidad después de un periodo de sobreexcitación que me ha dejado
indiferente y carente de energía." ,
rosado4: "Me apego a la creencia de que mis esperanzas e ideas son realistas,
necesito ánimo y reafirmación. Aplico normas muy estrictas para la elección de
mi pareja y quiero garantías contra cualquier perdida o decepción.",
54
cafe4: "Mi potencial, la capacidad empática. Es algo egocéntrico y por lo tanto,
fácilmente me siento ofendido. Soy sensible y sentimental, pero lo oculto a todos
excepto a aquellos que me son muy íntimos.",
gris4: "Tengo mis necesidades físicas reprimidas. Por ello anhelo lograr
satisfacciones de actividades físicas.",
negro4: "Poseo un deseo de neutralidad reprimido. Quiero participar y verme
envuelto en asuntos, pero trato de resguardarme de conflictos y molestias de
modo que la tensión se reduzca."
}
];
$scope.caminos = [
{
bosque: "Soy profundo, tranquilo y la gente me encuentra interesante porque no
muestro mi verdadero ser enseguida. Mis amigos aprecian que los se
escuchar.",
maizal: "Soy una persona honesta y agradable. Hago amigos fácilmente y suelen
verme como una persona entretenida, divertida y que siempre es el centro de
atracción.",
colinas: "Yo atraigo a la gente con mi naturaleza franca y directa. Soy un gran
solucionador de problemas, siempre escucho ambos puntos de vista antes de
tomar un lado.",
lago: "No estoy interesado en una relación superficial. Una vez que encuentre a
la persona que me interesa, mis sentimientos son fuertes.",
cascada: "Soy una persona muy apasionada. Sé cómo encender mis encantos
y las personas se sienten atraídas por mi forma de ser.",
rio: "Estoy atraído por alguien nuevo. Tengo una personalidad coqueta y
frecuentemente cambio de un objetivo a otro.",
pequeno1: "No le temo a las dificultades y me siento capaz de superar cualquier
obstáculo.",
mediano1: "Le temo a las dificultades y me cuesta tomar decisiones, sobretodo
bajo presión.",
grande1: "Temo a las dificultades y que a veces veo los problemas más grandes
de lo que realmente son. Debo tener más confianza en mí mismo.",
pequeno2: "Temo soñar en grande. Sé que no apunto alto, y así no llegare alto.
Debo ponerme metas grandes y veré que soy capaz de lograrlo.",
mediano2: "Soy una persona conservadora y trato de ser realista, sin embargo,
no temo soñar en grande para alcanzar grandes cosas.",
grande2: "Tengo grandes aspiraciones. Lucho por mis sueños y trabajo por
hacerlos realidad.",
pequeno3: "Soy una persona tranquila.",
mediano3: "Soy una persona equilibrada.",
grande3: "Soy una persona muy apasionada y de grandes aspiraciones."
}
];
});
55
17. Glosario
Angular JS: Es un Modelo-Vista-Controlador(MVC) de Javascript para el desarrollo Web que permite crear aplicaciones de una página (SPA-Single Page Application). API: Interfaz de programación de aplicación (Application Programing Interface). Aplicación Web: Herramienta que los usuarios pueden utilizar accediendo a un servidor web a través de Internet o de una intranet mediante un navegador. Blueprint: Plan o un conjunto de propuestas que muestra la forma en que se espera que funcione algo. C#: Lenguaje de programación orientado a objetos desarrollado y estandarizado por Microsoft como parte de su plataforma .NET, que después fue aprobado como un estándar por la ECMA. Coccos 2D: Framework, basado en (Pyglet), escrito en Python para crear juegos en 2d, y presentaciones gráficas. CryEngine: Motor de juegos creado por la empresa alemana desarrolladora de software Crytek. CURL: Programa informático que tiene la capacidad de traducir las órdenes que introducen los usuarios, mediante un conjunto de instrucciones facilitadas por él mismo directamente al núcleo y al conjunto de herramientas que forman el sistema operativo. Diálogo lineal: Diálogo estandarizado que sigue un recorrido, no se altera, siempre posee su orden y diálogos ya fijos. E3: Electronic Entertainment Expo, es la convención de videojuegos más importante de la industria. Epic Games: Es una empresa de desarrollo de videojuegos estadounidense con sede en Cary, Carolina del Norte, ahora asociado con la compañía china Tencent Holdings. Ellos son bien conocidos por su tecnología Unreal Engine. FBX: FilmBox. FlowGraph: Es una representación, en forma de grafo dirigido, de todos los caminos que pueden ser atravesados a través de un programa durante su ejecución. HTML5: (HyperText Markup Language, versión 5) es la quinta revisión importante del lenguaje básico de la World Wide Web, HTML. Half Life 2: Continuación del videojuego Half-Life, una videoaventura de disparos en primera persona. Hero Engine:Es un motor de juegos y servidor de plataforma tecnológica originalmente desarrollada por simutronics Corporation para crear principalmente juegos estilo MMO.
56
IBM Watson: Es un sistema informático de inteligencia artificial que es capaz de responder a preguntas formuladas en lenguaje natural,1 desarrollado por la corporación estadounidense IBM. iDroid: Es un dispositivo parecido a un walkie-talkie que muestra el mapa de una zona determinada de manera holográfica. Inteligencia Artificial: Programa de computación diseñado para realizar determinadas operaciones que se consideran propias de la inteligencia humana, como el autoaprendizaje. JQuery: Es una biblioteca de JavaScript, creada inicialmente por John Resig, que permite simplificar la manera de interactuar con los documentos HTML. Javascript: Es un lenguaje de programación interpretado, dialecto del estándar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, débilmente tipado y dinámico. MMORPG: Massively Multiplayer Online Role Playing Game o Videojuego de rol multijugador masivo en línea. Metal Gear Solid V: The Phantom Pain: Es un videojuego de sigilo y acción-aventura de la saga Metal Gear, desarrollado por Kojima Productions y producido por Hideo Kojima. Mono Development: Es un entorno de desarrollo integrado libre y gratuito, diseñado primordialmente para C# y otros lenguajes .NET. Motor Gráfico: Término que hace referencia a una serie de rutinas de programación que permiten el diseño, la creación y la representación de un videojuego. Personality Insights: Percepciones de personalidad. PNJ: Personaje No Jugable. Silent Hill Shattered Memories: Es un videojuego estilo horror de la empresa Climax Group desarrollado bajo supervisión de KONAMI. Source Engine: Es un motor de videojuego desarrollado por la empresa Valve Corporation. The Big 5: Es un modelo de personalidad que analiza ésta como la composición de cinco factores amplios o dimensiones de personalidad. Unity: Es un motor de videojuego multiplataforma creado por Unity Technologies. Unity Web Player: Plugin para reproducir aplicaciones unity en un navegador web. Unreal Engine (Unreal Development Kit): Es un motor de juego de PC y consolas creados por la compañía Epic Games.
WebGL: Es una API de Javascript para renderizar gráficos 2D y 3D interactivos
compatible con cualquier navegador web sin utilizar un plugin adicional.