How should I use my PlayerState compared to Character/Components?

When deciding how to implement these things I usually ask myself “Is this something that I’ll want to use across multiple character / object types”. If the answer is yes (and more often than not it is), then I’ll make it a component.

However, if it’s something that very fundamental or lightweight, I might put it in some base class which I’ll then inherit from (e.g. AEnemy, which I then use to create AEnemyMonster, AEnemyTurret etc).

To me, one of the big benefits of components is I find they help keep your code maintainable and potentally portable to other projects.