2020 Settlement Generation Competition

The 2020 Settlement Generation Competition was the third iteration of the Generative Design in Minecraft Settlement Generation Challenge. The results were presented at the Foundations of Digital Games conference scheduled to be in Malta, but was remote due to the Covid-19 pandemic. There were 11 entries for this iteration. Overall, judges were excited about the obvious improvement from the previous year's competition, as well as the increased interest and number of entries. Settlements across the board were very adaptable to the terrain, foliage, and water features. There were a wide variety of aesthetic types and significant improvement in external building variety. Judges expressed an interest in seeing more narrative design for all entries. The best generator received a score that amounted to a performance of what would be expected from a human being who is new to Minecraft and building cities within the game. Please see each of the contestant's own pages for a detailed description of their generator.

winner.png


Year 2020
Location Malta (Remote due to COVID-19)
Conference FDG 2020
Submission Count 11
Winning Entry Troy, Ryan, and Trent
Maximum Score 4.91
Average Score 3.2 (3.9 excluding 0s)

Entry Descriptions

All submission descriptions are taken from the user-input about box during submission!

David Mason

Each settlement has 2 major areas, the inner section and the outer section. The outer section has consists of farms and the inner just houses. A Voronoi partition is used to section out the 2 major areas into "districts". By drawing the path around the Voronoi partition cells roads are created.

The districts then have houses placed in them. Each corner of the house has a seed placed on it for another Voronoi partition to occur. The 4 seeds' areas for each house are then combined and have a path drawn around the edge of the combined area. This gives the illusion each house has its own plot.
Each House is a randomly sized rectangle. Each house is given variability with a few options for roof type, wall and window types. The materials the houses are built with are that of the materials in the surrounding environment. Each house aims to have a chest, bed, furnace and crafting table. However as I could not figure out how to place tile entities properly, the bed and chests are invisible. They are still there but need block updates to occur around them to become visible.

Lamp posts are placed around the settlement to look cool and to stop mobs spawning. It just occurred to me that I could have used iron golems as scarecrows that would have been p cool ngl. I tried to go for a soft cottagy welsh mining town kinda vibe, the inhabitants just like to work hard yk? Should have added a pub too.
More could have been done adapting to the environment, for example smoothing out the roads, however, farms wont place crops on land that is too steep and trees and plants are cleared out the way of high traffic areas. Houses will magically float on water ¯\\_(ツ)_/¯.

tldr; Voronoi partitions and cottage core vibes

The World Foundry

Simulated agents wander the landscape. They construct buildings based on the type of materials within the local area as well as using their own artistic style. Occasionally agents will make a new child who inherits artistic characteristics from the parent. Code and readme is in this public repository: right here

Chronicle Description: Seek out the chest on the corner of the central hub. Within is the settlement almanac, consisting of the settlement name, and details of all the 'builders' who contributed to it. Within the almanac is the last known location of each builder. At that location you will find a personal diary, though you will need to desecrate the grave to read it! As an additional challenge, the graves may be haunted by the spirit of the dead..

ICE_JIT

Some of you might want to but cannot make a trip to Japan these days. Here we proudly present a solution to you through this competition platform. Into our settlements, we have tried our best to introduce all the very, very Japanese aspects and elements, including Japanese-style rowhouses, bridges, two-storied shrines, shrine gates, and five-storied pagodas + even hidden (transparent) Ninja treasure chests. Our settlements should also be mysteriously beautiful at night due to light up, which helps prevent mobs from spawning.

For more details, please read the following document: right here

The Charretiers

The project is a long way from being finished, but it's still something, so… There will be exception raised probably, just click ok and ctrl+s, and the settlement will magically appear. Next year, we'll blow your mind, we promise!!! Here is the about (there is also a PDF in the zip) : We based the core of our solution on this research paper, from A. Émilien: pdf here. Its main contribution was the iterative placement of parcels based on “interest functions”

We generated our settlements in a medieval style, which contain three building types: houses, crops, and windmills. Settlements are initialized with a random number of outside connections, such that at least one road crosses the settlement surface before any building is placed. Then, a figurative town center is drawn close to existing roads to gather future buildings around a central position. Then, a Markov Chain (starting in a “house” state) is used to iteratively draw building types. Until a suitable spot is found for the new building, a random position is drawn and interest function is computed is that specific position. Interest functions include: sociability: controls the distance between neighboring parcels. For example, pulls houses together, and pushes crops and mills away from them accessibility favors buildings position close enough to existing roads, fluid function controls the distance to water and lava sources. Buildings are generated at a medium distance to rivers, a larger distance to oceans, and an even larger distance to lava sources, The computed interest value is used as a Bernoulli probability to place the new building at a given position. A new alley is generated between the new parcel and the existing roads if necessary. This alley is generated using the Dijkstra algorithm, along with some memoization. An Al-system was implemented to generated houses. Our houses are separated in room symbols that can stack up until a roof symbol is generated around the maximal height of the houses. Houses can have up to two annexes, that is rooms that stick out the main room tower, in order to add variation. The choice of blocks in houses is specified by palettes, that are choses at the generation step depending on the biome the house is located in. Furthermore, houses in wet biomes wear gable roofs whereas dry houses wear flat roofs.

University of Tsukuba

This project focuses on generating a Minecraft settlement depending on the environment around it. The main aspect of this project is to create a whole city along with suburbs and an usable train network to allow the player to navigate around it. This entry 1 for the GDMC competition is a fork from 2019 Eduardo Hauck entry 2 and will thereby assume the use of every feature that has already been implemented in this project, and will explain only what have been added.

