» Фантастика » » Читать онлайн
Страница 364 из 386 Настройки

Если брать на том же конкретном примере Майнкрафта. На компьютере обычного игрока лежит только клиент игры. В нём находятся графика (текстуры), звуки, интерфейс и код рендера. Собственно, визуал.

Играя на серваке, игрок, например, нажимает ЛКМ и начинает ломать блок камня. В этот момент клиент отправляет серверу пакет данных с командой — «пытаюсь сломать этот гребаный блок по таким-то координатам». Если игрок нажимает кнопки ходьбы — «иду вперёд». Открывает сундук — «кладу меч в сундук». И сервер уже проверяет эти действия на легитимность и реагирует.

Ибо сам мир (его физическое состояние) лежит на сервере, а не на ПК игрока. Карта точно так же разделена на систему чанков (участков 16х16 блоков). А в файлах мира на сервере хранится вся необходимая инфа: какие блоки где стоят, содержимое сундуков, ИИ мобов и валяющиеся на земле предметы, координаты и инвентари подключенных игроков, время суток, погода и прочие глобальные параметры.

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

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

Помним, да, что это всё нещадно жрет РАМку и процессор.

А теперь представим, что игроков на сервере не два, а десять. И все они разбегутся в совершенно разные стороны карты. Серверу станет в десять раз тяжелее! Придётся одновременно держать в оперативе и генерировать в реальном времени гораздо больше территории.

А если игроков будет сто? Двести? И всё это умножить на сотню-другую таких же активных миров на одной физической машине. А если какой-то идиот додумается забить книжки китайскими иероглифами?

Нагрузка на железо в таком случае будет колоссальная. И даже магический ультра-ПК Коула попросит закурить.

— Итак, мистер Выдра, мистер Вэнс… — Тактично кашлянул Джавитс, наконец закончив свой приторный смол-ток и подсовывая нам под нос красиво оформленные карточки спецификаций на плотной глянцевой бумаге.

Сразу на ум отчего-то пришла культовая сцена из Американского психопата, где они с таким же пафосом хвастались визитками. Или там были конфетки? Неважно.

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

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

Я опустил глаза и вчитался в аккуратную табличку спецификации:

• 2 × четырехъядерных процессора Stark Helios-S4 (серверная архитектура);

• 16 ГБ оперативной памяти OsMemory с коррекцией ошибок (ECC);

• 2 × 146 ГБ жестких диска Roxxon Data SAS, объединенных в RAID 1 (зеркалирование);

• Два гигабитных сетевых порта;

• Блоки резервного питания горячей замены;

• Компактный стоечный корпус форм-фактора 1U.

Некислая машинка. Такая будет стабильно и безопасно держать примерно шесть миров по два-три десятка человек в каждом. То есть примерно сто пятьдесят активных игроков суммарно на один юнит. В эквиваленте на более понятный киберспортивный пример… Это где-то десять-двенадцать параллельных матчей в старой доброй второй Дотке или примерно восемь потных каток в КС.

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

— Сколько выйдет по деньгам в итоговом чеке? — Я вальяжно откинулся в кожаном кресле, уставившись прямо в серые, хитрые глазки старшего менеджера.

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

— Дайте секунду подсчитать. — Джавитс деловито застучал по клавишам своего ультратонкого ноутбука. Делая сосредоточенный вид, будто бы заранее у него ничего подсчитано не было и он делает нам персональный оффер прямо сейчас.