Games also have the particular need of being rather database-like in their usage patterns(lots of filtered set iterations), which makes it harder to apply OOP as a whole. OOP likes interfaces, but games are often dealing with aggregates. My observation's that pushing the indirection down to the callsite has the effect of making it easier to view what's happening in terms of concurrency.