[en] This Bachelor Thesis consists in the creation of a procedural generator of cities in an integrated development environment, Unity, written in C#. A procedural generator of cities is software which by the use of algorithms, creates three dimensional city models, without human intervention in its process. This procedure allows time and money saving compared to creating, designing and modelling the same cities by hand. To that end, random number generators, the graphics and physics Unity engines will be used in the algorithm, to represent three dimensional models and physical bodies from the streets and buildingfillingthe cities generated. To work on this thesis, an already developed algorithm will be usedse partirá de un algoritmo ya desarrollado dentro de un trabajo del Swiss Federal Institute of Technology de Zurich. This algorithm has been modified due to the discussion whis arised from its areas of improvement, and adapted to the selected work environment and to the design choices made. Futhermore, additional parameters will be available to configure directly from the development environment so that the generated cities can be personalized to a certaindegree.

[es] Este Trabajo de Fin de Grado consiste en la creación de un módulo de generación procedural de ciudades para el entorno de desarrollo Unity, escrito en C#. Un generador procedural de ciudades es un software que mediante el uso de algoritmos, se encarga de la creación en este caso de modelos en tres dimensiones de ciudades, sin requerir intervención manual en su creación. Esto permite ahorrar tiempo y dinero que se necesitaría en caso de que se tuvieran que crear a mano dichas ciudades. Para ello se hará uso de los generadores de números aleatorios, del motor gráfico y de físicas de Unity para poder tanto generar las probabilidades que se utilizarán en el algoritmo, como los modelos tridimensionales y cuerpos físicos que representarán calles y edificios de la ciudad. Para llevar a cabo este trabajo, se partirá de un algoritmo ya desarrollado dentro de un trabajo del Swiss Federal Institute of Technology de Zurich. Este algoritmo ha sido modificado debido a la discusión surgida por sus puntos de mejora, y adaptado al entorno de trabajo escogido, y a las decisiones de diseño tomadas. Además, se podrán configurar parámetros adicionales directamente desde el entorno de desarrollo para permitir que se puedan personalizar hasta cierto punto las ciudades generadas. El sistema de generación procedural se divide en dos módulos principales: el modulo de generación de calles, y el módulo de generación de edificios. El módulo de calles implementado no generará calles con una geometría superpuesta (cuadrícula, radial), sino que generará las calles de forma aleatoria, pudiendo configurar la probabilidad de que ocurran ciertos eventos. El módulo de edificios generará edificios en forma de cuboide, con la opción a cambiar el modelo base utilizado, y también con la posibilidad de cambiar la anchura, altura y otras propiedades básicas. Finalmente se podrá utilizar este trabajo como un Unity Asset que pueda ser o compartido o monetizado con otros desarrolladores, para su utilización en otros proyectos.