A more precise exception report about modifying the scene from another thread:

@methusalah Very good question. I created a dynamically optimizing network protocol because my game is an opened world to scale space game with tens of thousands of individually moving spatials supporting tens of thousands of users with physics/ ai (Player and npc) / player commands (Even first person real time flight) etc all controlled by the server and running smoothly even on low bandwidth. It’s a space MMO. I explained my network optimization HERE

Since I already have the real time camera location and rotation of every user because of the network protocol needs, I also run server side culling based on either the default server seting of “Cull objects that have visible surface areas less than X”, or some other in game server AI logic. For example, objects phase in and out when inside certain nedulas, or if the objects are not in the camera frustum at all.

Why? Three reasons:

  1. If the server controls the culling it always knows which spatials to ignore and not send any updates for.
  2. EVERYTHING is controlled by the server so ABSOLUTELY no cheating.
  3. Applying an MVC (Model - View - Controller) design pattern to a networked game framework where the client is truly the View makes the code clean, efficient, and massively portable in the future.
2 Likes