AI Research Project
During my senior year at DigiPen, I paired up with another student to do an independent research project in the field of AI. The topic we chose was procedural generation of a city. We chose this topic because it fit the scope of the semester and we are both very interested in created generated content for the projects we work on.
The benefit to creating content procedurally is the workload reduction on other aspects of the project. As an example, artists would use procedurally generated plants to quickly create natural landscapes. In our case, a designer or artist might use a procedurally generated city as a natural looking starting point for a level map or architecture.
Two Explored Methods
When facing procedural content, the largest obstacle is keeping the content realistic looking but also novel. It is important that the content generated does not become repetitive or the intention of having an infinite space to explore is defeated. Therefore, we will explore two different methods of city map generation and how they might be combined to create a vast amount of novel content. My partner and I independently explored generation of Voronoi Diagrams as well as agent-based generation. In a more complex or complete implementation, it is important to combine the methods of generating procedural content. Methods might include using L-systems, fractals, tiling, noise, and more.
Agent Based Generation
The premise of the agent based method is that there are two types of agents roaming the landscape presented. The first type of agent is the node-placing agent. The purpose of this agent is to find locations on the terrain that are suitable for expansion of the city. The second type of agent, the road-building agent, will move between unserviced nodes and decide if a road should be built to that node or not. With the two agents working in conjunction, the city can build over time to a different state each time the simulation is run. The look of the city will depend on the parameters that control the two types of agents.
The node-placing agent has the most flexibility with regards to control. For our implementation, these agents have two main controlling factors and several smaller factors that the user can manipulate. Firstly, the agent has a degree of “organicness” in its movement. This attribute dictates how closely the agent will stick to a grid pattern.
The second important factor that dictates the realism of the layout is the amount of land that a node services. The nodes, painted as red in-engine, have a radius of service that emulates how far a hypothetical citizen of the city would have to travel before reaching a road. A larger radius could suggest that the main road services a lot of country or farmland. A dirt road could lead off the outer roads to reach the less packed areas of the city. This node radius can also be dictated dynamically.
In truth, for any type of procedural content, more complexity and realism can be achieved by combining methods of generation. To further the development of this project, more of the city could be procedurally generated. This includes buildings, parks, terrain and other landmarks. These types of structures would have to make use of other generation systems such as l-systems or Perlin noise.
The final paper can be read here.