56
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

HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

  • Upload
    others

  • View
    7

  • Download
    0

Embed Size (px)

Citation preview

Page 1: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 2: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 3: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

3

NOTA ACEPTACION

_________________________

PRESIDENTE DEL JURADO

_________________________

JURADO

_________________________

JURADO

_________________________

SANTIAGO DE CALI 22 DE JUNIO DE 2016

Page 4: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 5: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 6: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 7: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 8: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 9: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 10: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 11: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.”

Page 12: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 13: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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,

Page 14: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 15: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 16: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

16

Cuadro pros y contras motores gráficos

Page 17: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

17

Page 18: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

18

Page 19: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 20: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 21: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 22: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 23: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 24: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 25: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

25

7. Matriz de marco lógico

Page 26: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

26

8. Definición de actividades (EDT)

Page 27: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 28: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 29: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 30: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 31: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 32: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 33: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 34: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 35: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 36: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 37: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 38: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 39: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 40: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 41: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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:

Page 42: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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;

Page 43: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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;

Page 44: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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);

Page 45: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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(){

Page 46: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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>

Page 47: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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>

Page 48: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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">

Page 49: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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>

Page 50: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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;

?>

Page 51: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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

Page 52: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.",

Page 53: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.",

Page 54: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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."

}

];

});

Page 55: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.

Page 56: HUMANIZACION DE PERSONAJES NO JUGABLES USANDO …

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.