Как лучше реализовать клиент-серверную игру?
Как я понял: речь про баланс: контроль игрового мира <-> объём передаваемых данных по сети.
Вопрос хороший.Не всегда нужно делать всё на сервере, иначе объём трафика - возрастёт дико во время игры. Но также, нельзя доверять клиентским данным.
Поэтому, всегда делается аппроксимация: промежуточная визуализация - вычисляется на клиенте, а пришедшие на сервер данные - всегда тщательно проверяются сервером в рамках логики(модели) работы игрового мира. И если отклонения слишком велики - фиксируется "читерство", иначе - по получению новых позиций объектов, клиент плавно, но с ускорением ("параболически") устраняет расхождения с серверным игровым миром: синхронизирует актуальное состояние мира сервера с отображаемым пользователю. 
Это происходит в 99% случаев незаметно для глаз игрока за монитором.
На сервере и на клиенте - лучше всего дублировать логику механики и синхронизировать каждые N-кадров или принудительно по каким-либо важным игровым событиям.
В случае с работкой игры имеет смысл делать тонкий клиент и толстый сервер. То есть стараться реализовывать максимум функционала на сервере, а клиент использовать только для визуализации