• Home
  • Tutorial
  • Generate Worlds

    Create infinite procedural worlds from voxel art


    Quick start to explore a dungeon world

    1: Download dungeon tile set and unzip it

    Click here to download the tile set as a zip file. Make sure you unzip it once you download it!

    2: Open GenerateWorlds

    You will be greeted by the main menu and a simple lattice world. tile

    2: Click “Load Tile Set” and select the 21_dungeon folder you downloaded

    The window that opens will let you navigate to a folder containing a tile set. Select the dungeon folder you downloaded. It won’t accept a .zip file.

    3: Select “infinite in all directions world”

    This will tell generate worlds to create a world that extends in all directions, creating a multi level dungeon rather than a flat one. You will see a message in the upper left telling you that the new tile set is loading. Once it loads, tiles will start to appear around you.

    4: WASD to fly around the world; left ctrl to walk instead of flying

    Hit esc to leave the main menu. Left shift and Q will let you fly up and down.


    What is a tile?

    tile A tile being edited in MagicaVoxel before being imported into GenerateWorlds

    A tile is simply a voxel model with sides of equal length. The tile above contains the corner of a wall. It is 11x11x11. In the current version of the software, tile sizes must be odd numbers. I made this tile using MagicaVoxel, as shown above, then saved it as a .vox file to load into Generate Worlds along with other tiles.


    How do tiles fit together?

    tile fitting

    Generate Worlds fits two tiles together when the voxels along the face where the tiles meet all match up in color, as illustrated above. This one simple rule is all it takes to derive the rich environments Generate Worlds is capable of creating.


    One Tile High Versus Infinite in all Directions Worlds

    Generate Worlds supports two kinds of worlds: one tile high worlds like this grassy world

    And infinite in all directions worlds, like this dungeon:

    One tile high worlds contain a single flat layer of tiles. One tile high worlds are perfect for making things like landscapes, where you don’t care about layers stacked on top of each other. Infinite in all directions worlds have tiles stacked in top of each other, as well as next to each other. Infinite in all directions worlds can be things like dungeons with various levels.


    What is a tile set?

    A tile set is a collection of .vox files in a folder. Generate Worlds loads these tiles and fits them together to create a world. Building a tile set can be challenging, because you must make sure that it is actually possible to create an infinite world with just these tiles.

    Note that all tiles are automatically rotated and their rotations are added to the tile set, as below. tile rotation


    Creating your own tile set

    I recommend starting by experimenting with a one tile high world. Since you don’t have to ensure that tiles match vertically, these worlds are much easier to reason about.

    1: Create a new folder to contain your tile set

    Every .vox file in this folder will be a tile in your tile set.

    2: Download and open MagicaVoxel to edit tiles

    MagicaVoxel is available at https://ephtracy.github.io/

    3: Select a size for your tile set

    In MagicaVoxel, set the size of the tile to be an odd-numbered size equal in all dimensions, as above.

    4: Create one basic tile

    Create a tile like the one above where all the voxel are the same color forming one layer on the bottom. This can be a simple “ground” tile in your tile set. Save this as a .vox file in your tile set folder.

    5: Load the tile set as “one tile high” in Generate Worlds

    In the main menu (esc opens the main menu), select “load tile set” and navigate to the folder you created.

    6: Create a second tile

    Try creating another tile for your tile set. The tile above will cause small squares to appear all over the ground of your world. You can think of these as little loop roads.

    7: Try creating a new tile type

    You could create a straight road piece, or an intersection of roads. Now you will have a road network over the ground. You could create a tile like the one below, which is meant to be the corner of a simple building.

    8: explore!

    Add more tiles to your tile set. I recomend trying to load the tile set after you make each new tile, since it’s easy to make a mistake that creates a tile set that can’t actually be fit together to form a world.