В зимней карте взгляд прежде всего замечает снег. Затем — мокрую полосу под выступом, пар, отражение далёкого света. Называть всё это «улучшенной графикой» удобно, пока не захочется оставить одно и убрать другое. К выпуску Q2PRO-X 1.5 за общим именем AVFX уже находилось несколько самостоятельных семейств. Их можно было сочетать, но у каждого были собственная работа, цена и причина появиться.
Погода и воздух между стенами
Дождь, снег, пепел, пыль и дымка задавали основной характер воздуха. Дополнительная примесь позволяла усложнить его, не заменяя целиком. Гроза добавляла молнии, освещение и гром; мокрая линза напоминала, что игрок смотрит на мир через покрытое каплями изображение. Такие эффекты требовали разного размещения: осадки снаружи, крыша над головой и подводная камера не могли обслуживаться одним безусловным потоком частиц.
Плоское небо и облако, сквозь которое проходит свет, решают разные задачи. Объёмные туман и облака добавляли глубину воздуха, лучи делали заметным направление освещения. Рядом оставались более простые варианты неба — погодное, голубое, звёздное, космическое, туманность, солнечное и мистическое. Небесные тела и движущиеся объекты выбирались отдельно: планета могла оставаться на месте, пока над ней проходила комета или корабль. История Луны и чёрной дыры была частью именно этого большого устройства.
У воды несколько отражений
Рябь от капли, волна, блеск и отражение не заменяют друг друга. В Q2PRO-X отдельно развивались большая вода и дождевые лужи, которые наполнялись, стекали и высыхали. Отражения моделей позволяли увидеть в них игрока, оружие или предмет. Экранное отражение сцены использовало уже видимое изображение мира. Настоящие зеркальные поверхности составляли ещё одну систему: пол, склон или стена могли отражать окружение с другого направления.
Именно поэтому пункт «отражения включены» мало говорил о цене кадра. В одной сцене достаточно было добавить водный отблеск, в другой требовалось снова рисовать мир и модели для зеркала. Настройки разделяли категории отражаемых объектов и качество. Пользователь мог оставить то, ради чего выбрал оформление, а при проверке производительности становилось понятнее, какую работу выполняет видеокарта.
Стена получает рельеф
Сначала новая поверхность может показаться просто другой текстурой. Стоит приблизиться к ней сбоку, и разница выясняется: кладка выступает, камень неровен, край пола перестаёт быть идеально плоским. Аппаратная тесселяция разбивает поверхность на более мелкие участки, из которых можно построить подробный рельеф. В Q2PRO-X она охватывала архитектуру и жидкости, в том числе воду и лаву. Этот путь работал через Native WGL; у EGL оставался обычный путь отрисовки мира. Одна галочка не могла отменить различие возможностей двух графических бэкендов.
Тесселяция не была продолжением только одиночного эксперимента с деформацией стен: её можно было использовать и в сетевой игре. Но видимый рельеф не означал, что сервер получил новые ступени или укрытия. Точно так же добавленный кирпич и трава не давали основания менять траекторию игрока. Сохранить связь красивой поверхности с прежней игровой картой оказалось не менее важно, чем придать поверхности объём.
Материалы собирались слоями: плесень, стекающая по стене вода, зелень, трещины, кирпич, покрытия полов и стен. Доски, камень и плитка меняли характер помещения, а порядок и площадь покрытия определяли, осталось ли оно узнаваемым. Объекты на поверхности, трёхмерная трава и живность составляли соседние семейства. Их не следовало превращать в придаток одного общего выключателя: вполне можно захотеть заросшую стену без змей или чистый пол с отдельными декоративными деталями.
Оставить на карте собственный след
Часть оформления можно было не только выбрать, но и сделать самому. Инструменты рисования помещали изображения на поверхности карты; отдельная система задавала объёмный пар и дым. Библиотеки материалов рисунка и форм пара помогали использовать заготовки повторно. Получалась работа с конкретным местом: здесь над разломом поднимается дым, здесь на стене остаётся рисунок. Случайный генератор не должен был стирать такое размещение очередным нажатием кнопки.
Локальное освещение фонариком, контакты монстров, звуки дождя, грома, шагов и пара связывали семейства с происходящим рядом. Выстрел по снегу, попадание в воду и горячую поверхность уже нельзя было изобразить одинаковой вспышкой. В дальнейшем из этой задачи выросла большая работа над контактными эффектами Q2PRO-X 1.6: следу требовались правильный материал, место и время жизни, а не просто убедительный цвет.
Наконец, у всех этих возможностей оставалось место в настройках обычной игры. Можно было разрешить AVFX для просмотра записей и иначе ограничить его для сетевого матча, выбрать соревновательный режим, убрать тяжёлые семейства. Один человек хотел снимать заснеженную арену, другой — сразу различать силуэт противника. Им не приходилось договариваться об одном обязательном облике Quake II.
