Comments 24
Хост-боты для Warcraft 3 так и работают :-)
В Factorio используют Lockstep, но там наверно без него и не получится, слишком большой масштаб всего.
На сколько я помню, там были проблемы при большом количестве игроков, поэтому они перешли на микс из lockstep и клиент-серверного решения. Все клиенты выполняют одни и те же команды, но передают их друг-другу через сервер.
Да, сервер выделенный есть, но lockstep всё же более важный аспект, чем p2p (который был в упомянутых в статье играх, скорее, как дань времени, когда выделенные серверы были дороги и сложны в установке). Десинки в Factorio нередки на экспериментальных версиях, а ещё они почему-то случаются с некоторыми модами. Казалось бы, моды работают на куда более высоком уровне абстракции, чем движок, но вот такая ситуация.
А проблемы там не только при большом числе игроков, но и в самом масштабе симуляции: по конвеерам ездят тысячи объектов, передавать все их данные даже на 10 UPS — это прорва трафика, и оптимизации с группировкой объектов в батчи вряд ли сильно улучшат ситуацию. Так что даже если использовать клиент-серверную модель для игроков, байтеров и поездов, фабрику всё равно надо симулировать локально. А раз 90% игры использует lockstep, чего уж переусложнять остальное.
Казалось бы, моды работают на куда более высоком уровне абстракции, чем движок, но вот такая ситуация.
Моды в Factorio могут менять состояния любых игровых объектов. Если это сделать на разных хостах не синхронно — то и получится десинхрон. В этом плане Factorio куда меньше продумана чем, к примеру, Warcraft 3, где десинхрон "официально" могла вызывать лишь одна функция (GetLocalPlayer кажется).
Ну моды всё же дёргаются игрой, и слежка за синхронизацией состояний — дело движка, а не модов. Хоть я и не знаю всех подробностей, но припоминается, что такие десинки в модах чинили именно на стороне движка.
В статье говорится про lockstep но рассказываются минусы как lockstep так и P2P.
В «примерах» про Starcraft написано что Starcraft 2 не использует lockstep, но в пруф статье написано что Starcraft 2 не использует P2P и ничего не написано про Lockstep.
Игра «Heroes of the storm» основана на движке SC2 и использует Lockstep.
Оно не означает что все игроки равноправны (Главное чтобы все знали кто из игроков «равнее»), не означает что нет центрального сервера (Эталонная симуляция, все кто с ней несогласны дисконнектятся)
У lockstep есть проблема принципиальной невозможности скрытия информации.
И есть плюс в виде что количество передаваемых по сети данных — это О(количество игроков), тогда как у несинхронных систем — О(количество объектов).
Если в игре количество игроков и объектов сравнимо (например шутеры) — в нем нет смысла. А если несравнимо — есть.
Еще lockstep позволяет бесплатно получить реплеи.
Starcraft 2 и warcraft 3 точно используют lockstep но без P2P.
Эталонная симуляция, все кто с ней несогласны дисконнектятся
Ну тут не очень хорошо так делать… а вдруг какая-то неплановая рассинхронизация(баг в коде): тут бац, тебя выкинуло.
А вообще, как по мне, сейчас очень хорошое подобие Lockstep'а в игре Clash Royale(только вот сервера официальные): по сети гонятся только где ставится какой юнит, а также чексуммы от сервера до клиента. Если клиент видит, что чексумма не совпадает — просит полный статус карты от сервера(что случается крайне редко).
Если в игре количество игроков и объектов сравнимо (например шутеры) — в нем нет смысла. А если несравнимо — есть.
Далеко не во всех шутерах количество объектов равно количеству игроков(особенно если много снарядов)
Я бы даже лойс поставил за такую педантичность и внимательность, но, насколько я понял, я смогу поставить только когда сам наберу определенное количество в копилку.
Нет, Вы верно написали.
Первая дота была просто (модифицированной) картой в WarCraft III. Расшифровывается как "Defense of the Ancient", поэтому верное написание аббревиатуры — "DotA".
Во второй доте, уже отдельной игре, об этом успешно забыли, и в Steam пишется "Dota 2".
Так что, Ваш перевод получился в этом месте лучше оригинала :) спасибо
Не используйте Lockstep в стратегиях в RTS