Войти
Игровая индустрияСтатьиУправление

GSC Game World. S.T.A.L.K.E.R. Oblivion Lost. (2 стр)

Графические возможности движка

Изображение

Какие типы видеокарт вы поддерживаете? Какая самая слабая карточка сможет воспроизвести изображение Сталкера? Возможности каких наиболее современных видео карт вы используете?

На сегодняшний день игра работает на карточках Ge-Force 2 (или аналоги) и выше. Однако позже мы можем принять решение отказаться от поддержки Ge-Force 2 и минимальным требованием станет Ge-Force 3 (или аналоги), так как получается, что мы ведем два рендера, что достаточно утомительно и трудоемко. Решение об увеличении минимальных системных требований мы будем принимать, основываясь на статистике, которую собирает издатель. Если к моменту релиза процент карт класса Ge-Force 2 будет незначительным - мы откажемся от их поддержки, если значительный - поддержка останется.
 
Для DirectX 9 поколения видео-карт мы пишем новый рендер. Это наиболее технологичная разработка на сегодняшний день, которая является следующим поколением технологий после Doom3. Играя в Сталкер в версии DX 9 рэндера Вы увидите, как будут выглядеть другие 3D игры где-то с 2005 года. Основные нововведения это полностью динамического освещение и мягкие тени, которые отбрасываются от всего на всё, а значит и отказ от лайтмапов и вертексного освещения, сверхвысокая детализация - до 3 000 000 полигонов в кадре, фотореалистичность графики и кинематографичность за счет ряда новых эффектов.

Сколько полигонов в среднем приходится на уровень, на сцену, сколько полигонов можно увидеть в кадре?

Ограничения количества полигонов на уровень практически нет. Главное, чтобы хватило оперативной памяти на сервере, где считаются уровни. На 32-bit-ных процессоров у нас стоит по 2 Гб. Сейчас с появлением Opteron - ов мы увеличим этот объем вдвое. 

В кадре с DX 7,8 рендером можно видеть 300 тыс. - 1.2 мил. Полигонов. С DX9 рендером - до 3-х миллионов. 

Как происходит подгрузка уровня, моделей, данных? По контрольным точкам, постоянная подгрузка?

По контрольным точкам.

Где вы храните данные о геометрии? Всё помещаете в видео, как статические буфера? Используются ли динамический буфер?

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

Хватает ли видеопамяти на ресурсы? Если нет, то кто управляет расположением данных, свой менеджер или доверяете API?

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

А так, низкоуровневое управление - через DirectX. Высокоуровневое - писали сами.

Изображение
Демонстрация проекции видео на статические и динамические объекты.

Кстати, какой графический API вы используете?

DirectX 9

Какие новые возможности 9-го Direct3D вы используете?

Мы используем практически все новые возможности DX9, даже чуть больше, так как разрабатываем отдельный рендер под DX 9. Список фич Вы все знаете по спецификациям DX9 - HLSL, occlusion culling... повторять их, я думаю, нет смысла. Поэтому расскажу, например, как мы используем Pixel Shader 2.0 +. Несколько из пиксельных шейдеров реально превышали спецификации ps_2_0 по количеству инструкций. Кроме этого, особенно легко было упереться в dependant-read limit (4 по ps_2_0). Для получения "идеального" PCF просто необходимо было использовать градиентные инструкции (ddx/ddy), которые доступны только в ps_2_x - железе. В общем, базового ps_2_0 нам явно не хватало :) Вот если-бы еще иметь и "dynamic flow control", причем с так называемым "early-out"... :)

Кстати, используете ли вы bump mapping, если да, то где его можно будет увидеть?

Мы используем повсеместно Bump Mapping в DX9 рэндере, где большое количество динамических источников света, что делает использование Bump Mapping эффективным. В DX8 рендере мы практически не используем Bump Mapping, так как при отсутствии динамических источников света Bump Mapping-а не видно, да и качество наших текстур делает его использование не особо нужным.

Какие ограничения накладываются на моделеров при создании моделей? Какое среднее количество полигонов содержит модель?

