paul424 {l Wrote}:GameMode seems to be outside agnositc , it doesn't contain any pointers to outside objects
Not really. It uses ODFrameListener using its singleton get method. And ODFrameListener calls everything else. Moreover, other Singletons are called in the modes (TextRenderer, RenderManager, ...).
paul424 {l Wrote}:This is called low-coupling if I remember correctly
No, low coupling is splitting a class definition and its implementation. Basically, it consists as defining an abstract class with as few implementation as possible. For an example, you can have a look at GameEntityListener and how it is used.
paul424 {l Wrote}:COuld we leave that and just implement symmetrical message ServerNotificationType::gameModeStarted ; from which I would call my starttileculling ?
No. Basically, ServerNotificationType are used by the server to notify the client of new server events. For example, ServerNotificationType::startGameMode is thrown when the seats are configured (faction, team, ...). Once it is done, the client switches to game mode and starts playing. Launching game mode is client side event so there cannot be any message from the server for that.
paul424 {l Wrote}:BTW who implemented the client -server architecture ?
I did.
Note that AFAIK, there is no reason not to implement culling for the editor (correct me if you see some). If you implement culling for both editor and game modes, you can have a look at GameEditorModeBase which is the base class for common things.