Why I implemented it that way.

2026.08.19: 137 MiB to read one boolean. Three Cast To BP_PlayerSlime nodes existed to read one flag. Because of them, loading any enemy loaded the entire player, its UI, and an 8K texture. Here is how I found it and what I got wrong on the way.

2026.08.11: An 8K texture behind a screen nobody looks at. Our level reported 1.3 GiB of texture memory. 79% of the project's 2,421 textures were completely uncompressed, and one death-screen backdrop was 168 MB on its own.

2026.07.28: The skill system had a split brain. Skill logic lived in the character and in a component at the same time. Two sources of truth on a nine-person team is not a style disagreement, it is a bug generator.

2026.07.09: Nobody used the pool for two weeks. The pooling system worked from day one and changed nothing, because using it needed C++ and the designers had a SpawnActor node. What fixed the framerate was a Blueprint node, not the pool.

2026.06.24: A DataTable can't show you a branch. Quest data started as rows. It worked, in the sense that the game read it, and failed in the sense that nobody could tell what happened after step three.