In progressSoftware Engineering
P-E-R-R-Y
January 2023 — Present · P-E-R-R-Y
A C++ ecosystem built on interfaces: the game never knows its render backend. Two pieces are done, tested and documented — the rest is a building site, and I say so.
- C++
- CMake
- GitHub Actions
- GoogleTest
- LaTeX
- Raylib
- SFML
The pieces
What is solid
- ecs — a minimal, high-performance Entity-Component-System engine. Done, tested, documented. Born out of R-Type, a school project, then lifted out of that context and rewritten properly.
- i18n — compile-time internationalisation, type-safe, C++11 and C++20. Done, tested, documented.
- procedurals — deterministic procedural generation in C++20: value noise, fBm, ridge, domain warp, Worley, Simplex, Poisson-disk sampling, and Wave Function Collapse with adjacency rules. Hash-based PRNG, no <random> dependency: same seed, same output, on any machine.
- GitHub Actions runs the GoogleTest suites and deploys the documentation — that is what makes "tested, documented" checkable rather than just claimed.
What is still a building site
- The module and interface layer — imodule, iapp, igraphic, with raygraphic (Raylib) and sfmlgraphic (SFML) as implementations loaded dynamically through dll/.so.
- Several pieces are ready or nearly so, but the whole does not yet stand up the way I want it to.
Where I want to take it
A Blender-style architecture: anyone implements an interface statically, then loads their implementation dynamically. The idea is there, the clean code I would be happy with is not — I have not had the time, and I would rather leave it a building site than ship something wobbly.
