Submission

This page intends to give an overview of the requirements a submission might fulfil to be considered, as well as possible technologies and frameworks that might be used in a submission.

Requirements

The requirements for entry in the Settlement Generation Challenge 2022 are that your generator…

  • …works on Minecraft Java Edition 1.12 or 1.16
  • …accepts a map generated in Minecraft Java Edition 1.12 (Vanilla)
  • …accepts a 3D bounding box (the build area within the map)
  • …should not run "substantially longer" than 10 minutes
  • …does not exceed 2 GB of working memory per map

Regarding who can participate:

  • Anyone can join in!
  • Working in teams in encouraged!
  • Only one submission per person / team

Any submitted works, unless explicitly requested otherwise, will be publicly available after the evaluation period. You retain all rights to your work (though we recommend including a license and adding author information to your source code).
If you have any questions, feel free to ask on our Discord server in the '#competition-rules' channel.

Frameworks

Although you can attempt to start your work from scratch, we highly recommend building up on the past work of others!
One way of speeding up and facilitating development is by using one of our community-developed frameworks, a couple of which are listed below sorted by their method of interacting with the world.
If you decide to use a method that either not listed or not recommended, please make certain to provide a 'README' file in your submission with detailed instructions on how to run it and see Participants Choice, such as Script & Schematic for more information.
If you have any questions regarding frameworks or are having difficulty with using a framework, feel free to ask on our Discord server in the '#frameworks' and '#framework-support' channels respectively, and if you decide to create your own framework ping @Moderator to get access to a special channel!

HTTP Interface

The Minecraft HTTP Interface Mod is a Minecraft Java Edition 1.16 mod based on the Forge mod loader. It creates a REST API in a running Minecraft client to allow for easy and flexible access to various in-world information. The generator runs in real-time making it potentially slower, but allowing for users to observe the generator in action.

While you can create your own HTTP client to interface with the mod, there are a couple of options already out there for some popular programming languages.
If you decide to use an HTTP-based solution, ping @Moderator on our Discord server to gain a special role!

See HTTP Server for further information.

GDPC (Python)

The Generative Design in Python Client is a framework written in Python 3. It is one of the most widely used frameworks in the competition and includes various tools for generating structures.
It can easily be imported to your Python project after pip-installing 'gdpc'. A simple generator example is available in on GitHub.

HTTP Wrapper (C#)

The GDMC-HTTP-wrapper is a barebones framework written in C#.
Sample code:

Connection connection = new Connection();
Vec3Int point = new Vec3Int(20, 64, 15);
// Get 3x3 chunk area starting from the chunk containing 20, 64, 15
Chunk[] chunks = connection.GetChunksSync(point, 3, 3);
 
// Get an individual block
Block block = connection.GetBlockSync(point);
 
// Send commands to the server
string[] returns = connection.SendCommandsSync(new string[]
        {
            "say hello!",
            "data get entity @p Pos"
        });
 
// Set a block on the server
Block goldBlock = new Block(new Vec3Int(0, 70, 0), BlockName.gold_block);
bool blockChanged = SetBlockSync(Block block)
 
// Create some blocks and then push them to the server
List<Block> blocks = new List<Block>(30);
for (int x = 0; x < 10; x++)
{
    for (int z = 0; z < 3; z++)
    {
        blocks.Add(new Block(new Vec3Int(x, 70, z), BlockName.gold_block));
    }
}
connection.SetBlocksSync(blocks.ToArray());
 
// Get build area set on the server
Vec3Int[] buildArea = connection.GetBuildArea();

Save Modification

Save modification allows users to modify existing Minecraft save files without running a Minecraft client. While save modification can be extremely fast and powerful, it also runs the risk of creating corrupted save files.

MCEdit (Python)

Creating Python filters for MCEdit is the oldest method used for creating generators for GDPC. Currently, MCEdit is no longer in development and only supports Minecraft Java Edition 1.12. Since there is a high risk that this method will no longer be supported in the upcoming competition, it is not recommended for use if you wish to participate.

See MCEdit for more information.

Amulet (Python)

Currently still in early development, Amulet is the spiritual successor to MCEdit. It supports all versions from Minecraft Java Edition 1.12 and Bedrock Edition 1.7 onwards and is based on Python 3, allowing for flexible integration into your solution. Since this method is still in an early stage, it is not an officially supported method for submission. Should you nevertheless decide to develop an Amulet-based solution, please get in touch

Other

Custom Mod (Java)

With a custom mod, you can do whatever you like! Although using the Forge mod loader is recommended, Fabric is a popular alternative.

MineRL (Python)

MineRL is a Python package designed for player emulation using reinforced learning. While a fascinating project, it is neither recommended nor supported for use in this competition due to the gargantuan amount of training data that would be required to train the agent to build a settlement.

Notable Examples

For brevity, 'Settlement Generator' and similar titles have been replaced with 'SG'.
Score Year Team Generator Comment
5.50 2019 Filip Incremental bottom-up SG (MCEdit) 2019 Winner
5.37 2021 Tsukuba Team IRMSG (GDPC) 2021 Winner
4.42 2020 David Mason MyVeryKewlSG (MCEdit) 2020 Silver Medal
3.17 2018 Filip Incremental bottom-up (MCEdit) 2018 Winner

Submitting

Your entry must be submitted before the competition deadline (31. May for GDMC 2022).
To submit your entry, go to the GDMC homepage, create an account or log in and follow the instructions!
Of course, we are always happy if you show off your submission on our Discord server in the 'share-your-progress' channel!

Warnings

The following changes are unofficially planned for GDMC 2023:

  • Drop of support for Minecraft Java Edition 1.12 (and therefore MCEdit)
  • Map generation will be done in Minecraft Java Edition 1.16
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License