Thanks for explaining the mechanics. Makes perfect sense. I don't agree that this isn't a bug though. From a black box perspective, I think it's fair that if the developer, in saying, this is my collision object and nothing gets past it, it's the platforms job to ensure that. If the design of the platform fails to enforce it, that shouldn't be the developers fault.
I do like the option to let things pass through solids personally and this issue seems for the most part easy to mitigate. It would be nice if it wasn't a surprise followed by confusion however and exposed as maybe a property of a solid, such as Solid.BlockThreshold? For example if I set it to 50%, only half of the total bullets would collide, the others would pass through.
Possible resolutions.
-Document this behavior for now to prevent this conversation Is it documented?
-Post a warning in the IDE when setting high speeds on bullets, etc that collision objects should be sized appropriately.
-Assuming no performance loss, update the platform engine to calculate bullet direction, collision objects in it's path, pixel distance traveled per tick, bounce the bullet off collision in current tick if next tick will put bullet out of bounds, ...
-Block high speed values for bullets, etc by some form of intelligent reasoning, maybe based on existing objects, or just in general, ...