Perry Chouteau
All projects
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.