Jean-Christophe Baillie — идеолог MMO Dual Universe — без труда обещает поддержку не только миллионов игроков, но и миллионов планет. Это смущает слишком многих. Включая меня. В наше время, когда трудности с лагами возникают даже в небольшом фентезийном мире, миллион таких миров рисует скептикам лаги, которых просто в миллион раз больше. Но, кажется, я понял, почему эти обещания давались так легко. Даже если они в какой-то степени дискредитировали проект, потому что такие заявления могли показаться необоснованным шапкозакидательством, для авторов это слишком важная часть их работы, чтобы о ней промолчать.
Мечта сделать невероятно амбициозную виртуальную вселенную посещает многих людей. Но Jean-Christophe Baillie перешел от мечты к попытке реализации только тогда, когда увидел, просчитал и опробовал конкретную технологию, при помощи которой это стало возможно.
Как и в случае со SpatialOS, в основе серверной технологии Dual Universe лежит облачный принцип — динамическое перераспределение ресурсов. Но давайте для начала вернемся немного назад во времени.
Самой известной ММО с единым игровым миром остается EVE Online. Она проектировалась в самом начале двухтысячных при совсем других подходах, технологиях и вычислительных мощностях. Без хитрости такую амбициозную задачу невозможно было решить. Поэтому единый мир был разбит на тысячи планетных систем со “звездными вратами”, обеспечивающими связь между, фактически, изолированными локациями. В дополнение к этому сама планетная система была разбита на ячейки (“гриды”), в рамках которых происходил обсчет и отображение объектов так, что информация о большинстве из них в соседний “грид” не передавалась. Несмотря на то, что не так давно в CCP существенно увеличили размер такой ячейки, принцип обсчета, насколько мне известно, остался прежним — за каждую планетарную систему отвечает один сервер. Как вариант — серверный кластер, но, в любом случае, без динамического перераспределения мощностей. Поэтому, когда где-то неожиданно собирается аномальное для конкретной планетарной системы количество игроков, начинаются лаги.
Примерно в момент празднования десятилетия EVE Online, Jean-Christophe Baillie понял, что технологии доросли до принципиально другого подхода. Прежде чем я расскажу вам о деталях, замечу, что, по словам разработчиков, новый подход уже был протестирован на нескольких тысячах участников и показал себя отлично. Хотя очевидно, что несколько тысяч — это очень далеко от заявленных миллионов, важно, что сам принцип работоспособен.
Чуть выше, описывая технологию EVE, мы говорили о ячейках, как элементах пространства планетарной системы. Вcя Dual Universe состоит из таких ячеек, но их особенность в том, что они динамически меняют размеры, в зависимости от нагрузки.
Если в определенной ячейке виртуального мира появляется много игроков, она разбивается на несколько более мелких. Если вы основали город на пустынной планете, и там теперь постоянно обитает много игроков, эта местность будет всегда разбита на мелкие ячейки, а вот удаленная часть планеты, куда изредка забредает только случайный исследователь, будет представлена одной большой ячейкой. Выехали большой компанией на пикник или охоту? Снова идет дробление, пока вы не покинете дикие территории.
Авторы приводят наглядный пример. Если вы идете по улице крупного города в Dual Universe, разные ее стороны могут находиться в разных ячейках и обсчитываться разными серверами. Но вы при этом прекрасно видите, что происходит на другой стороне улицы. Заметив знакомого, вы перебегаете на другую сторону и даже не знаете, что только что перешли на другой сервер.
Если все это действительно работает, нет проблем обещать поддержку любого количества игроков и планет. Это уже не запредельные амбиции, не гигантомания, а просто будничная технология. Если все это действительно работает. Но точно об этом мы сможем узнать, когда в количестве миллиона человек соберемся в Dual Universe.
30 комментариев
даже если предположить что у нас 1кк пользователей и 1кк серверов, как обеспечить их взаимодействие(серверов)? сколько то пользователей и это уже выскочило за физику, gg wp, нужно реализовывать взаимодействие, а как? только кластерами серверов, а их скорость внутреннего взаимодействия уменьшается на порядки при увеличении в разы, накладные расходы, все дела, это примерно то, что вы видите в еве.
Проблема и не пропускной способности, оптические мультилинки в самом дата центре обеспечат фактически бесконечную скорость обмена между конкретными точками, проблема именно в создании системы в которой эти сервера будут взаимодействовать, а чем система больше, тем больше накладные расходы.
Проблема не во времени отклика, а в скорости передачи. И нет, она не «фактически бесконечная», а ограничена какими-нибудь 100Гбит/сек на сетевой карточке. При увеличении количества участников действа всё упрётся именно в пропускную способность сети.
Скорость каналов ограничена на расстоянии, линии денег стоят, промежуточное оборудование денег стоит и т.д, в пределах же одного дата центра, скорость неограничена ничем от слова совсем.
ММО на 5000 человек к этим задачам не относится =)
Итого, в пике, если каждый взаимодействует с каждым, то нужно передать в каждую сторону 4 миллиона взаимодействий за такт. Если такт 1 секунда как в Еве, а вес взаимодействия 30 байт (трехмерный вектор направления + пару чисел на описание характеристик эффекта + тип эффекта), то это получаются действительно жалкие 900 Мбит в секунду на сервер. Если такт меньше или данных передавать по каким-то причинам приходится больше, то число это может поменяться, но не на два порядка точно. Так что да, в ограничения сети, если не гонять по ней супер избыточные данные, не упереться.
Как раз на порядки по моему передаваемые данные и вырастут.
Пример взаимодействия каждый-с-каждым Рыжебород привел как раз. При желании можно поставить несколько сетевух на 10Гбит и сделать десяток эффектов на 10 тиков в секунду. Это настолько круче того, что сейчас можно просчитать в Еве, что и говорить не о чем. Компы упираются по производительности быстрее, чем по трафику.
Речь не о ММО вообще =)
Но это EVE, которая работает над проблемами масштабирования с момента своего запуска. И много достигла, на самом деле.
Я не сомневаюсь в том что Dual Universe сможет держать огромную вселенную, но вот с тысячами игроков одновременно в одном месте… Переброска объекта с одного сервера на другой (даже если это возможно) это задержки в лубом случае
На одном сервере обсчитывается куча систем-нод. Когда начинается движуха в некоторых нодах и сервак начинает не справлятся, он перекидывает незагруженные ноды на другие серваки(раньше кста, не перекидывал и можно было ждать около минуты прогруза пустой системы если где-то рядом шла эпичная заруба). В итоге, остается на серваке одна, самая загруженная нода, где происходит эпичная баталия. Раньше заявка нужна была чтобы отдельно перенести эту ноду, где предстоит битва, на еще более мощный сервер.
Диклаймер: это мое понимание ситуации и оно МОЖЕТ(я ему разрешаю:)) отличаться от реальности.
Мне кажется, что тут просто напрашивается высокотехнологичная система динамической класторизации данных нод, для обсчета пакетов малых нод, как единого целого, а не просто дробить их на меньшие и меньшие.