Какова правильная логика обновления клиента игры?
Из личного опыта: imho самое правильное это иметь неразрывную цепочку обновлений с первой версии до текущей, т.е 1>2, 2>3, 3>4 итд. 
Периодически для чистой установки выпускать мажорные версии, - но при этом все равно иметь неразрывную цепочку обновлений. 
Делать патчи вида 1>4, 2>4 итд - по моему опыту архи неправильно, т.к создает огромные риски неявных багов + затраты на сборку таких патчей.
По факту для пользователя нет проблемы установить много обновлений.Будет осуществляться проверка на то, какая из блоков цифр в версии отличается.Это Вы какие то мелкие частности обсуждаете.Как у них осуществляется проверка наличия даже самого ненужного файла? Удалил файл из каталога, а он берет и докачивает его. Проверяет перед запуском все каталоги на время изменения и сравнивает с серверными?
Вопрос третий: Насколько эффективно будет сравнивать время изменения каталогов у пользователя и сравнивать с серверными? Ведь если даже в самой глубокой директории был изменен/удален/создан файл, то самый верхний по иерархии каталог будет иметь дату изменения ту, когда был затронут файл. Соответственно, таким образом можно избежать большого количества рекурсивных проверок.
И, соответственно, обновиться будет проще. Удаляем измененный каталог и закачиваем заново.Привязываться к дате изменений - не лучшая идея. Проверка обходит каталоги рекурсивно, сравнивает не только список файлов но и их хеши. Почитайте как работает dropbox/яндекс.диск, да тот же торрент наконец
Честно говоря, я с этим не сталкивался, но я бы попробовал сделать так:
Допустим, мы выпускаем новую версию - 2.46. При этом на сервер мы заливаем полную версию для чистой установки или для обновления с очень старых версий, и делаем n-ное количество патчей 2.45to2.46, 2.44to2.46, 2.43to2.46... Так, если пользователь отстаёт на несколько версий, он просто загрузит минимально необходимую разницу между его версией и актуальной, если же у пользователя очень старая версия, он скачивает заново весь клиент.
Таким образом минимизируется количество загрузок для пользователя, а следовательно уменьшится нагрузка и на сервер.