prime31 / Nez

Nez is a free 2D focused framework that works with MonoGame and FNA
MIT License
1.76k stars 357 forks source link

Tile layer memory consumption #797

Closed stallratte closed 2 months ago

stallratte commented 2 months ago

Hello,

I'd like to create large maps in Tiled to e.g. have a town map which also contains the inside of buildings I can enter. So I need larger maps. When I tried to load a larger map, I realized that it will need a lot of memory.

  1. Every tile stores its x/y position. So every tile is unique https://github.com/prime31/Nez/blob/0c16271e444d41e82e848feb03185bdae6f20e05/Nez.Portable/Assets/Tiled/TiledTypes/Layer.cs#L56-L58
  2. CSV layers need lots of memory because of the strings created with Split(',') https://github.com/prime31/Nez/blob/0c16271e444d41e82e848feb03185bdae6f20e05/Nez.Portable/Assets/Tiled/Runtime/TiledMapLoader.cs#L349

I tested the changes I made with a 1000 * 1000 tile (16x16) map with five tile layers. Now each layer needs ~4MB.

Before large_map_before large_map_layer_before

After large_map_after large_map_layer_after

Sadly this is a breaking change because of the removal of the X/Y properties.

E.g. the destructable tilemap-demo in the Samples-repository will have compile errors. https://github.com/prime31/Nez-Samples/blob/70ad9286a1758a971da723e5dbb30ceb4d4b022a/Nez.Samples/Scenes/Samples/Destructable%20Tilemap/PlayerDashMover.cs#L100

This can be fixed by using:

var tileX = _tiledMapRenderer.GetColumnAtWorldPosition(pos.X);
var tileY = _tiledMapRenderer.GetRowAtWorldPosition(pos.Y);
_tiledMapRenderer.CollisionLayer.RemoveTile(tileX, tileY);

instead of

_tiledMapRenderer.CollisionLayer.RemoveTile(tile.X, tile.Y);

Do you think this improvement could benefit other users of the framework or shouldn't it be added because of the breaking change?

Best regards, stallratte

prime31 commented 2 months ago

Looks good! The breaking changes are definitely something we should get some feedback about. It doesnt look like there are too many breaking changes so I don't foresee folks having an issue with it. Lets see if we can get some feedback.

stallratte commented 2 months ago

Hello,

after the feedback in discord I looked into base64 compressed tile layer format. I initially thought the reason for the longer loading times was due to the necessary decoding and decompression. That's why I avoided using it.

But the overhead from these two steps isn't the reason for the long loading times.

The bottleneck for the longer loading times is that only one unit32 is read from the stream at a time: https://github.com/prime31/Nez/blob/0c16271e444d41e82e848feb03185bdae6f20e05/Nez.Portable/Assets/Tiled/Runtime/TiledMapLoader.cs#L339

When getting rid of the X/Y properties, there is no longer any reason to iterate using height and width. Instead the data can now be read in a more efficient way. I added another commit which addresses this issue. Now up to 1024 uints will be read at once instead of only one.

Here are two tests which show the difference in speed:

base64EncodedData is the zlib compressed base64 data of a single 1000x1000 tile layer.

Before

[Test]
    public void StreamTest1() {
        var gids = new uint[1000 * 1000];

        var index = 0;

        var stopwatch = new Stopwatch();
        stopwatch.Start();

        var base64EncodedData =
            "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RfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhu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";
        var rawData = Convert.FromBase64String(base64EncodedData);
        var bodyLength = rawData.Length - 6;
        var bodyData = new byte[bodyLength];
        Array.Copy(rawData, 2, bodyData, 0, bodyLength);

        using (Stream stream = new DeflateStream(new MemoryStream(bodyData, false), CompressionMode.Decompress)) {
            using (var br = new BinaryReader(stream)) {
                for (var j = 0; j < 1000; j++) {
                    for (var i = 0; i < 1000; i++) {
                        var gid = br.ReadUInt32();
                        gids[index++] = gid;
                    }
                }
            }
        }

        stopwatch.Stop();
        Console.WriteLine($"Time passed processing data: {stopwatch.Elapsed.TotalMilliseconds} ms");
    }

Output: Time passed processing data: 14436,1275 ms

After:

[Test]
    public void StreamTest2() {
        var gids = new uint[1000 * 1000];

        var index = 0;

        var stopwatch = new Stopwatch();
        stopwatch.Start();

        var base64EncodedData =
            "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RfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhuRfT5VvWfCABQqm8xmKhu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";
        var rawData = Convert.FromBase64String(base64EncodedData);
        var bodyLength = rawData.Length - 6;
        var bodyData = new byte[bodyLength];
        Array.Copy(rawData, 2, bodyData, 0, bodyLength);

        using (Stream stream = new DeflateStream(new MemoryStream(bodyData, false), CompressionMode.Decompress)) {
            using (var br = new BinaryReader(stream)) {
                const int uintSizeInBytes = sizeof(uint);
                var buffer = new byte[uintSizeInBytes * 1024];
                int bytesRead;

                while ((bytesRead = br.Read(buffer, 0, buffer.Length)) > 0) {
                    var numberOfUIntValuesRead = bytesRead / uintSizeInBytes;

                    for (var i = 0; i < numberOfUIntValuesRead; i++) {
                        var gid = BitConverter.ToUInt32(buffer, i * uintSizeInBytes);
                        gids[index++] = gid;
                    }
                }
            }
        }

        stopwatch.Stop();
        Console.WriteLine($"Time passed processing data: {stopwatch.Elapsed.TotalMilliseconds} ms");
    }

Output: Time passed processing data: 29,6624 ms

So each layer now needs ~30ms instead of ~14s to be processed.

I tested it with the large map with five tile layers. Instead of over 70seconds loading time it now only needs ~1 second.

Best regards, stallratte