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