New structures have been added, including Farms, Towers, Bridges, Train network and Roller coasters. For all theses structures as well as for the houses, the wooden materials are based on the surrounding trees. Considering all the trees in the settlement area, the more one tree type occurs, the more the structures has chances to be built out of this tree. Farms are surrounded by wooden fences to separate them from the rest of the city. A grassy path starting from the entrance, a wooden fence gate, connects the structure to the roads. Inside the farm, cultures (carrots, potatoes…) are randomly generated following different patterns ; the main one being lines of water surrounding the farm plantations, or others like a "smiley farm" that is drawing a smiley face watchable from the sky. Roller coasters are a system of rails looping to create a structure on a slope without modifying the terrain. It therefore follows a different pattern of construction compared to the other structures.

The algorithm consists of finding, from one of the highest points of the lot, the longest path that fulfils the Minecraft rails requirements (a rail that goes down cannot turn…), going down and staying at the same level for a maximum length of 5 blocks (to avoid snake-shape rails especially at the end of the path). It therefore tries to connect the starting point to the ending point going on another way than the initial one so that the whole system loops. Every \"going-down\" rail is a rail powered by a redstone torch 2 blocks beneath it ; while all the others are regular rails. Beneath each rail is placed a wood log, and a chest is placed close to the starting point. In case the algorithm fails to find a path that fulfils all these requirements, or if the chosen path is too short, a Tower is generated instead. Tower, along with the Roller Coaster, is a type of structure that does not require to flatten the lot before the construction. It is a building relatively narrow but high so that it can be built on very steep terrain. The tower is made out of bricks; inside are findable a chest and furnace at the bottom, and a wooden staircase that goes to the top of the tower, where there are windows, and a little platform with a crafting table and an anvil. The train network is a special structure that is generated in the settle- ment all around the center part. It consists of a stone path raised in the air on which rails are placed for the player to travel through the settlement at a faster paste. Powered rails are placed every time the rails goes up, and a redstone block is placed beneath it. A stone pillar that goes from the ground to the path is placed every 10 blocks on the way. Fences are placed on every side of the rails, and torches are also placed on it every 10 blocks. Stations are then generated along the path (2 stations for a small settlements, 4 either) and above a pillar on which ladders are added in order for the player to go inside, and are then linked to the settlement roads.

Bridges are another special structure allowing the path-finding algorithm to go above the water, and therefore generates a bridge across it. A bridge is made out of slabs, which means it can gain half a block of height for every block of length, so depending on the height of the extremities and the length of the bridge, it can be built differently. If the height of the extremities are close, the bridge goes up from both side and is built in the shape of an arch. If the length of the bridge is not enough to build it that way, it tries to reach the highest endpoint among the extremities by going up from only one side. Regular bridges are made out of stone, but on grassy path (path leading to farms), the bridges are made out of wood. Along the path, lamps are also added in order to lighten the settlement. Lamps are made out of cobblestone walls, redstone lamps and daylight detectors. Concerning the trees scattered around the settlement area, all are erased, and only the ones not hindering any structure are planted back. The generation of the settlement can be customized from the MCedit interface, by choosing the type of settlement (city, village…), the generation or not of Train network, as well as the material used to build the Train network (Urban for stone, Country for wood).

maelg

Basically, the generator takes the given map and cuts it in two main parts : the center and the neighborhoods. It also cuts these two parts in smaller partitions where each one will find one building. The center will only get skyscrapers of different heights while the neighborhoods will get traditional houses, by traditional I mean four walls and a roof, and what I call LEGO houses which consist in a number of small rooms stacked together in random width, depth and height. All these buildings are connected together with roads containing floor lamps to give some light to the city in the night.\r\nA pdf in the zip file explains a lot better and in more details the generator.

Megacruxis

You can find information about this generator in the file name "MinecraftSettlementGeneratorV2.pdf" located at the root of the generator code here.

Troy, Ryan, & Trent

Plot-reservation based on land roughness and hazards, plot list reduction based on connected sectors for A* path finding (used to create paths between buildings,) minimum spanning tree (prim's algorithm) for grouping buildings to be connected for pathing, custom wall generation algorithm, hand-built building schematics.

Architectural Profiles

Our technique (only documentation is submitted at the moment) uses two steps. A terrain analyzer and an iterative shape placement step. The terrain analyzer converts a Minecraft map in cells within a tiling context. Cells underneath the height map are given the ground tile assignment. Cells that are under or above water are given the empty assignment. The ground tiles form the basis to place shapes on, becoming so called attach points, (called typed adjacency conditions in the architectural profile specification). Iterative Shape placement technique is a combination of WFC, further constrained by architectural profiles. The technique iteratively tries to place shapes and the WFC heuristic quickly tells whether this shape placement is possible.

GDMC-Minecrafters

N/A

Grupo Delu

N/A

Results

Entry Author Twitter Adaptability Functionality Narrative Aesthetic Overall Score Files
1 David Mason n/a 3.90 4.85 4.29 4.65 4.42 code
2 The World Foundry @TheWorldFoundry 3.38 3.19 5.02 4.88 4.11 code
3 ICE_JIT n/a 3.35 4.13 4.77 5.27 4.38 code
4 The Charretiers n/a 3.65 4.17 3.75 3.83 3.85 code
5 University of Tsukuba n/a 3.33 4.92 4.38 4.27 4.22 code
6 maelg n/a 3.46 4.21 3.65 4.33 3.91 code
7 Megacruxis n/a 0.00 0.00 0.00 0.00 0.00 code
8 Troy, Ryan, & Trent n/a 4.63 5.60 4.50 4.90 4.91 code
9 Architectural Profiles n/a 2.35 2.55 3.00 2.71 2.65 N/A
10 GDMC-Minecrafters n/a 0.00 0.00 0.00 0.00 0.00 N/A
11 Grupo Delu n/a 4.54 3.08 2.63 3.63 3.47 code
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License