Introduction
Last updated
Last updated
Before diving deep into the individual parts of Tile Composer, let's start with what its goal is and what the workflow looks like.
Tile Composer is a constraint based model generator, so basically you give it a set of constraints (your tiles) and it tries to fill a grid without breaking any of your rules. Depending on your rules the result might be unexpected, but with some refinement you'll be able to prevent the generator from taking any shortcuts.
Here's a simplified version of how you can use the asset:
Create a tileset: An artist (or programmer, with nice programmer art) creates a set of models or textures that can be used to fill a grid.
Define neighbor restrictions: Use one of the different workflows to define which neighbors are allowed for each tile.
Create a grid where you want to place your tiles.
Optionally: Add additional constraints, like blocking tiles (e.g. you want a house at one position, but nowhere else), change the probability of each tile, etc.
You're done: The algorithm tries to find a combination of tiles that fits perfectly into the grid.
Now in reality it's not quite as simple, each tile constraint can have a lot of unexpected consequences, but with a bit of tinkering and trail and error, you've just created your own bit of procedural creation, without having to touch any code!
In this documentation, I will walk through all parts of this process:
Creating tilesets using a variety of different methods of creating the initial constraints, for example, directly from a base mesh, using connectors, or by defining every constraint by hand
How to create a tile set that can be easily solved
How to accomplish complex restriction (which is always a trade of complexity vs speed)
Defining the model, including the two types of solvers, with their various advantages and disadvantages.