How Sprites are being rendered or other engine parts being dealt with behind the scenes, is not part of the game code.
The game code just defines how the components should interact over time, doesn't it?
An ECS/CBS could speed things up and use the resources in a more optimal fashion. Multi-threading/multi-core implementations can be implemented more easily, as it's all about transforming data.
Bu isn't ECS just an approach to how to implement a CBS? An ECS is a CBS, but a CBS is not necessarily an ECS.
But in fact everything is just about data transformation, right?
The input data is transformed by that fancy "black box" into the output data.
E.g., the file system component(let's just assume, it is implemented as part of an ECS/CBS). It does not "transform" positions or even rendering things, but it's still in scope with cocos2d-x and relevant to it's architecture.
There's a file service/system interface, which the components are implementing. One for basic I/O, others for compression, encryption or even net streaming.
They all just transforming the input data into some other output data, so basically it's interface is just a single call with an input and an output parameter. The compressing and encryption components are also independent of each other and could be coupled together in different order.
Reading through the thread, I have a feeling, that the ECS/CBS is just about handling Nodes like Sprites or Physics. Basically all the fancy stuff, that is dependent on the delta time, needed to be updated over time.
But how about all the other things like file system, resource management and various others?
Can they also be stuffed into an ECS/CBS? If so, how could the different components work together?
Picking up the file system example. The encryption component needs some behavior/function to do it's fancy stuff. But a component in an ECS just holds the data. A component manager class itself would transform it(like the health system, animation system or the sound system). A game object can be setup to have some sound played, as it is attacked by some entity, as some sort of sticking together components.
But how could this be done regarding the file system? E.g., some developer wants to compress and encrypt data or encrypt and then compress it? If there is some manager for compression and encryption, it would be limited to it's order. Therefore it would need a mechanisms to inform other components, just like a parent/child, through e.g., messaging.
But there is also the possibility to just have one crypto-compress system, that can handle both of it and just reacts on the data defined in the compression and encryption component.
So there are cases, where the component maybe should have some behavior/function itself and not only data. But in the end all is just about transforming data.