In video game programming it can be tempting to replicate a client server model similar to how websites work. This is generally a mistake because game state tends to be highly co-mingled between state and graphics. Attempting to cleanly separate the ‘backend’ game logic with ‘frontend’ visuals results in awkward boundaries between the two, which are still coupled, but in a way that requires more complicated code to manage (e.g. a message bus, event sourcing) and are probably less performant (e.g. passing json messages within a 33ms frame budget).