в ЛР 3 у вас уже есть сервер с несколькими потоками (то есть результат выполнения ЛР 3 - это один сервер, на котором может запускаться n игр в m потоках);
игра = очередь команд (ICommand);
из ЛР 3: поток выполняет последовательно (псевдо-параллельно) команды из игр (очередей команд), а также обрабатывает сообщения из своей отдельной очереди сообщений (IMessage)
IMesage включает в себя информацию об игре, которой предназначена некоторая команда, и объект ICommand;
по ЛР 4: при получении сообщения (приказа) на перенос конкретной игры, нужно зафиксировать состояние соответствующей очереди команд; перенести это состояние на другой сервер; восстановить на основе переданного состояния очередь команда на другой сервере; продолжить выполнение с того места, где остановились;
для передачи можно использовать протокол HTTP; передавать данные можно в либо в бинарном, либо в текстовом виде (предварительно выполнив сериализацию);
не забыть про таймаут и передачу данных в цикле (по условиям ЛР 4 пока сервер 1 не убедился, что сервер 2 принял игру, мы повторяем передачу); рекомендация: предусмотреть максимальное количество повторных отправок.