Вероятно, первый вопрос, который вы зададите об архитектуре и ее реализации, – насколько эффективно она работает? Хотя преждевременная оптимизация архитектур порождает множество грехов, ничто не мешает спроектировать архитектуру, которая в любом варианте реализации будет работать неудовлетворительно. Вследствие одного из основных решений архитектуры Darkstar это беспокойство выглядит обоснованно. А из-за особенностей игровой отрасли определить производительность серверной инфраструктуры довольно сложно.
Трудности с определением производительности инфраструктуры сервера игры или виртуального мира обусловлены простым фактом: для крупномасштабных ММО или виртуальных миров не существует эталонных тестов или общепринятых образцов. Отсутствие контрольных тестов не удивительно, так как серверные компоненты большинства игр или виртуальных миров строятся для конкретной игры или виртуального мира «с нуля». Существует лишь несколько обобщенных инфраструктур, которые могут использоваться в качестве стандартных структурных элементов; как правило, они извлекаются из существующей игры или мира после завершения работы над системой и передаются тем, кто строит аналогичные игры. Не существует общепринятых эталонных тестов для тестирования новых или сравнения существующих инфраструктур – как среди относительно новых явлений игровой отрасли, так и среди исторически сформировавшихся технологий индустрии развлечений.
Также практически отсутствует информация о предполагаемых нагрузках на сервер игры или виртуального мира (вычисления, обработка данных, коммуникации), на основании которой можно было бы построить эталонные тесты или тесты производительности. Отчасти это объясняется нестандартной природой создаваемых серверов. Каждый сервер строится под конкретную игру или виртуальный мир, а, следовательно, настраивается под конкретные характеристики рабочей нагрузки этой игры или мира. В еще большей степени проблема обусловлена скрытностью игровой отрасли, в которой любые сведения о находящихся в разработке играх ревностно охраняются, а информация о реализации готовых игр, во-первых, так же тщательно охраняется, а, во-вторых, многие считают ее неинтересной. Графическому оформлению, сюжетам и новшествам игрового процесса уделяется гораздо больше внимания, чем архитектуре игрового сервера или механизмам масштабирования игры для текущего количества игроков (кстати, эта статистика тоже часто скрывается). Таким образом, даже получить
информацию о нагрузке на серверы, создаваемой современными играми и виртуальными мирами, весьма непросто.
Даже когда нам удавалось расспросить разработчиков о том, какую нагрузку на сервер создает их игра или виртуальный мир, сведения часто оказывались неправильными. Дело вовсе не в том, что они пытались сохранить какие-то коммерческие преимущества, дезинформируя нас о том, что реально происходит на серверах, — они просто сами не знали. На игровых серверах практически отсутствуют средства сбора информации о том, что делает сервер и насколько эффективно он работает. Анализ работы таких серверов в лучшем случае становится занятием эмпирическим. Программист работает над сервером до тех пор, пока игровой процесс не войдет в рамки приемлемой производительности, но эта задача решается итеративным методом, а не тщательными измерениями параметров кода. В таких системах ремесла намного больше, чем науки.
Я вовсе не хочу сказать, что серверы, обеспечивающие работу таких игр и виртуальных миров, недостаточно хорошо спроектированы или построены. Часто это настоящие шедевры программной мысли и эффективности, демонстрирующие преимущества специализированных серверов для требовательных приложений. Однако практика построения нового сервера для каждой игры или мира означает, что разработка не приводит к накоплению знаний относительно того, что необходимо для таких серверов, и не существует общепринятого механизма сравнения таких инфраструктур.
Related posts:
- Макроструктура
- Масштабирование ММО
- Игровой мир
- Общая модель программирования Darkstar
- Задержка – главный враг