I'm currently starting to develop my own engine and I want to implement it using different components which run in seperate threads (maybe processes later).
My idea currently is to have e.g. a sound component (sound manager might fit more, as some entities might have components) and this component will handle sound. It runs on its own thread and on collisions of entities it will receive a message, which lets it play e.g. an explosion.
Messaging is done using Priority-Queues and messages are going through a dispatcher who may filter/change the messages or create new messages. To implement game logic I thought of using rules e.g. EntityTypeX hits EntityTypeY will result in: MessageZ -> MessageZ would be dispatched in MessageA(playSound) and MessageB(create Explosion at XYZ)
Do you think such a system would work for a game? Currently I see the dispatcher as a bottleneck but logic might also be seperated. Do you have thoughts on this? :)