📚 A .NET library for loading Tiled maps and tilesets
Find a file
2024-08-10 19:18:33 +02:00
DotTiled Big properties work 2024-08-10 19:18:33 +02:00
DotTiled.Benchmark Some benchmarking and README updates 2024-08-03 21:07:31 +02:00
DotTiled.Tests Big properties work 2024-08-10 19:18:33 +02:00
.editorconfig First initial modelling, going to move serialization away from model 2024-07-26 00:37:40 +02:00
.gitignore First initial modelling, going to move serialization away from model 2024-07-26 00:37:40 +02:00
DotTiled.sln Add initial benchmarking project 2024-07-28 23:50:16 +02:00
Makefile Getting further with the json support 2024-08-09 23:12:45 +02:00
README.md Some more README updates 2024-08-04 16:57:47 +02:00

📚 DotTiled

DotTiled is a simple and easy-to-use library for loading, saving, and managing Tiled maps and tilesets in your .NET projects. After TiledCS unfortunately became unmaintained (since 2022), I aimed to create a new library that could fill its shoes. DotTiled is the result of that effort.

DotTiled is designed to be a lightweight and efficient library that provides a simple API for loading and managing Tiled maps and tilesets. It is built with performance in mind and aims to be as fast and memory-efficient as possible. Targeting netstandard2.0 and net8.0 allows DotTiled to be used in popular game engines like Unity and Godot, as well as in popular game development frameworks like MonoGame.

Alternative libraries and comparison

Other similar libraries exist, and you may want to consider them for your project as well:

Comparison DotTiled TiledLib TiledCSPlus TiledSharp TiledCS TiledNet
Actively maintained
Benchmark (time)* 1.00 1.81 2.12 - - -
Benchmark (memory)* 1.00 1.42 2.03 - - -
.NET Targets net8.0
netstandard2.0
net6.0
net7.0
netstandard2.1 netstandard2.0 netstandard2.0 net45
Docs Usage,
XML Docs
Usage Usage, API,
XML Docs
Usage, API Usage, XML Docs Usage, XML Docs
License MIT MIT MIT Apache-2.0 MIT BSD 3-Clause
Feature coverage
comparison below
/ / / / / /

Note

*Both benchmark time and memory ratios are relative to DotTiled. Lower is better. Benchmark (time) refers to the execution time of loading the same map from an in-memory string that contains XML data in the .tmx format. Benchmark (memory) refers to the memory allocated during that loading process. For further details on the benchmark results, see the collapsible section below.

Feature coverage comparison
Comparison DotTiled TiledLib TiledCSPlus TiledSharp TiledCS TiledNet
Full XML support .tmx / / / / / /
Full JSON support .tmj / / / / / /
Load from string (implies file) / / / / / /
Load from file / / / / / /
External tilesets / / / / / /
Template files / / / / / /
Property custom types / / / / / /
Hierarchical layers (groups) / / / / / /
Infinite maps / / / / / /
Benchmark details

The following benchmark results were gathered using the DotTiled.Benchmark project which uses BenchmarkDotNet to compare the performance of DotTiled with other similar libraries. The benchmark results are grouped by category and show the mean execution time, memory consumption metrics, and ratio to DotTiled.

BenchmarkDotNet v0.13.12, Windows 10 (10.0.19045.4651/22H2/2022Update)
12th Gen Intel Core i7-12700K, 1 CPU, 20 logical and 12 physical cores
.NET SDK 8.0.202
  [Host]     : .NET 8.0.3 (8.0.324.11423), X64 RyuJIT AVX2
  DefaultJob : .NET 8.0.3 (8.0.324.11423), X64 RyuJIT AVX2
Method Categories Mean Error StdDev Ratio RatioSD Gen0 Gen1 Allocated Alloc Ratio
DotTiled MapFromInMemoryTmxString 2.991 μs 0.0266 μs 0.0236 μs 1.00 0.00 1.2817 0.0610 16.37 KB 1.00
TiledLib MapFromInMemoryTmxString 5.405 μs 0.0466 μs 0.0413 μs 1.81 0.02 1.8158 0.1068 23.32 KB 1.42
TiledCSPlus MapFromInMemoryTmxString 6.354 μs 0.0703 μs 0.0587 μs 2.12 0.03 2.5940 0.1831 33.23 KB 2.03
DotTiled MapFromTmxFile 28.570 μs 0.1216 μs 0.1137 μs 1.00 0.00 1.0376 - 13.88 KB 1.00
TiledCSPlus MapFromTmxFile 33.377 μs 0.1086 μs 0.1016 μs 1.17 0.01 2.8076 0.1221 36.93 KB 2.66
TiledLib MapFromTmxFile 36.077 μs 0.1900 μs 0.1777 μs 1.26 0.01 2.0752 0.1221 27.1 KB 1.95

MonoGame users may also want to consider using MonoGame.Extended for loading Tiled maps and tilesets. Like MonoGame.Extended, DotTiled also provides a way to properly import Tiled maps and tilesets with the MonoGame content pipeline (with the DotTiled.MonoGame.Pipeline NuGet). However, unlike MonoGame.Extended, DotTiled does not include any kind of rendering capabilities, and it is up to you as a developer to implement any kind of rendering for your maps when using DotTiled. The feature coverage by MonoGame.Extended is less than that of DotTiled, so you may want to consider using DotTiled if you need access to more Tiled features and flexibility.

Quickstart

Installing DotTiled

DotTiled is available as a NuGet package. You can install it by using the NuGet Package Manager UI in Visual Studio, or equivalent, or using the following command for the .NET CLI:

dotnet add package DotTiled