In my opinion the way the overlap events work is not logical and is poorly implemented.
[Current implementation]
The way it’s works now is as follows, for an overlap to occur between the components:
both components have to have their collision response to Overlap or Block each other’s Object Type respectively,
both components have to have Generate Overlap Events enabled.
Also just querying all the overlapping objects of a given component also counts as an overlap event for some reason.
[The issue]
The thing that bugs me in the implementation is that the collision response ‘Overlap’ and Generate Overlap Events are essentially the same thing but for some reason both have to be used to get the overlapping working. Like there is no reason to set any of your component’s collision responses to ‘Overlap’ if you are not going to enable Generate Overlap Events, and vice versa. For me it feels the same as if to be able to move an actor at runtime, you first would need to set the mobility to ‘Movable’ (as you need to do now), but on top of that you would also need to tick a checkbox that says something like “Allow moving at runtime”.
[Justifying the matter]
Like isn’t it self-evident that if two objects are set by their collision responses to Overlap each other, you really want to receive the overlap info? Couldn’t Unreal just deduce, based of the collision responses, when to generate the overlap events? The description of the Generate Overlap Events flag says that it exists so that an object can opt out of all overlap events by disabling it. Well guess what, an object can do exactly that just by changing the collision responses to Ignore instead of Overlap.
[The issue in practice]
The reason I’m ranting about this thing is not only the fact that it doesn’t make sense at all, but also that this complicates stuff in practice as well. For example when making a trigger box that executes some code when anything overlaps with it, you have to go enable that fricking checkbox for every single possible thing that could in any circumstance overlap with the trigger box.
[The solution]
So finally, my solution for this inconvenience is just to get rid of the Generate Overlap Events flag all together or at least to change its functionality. I think it could work same way as the Simulation Generates Hit Events flag which only has to be enabled for the object receiving the events and not for both of the objects in the hit. I think the SGHE exists for optimization reasons for which the GOE flag could still be used for.