[en] In this project we will adapt the MineDojo framework based on Minecraft, a famous sandbox video game that offers a large number of possibilities, in order to perform multi-agent training through reinforcement learning. To carry out this task we will first explain the basics of reinforcement learning, including the key concepts and general functionalities of the most used Python libraries in this field and then analyze the source code of the environment and related previous projects. This way we will consider the unsuccessful paths followed previously and think about what to change or what to add to the existing implementations so that the result is satisfactory. Finally, a series of changes will be made to the environment to allow two agents to connect to it simultaneously, in addition, its operation will be separated to allow each one to receive its corresponding actions and observations and its performance will be tested by performing a training using the PPO algorithm, one of the most used in the field at present. Training in local or Google Colaboratory instances is not entirely satisfactory due to the high hardware demand for the memory part of the environment, because two open Minecraft instances are needed apart from the environment and the training algorithm itself, yet it has been possible to train the agents with a limited number of individual steps and iterations. Finally, the attempts to train the agents using the BSC infrastructure proved to be more satisfactory due to the greater computational capacity we had at our disposal, managing to train the agents in simple tasks in order to test the correct performance of the environment, unfortunately, access to this infrastructure was only possible shortly before the end of the project, so training with more complex tasks was not successful.

[es] En este proyecto se adaptará el framework MineDojo basado en Minecraft, un famoso videojuego de tipo sandbox que ofrece una gran cantidad de posibilidades, para poder realizar un entrenamiento multiagente mediante aprendizaje por refuerzo. Para llevar esta tarea a cabo primero se explicarán las bases del aprendizaje por refuerzo, entre ellos los conceptos clave y el funcionamiento general de las librerías más usadas de Python en este campo para a continuación analizar el código fuente del entorno y los proyectos previos relacionados. De esta manera se considerarán los caminos seguidos sin éxito anteriormente y se pensará en que cambiar o que añadir a las implementaciones existentes para que el resultado sea satisfactorio. Finalmente se realizarán una serie de cambios al entorno para poder permitir que dos agentes se conecten a él simultáneamente, además, se separará su funcionamiento para poder permitir que cada uno reciba sus acciones y observaciones correspondientes y se probará su rendimiento realizando un entrenamiento utilizando el algoritmo de PPO, uno de los más usados en el campo en la actualidad. El entrenamiento en local o en instancias de Google Colaboratory no resulta del todo satisfactorio por la gran demanda de hardware por la parte de memoria del entorno, debido a que se necesitan dos instancias de Minecraft abiertas a parte del entorno y del propio algoritmo de entrenamiento, aún así se ha podido entrenar a los agentes con un limitado número de pasos e iteraciones individuales. Por último los intentos de entrenar a los agentes usando la infraestructura del BSC resultaron más satisfactorios por la mayor capacidad de cómputo que tuvimos a nuestra disposición, consiguiendo entrenar a los agentes en tareas sencillas para así comprobar el funcionamiento del entorno, lamentablemente el acceso a dicha infraestructura fue posible poco tiempo antes de la conclusión del proyecto así que los entrenamientos con tareas más complejas no resultaron exitosos.