Revision Difference
Map_Data#546843
<cat>Dev.World</cat>
<title>Map Data</title>
<upload src="2f4/8d81f8f565512fc.png" size="59650" name="image.png" />
All Rust maps (apart from ones that are made by Facepunch and saved as an Unity scene), are stored in a .map file. When first joining a server that is running a procedural map, Rust will generate the map from the following information:
⤶
**Size (1000-6000) : Seed (0-9999999999) : MapType (ProcGen/Barren)**⤶
⤶
|				| Size        | Seed        | Map Type              |	⤶
|---------------|-------------|-------------|-----------------------|⤶
|               | 1000-6000   | 0-9999999999| Procedural Map / Barren / HapisIsland |⤶
The map is then saved into a .map file, and can be found in the Rust install directory inside the maps folder. The map filename will be named MapType.Size.Seed.map
Custom maps are essentially a pre-generated map, which is downloaded from an URL rather than being generated based on certain values.
#Data Format
Map files are stored in the format below, and compressed using a LZ4Stream. They first contain the World Serialization number, currently 9 and then the WorldData.
The WorldData is stored in the following format:
```csharp
public class WorldData
	{
		[ProtoMember(1)] public uint size = 4500; // The size of the Terrain, in Unity metres.
		[ProtoMember(1)] public uint size = 4500; // The size of the Terrain, in Unity meteres.
		[ProtoMember(2)] public List<MapData> maps = new List<MapData>();
		[ProtoMember(3)] public List<PrefabData> prefabs = new List<PrefabData>();
		[ProtoMember(4)] public List<PathData> paths = new List<PathData>();
	}
```
The MapData contains a layer (Ground, Biome, Heightmap etc) and the corresponding ByteMap. It is stored in the following format:
```csharp
public class MapData
	{
		[ProtoMember(1)] public string name; // ByteMap name (terrain, water, ground, topology etc)
		[ProtoMember(2)] public byte[] data; // The bytemap data.
	}
```
The PrefabData contains info on the ID of the prefab, and it’s world space values. It is stored in the following format:
```csharp
public class PrefabData
	{
		[ProtoMember(1)] public string category; // Decor, Monument etc
		[ProtoMember(2)] public uint id; // PrefabID
		[ProtoMember(3)] public VectorData position; // Vector3 of the position in world space.
		[ProtoMember(4)] public VectorData rotation; // Vector3 of the rotation in world space.
		[ProtoMember(5)] public VectorData scale; // Vector3 of the scale in world space.
	}
```
The PathData contains info on the Rivers and Roads of the map. It is stored in the following format:
```csharp
public class PathData
	{
		[ProtoMember(1)] public string name; // River or Road⤶
		[ProtoMember(1)] public string name; // River, Road or Rail⤶
		[ProtoMember(2)] public bool spline;
		[ProtoMember(3)] public bool start;
		[ProtoMember(4)] public bool end;
		[ProtoMember(5)] public float width;
		[ProtoMember(6)] public float innerPadding;
		[ProtoMember(7)] public float outerPadding;
		[ProtoMember(8)] public float innerFade;
		[ProtoMember(9)] public float outerFade;
		[ProtoMember(10)] public float randomScale;
		[ProtoMember(11)] public float meshOffset;
		[ProtoMember(12)] public float terrainOffset;
		[ProtoMember(13)] public int splat;
		[ProtoMember(14)] public int topology;
		[ProtoMember(15)] public VectorData[] nodes; // List of the world spaces of the individual nodes.
	}
```
Information gathered provided by the [Rust Map Making](https://discord.com/invite/HPmTWVa) community.
			Garry's Mod 
		
			Rust 
		
			Steamworks 
		
			Wiki Help