Inspiration

  1. Making cities/towns/settlements in games can be quite challenging and time consuming especially in regards to how to structure it. Creating a city generator that can be used to generate entire cities within a game engine such as Unity or Godot would be extremely beneficial to game developers as a whole

  2. Both of us were heavily interested and inspired by an existing city generator made by watabou: https://watabou.itch.io/medieval-fantasy-city-generator. This is due to the interesting nature of the generator itself and how interesting it would be to create a similar generator that could have further applications and be able to converted directly into a 3D map within a game engine.

  3. The initial idea of using fractals for generation was proposed by Warith, who was inspired by the fractal structure of precolonial Benin City which heavily utilised fractals for its structure, as well as the overall concept of a fractal city being rather efficient due to its overall structure.

What it does

Uses fractals to generate a city based on a variety of given configurations and requirements depending on the given pattern. Whilst there also exists the option to display a terrain map, this unfortunately was not integrated into the final city before the end

How we built it

Predominantly used Python and heavily researched into fractal methods and other relevant methods and formulas that would be required for the project. At points where we got extremely stuck in terms of what to do, we used LLMs (Google Gemini being the most common LLM we used throughout this project) to assist us. In particular with understanding the noise library which neither of us had used before.

Challenges we ran into

New libraries that we haven't used before such as noise. Issues with using Panda3D at the beginning in order to create 3D maps. To combat this we switched purely to exporting as JSON and using integration scripts. During development however, Warith ran into issues using Godot on his laptop

Accomplishments that we're proud of

Being able to produce a working and maintainable city generator that we can expand upon further in the future to even potentially become a full-fledged plugin/extension for Unity and Godot for generating cities

What we learned

How fractals work, how to use the noise library. How to experiment even further with matplotlib and numpy in terms of using it to the fullest of its potential. Working with JSON and game engines.

What's next for City Generator

In future, we plan to implememnt the following features:

  1. Terrain map integration into the overall city map
  2. Unreal Engine integration
  3. Introducing cities that generate based on a 'central point' where a central point is established and then the city forms outwards from it.
  4. More patterns, potentially one based on existing city patterns and miscellaneous fractal patterns such as the Mandelbrot Set
  5. Further functionality relating to populations
  6. Allowing the player to give further input relating to terrain and heightmaps (e.g. how densely populated do they want the map to be or what terrain do they want)

Built With

Share this project:

Updates