Я предполагаю, что вы собираетесь использовать сетевую парадигму клиент-сервер? В этом случае вы не можете доверять клиентам обработку фактического расположения блоков, вы должны делегировать эту задачу на сервер. Затем вы берете список команд от каждого клиента за такт и вычисляете движение каждого подразделения, как только это будет выполнено, на следующем тике вы передаете положение каждого подразделения, относящегося к каждому клиенту (либо на основе всей карты, либо для каждого просмотра) и запустите процесс заново.
Если вас интересует только парадигма Peer-to-Peer, процесс несколько проще, так как вы можете использовать круговую цепочку, в этом случае каждый клиент получает только от одного клиента и отправляет только одному клиенту которая может быть визуализирована как круг клиентов, отправляющих и получающих каждую, или (крайне неэффективная) система, посредством которой клиент отправляет позицию своих подразделений друг другу и получает позицию подразделений другого от каждого другого клиента.
Лично я считаю, что парадигма клиент-сервер будет лучшим вариантом, поскольку вы устраняете эффекты совокупной задержки и проблему мошеннического клиента.
Удачи в вашем проекте! :)