Хотя ограничений нет - у нас еще большой задел по полигонам, который мы часто заполняем объектами детализации. Но стараемся подходить к моделлингу без фанатизма, руководствуясь принципом рациональности. В среднем на модель получается 7000 полигонов.

По качеству картинки, видно, что вы используете постобработку? Каких эффектов вы можете достичь ей?

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

Изображение
Кинематографический эффект с зернистостью

А как художники могут задавать параметры постобработки? Для них есть какой-то инструмент? Какими параметрами они могут управлять?

Все просто. Программисты выносят параметры в ресурсный текстовый файл. Меняем параметры - видим результат.

Изображение
Обратите внимание, что спекуляра нет на месте выбитой плитки.
Хорошо виден эффект Glow от пола дальней комнаты.

А вообще есть вершинное освещение?

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

Каким образом вы делаете тени от подвижных объектов? И как вам эти тени удаётся совместить с лайтмапными тенями?

Тени от подвижных объектов - это проекционные текстуры меняющие свою интенсивность в зависимости от плотности лайт-маповой тени.

Есть ли в игре эффекты, связанные с погодными явлениями? Есть изменения погоды, изменение времени суток?

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

Поделитесь впечатлениями, какие эффекты больше всего отъедают производительность?

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

Сложно ли было совместить поддержку открытых и закрытых пространств одновременно?

Мы с самого начала ориентировались на то, что игра будет совмещать открытые и закрытые пространства, поэтому вся математика сразу же разрабатывалась под эту задачу - выбирались самые удачные алгоритмы и решения. Поэтому у нас не возникло здесь трудностей. Наверное, главным здесь было правильно сделать ставку на концепцию движка, которой мы руководствуемся при разработке X-Ray Engine, а не скажем на BSP, который был весьма популярным в 1999 году. 

Какая общая технология отсечения по видимости в indoor-е? PVS + окклудеры? Если да, то как разбивается сцена на комнаты и кто рисует порталы? Дизайнеры?

Сектора и порталы задаются левелдизайнерами. В то время как PVS + окклудеры - динамические.

Изображение

Каких размеров может быть комната физически и в треугольниках?

5000 полигонов на 1 куб метр - других ограничений нет.

Как делается LOD для объектов и для ландшафта?

Лоды на ландшафте и моделях делаются движком автоматически, используя алгоритм Sliding Window VIPM with Hugue's Hoppe QEM. Лоды для растительности автоматически генерятся в редакторе в 6-ти проекциях, а в самой игре происходит автоматическая подмена модели растения на спрайт с нужной проекцией

Есть ограничение на виды деревьев? Есть какие-то специальные алгоритмы для вывода LOD-ов деревьев? Есть ли пререндер дальних растений в спрайты?

Ограничений нет. В редакторе автоматически генерятся несколько проекций деревьев для LOD-ов. Дальние деревья переключаются в спрайты

Что можете рассказать про свою траву? Вы её строите полосками или объектами? Как она появляется, при движении персонажа? Есть ли освещёнка на траве? Сколько типов растений используется для травы? Как эти типы задаются?

Модели травы и других детальных объектов (до 64 типов на уровень) правильно освещаются, появляются динамически в любом задаваемом радиусе. Появление - масштабированием модели. Все детальные объекты задаются в редакторе уровней.

Как выполняется текстурирование ландшафта (тайлы, переходы между ними, еще как-то?) Сколько на ландшафте слоев detail map и как они делаются?

Мы используем смешанное текстурирование: комбинация базовой текстуры с одним слоем detail map + врезанные оттекстуренные участки, подогнанные под базовую текстуру.

Используются ли свои редакторы карт/ландшафта/моделей, или все делается на уровне плагинов?

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

К каким пакетам вы писали плагины? На ваш взгляд, какой пакет моделирования 3D объектов имеет лучший SDK?

Лучший SDK для Light Wave. Плагины разработанны для 3dMax, Maya, Light Wave

Страницы: 1 2 3 Следующая »

#GSC, #S.T.A.L.K.E.R., #интервью

13 июня 2003 (Обновление: 3 дек. 2017)

Комментарии [29]