воскресенье, 24 апреля 2011 г.

EVE: Космическое кунг-фу в сло-мо


Знаете, когда мир становится чуть-чуть лучше? Когда кто-то делает свою работу действительно хорошо. К разработчикам EVE-online я испытываю смешанные чувства, но всегда искренне благодарю их за то, что они умеют удивлять действительно свежими идеями. На мой взгляд, когда творец, а разработчики онлайновых миров, безусловно, творцы, обращается к жителям сотворенного мира, его речь должна быть хоть иногда Откровением, а не бесконечными ответами на мольбы.

Безусловно, прислушиваться к мнению игроков важно и нужно, но настоящий творец умеет находить действительно нетривиальные решения. Свидетелями такого решения стали все мы.

EVE-online славится по-настоящему массовыми сражениями космических кораблей. Приняв участие в нескольких действительно эпических битвах, хочу заметить, что их красота сильно преувеличена в фантазии тех, кто только читает о том, как флоты, численностью в многие сотни, а то и тысячи кораблей, сошлись в битве под звездой такой-то солнечной системы.

Конечно, мозг посылает сигналы к центру удовольствий, сообщая организму, сидящему в капсуле или представляющему, что в ней сидит, что он участвует в поистине грандиозном событии. Гордость переполняет вас. Маленький мальчик, живущий в каждом из нас, ликует - это же настоящий, громадный, грандиозный космический бой!

Желательно при этом отключить зрительный и звуковой контакт с реальностью. Потому что они генерируют совершенно другую картину. Все это действо безбожно лагает. Нет, не так. Л...А...Г...А..............Е......Т. Вы не можете знать наверняка, что делает ваш корабль, исполнил ли он распоряжения пилота, да и вообще - живы ли вы на самом деле, или сервер из-за экстремальной нагрузки не успел вам сообщить, что вы давно мертвы. В TeamSpeak стоит рев и вой с жалобами на то, что ничего непонятно, а те, кому уже все понятно, не могут зайти снова в игру.


Безусловно, можно обвинить в этом разработчиков, которые неспособны обеспечить комфортный бой. Но проблема в том, что EVE-online - это мир с открытым PvP. О проблемах такого подхода я рассуждал какое-то время назад. Суть моих мыслей сводилась к тому, что в открытом PvP бой не регламентирован ничем, поэтому игроки будут стараться накопить со своей стороны как можно больше штыков. Эта гонка вооружения практически бесконечна и как только техническая сторона позволяет накопить чуть больше участников боя с каждой из сторон, они не просто находятся, а их всегда в избытке, что приводит к очередной неспособности системы справиться с наплывом желающих убить друг друга.

Именно с этим и столкнулись разработчики EVE-online. На мой взгляд, ситуация была тупиковой. Но очередной девблог от CCP явил нам очень интересное изобретение. Если серверные мощности не в состоянии в реальном времени обсчитывать бесконечно прирастающие в количестве толпы желающих стрелять из всех турелей, запускать ракеты и дроны, сеткать, дизраптить и делать прочие непонятные пакости, почему бы не замедлить само время?


Идея настолько неожиданная и остроумная, что я добавлю к этой статье еще один тэг - "гениально". Нет, серьезно - это же подход к проблеме с совершенно иной стороны. Кроме того,  возможно, это позволит пилотам действительно рассмотреть то, что происходит в космосе. Все эти красивые корабли, взрывы на фоне звездных скоплений. Потому что обычно бой в реальном времени требует максимальной сосредоточенности и приводит к тому, что единственную вещь, которую пилот реально видит - это табличка с данными в правой части экрана. Пресловутое "овервью".

Идея пока находится только на стадии планирования и этим летом ее ждать не стоит. Зато осенью - вполне возможно. Нужно утрясти еще множество моментов, один из которых - какое пространство вокруг боя будет задевать временное искажение. Также интересно то, как отреагируют на эту идею игроки, которые, как известно, славятся собственной изобретательностью. Тут выплывает сразу несколько проблем. Например, если ваши силы еще не полностью прибыли к месту сражения, а враг как раз готов вас растерзать, вы можете искусственно усилить нагрузку на сервер, выпуская дронов, выкидывая контейнеры, беспорядочно переварпывая в разные места и тем самым начав замедлять время. Согласитесь, что враг, еще секунду назад имевший явное преимущество и готовый покончить с вами быстро, будет не очень доволен таким ходом... времени. Также уже сейчас очевидно, что как только инициатива со сло-мо лостигнет реализации, флоты претерпят изменения, направленные на максимизацию первоначального урона. Так называемого "альфа-страйка", после которого уже начнется замедление времени.

