On why ECS gets in the way for him:
> Because it is far more complicated, thus takes far more work, than what you actually need to do. That work has a large opportunity cost.
https://twitter.com/Jonathan_Blow/status/1427378984145154048
To me this has more nuance than, “you ain't gonna need it”. I don't think “concrete implementations” would do all that much to strengthen his argument that unnecessary complexity gets in the way of shipping for indie devs:
> Even 10% friction more than I ever had would have killed me. I wouldn't have been able to make the things I had. Even 5% more friction would have been really bad.
https://youtu.be/4t1K66dMhWk?t=3635
And…
> I have, several times, built games where I barely managed to finish. … I've just experienced that too many times to increase friction. I need to decrease friction.
https://youtu.be/4t1K66dMhWk?t=3072
And again, in relation to entities rather than Rust's borrow checker:
> If you are trying to focus on the way your entities are set up, you are mis-directing your effort and that's going to make it harder. Try to solve the problem that makes your game interesting. What is it about the gameplay that makes it interesting … that users can see? Focus on that, solve those problems.
https://www.youtube.com/watch?v=w7W3xM2tzRA
On what he uses instead of ECS/components in his engines:
> One struct per entity type, with a base struct that is common to all of them.
https://twitter.com/Jonathan_Blow/status/1427376307453665280