From 34aee98a6a52cbf367e55ebe7b2cd14adfc10b8d Mon Sep 17 00:00:00 2001 From: rogo Date: Sun, 27 Oct 2024 14:08:19 +0100 Subject: [PATCH] added benchmark function added .txt for benchmark results fixed generating level message --- FOU.csproj | 3 +++ Scripts/Level.cs | 14 ++++++++++++-- Scripts/Main.cs | 6 +++++- benchmark.txt | 15 +++++++++++++++ 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 benchmark.txt diff --git a/FOU.csproj b/FOU.csproj index 088aa3d..f39cf71 100644 --- a/FOU.csproj +++ b/FOU.csproj @@ -3,4 +3,7 @@ net6.0 true + + + \ No newline at end of file diff --git a/Scripts/Level.cs b/Scripts/Level.cs index a471dc1..def3dd1 100644 --- a/Scripts/Level.cs +++ b/Scripts/Level.cs @@ -22,8 +22,6 @@ public class Level { private float rainAmount = 0; public Level(Main main, int sizeX, int sizeY) { - GD.Print($"Generating level ({sizeX}:{sizeY}) with {chunksX*chunksY} chunks ({chunkResX} * {chunkResY})"); - Resolution = new Vector2I(sizeX, sizeY); chunksX = main.ChunksPerAxis; chunksY = main.ChunksPerAxis; @@ -31,6 +29,8 @@ public class Level { chunkResX = sizeX / chunksX; chunkResY = sizeY / chunksY; + GD.Print($"Generating level ({sizeX}:{sizeY}) with {chunksX*chunksY} chunks ({chunkResX} * {chunkResY})"); + image = Image.Create(sizeX, sizeY, false, Image.Format.Rgb8); chunks = new Chunk[chunksX, chunksY]; @@ -66,6 +66,15 @@ public class Level { rainAmount = amount; } + public void StartBenchmark() { + GD.Print("benchmark"); + for (int x = 0; x < chunksX; x++) { + for (int y = 0; y < chunksY; y++) { + chunks[x, y].WritePixel(chunkResX/2, chunkResY/2, 100); + } + } + } + private void MakeItRain() { if (rainAmount < .1f) return; @@ -87,6 +96,7 @@ public class Level { for (int x = 0; x < chunkResX; x++) { for (int y = 0; y < chunkResY; y++) { + // TODO: multithreading here! use Chunk.DrawLevel() and stitch images together image.SetPixel(cx*chunkResX + x, cy*chunkResY + y, chunks[cx,cy].Elements[x, y].Color); } } diff --git a/Scripts/Main.cs b/Scripts/Main.cs index 9efc559..43ab965 100644 --- a/Scripts/Main.cs +++ b/Scripts/Main.cs @@ -51,6 +51,10 @@ public partial class Main : Node2D { mLevel.WritePixel((int)mappedX, (int)mappedY, BrushSize); } - } else base._UnhandledInput(@event); + } else if (@event is InputEventKey keyEvent && keyEvent.Pressed) { + if (keyEvent.Keycode == Key.F9) + mLevel.StartBenchmark(); + } + else base._UnhandledInput(@event); } } diff --git a/benchmark.txt b/benchmark.txt new file mode 100644 index 0000000..b247ef3 --- /dev/null +++ b/benchmark.txt @@ -0,0 +1,15 @@ +# Benchmark + +## Settings +- Texture Resolution: 0.5 +- CHunks per Axis: 2 +- Rain Amount: 0 + +## Measurements: +### original (no optimization): +- idle: 42 - 44 fps +- benchmark: 24 fps minimum + +### only active: +- idle: 100 fps +- benchmark: 36 fps minimum