Decrease the compression ratio of stored maps to improve their generation time.

helps with #513
This commit is contained in:
IntegratedQuantum 2024-07-01 16:36:54 +02:00
parent ad9cad6270
commit 5f192f224f
4 changed files with 5 additions and 5 deletions

View File

@ -1225,7 +1225,7 @@ pub const Protocols = struct {
for(&map.startHeight, 0..) |val, i| {
std.mem.writeInt(i16, uncompressedData[2*i..][0..2], val, .big);
}
const compressedData = utils.Compression.deflate(main.stackAllocator, &uncompressedData);
const compressedData = utils.Compression.deflate(main.stackAllocator, &uncompressedData, .default);
defer main.stackAllocator.free(compressedData);
const data = main.stackAllocator.alloc(u8, 9 + compressedData.len);
defer main.stackAllocator.free(data);

View File

@ -216,7 +216,7 @@ pub const ChunkCompression = struct {
for(0..chunk.chunkVolume) |i| {
std.mem.writeInt(u32, uncompressedData[4*i..][0..4], ch.data.getValue(i).toInt(), .big);
}
const compressedData = main.utils.Compression.deflate(main.stackAllocator, &uncompressedData);
const compressedData = main.utils.Compression.deflate(main.stackAllocator, &uncompressedData, .default);
defer main.stackAllocator.free(compressedData);
const data = allocator.alloc(u8, 4 + compressedData.len);
@memcpy(data[4..], compressedData);

View File

@ -187,7 +187,7 @@ pub const MapFragment = struct {
std.mem.writeInt(u32, originalHeightData[4*(x*mapSize + y)..][0..4], @bitCast((if(originalData) |map| map else &self.heightMap)[x][y]), .big);
}
}
const compressedData = main.utils.Compression.deflate(main.stackAllocator, rawData);
const compressedData = main.utils.Compression.deflate(main.stackAllocator, rawData, .fast);
defer main.stackAllocator.free(compressedData);
const fullData = main.stackAllocator.alloc(u8, compressedData.len + @sizeOf(StorageHeader));

View File

@ -8,9 +8,9 @@ const main = @import("main.zig");
pub const file_monitor = @import("utils/file_monitor.zig");
pub const Compression = struct {
pub fn deflate(allocator: NeverFailingAllocator, data: []const u8) []u8 {
pub fn deflate(allocator: NeverFailingAllocator, data: []const u8, level: std.compress.flate.deflate.Level) []u8 {
var result = main.List(u8).init(allocator);
var comp = std.compress.flate.compressor(result.writer(), .{}) catch unreachable;
var comp = std.compress.flate.compressor(result.writer(), .{.level = level}) catch unreachable;
_ = comp.write(data) catch unreachable;
comp.finish() catch unreachable;
return result.toOwnedSlice();