diff --git a/.cache/clangd/index/bitmap.hpp.62887C634633116B.idx b/.cache/clangd/index/bitmap.hpp.62887C634633116B.idx index 9eef607..76c67da 100644 Binary files a/.cache/clangd/index/bitmap.hpp.62887C634633116B.idx and b/.cache/clangd/index/bitmap.hpp.62887C634633116B.idx differ diff --git a/.cache/clangd/index/bitmap_io.cpp.181EA33891BBC2AF.idx b/.cache/clangd/index/bitmap_io.cpp.181EA33891BBC2AF.idx index d70caa9..bf0d132 100644 Binary files a/.cache/clangd/index/bitmap_io.cpp.181EA33891BBC2AF.idx and b/.cache/clangd/index/bitmap_io.cpp.181EA33891BBC2AF.idx differ diff --git a/.cache/clangd/index/bitmap_io.hpp.C3324F345C5DD5D2.idx b/.cache/clangd/index/bitmap_io.hpp.C3324F345C5DD5D2.idx index 9729ed5..0a94598 100644 Binary files a/.cache/clangd/index/bitmap_io.hpp.C3324F345C5DD5D2.idx and b/.cache/clangd/index/bitmap_io.hpp.C3324F345C5DD5D2.idx differ diff --git a/.cache/clangd/index/context.cpp.EECF18BC474ACA88.idx b/.cache/clangd/index/context.cpp.EECF18BC474ACA88.idx index c919b0d..4f207ed 100644 Binary files a/.cache/clangd/index/context.cpp.EECF18BC474ACA88.idx and b/.cache/clangd/index/context.cpp.EECF18BC474ACA88.idx differ diff --git a/.cache/clangd/index/context.hpp.0247079C4DA06A0E.idx b/.cache/clangd/index/context.hpp.0247079C4DA06A0E.idx index 3fe8fed..89bb967 100644 Binary files a/.cache/clangd/index/context.hpp.0247079C4DA06A0E.idx and b/.cache/clangd/index/context.hpp.0247079C4DA06A0E.idx differ diff --git a/.cache/clangd/index/geometry.hpp.5CBEA5776F164981.idx b/.cache/clangd/index/geometry.hpp.5CBEA5776F164981.idx index 490f4fc..c281eae 100644 Binary files a/.cache/clangd/index/geometry.hpp.5CBEA5776F164981.idx and b/.cache/clangd/index/geometry.hpp.5CBEA5776F164981.idx differ diff --git a/.cache/clangd/index/glad.c.DC115C5ADDB0D90B.idx b/.cache/clangd/index/glad.c.DC115C5ADDB0D90B.idx index aae9c95..8ae4809 100644 Binary files a/.cache/clangd/index/glad.c.DC115C5ADDB0D90B.idx and b/.cache/clangd/index/glad.c.DC115C5ADDB0D90B.idx differ diff --git a/.cache/clangd/index/glad.h.76E6696D4B8D4E14.idx b/.cache/clangd/index/glad.h.76E6696D4B8D4E14.idx index b26a411..a901133 100644 Binary files a/.cache/clangd/index/glad.h.76E6696D4B8D4E14.idx and b/.cache/clangd/index/glad.h.76E6696D4B8D4E14.idx differ diff --git a/.cache/clangd/index/globals.hpp.24BCAC15858D1B89.idx b/.cache/clangd/index/globals.hpp.24BCAC15858D1B89.idx index f5a88bd..ca5b57e 100644 Binary files a/.cache/clangd/index/globals.hpp.24BCAC15858D1B89.idx and b/.cache/clangd/index/globals.hpp.24BCAC15858D1B89.idx differ diff --git a/.cache/clangd/index/khrplatform.h.D6CEFEA22454BFC5.idx b/.cache/clangd/index/khrplatform.h.D6CEFEA22454BFC5.idx index 54da499..83a7f49 100644 Binary files a/.cache/clangd/index/khrplatform.h.D6CEFEA22454BFC5.idx and b/.cache/clangd/index/khrplatform.h.D6CEFEA22454BFC5.idx differ diff --git a/.cache/clangd/index/matrix.hpp.82213AF3AAC74723.idx b/.cache/clangd/index/matrix.hpp.82213AF3AAC74723.idx index 4851585..dde4218 100644 Binary files a/.cache/clangd/index/matrix.hpp.82213AF3AAC74723.idx and b/.cache/clangd/index/matrix.hpp.82213AF3AAC74723.idx differ diff --git a/.cache/clangd/index/matrixbase.hpp.F11E20E9DFADCEFF.idx b/.cache/clangd/index/matrixbase.hpp.F11E20E9DFADCEFF.idx index fa4b1b4..09ff181 100644 Binary files a/.cache/clangd/index/matrixbase.hpp.F11E20E9DFADCEFF.idx and b/.cache/clangd/index/matrixbase.hpp.F11E20E9DFADCEFF.idx differ diff --git a/.cache/clangd/index/pong.cpp.0666B09B2C5A6C2D.idx b/.cache/clangd/index/pong.cpp.0666B09B2C5A6C2D.idx index 94c0f53..3ea7a51 100644 Binary files a/.cache/clangd/index/pong.cpp.0666B09B2C5A6C2D.idx and b/.cache/clangd/index/pong.cpp.0666B09B2C5A6C2D.idx differ diff --git a/.cache/clangd/index/quickwings.cpp.85EA7B40D80DA419.idx b/.cache/clangd/index/quickwings.cpp.85EA7B40D80DA419.idx index 4a3cfdd..9919361 100644 Binary files a/.cache/clangd/index/quickwings.cpp.85EA7B40D80DA419.idx and b/.cache/clangd/index/quickwings.cpp.85EA7B40D80DA419.idx differ diff --git a/.cache/clangd/index/renderer.cpp.740BAA1FB38348C8.idx b/.cache/clangd/index/renderer.cpp.740BAA1FB38348C8.idx index 550bb04..e3249ee 100644 Binary files a/.cache/clangd/index/renderer.cpp.740BAA1FB38348C8.idx and b/.cache/clangd/index/renderer.cpp.740BAA1FB38348C8.idx differ diff --git a/.cache/clangd/index/renderer.hpp.926D47CDCF3C1D01.idx b/.cache/clangd/index/renderer.hpp.926D47CDCF3C1D01.idx index 366053f..5f5591a 100644 Binary files a/.cache/clangd/index/renderer.hpp.926D47CDCF3C1D01.idx and b/.cache/clangd/index/renderer.hpp.926D47CDCF3C1D01.idx differ diff --git a/.cache/clangd/index/rgba.hpp.FC678113A439A522.idx b/.cache/clangd/index/rgba.hpp.FC678113A439A522.idx index 995976a..293d99c 100644 Binary files a/.cache/clangd/index/rgba.hpp.FC678113A439A522.idx and b/.cache/clangd/index/rgba.hpp.FC678113A439A522.idx differ diff --git a/.cache/clangd/index/shader.cpp.43E3518708249EAE.idx b/.cache/clangd/index/shader.cpp.43E3518708249EAE.idx index 41f8b36..08f7ece 100644 Binary files a/.cache/clangd/index/shader.cpp.43E3518708249EAE.idx and b/.cache/clangd/index/shader.cpp.43E3518708249EAE.idx differ diff --git a/.cache/clangd/index/shader.hpp.E7CD36D8F71952ED.idx b/.cache/clangd/index/shader.hpp.E7CD36D8F71952ED.idx index 8b09bd6..588a122 100644 Binary files a/.cache/clangd/index/shader.hpp.E7CD36D8F71952ED.idx and b/.cache/clangd/index/shader.hpp.E7CD36D8F71952ED.idx differ diff --git a/.cache/clangd/index/shader_sprite.hpp.493F804E562576C3.idx b/.cache/clangd/index/shader_sprite.hpp.493F804E562576C3.idx index 9cf87aa..98f856b 100644 Binary files a/.cache/clangd/index/shader_sprite.hpp.493F804E562576C3.idx and b/.cache/clangd/index/shader_sprite.hpp.493F804E562576C3.idx differ diff --git a/.cache/clangd/index/simple.cpp.96D892360BBE0299.idx b/.cache/clangd/index/simple.cpp.96D892360BBE0299.idx index 7b2e081..cbd1522 100644 Binary files a/.cache/clangd/index/simple.cpp.96D892360BBE0299.idx and b/.cache/clangd/index/simple.cpp.96D892360BBE0299.idx differ diff --git a/.cache/clangd/index/sprite.hpp.A9098C65589F3A19.idx b/.cache/clangd/index/sprite.hpp.A9098C65589F3A19.idx index 1303344..0abb653 100644 Binary files a/.cache/clangd/index/sprite.hpp.A9098C65589F3A19.idx and b/.cache/clangd/index/sprite.hpp.A9098C65589F3A19.idx differ diff --git a/.cache/clangd/index/stb_image.h.A40CF375DB872323.idx b/.cache/clangd/index/stb_image.h.A40CF375DB872323.idx index 05885de..3865e03 100644 Binary files a/.cache/clangd/index/stb_image.h.A40CF375DB872323.idx and b/.cache/clangd/index/stb_image.h.A40CF375DB872323.idx differ diff --git a/.cache/clangd/index/vector.hpp.E320F2C0D8CBC593.idx b/.cache/clangd/index/vector.hpp.E320F2C0D8CBC593.idx index 1470971..55a3e32 100644 Binary files a/.cache/clangd/index/vector.hpp.E320F2C0D8CBC593.idx and b/.cache/clangd/index/vector.hpp.E320F2C0D8CBC593.idx differ diff --git a/.cache/clangd/index/window.cpp.C49665C3E96358E9.idx b/.cache/clangd/index/window.cpp.C49665C3E96358E9.idx index b4bad8c..f23c8ef 100644 Binary files a/.cache/clangd/index/window.cpp.C49665C3E96358E9.idx and b/.cache/clangd/index/window.cpp.C49665C3E96358E9.idx differ diff --git a/.cache/clangd/index/window.hpp.B8A7D1770B434EEC.idx b/.cache/clangd/index/window.hpp.B8A7D1770B434EEC.idx index c589a3b..a45284a 100644 Binary files a/.cache/clangd/index/window.hpp.B8A7D1770B434EEC.idx and b/.cache/clangd/index/window.hpp.B8A7D1770B434EEC.idx differ diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md new file mode 100644 index 0000000..f5d7881 --- /dev/null +++ b/CONTRIBUTORS.md @@ -0,0 +1,6 @@ +# Contributors + +- Hartmut Seichter (dev lead) +- Robin Rottstädt (image loader) +- Tim Gösselmann (Win32 fixes) +- Hannes Brothuhn (Flappy Bird clone) diff --git a/docs/README.md b/docs/README.md index 64ecc08..b373f58 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,6 +4,7 @@ Here some ideas for improving this tiny engine: ## Rendering - [ ] replace the OpenGL renderer with a Vulkan backend +- [ ] add sprite atlas support (test case Kenny flappy bird) - [ ] add animatable sprites (access to UV mapping and tiling) - [ ] add a SDF based renderer (parametric tiles and font rendering) @@ -15,11 +16,11 @@ Here some ideas for improving this tiny engine: ## System Level - [ ] add a `Asset` handler to load cache and manage assets -- [ ] introspection of file system if we load assset +- [ ] introspection of file system if we load asset ## Design -- [ ] replace some of the 'unkown source' assets +- [ ] replace some of the 'unknown source' assets ## Build / Dev Support - [ ] add a test rig either with Snitch or Catch2 @@ -27,10 +28,11 @@ Here some ideas for improving this tiny engine: - [ ] add CPU and GPU benchmarks to address various issues -# Issues +# Performance +For such a small engine, this should never happen: -```sh +```bash Performance counter stats for 'bin/paradiso_pong': 555,35 msec task-clock:u # 0,042 CPUs utilized diff --git a/examples/quickwings/quickwings.cpp b/examples/quickwings/quickwings.cpp index 2259737..dd51112 100644 --- a/examples/quickwings/quickwings.cpp +++ b/examples/quickwings/quickwings.cpp @@ -1,8 +1,7 @@ /** * paradiso - Paradigmen der Softwareentwicklung * - * (c) Copyright 2023-2025 Hartmut Seichter and Contributors, Robin Rottstädt, - * brxxh (Hannes Brothuhn) + * (c) Copyright 2023-2025 Hartmut Seichter and Contributors * */ @@ -13,12 +12,16 @@ #include #include #include +#include #include #include #include #include +// TODO remove all hard coded 'magic' values! + +// TODO - remove global variables const int frame_rate = 60; bool game_over = false; float risky_pos_x; @@ -38,6 +41,7 @@ struct Background { paradiso::Renderer renderer{}; + // TODO no constructors in rule of zero Background() { auto backgroundImage = paradiso::BitmapIO::get().load("background-day.png"); @@ -91,6 +95,8 @@ struct Pipe { bool pos_reset = false; + // TODO no constructors in rule of zero + Pipe() { auto pipe_image = paradiso::BitmapIO::get().load("pipe-green.png"); @@ -115,6 +121,8 @@ struct Pipe { void update() { + // TODO improve state handling + if (game_over == true) { paused = true; } @@ -174,6 +182,7 @@ struct Grass { paradiso::Renderer renderer1{}; paradiso::Renderer renderer2{}; + // TODO no constructors in rule of zero Grass() { auto grassImage = paradiso::BitmapIO::get().load("base.png"); grassLeft = paradiso::Sprite{ @@ -244,6 +253,7 @@ struct QuickWings { int collision_counter = 0; + // TODO no constructors in rule of zero QuickWings() { float scaleh = 0.08f; float scalew = 0.158f; diff --git a/src/lib/src/utils.cpp b/src/lib/src/utils.cpp index bfd05d9..f63cc91 100644 --- a/src/lib/src/utils.cpp +++ b/src/lib/src/utils.cpp @@ -37,7 +37,7 @@ path get_executable_path() { #if defined(_WIN32) std::array lpFname{}; DWORD ret = GetModuleFileName(NULL, lpFname.data(), lpFname.size()); - return {std::string{std::from_range, lpFname}}; + return {std::string{std::begin(lpFname), std::end(lpFname)}}; #elif defined(__linux) return std::filesystem::canonical(u8"/proc/self/exe"); #endif