PlayerController on Server and Client

This shows why “virtual functions for implementation inheritance” is so bad.
I’m not interested in whether it can be called – I’m interested in who calls it in the actual engine.
The documentation doesn’t tell me what to expect.
The way the base class is structured, mixing implementation with interface, also doesn’t tell me at all.
Is this a callback from the engine, that I’m supposed to override, or is it a function I’m supposed to invoke to make something happen? If the engine calls me, is it on the server, or client, or both?

Using less implementation inheritance and a more structured approach to interfaces would make this clearer, and splitting out “interface for client objects” versus “interface for server objects” would make it even better.

Death to implementation inheritance! And, in the meanwhile, if there’s a good write-up (other than the source) on how these functions are supposed to be called/used/overridden, that’d be super helpful.

1 Like