Одним словом, игроки все еще способны удивлять разработчиков больше, чем разработчики игроков. Но в данном случае идея с замедлением времени выглядит очень интересным и остроумным решением, имеющим шанс действительно существенно изменить ситуацию с лагами в больших флотовых боях. Скрестим пальцы.

10 коммент.:

Alex комментирует...

Сегодня только открыл для себя этот блог, спасибо вам, ребята, все здорово и профессионально написано.
А по теме slo-mo даже не знаю что сказать,в масс зарубах в EVE еще не участвовал и "прелестей" лагов испытать не успел. Забавно, тут ветераны EVE открывают для себя WOW,а у меня совсем обратная ситуация :)

Anton комментирует...

Действительно, необычный подход. Будет, как в "Inception" - задачей проигрывающих окажется замедлить бой настолько, чтобы выигрывающим надо было уже убегать на работу или забирать плачущих детей из садика. Многодневные бои, с точки зрения RL, станут нормой.

PS Про бесконечный набор штыков читать тут: http://www.michaeleisen.org/blog/?p=358 ;)

Gmugra комментирует...

На самом деле, за годы, CCP продвинулись очень сильно в борьбе с лагами. Я помню что могла EVE в 2007 году, когда я начинал играть. Прогресс с тем, что она может сейчас огромен (взять хотя бы нынешний онлаин Jita - в 2007 Jita намертво залипала при онлайне чуть большем чем 1000, а сейчас там и при 3000 лагов нету).

Но проблема эпических побоищ не решена до сих пор, и это крайне больно для CCP, потому что эти самые побоища - основная ( и к слову, постоянно рекламируемая) особенность игры. И то, что толком они не были играбельными никогда, положительной прессы EVE не добавляет.

Я припоминаю, что ещё прошлым летом в серии блогов посвященных борьбе с лагами, кто-то из разработчиков писал, что принципиального решения проблемы лобовым образом нету, и они будут что-то придумывать вплоть до ограничения количества участников сражения. Ну вот что-то придумали. Получится или нет - посмотрим. Но в любом случае - респект. Ребята стараются и рук не опускают :)

Anton комментирует...

В Жите проблему решить им было проще, потому что она предсказуемо локализована. В других секторах - сложнее, да и воюющим лаг на руку, похоже, поэтому если решить в 99% систем, то сражаться начнут в оставшемся 1%.

Andre комментирует...

Если воюющим лаг на руку и всё устраивает, непонятно, зачем вообще пытаться решить эту проблему :) Наверное недовольных всё же больше.

Gmugra комментирует...

Anton, Jita это постоянная "пробущенная" система. Та же самая схема используется и для систем где происходят большие сражения. Лидеры альянсов участников заранее уведомляют CPP о таких системах и ССP усиливает системы на время сражения. Приёмы которые CCP реализовало для того чтобы решить проблемы с крупнейшей торговой точкой вселенной, пошли на пользу не только ей :) Jita была и есть In-game стресс тестовой точкой :)

Atron комментирует...

Гму, все же Jita и процессы, происходящие в ней, далеки до состояния крупномасштабного боя, в котором все пилоты не переставляют ордера, а варпают флотами, проходят по цино, выпускают дронов, убивают друг друга сотнями в минуту. Да, там ловят на оффварах, но это все капля в море по сравнению с деятельностью основной массы тех, кто накручивает счетчик локала.

Anton комментирует...

Что о масштабных боях предупреждают, и девы бустят соответствующую систему, я не знал, спасибо, Гму :)

Unknown комментирует...

Коммент из сло-мо-локации :) :
Временное искажение будет ограничено звездной системой, скорее всего. А проблему с синхронизацией можно решить следующим обазом: пропрыг/логин в систему осуществляется не сразу, а когда время в системе сравняется с моментом "заявки" на пропрыг. Т.е. повисеть у ворот придется. Но, конечно же, возникает много организационных моментов - можно ли во время ожидания отлетать от ворот или участвовать в бою возле них и т.п. Но это уже можно разруливать...

Atron комментирует...

Хм... ну, да, логично. :) В принципе, можно даже делать синхронизацию не в соседней системе, а... между ними. То есть получаем фриз и прогресс бар с отсчетом реального времени до синхронизации. Плюс кнопка "Отказаться" на всякий случай.

Отправить комментарий