En el desarrollo de los videojuegos de tipo RPG (Role Play Game por sus siglas en inglés), existe una amplia cantidad de personajes no jugables (NPC por sus siglas en inglés), que en algunas ocasiones no destacan por su inteligencia artificial (IA), llevando a cabo comportamientos incongruentes, lo cual puede romper la inmersión y la jugabilidad. Este tipo de situaciones puede dañar el flujo de la partida en el momento que el jugador interactúa con el NPC. La configuración de la IA de cada NPC varía de acuerdo a cada título, género, o fin al que se quiere mostrar en el juego, para esto, dentro de los motores de desarrollo de videojuegos, se implementan herramientas que realicen la implementación de esta característica al NPC. Unreal Engine hace manejo de árboles de comportamiento propios, los cuales se encargan de realizar una acción, dependiendo de un conjunto de entradas que son recopiladas por el ambiente y definidas por el desarrollador. El presente proyecto plantea el diseño e implementación de un complemento de IA para el motor de videojuegos Unreal Engine 4, ya que este editor permite un gran procesamiento visual y de desarrollo, que facilita la implementación de este y futuros proyectos de mayor envergadura; haciendo uso del árbol de búsqueda de Monte Carlo (MCTS por sus siglas en inglés), que permite generar una serie de decisiones aleatorias, escogiendo la mejor a partir de los cálculos basados en simulaciones aleatorias que agilizan la toma de posibles acciones. Para validar la implementación propuesta en este trabajo de grado, se generó un ambiente de pruebas de tipo RPG para toma de decisiones, acotado por un escenario de casillas con mecánicas basadas en combates por turnos, donde cada NPC cuenta con los conceptos armamentísticos derivados de las antiguas legiones romanas, conceptualizando las funciones de cada legionario junto al equipamiento que los acompañaba durante cada batalla, en pos de dinamizar estos comportamientos de manera lógica, incluyendo un esquema basado en variables que definen una personalidad, junto a paquetes de estado que identifican las cualidades de miedo, fe y venganza que derivan de las acciones del jugador y afectan el comportamiento del actor. Lo que lleva a corroborar la implementación con un sistema de tres pruebas, las cuales cuentan con distintos entornos construidos en base a la cantidad de NPC presentes en escena, junto a la ubicación de los mismos alrededor de la escenografía y del jugador, donde se clasifican tres tipos de NPC que se diferencian por sus valores de personalidad, los cuales son el IQ (del alemán Intelligenzquotient, conocido como coeficiente intelectual), miedo, valentía, venganza, locura, liderazgo y confianza, para así, formar un carácter a cada decisión que se deba tomar. Generando rangos basados en dichas variables que representan el nivel bajo, básico y avanzado, a los cuales hará frente al jugador, con la finalidad de analizar los árboles generados y sus comportamientos dependiendo de dichas configuraciones, arrojando datos que evidencian las relaciones entre actores de tipo NPC, y la varianza en su actitud para afrontar diferentes acciones realizadas por la persona que los confronte. Agradecimientos 7 Resumen 9 Índice 11 Índice de figuras 14 Índice de tablas 17 Capítulo 1. Introducción 1 Conceptos fundamentales 4 Videojuegos 4 RPG 4 NPC 4 Máquinas de estado finitas 5 Flow 5 Unreal Engine 5 Inteligencia artificial 5 Agentes inteligentes 5 Técnicas duras 6 Técnicas suaves 6 Árboles de comportamiento 6 MCTS 6 Antecedentes 7 Planteamiento del problema 8 Justificación 9 Objetivo general 10 Objetivos específicos 10 Capítulo 2. Marco teórico 11 RPG 11 Inteligencia artificial 12 Árbol de comportamiento 13 Monte Carlo Tree Search 15 Arte del combate romano 18 Hastae o Hasta 20 Verutum 20 Pilum 20 Contus 21 Spiculum 21 Plumbata 22 Sagittarii 22 Gladius 23 Spatha 24 Pugio 24 Maza 24 Lorica Hamata 25 Lorica Squamata 25 Lorica Plumata 26 Lorica Musculata 26 Lorica Segmentata 27 Otras armaduras 28 Scutum 28 Cetratus 29 Parma 29 Capítulo 3. Materiales y Métodos 30 Desarrollo 30 Diagrama Sistémico de Componentes 35 Método computacional 38 Configuración del plug-in 38 Protocolo de pruebas 39 Implementación 46 Capítulo 4. Resultados 57 Capítulo 5. Discusión 66 Capítulo 6. Conclusiones 68 Capítulo 7. Recomendaciones 69 Capítulo 8. Trabajo futuro 70 Bibliografía 71 Anexos 75 Anexo 1. Link de referencia, al video que detalla gráfica y verbalmente el uso e implementación del plug-in en Unreal Engine 4. 75 In the development of RPG (Role Play Game) video games, there are a large number of non-playable characters (NPCs), which sometimes do not stand out for their artificial intelligence (AI), performing incongruent behaviours, which can break immersion and gameplay. These types of situations can damage the flow of the game as the player interacts with the NPC. The configuration of the AI of each NPC varies according to each title, genre, or purpose to be shown in the game, for this, within the game development engines, tools are implemented to perform the implementation of this feature to the NPC. Unreal Engine handles its own behaviour trees, which are responsible for performing an action, depending on a set of inputs that are collected by the environment and defined by the developer. This project proposes the design and implementation of an AI complement for the video game engine Unreal Engine 4, since this editor allows a great visual processing and development, which facilitates the implementation of this and future larger projects; making use of the Monte Carlo search tree (MCTS), which allows to generate a series of random decisions, choosing the best one from the calculations based on random simulations that speed up the taking of possible actions. To validate the implementation proposed in this degree work, an RPG-type test environment for decision making was generated, bounded by a scenario of squares with mechanics based on turn-based combat, where each NPC has the weaponry concepts derived from the ancient Roman legions, conceptualising the functions of each legionary along with the equipment that accompanied them during each battle, in order to dynamise these behaviours in a logical manner, including a scheme based on variables that define a personality, along with status packs that identify the qualities of fear, faith and revenge that derive from the player's actions and affect the actor's behaviour. This leads to corroborate the implementation with a system of three tests, which have different environments built based on the number of NPCs present in the scene, along with the location of them around the scenery and the player, where three types of NPCs are classified and differentiated by their personality values, which are the IQ (German Intelligenzquotient, known as IQ), fear, bravery, revenge, madness, leadership and confidence, to form a character for each decision to be taken. Generating ranges based on these variables that represent the low, basic and advanced level, which the player will face, in order to analyse the trees generated and their behaviours depending on these configurations, providing data that show the relationships between NPC type actors, and the variance in their attitude to face different actions performed by the person who confronts them. Pregrado При разработке видеоигр жанра RPG (Role Play Game) существует большое количество неиграбельных персонажей (NPC), которые иногда не выделяются своим искусственным интеллектом (ИИ), выполняя несоответствующее поведение, что может нарушить погружение и игровой процесс. Такие ситуации могут нарушить течение игры, когда игрок взаимодействует с NPC. Конфигурация ИИ каждого NPC варьируется в зависимости от названия, жанра или цели, которая должна быть показана в игре, для этого в движках для разработки игр реализованы инструменты для выполнения внедрения этой функции в NPC. Unreal Engine обрабатывает собственные деревья поведения, которые отвечают за выполнение действия в зависимости от набора входных данных, собранных окружением и определенных разработчиком. Данный проект предлагает разработку и реализацию дополнения AI для движка видеоигр Unreal Engine 4, так как этот редактор позволяет большую визуальную обработку и разработку, что облегчает реализацию этого и будущих более крупных проектов; использование дерева поиска Монте-Карло (MCTS), которое позволяет генерировать серию случайных решений, выбирая лучшее из вычислений на основе случайных симуляций, что ускоряет принятие возможных действий. Для проверки реализации, предложенной в данной дипломной работе, была создана тестовая среда RPG для принятия решений, ограниченная сценарием квадратов с механикой, основанной на пошаговом бою, где каждый NPC имеет концепции вооружения, взятые из древнеримских легионов, концептуализация функций каждого легионера вместе со снаряжением, которое сопровождало их во время каждого сражения, чтобы динамизировать это поведение логическим образом, включая схему, основанную на переменных, определяющих личность, вместе с пакетами статусов, определяющих качества страха, веры и мести, которые вытекают из действий игрока и влияют на поведение актера. Это приводит к подтверждению реализации с помощью системы из трех тестов, которые имеют различные среды, построенные на основе количества NPC, присутствующих в сцене, наряду с расположением их вокруг декорации и игрока, где три типа NPC классифицируются и дифференцируются по их личностным ценностям, которые являются IQ (German Intelligenzquotient, известный как IQ), страх, храбрость, месть, безумие, лидерство и уверенность, чтобы сформировать персонажа для каждого решения, которое должно быть принято. Генерирование диапазонов на основе этих переменных, представляющих низкий, базовый и продвинутый уровень, с которым столкнется игрок, для анализа генерируемых деревьев и их поведения в зависимости от этих конфигураций, предоставляя данные, показывающие взаимоотношения между актерами типа NPC, и различия в их отношении к различным действиям, выполняемым человеком, который с ними сталкивается.