Welcome to the Make It Tile User's Manual. This document will assist in integrating this collection of tile-based topology utilities into your Unity project.
This topic contains the following sections:
Make It Tile is a framework for Unity to aid in the creation and usage of game worlds which are divided up into discrete tiles. It is designed to be maximally flexible, applying just as easily to the simple 8x8 game world of chess as to a large hex grid in a strategy game or even an irregular arrangment of tiles on the surface of a sphere. It includes support for:
In addition to the above features, the framework is very extensible, to support whatever tiling patterns, tile attributes, and algorithms you might need.
The core of the Make It Tile framework is a Topologies, a data structure for representing the relations between vertices, edges, and faces. In terms of the primary use case for this framework, faces are typically synonymous with tiles, while vertices are the corners of each tile. Edges are the boundaries between two adjacent faces/tiles, and they can simultaneously be treated as the connections between two adjacent vertices/corners.
On top of this foundational data structure, Topology Attributes enable any kind of data to be associated with the individual vertices, edges, and faces of a topology. There are many different kinds of information that could be associated with a topology, depending on the needs of your game or application. Elevation, terrain type, a list of units, movement costs, surface normals, and more.
Surface Manifolds are an extension of the topology concept, embedding a topology onto a two-dimensional surface within three-dimensional space. Make It Tile supports spherical and planar surfaces, constructible with a variety of tiling patterns, including subdivisions of the five Platonic solids for spherical surfaces, and highly flexible quadrilateral and hexagonal tiles for planar surfaces. Surfaces are typically the first thing you construct, and which is then used to build the full topology data structure and additional attributes such as vertex positions.
Further utilities are provided such as the Dynamic Mesh for generating renderable meshes of the tiled surfaces, Spatial Partitioning data structures for quickly looking up elements of a topology nearest a point or intersected by a ray, a Topology Traversal utilizing the A* path finding algorithm, a variety of Topology Traversal for iterating over the elements of a topology in particular orders, utilities for calculating additional common Topology Attributes, and tools to Topology Mutation the shapes and arrangements of tiles in a topology.
The Make It Tile library is located within the Experilous.MakeItTile namespace, with supporting libraries and supplemental utilities in Experilous.Core, Experilous.Numerics, Experilous.Containers, Experilous.MakeItRandom, and Experilous.MakeItColorful. Be sure to put the appropriate using directives at the top of your scripts, or explicitly qualify type names within your code. For namespaces that contain types which might cause name ambiguities with types in Unity or third party assets, consider using using aliases for just the types you need, rather than pulling in an entire namespace, as in the following example:
using IntVector2 = Experilous.Numerics.IntVector2;