[Разработка игр, Игры и игровые приставки] «А Crysis потянет?» Почему до сих пор обсуждают игру, выпущенную 13 лет назад (перевод)
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Каждый год выпускаются сотни новых игр. Некоторые из них добиваются успеха и продаются миллионами копий, но само по себе это не гарантирует статуса легенды. Однако изредка появляются игры, которые становятся частью истории отрасли, и мы продолжаем обсуждать их и играть в них спустя годы после выпуска.
Для игроков на PC есть одна игра, ставшая почти легендарной благодаря своей невероятной, обогнавшей своё время графике и способности снижать фреймрейты компьютера до однозначных чисел. Позже она стала знаменитой благодаря тому, что на десяток лет превратилась в надёжный источник мемов. В этой статье мы расскажем о Crysis и о том, что сделало его таким уникальным.
Первые дни Crytek
Прежде чем погрузиться в историю Crysis, стоит совершить краткое путешествие во времени и узнать, как было заложено основание Crytek. Эта компания по разработке ПО была основана осенью 1999 года в Кобурге, Германия тремя братьями — Авни, Джеватом и Фаруком Йерли. Объединившись под руководством Джевата, братья начали создавать демо игр для PC.
Важнейшим из ранних проектов компании стал X-Isle: Dinosaur Island. Студия рекламировала это и другие демо на выставке E3 1999 года в Лос-Анджелесе. Одной из множества компаний, которым братья Йерли рекламировали своё программное обеспечение, была Nvidia, особенно восхитившаяся X-Isle. И на то есть причины: графика демо была для того времени удивительной. Огромные расстояния отрисовки объектов в сочетании с красивым освещением и реалистичными поверхностями оказывали поразительный эффект.
Для Nvidia демо Crytek было превосходным инструментом рекламы будущей линейки графических карт GeForce, поэтому компании заключили сделку — когда в феврале 2001 года GeForce 3 вышла на рынок, Nvidia использовала X-Isle для демонстрации возможностей карты.
Получив после успеха X-Isle столь необходимый доход, Crytek могла приступить к созданию полной игры. Её первый проект под названием Engalus рекламировался на протяжении 2000 года, но в конечном итоге компания его забросила. Причины этого не совсем ясны, но благодаря известности, полученной из-за сделки с Nvidia, Crytek вскоре заключила ещё один контракт с крупной студией: французской игровой компанией Ubisoft.
Его условия заключались в создании полной игры AAA-уровня на основе X-Isle. В результате получилась выпущенная в 2004 году игра Far Cry.
Несложно заметить, как технологические аспекты X-Isle нашли своё место в Far Cry. Нам снова подарили обширные ландшафты, насыщенные роскошной растительностью и отрендеренные в самой передовой графике. Хоть игра и не получила популярности у критиков, Far Cry довольно неплохо продавалась, а Ubisoft увидела огромный потенциал в бренде и в игровом движке, созданном Crytek.
Был подписан ещё один контракт, по которому Ubisoft сохраняла за собой полные права на интеллектуальную собственность Far Cry и бессрочно лицензировала движок Crytek под названием CryEngine. Постепенно, с течением лет, он превратился в собственный движок компании Duniaengine, используемый в таких играх, как Assassin's Creed II и следующих трёх частях серии Far Cry.
К 2006 году Crytek перешла под крыло Electronic Arts и перенесла свои офисы в Франкфурт. Разработка CryEngine продолжилась и было объявлено о новом игровом проекте компании: Crysis. С самого начала Crytek хотела, чтобы игра стала демонстрацией технологических возможностей компании; совместно с Nvidia и Microsoft она работала над расширением возможностей оборудования с поддержкой DirectX 9. Позже игра будет использоваться для рекламы функций DirectX 10, но это произойдёт на довольно поздних этапах разработки проекта.
2007: золотой год видеоигр
Выпуск Crysis был запланирован на конец 2007 года, который оказался замечательным для игр, особенно с точки зрения графики. Можно сказать, что поток хитов начался годом ранее, когда The Elder Scrolls IV: Oblivion задала планку того, как должен выглядеть открытый мир 3D-игры (если не считать модели персонажей) и достижимого в ней уровня взаимодействий.
Несмотря на всё своё графическое великолепие, Oblivion проявлял признаки ограничений разработки под разные платформы, а именно, под PC и консоли того времени. Xbox 360 и PlayStation 3 были сложными машинами, довольно сильно отличавшимся архитектурно от систем под Windows. Xbox 360 компании Microsoft имела уникальные для этой консоли CPU и GPU: трёхъядерный чип PowerPC компании IBM и графический чип ATI, который мог похвастаться унифицированной системой шейдеров.
Консоль Sony содержала в себе довольно обычный GPU Nvidia (модифицированный GeForce 7800 GTX), однако CPU был совершенно нестандартным. Процессор Cell, совместно разработанный Toshiba, IBM и Sony, обладал ядром PowerPC, однако ещё и содержал внутри 8 векторных сопроцессоров.
Плата первой версии PlayStation 3. Изображение: Википедия
Из-за того, что каждая консоль имела собственные уникальные преимущества и особенности, создание игр, которые бы хорошо работали и на них, и на PC, было серьёзной задачей. Большинство разработчиков обычно были нацелены на «наименьший общий множитель», то есть ограничивались относительно малыми объёмом системной и видеопамяти, а также самыми базовыми графическими функциями систем.
Xbox 360 имел всего 512 МБ общей памяти GDDR3 и дополнительные 10 МБ встроенной DRAM для графического чипа, а в PS3 было установлено 256 МБ системной памяти XDR DRAM и 256 МБ GDDR3 для Nvidia GPU. Однако к середине 2007 года самые мощные PC уже могли быть оснащены 2 гигабайтами системной ОЗУ DDR2 и 768 МБ GDDR3 на графической плате.
Консольные версии игр имели фиксированные параметры графики, а версии для PC обеспечивали гибкость настройки. При максимальных настройках с нагрузкой иногда не справлялись даже самые мощные компьютеры того времени. Такая ситуация возникла, потому что игра разрабатывалась с целью максимальной производительности в максимальных разрешениях консолей Xbox 360 и PS3 (то есть 720p или 1080p с масштабированием) при 30 кадрах в секунду, поэтому хотя компоненты PC и были лучше, их работа с более детализированной графикой и повышенными разрешениями значительно повышала нагрузку.
Первым аспектом, в котором была ограничена эта конкретная 3D-игра из-за объёма памяти консолей, стал размер текстур, поэтому по возможности применялись текстуры меньшего разрешения. Кроме того, довольно низким было и количество полигонов, используемое при создании окружений и моделей.
Если взглянуть на ещё одну сцену из Oblivion в каркасном режиме (без текстур), то мы увидим, что деревья созданы максимум из нескольких сотен треугольников. Листья и трава — это просто текстуры с прозрачными областями, создающие ощущение того, что каждая травинка является отдельным объектом.
Модели персонажей и статичных объектов, например, зданий и камней, созданы из большего количества полигонов, но в целом большее внимание было уделено дизайну и освещению сцен, а не геометрии и сложности текстур. При создании графики разработчики не стремились к реализму — действие Oblivion происходит в напоминающем мультфильм фэнтезийном мире, поэтому ему простительна нехватка изощрённого рендеринга.
Тем не менее, похожую ситуацию можно наблюдать и в одной из самых крупных игр 2007 года: Call of Duty 4: Modern Warfare. Эта игра, действие которой происходит в современном реальном мире, была разработана Infinity Ward и издана Activision на движке, изначально построенном на id Tech 3 (Quake III Arena). Разработчики адаптировали и сильно изменили его, чтобы он смог рендерить все графические «фишки», популярные в то время: bloom, HDR, самозатенение, динамическое освещение и наложение теней.
Но как видно на изображении выше, качество текстур и количество полигонов остались довольно низкими, тоже из-за ограничений консолей той эпохи. Объекты, постоянно находящиеся в поле зрения (например, оружие в руках игрока) имеют хорошую детализацию, однако статическое окружение было довольно простым.
Все эти объекты искусно были спроектированы так, чтобы выглядеть максимально реалистичными, поэтому продуманное использование света и теней вместе хитрыми эффектами частиц и плавными анимациями волшебным образом улучшали сцены. Но как и в случае с Oblivion, Modern Warfare на PC всё равно была очень требовательной при максимальных настройках — очень важен был многоядерный CPU.
Ещё одним многоплатформенным хитом 2007 года был BioShock. Визуальный дизайн этой игры в антураже подводного города в альтернативной реальности 1960 года был ключевым элементом повествования и развития персонажей. На этот раз при создании игры использовался модифицированный движок Unreal Engine компании Epic, и как и упомянутые выше игры, BioShock реализовал полный набор графических технологий.
При этом нельзя сказать, что разработчики по возможности не экономили — взгляните на руку персонажа с изображения выше, на ней легко заметны края использованных в модели полигонов. Кроме того, градиент освещения на коже тоже довольно резкий, что говорит о довольно малом количестве полигонов.
Как и в случае с Oblivion и Modern Warfare, многоплатформенность игры означала низкое разрешение текстур. Уровень качества графики поднимали кропотливая работа над освещением и тенями, эффекты частиц для воды и изысканный дизайн. Эта ситуация повторялась и в других играх, разрабатывавшихся для PC и консолей: в Mass Effect, Half Life 2: Episode Two, Soldier of Fortune: Payback, и Assassin's Creed использовался схожий подход к реализации графики.
Crysis, с другой стороны, задумывался как игра только для PC и имел потенциал быть свободным от аппаратных и программных ограничений консолей. Crytek на примере Far Cry уже доказала, что знает, как максимально использовать возможность графики и вычислительных мощностей… но если PC испытывают трудности с запуском при максимальных настройках новых игр, разработанных для консолей, то почему для Crysis ситуация должна быть лучше?
Всё и сразу
На ежегодной конференции SIGGRAPH 2007, посвящённой графическим технологиям, Crytek опубликовала документ с описанием исследований и разработок, проведённых компанией для создания CryEngine 2 — потомка движка, который использовался при написании Far Cry. В этом документе компания изложила цели, которые должен достичь движок:
- Рендеринг кинематографического качества
- Динамическое освещение и тени
- HDR-рендеринг
- Поддержка систем с несколькими CPU и GPU
- Игровая область размером 21 км x 21 км
- Динамические и разрушаемые окружения
В первой игре, разработанной на CryEngine 2, а именно в Crysis, разработчики достигли всех целей, кроме одной — игровую область пришлось уменьшить всего до 4 км x 4 км. Может показаться, что это много, но игровой мир Oblivion был по площади в 2,5 раза больше. Тем не менее, стоит обратить внимание на то, чего удалось добиться Crytek в меньшем масштабе.
Игра начинается на побережье покрытого джунглями острова, расположенного неподалёку от Филиппин. На него вторглись войска Северной Кореи, и проводившая на острове раскопки группа американских археологов позвала на помощь. Вас со своей командой, одетой в специальные нанокостюмы (дающие вам суперсилу, скорость и кратковременную невидимость) отправили разведать ситуацию.
Первые несколько уровней с лёгкостью демонстрируют, что заявления разработчиков Crytek не были преувеличением. Море представляет собой сложный меш из реальных 3D-волн, взаимодействующих с объектами в нём — присутствуют подводные лучи света, отражение и преломление, каустика и рассеяние света, накатывающиеся на берег волны. Всё это выглядит неплохо и по современным стандартам, хоть и удивительно, что несмотря на все усилия, вложенные Crytek в создание внешнего вида воды, действие игры в однопользовательском режиме почти в ней почти не происходит.
Можно посмотреть на небо и подумать, насколько правильно оно выглядит. Так и должно быть, ведь движок игры вычисляет уравнение рассеивания света на CPU, учитывая при этом время суток, расположение Солнца и другие атмосферные условия. Результаты вычислений сохраняются в текстуре значений с плавающей запятой, которая затем используется GPU для рендеринга скайбокса (купола неба).
Облака, которые мы видим вдалеке, «реальны», то есть не просто являются частью скайбокса или наложенными текстурами. Это набор небольших частиц, почти как настоящие облака, а для определения местонахождения объёма частиц в 3D-мире используется процесс под названием ray-marching. И поскольку облака являются динамическими объектами, они отбрасывают тени на сцену (хотя здесь этого и не видно).
Прохождение первых уровней демонстрирует ещё одни свидетельства возможностей CryEngine 2. На приведённом выше скриншоте мы видим богатое детализированное окружение — направленное и косвенное освещение является динамическим, все деревья и кусты отбрасывают тени на самих себя и другую растительность. Ветви движутся, когда вы протискиваетесь через них, а небольшие пеньки можно расстрелять, чтобы они не мешали обзору.
Кстати, о расстреливании предметов: Crysis позволяет нам уничтожить множество объектов — транспорт и здания можно взрывать на осколки. Враг спрятался за стеной? Не заморачивайся стрельбой через стену, как это было в Modern Warfare, а просто вынеси её целиком.
Как и в случае с Oblivion, почти любой предмет можно поднять и выбросить, хотя и жалко, что Crytek не расширила возможности этой функции. Было бы здорово поднять джип и бросить его в толпу солдат — максимум что мы можем сделать — это немного побить его рукой, надеясь, что он достаточно сдвинется, чтобы нанести урон. И всё равно: в каких ещё играх можно убить противника курицей или черепахой?
Даже сегодня эти сцены сильно впечатляют, а уж в 2007 году это стало колоссальным скачком вперёд в технологиях рендеринга. Но несмотря на все свои инновации, Crysis можно считать достаточно стандартной игрой, потому что эпичные горные виды и красивые локации скрывали линейность и предсказуемость геймплея.
Например, в те времена популярными были уровни, в которых игрок перемещался только на транспорте, поэтому неудивительно, что Crysis последовал этой моде. Спустя какое-то время после успешного вторжения на остров вам поручают управлять стильным танком, но заканчивается всё очень быстро. Возможно, это и к лучшему, ведь управление им неудобно, и игрок может пройти уровень, даже не участвуя в битве.
Наверняка есть не так много людей, которые не играли в Crysis или не знают в общем его сюжет, но мы не будем вдаваться в его подробности. Как бы то ни было рано или поздно игрок попадает на уровни глубоко под землёй, в таинственную систему пещер. Она довольно красива, но часто запутывает и вызывает клаустрофобию.
Она хорошо демонстрирует системы объёмного освещения и тумана движка, в которых тоже используется ray-marching. Он не идеален (по краям оружия заметно слишком сильное размытие), зато движок с лёгкостью обрабатывал множество направленных источников освещения.
Выбравшись из системы пещер, игрок направляется в морозную часть острова с напряжёнными битвами и ещё одной стандартной геймплейной частью: миссией по сопровождению. Систему рендеринга снега и льда разработчики из Crytek переделывали четыре раза, едва успевая выполнять работу в срок.
Конечный результат получился очень красивым: снег накладывается отдельным слоем на поверхности, а замёрзшие частицы воды мерцают в лучах света, однако графика чуть менее эффективна, чем на предыдущих сценах с побережьем и джунглями. Взгляните на большой булыжник в левой части изображения: текстуры там не очень.
Позже, мы возвращаемся в джунгли и, к сожалению, нас ждёт ещё один транспортный уровень. На этот раз небольшому десантному транспорту (создатели которого явно вдохновлялись «Чужими») нужен пилот на замену, и им, разумеется, будете вы (разве есть что-то, чего не умеют наши солдаты?). И снова игровой процесс заключается в кратковременной борьбе с неуклюжей системой правления и беспорядочной стрельбе, в которой можно и не участвовать.
Любопытно, что когда спустя четыре года Crytek выпустила консольную версию Crysis, весь этот уровень был вырезан. Вероятно, активное использование систем облаков на основе частиц, сложная геометрия и дальние расстояния отрисовки были слишком большой нагрузкой для Xbox 360 и PS3.
Игра завершается очень напряжённой битвой на борту авианосца с обязательным боем с боссом в стиле «я ещё не умер». Часть графики в этом фрагменте игры очень впечатляет, но дизайн уровня несравним с дизайном предыдущих этапов.
В целом, в Crysis было интересно играть, но сюжет оказался не особо оригинальным — во многом игра стала духовным потомком Far Cry, как с точки зрения антуража, так и в выборе оружия, а также в сюжетных поворотах. Даже разрекламированная функция нанокостюма была реализована не полностью, потому что обычно его возможности почти не требовались. Кроме пары мест, где необходим был режим силы, для прохождения оказывалось вполне достаточно стандартного щита.
Игра была потрясающе прекрасна, она стала самым красивым релизом 2007 года (и многих лет после), но Modern Warfare имела гораздо более качественный мультиплеер, BioShock обладал более богатым сюжетом, а Oblivion и Mass Effect обеспечивали гораздо бОльшую глубину и реиграбельность.
Но, разумеется, все мы точно знаем, почему спустя 13 лет мы по-прежнему говорим о Crysis — всё сводится к мемам…
Расплачиваться за всю это великолепную графику пришлось аппаратными требованиями, и запуск игры на максимальных настройках казался недостижимым для самых мощных PC того времени. На самом деле, такое ощущение сохранялось год за годом — появлялись новые CPU и GPU, но все они не могли запускать Crysis в том же качестве, что и другие игры.
Да, графика может быть и радовала, зато низкая частота обновления кадров, которая, казалось, никогда не увеличивалась, определённо огорчала.
Почему всё настолько серьёзно?
Crysis был выпущен в ноябре 2007 года, но демо из одного уровня и редактор карт стали доступными месяцем ранее. Наш сайт уже тогда занимался бенчмарками оборудования и игр для PC, поэтому мы протестировали производительность этого демо (а позже и патч 1.1 с SLI/Crossfire). Мы выяснили, что игра ведёт себя довольно неплохо… но только на самых лучших графических картах того времени и со средними параметрами графики. Как только мы переключались на высокое качество, GPU среднего ценового уровня сразу же выдыхались.
Хуже того — рекламируемый режим DirectX и сглаживание почти не помогали внушить уверенность в потенциале игры. В ранних предварительных обзорах в прессе уже говорилось о далеко неидеальных частотах кадров, но Crytek обещала, что грядут дальнейшие усовершенствования и обновления.
Так из-за чего игра была настолько требовательной к «железу»? Мы можем получить представление о том, что происходит внутри игры, запустив её со включенным режимом «devmode». Этот режим открывает доступ к консоли, позволяющей включать всевозможные настройки и читы, а также отображать оверлей с информацией рендеринга.
На показанном выше скриншоте, сделанном почти в начале игры, мы видим среднюю частоту кадров и количество занятой игрой системной памяти. Значения Tris, DP и DLights отображают количество треугольников на кадр, количество вызовов отрисовки на кадр и число направленных (и динамических) источников освещения.
Для начала поговорим о полигонах: в этом кадре их 2,2 миллиона. Именно столько использовано для построения сцены, хоть и не все они отображаются на экране (невидимые отсекаются на ранних этапах процесса рендеринга). Основная часть этого количества относится к растительности, потому что Crytek решила отрисовывать отдельные листья на деревьях, а не использовать простые текстуры с прозрачностью.
Даже в относительно простых окружениях используется огромное количество полигонов (по сравнению с другими играми того времени). На этом изображении более позднего этапа игры видно не так много, потому что он тёмный и находится под землёй, но здесь всё равно около 700 тысяч полигонов.
Сравните также разницу в количестве направленных источников освещения: в сцене на открытом пространстве в джунглях он только один (т.е. Солнце), однако в этом окружении их 10. Кажется, что это не так много, но каждый динамический источник освещения отбрасывает активные тени. Для их реализации Crytek использовала смесь технологий, и хотя все они современны по меркам того времени (каскадные и дисперсионные карты теней с флуктуационным сэмплированием для сглаживания краёв), они добавляют серьёзную нагрузку на процесс обработки вершин.
Значение DP сообщает нам, сколько раз отдельный материал или визуальный эффект «вызывается» для объектов в кадре. Для нас полезна консольная команда r_stats — она подробно отображает структуру вызовов отрисовки, а также используемых шейдеров, подробности обработки геометрии и загрузки текстур в сцене.
Вернёмся снова к сцене в джунглях и посмотрим, что использовалось для создания этого изображения.
Мы запустили игру в разрешении 4K, чтобы получить скриншоты максимального качества, поэтому статистическая информация видна не так чётко. Давайте её приблизим.
В этой сцене вызывается более 4 тысяч групп полигонов для 2,5 миллиона треугольников окружения, чтобы наложить на них 1 932 текстуры (хотя большинство из них повторяется, например, в таких объектах, как деревья и земля). Самый большой вершинный шейдер необходим для подготовки эффекта размытия движения (motion blur), он состоит из 234 команд, а пиксельный шейдер рельефа состоит из 170 команд.
Для игры 2007 года такое количество вызовов чрезвычайно высоко, потому что излишние траты CPU в DirectX 9 (и, в меньшей степени, в DirectX 10) для выполнения каждого вызова не были так уж тривиальны. Вскоре после Crysis некоторые игры AAA-уровня для консолей будут вмещать в себя такое количество полигонов, но их графическое ПО было гораздо более специализированным, чем DirectX.
Мы можем разобраться в этой проблеме при помощи Batch Size Test из пакета 3DMark06. Этот инструмент с поддержкой DirectX 9 отрисовывает на экране серию движущихся и меняющих цвет прямоугольников, в каждой последующей сессии увеличивая количество треугольников. При тестировании на GeForce RTX 2080 Super результаты демонстрируют заметную разницу в производительности при разных размерах групп полигонов.
Мы не можем легко определить, сколько треугольников обрабатывается в одной группе, но если показанное число учитывает все использованные полигоны, то на группу в среднем приходится всего около 600 треугольников, что слишком мало. Вероятно, этой проблеме противодействует большое количество экземпляров (то есть за один вызов объект может быть вызван несколько раз).
На некоторых уровнях Crysis используется ещё большее количество вызовов отрисовки; хорошим примером этого является битва на авианосце. На изображении ниже мы видим, что несмотря на меньшее по сравнению со сценой в джунглях количество треугольников, из-за огромного количества перемещаемых, текстурируемых и индивидуально освещаемых объектов узким местом в производительности рендеринга становятся CPU и системы графических API/драйверов.
Многие критиковали Crysis за плохую оптимизацию под многоядерные CPU. Большинство мощных игровых PC ещё до выпуска игры было оснащено двухъядерными процессорами, AMD в одно время с её выпуском начала продавать свою линейку четырёхъядерных Phenom X4, а у Intel были четырёхъядерные CPU ещё в начале 2007 года.
Действительно ли Crytek упустила это из виду? Мы запустили стандартное CPU2 timedemo на современном 8-ядерном Intel Core i7-9700, поддерживающем до 8 потоков. Похоже, в этих обвинениях была некоторая истина: хотя общая производительность оставалась не такой плохой для теста в разрешении 4K, частота кадров довольно часто падала ниже 25 fps, а временами и до однозначных чисел.
Однако если запустить тесты снова, но на этот раз ограничить количество доступных ядер в BIOS материнской платы, то можно увидеть и другую сторону истории.
Существует заметный рост производительности при переходе от одного к двум ядрам, и ещё один рост при переходе от двух к четырём (хоть и гораздо меньший). Дальше заметных отличий нет, но игра определённо использует наличие нескольких ядер. Учитывая то, что после выпуска игры четырёхъядерные CPU станут нормой только через несколько лет, у Crytek не было реальной необходимости в дальнейших оптимизациях.
В DirectX 9 и 10 выполнение графических команд обычно производится в одном потоке (потому что в противном случае сильно снижается производительность). Это означает, что при большом количестве вызовов отрисовки, наблюдаемом во многих сценах, серьёзно загружены только одно или два ядра — ни одна из версий графического API не позволяет использовать множественные потоки для помещения в очередь того, что нужно вывести на экран.
То есть дело не в том, что Crysis неправильно поддерживает многопоточность — очевидно, что причина в ограничениях DirectX; на самом деле в падении производительности виноваты решения о дизайне игры и повлиявшие на рендеринг (например, точно моделируемые деревья, динамические и разрушаемые окружения). Помните скриншот уровня в пещере? Обратите внимание, что значение DP было ниже 2 000, а потом посмотрите на счётчик FPS.
Что же ещё настолько требовательно, кроме вызовов отрисовки и проблемы с API? На самом деле, практически всё. Вернёмся к сцене, по которой мы объясняли смысл вызовов отрисовки, но на этот раз переключим все графические опции на минимальные настройки.
Из информации devmode мы можем понять очевидные факты: при использовании минимальных настроек количество полигонов уменьшается вдвое, а вызовов отрисовки становится меньше почти в четыре раза. Но обратите внимание на отсутствие теней, а также ambient occlusion и красивого освещения.
Однако самое странное изменение заключается в уменьшении области видимости — этот простой трюк снижает количество геометрии и пикселей, которые нужно рендерить в кадре, потому что всё, что не попадает в окно просмотра, отсекается на ранних этапах процесса. Дальнейшее углубление в статистику позволяет пролить ещё больше света на ситуацию.
Здесь можно видеть, насколько меньше стала нагрузка на шейдеры — самый большой пиксельный шейдер содержит всего 40 команд (раньше их было 170). Самый большой вершинный шейдер довольно велик — 152 команд, но он используется только для поверхностей с металлическим отражением.
Циклическое изменение параметров качества — Low, Medium, High, and Very High
При улучшении параметров графики наложение теней значительно повышает общее количество полигонов и вызовов отрисовки, а на высоком и очень высоком уровнях качества вся модель освещения переключается на HDR (high dynamic range) и полностью объёмные туман и освещение; также активно используются motion blur и глубина резкости (размытие движения очень сложно и включает в себя несколько проходов. большие шейдеры и многократное сэмплирование).
Значит ли это, что Crytek просто засунула в движок все возможные техники рендеринга, не задумываясь о производительности? Поэтому Crysis заслужил все эти шутки над собой? Хоть разработчики и нацеливались на самые лучше CPU и графические карты 2007 года, было бы несправедливым сказать, что компания не заботилась о том, насколько хорошо будет работать игра.
Распаковав шейдеры из файлов игры, можно увидеть в коде множество комментариев, многие из которых касаются вычислительных затрат с точки зрения команд и количества тактов АЛУ. В других комментариях написано, как конкретные шейдеры используются для повышения производительности и когда их лучше предпочесть другим ради скорости.
Обычно разработчики не создают игры таким образом, чтобы они полностью поддерживались изменяющимися со временем технологиями. Как только один проект завершён, они переходят к следующему, и применяют уроки прошлого в новых играх. Например, первая Mass Effect была довольно требовательной к «железу» и даже сегодня довольно медленно работает в 4K, зато её сиквелы работают вполне нормально.
Crysis разрабатывался так, чтобы игра была максимально красивой, оставаясь при этом играбельной, учитывая тот факт, что игры на консолях обычно работали с 30 fps или даже меньше. Когда настало время переходить к разработке обязательных сиквелов, Crytek, очевидно, решила уменьшить масштаб, и игры наподобие Crysis 3 работают заметно лучше, чем первая часть — это просто ещё одна красивая игра, но она не обладает тем самым вау-фактором своего предшественника.
Ещё одна попытка
В апреле 2020 года Crytek объявила, что займётся ремастерингом Crysis для PC, Xbox One, PS4 и Switch, и намеревается выпустить его в июле (компания здесь явно упустила свой шанс, ведь действие оригинальной игры начинается в августе 2020 года!).
Вскоре за этим последовали извинения за задержку выпуска, необходимую для доведения игры до «стандартов, которые мы ожидаем от игр серии Crysis».
Нужно сказать, что реакция на трейлер и утечки роликов геймплея были довольно смешанными, люди критиковали отсутствие визуальных отличий от оригинала (в некоторых областях игра даже стала заметно хуже). Неудивительно, что за заявлением последовали кучи комментариев, повторяющих старые мемы — даже Nvidia решила в этом поучаствовать, опубликовав твит о том, что «включает свой суперкомпьютер».
Извините, данный ресурс не поддреживается. :(
Когда первая часть попала на Xbox 360 и PS3, в неё были внесены некоторые улучшения, в основном касающиеся модели освещения, однако разрешение текстур и сложность объектов значительно ухудшили.
Поскольку ремастер планируется выпустить на нескольких платформах, будет интересно увидеть, продолжит ли Crytek свою традицию или пойдёт по безопасной дороге, чтобы были довольны все. Сегодня Crysis 2007 года по-прежнему оправдывает свою репутацию, и вполне заслуженноso. Планки того, что можно достичь в играх для PC, стремятся достичь и сегодня.
===========
Источник:
habr.com
===========
===========
Автор оригинала: Nick Evanson
===========Похожие новости:
- [WebGL, Работа с 3D-графикой] Минимальный WebGL в 75 строках кода (перевод)
- [Дизайн игр, Игры и игровые приставки, Финансы в IT] Особенности разработки игры для браузера
- [OpenStreetMap, Геоинформационные сервисы, Интервью, Работа с 3D-графикой, Разработка игр] Роман Шувалов: «Мне пришла в голову идея — сделать трехмерный рендер карты OpenStreetMap»
- [Разработка игр, Дизайн игр, Логические игры] Сплетая дизайн
- [Гаджеты, Игры и игровые приставки, Компьютерное железо, Разработка на Raspberry Pi] Энтузиасты установили Steam на Raspberry Pi 4 и смогли запустить там некоторые игры
- [CSS, HTML, JavaScript, Разработка игр] Создание браузерных 3d-игр с нуля на чистом html, css и js. Часть 2/2
- [Игры и игровые приставки, Монетизация игр, Продвижение игр] Как увеличить удержание в игре при помощи коллабораций (перевод)
- [C++, Разработка игр] Source Modding — Часть 2 — Всё есть сущность
- [Дизайн игр, Разработка игр] В играх детям нравятся атрибуты взрослой жизни: как мы разрабатывали обучающую игру для младших школьников
- [C++, Разработка игр] Source Modding — Часть 1 — Основы основ
Теги для поиска: #_razrabotka_igr (Разработка игр), #_igry_i_igrovye_pristavki (Игры и игровые приставки), #_crysis, #_crytek, #_cryengine, #_far_cry, #_ubisoft, #_konvejer_renderinga (конвейер рендеринга), #_shejdery (шейдеры), #_pikselnye_shejdery (пиксельные шейдеры), #_vershinnye_shejdery (вершинные шейдеры), #_razrabotka_igr (
Разработка игр
), #_igry_i_igrovye_pristavki (
Игры и игровые приставки
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:59
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Каждый год выпускаются сотни новых игр. Некоторые из них добиваются успеха и продаются миллионами копий, но само по себе это не гарантирует статуса легенды. Однако изредка появляются игры, которые становятся частью истории отрасли, и мы продолжаем обсуждать их и играть в них спустя годы после выпуска. Для игроков на PC есть одна игра, ставшая почти легендарной благодаря своей невероятной, обогнавшей своё время графике и способности снижать фреймрейты компьютера до однозначных чисел. Позже она стала знаменитой благодаря тому, что на десяток лет превратилась в надёжный источник мемов. В этой статье мы расскажем о Crysis и о том, что сделало его таким уникальным. Первые дни Crytek Прежде чем погрузиться в историю Crysis, стоит совершить краткое путешествие во времени и узнать, как было заложено основание Crytek. Эта компания по разработке ПО была основана осенью 1999 года в Кобурге, Германия тремя братьями — Авни, Джеватом и Фаруком Йерли. Объединившись под руководством Джевата, братья начали создавать демо игр для PC. Важнейшим из ранних проектов компании стал X-Isle: Dinosaur Island. Студия рекламировала это и другие демо на выставке E3 1999 года в Лос-Анджелесе. Одной из множества компаний, которым братья Йерли рекламировали своё программное обеспечение, была Nvidia, особенно восхитившаяся X-Isle. И на то есть причины: графика демо была для того времени удивительной. Огромные расстояния отрисовки объектов в сочетании с красивым освещением и реалистичными поверхностями оказывали поразительный эффект. Для Nvidia демо Crytek было превосходным инструментом рекламы будущей линейки графических карт GeForce, поэтому компании заключили сделку — когда в феврале 2001 года GeForce 3 вышла на рынок, Nvidia использовала X-Isle для демонстрации возможностей карты. Получив после успеха X-Isle столь необходимый доход, Crytek могла приступить к созданию полной игры. Её первый проект под названием Engalus рекламировался на протяжении 2000 года, но в конечном итоге компания его забросила. Причины этого не совсем ясны, но благодаря известности, полученной из-за сделки с Nvidia, Crytek вскоре заключила ещё один контракт с крупной студией: французской игровой компанией Ubisoft. Его условия заключались в создании полной игры AAA-уровня на основе X-Isle. В результате получилась выпущенная в 2004 году игра Far Cry. Несложно заметить, как технологические аспекты X-Isle нашли своё место в Far Cry. Нам снова подарили обширные ландшафты, насыщенные роскошной растительностью и отрендеренные в самой передовой графике. Хоть игра и не получила популярности у критиков, Far Cry довольно неплохо продавалась, а Ubisoft увидела огромный потенциал в бренде и в игровом движке, созданном Crytek. Был подписан ещё один контракт, по которому Ubisoft сохраняла за собой полные права на интеллектуальную собственность Far Cry и бессрочно лицензировала движок Crytek под названием CryEngine. Постепенно, с течением лет, он превратился в собственный движок компании Duniaengine, используемый в таких играх, как Assassin's Creed II и следующих трёх частях серии Far Cry. К 2006 году Crytek перешла под крыло Electronic Arts и перенесла свои офисы в Франкфурт. Разработка CryEngine продолжилась и было объявлено о новом игровом проекте компании: Crysis. С самого начала Crytek хотела, чтобы игра стала демонстрацией технологических возможностей компании; совместно с Nvidia и Microsoft она работала над расширением возможностей оборудования с поддержкой DirectX 9. Позже игра будет использоваться для рекламы функций DirectX 10, но это произойдёт на довольно поздних этапах разработки проекта. 2007: золотой год видеоигр Выпуск Crysis был запланирован на конец 2007 года, который оказался замечательным для игр, особенно с точки зрения графики. Можно сказать, что поток хитов начался годом ранее, когда The Elder Scrolls IV: Oblivion задала планку того, как должен выглядеть открытый мир 3D-игры (если не считать модели персонажей) и достижимого в ней уровня взаимодействий. Несмотря на всё своё графическое великолепие, Oblivion проявлял признаки ограничений разработки под разные платформы, а именно, под PC и консоли того времени. Xbox 360 и PlayStation 3 были сложными машинами, довольно сильно отличавшимся архитектурно от систем под Windows. Xbox 360 компании Microsoft имела уникальные для этой консоли CPU и GPU: трёхъядерный чип PowerPC компании IBM и графический чип ATI, который мог похвастаться унифицированной системой шейдеров. Консоль Sony содержала в себе довольно обычный GPU Nvidia (модифицированный GeForce 7800 GTX), однако CPU был совершенно нестандартным. Процессор Cell, совместно разработанный Toshiba, IBM и Sony, обладал ядром PowerPC, однако ещё и содержал внутри 8 векторных сопроцессоров. Плата первой версии PlayStation 3. Изображение: Википедия Из-за того, что каждая консоль имела собственные уникальные преимущества и особенности, создание игр, которые бы хорошо работали и на них, и на PC, было серьёзной задачей. Большинство разработчиков обычно были нацелены на «наименьший общий множитель», то есть ограничивались относительно малыми объёмом системной и видеопамяти, а также самыми базовыми графическими функциями систем. Xbox 360 имел всего 512 МБ общей памяти GDDR3 и дополнительные 10 МБ встроенной DRAM для графического чипа, а в PS3 было установлено 256 МБ системной памяти XDR DRAM и 256 МБ GDDR3 для Nvidia GPU. Однако к середине 2007 года самые мощные PC уже могли быть оснащены 2 гигабайтами системной ОЗУ DDR2 и 768 МБ GDDR3 на графической плате. Консольные версии игр имели фиксированные параметры графики, а версии для PC обеспечивали гибкость настройки. При максимальных настройках с нагрузкой иногда не справлялись даже самые мощные компьютеры того времени. Такая ситуация возникла, потому что игра разрабатывалась с целью максимальной производительности в максимальных разрешениях консолей Xbox 360 и PS3 (то есть 720p или 1080p с масштабированием) при 30 кадрах в секунду, поэтому хотя компоненты PC и были лучше, их работа с более детализированной графикой и повышенными разрешениями значительно повышала нагрузку. Первым аспектом, в котором была ограничена эта конкретная 3D-игра из-за объёма памяти консолей, стал размер текстур, поэтому по возможности применялись текстуры меньшего разрешения. Кроме того, довольно низким было и количество полигонов, используемое при создании окружений и моделей. Если взглянуть на ещё одну сцену из Oblivion в каркасном режиме (без текстур), то мы увидим, что деревья созданы максимум из нескольких сотен треугольников. Листья и трава — это просто текстуры с прозрачными областями, создающие ощущение того, что каждая травинка является отдельным объектом. Модели персонажей и статичных объектов, например, зданий и камней, созданы из большего количества полигонов, но в целом большее внимание было уделено дизайну и освещению сцен, а не геометрии и сложности текстур. При создании графики разработчики не стремились к реализму — действие Oblivion происходит в напоминающем мультфильм фэнтезийном мире, поэтому ему простительна нехватка изощрённого рендеринга. Тем не менее, похожую ситуацию можно наблюдать и в одной из самых крупных игр 2007 года: Call of Duty 4: Modern Warfare. Эта игра, действие которой происходит в современном реальном мире, была разработана Infinity Ward и издана Activision на движке, изначально построенном на id Tech 3 (Quake III Arena). Разработчики адаптировали и сильно изменили его, чтобы он смог рендерить все графические «фишки», популярные в то время: bloom, HDR, самозатенение, динамическое освещение и наложение теней. Но как видно на изображении выше, качество текстур и количество полигонов остались довольно низкими, тоже из-за ограничений консолей той эпохи. Объекты, постоянно находящиеся в поле зрения (например, оружие в руках игрока) имеют хорошую детализацию, однако статическое окружение было довольно простым. Все эти объекты искусно были спроектированы так, чтобы выглядеть максимально реалистичными, поэтому продуманное использование света и теней вместе хитрыми эффектами частиц и плавными анимациями волшебным образом улучшали сцены. Но как и в случае с Oblivion, Modern Warfare на PC всё равно была очень требовательной при максимальных настройках — очень важен был многоядерный CPU. Ещё одним многоплатформенным хитом 2007 года был BioShock. Визуальный дизайн этой игры в антураже подводного города в альтернативной реальности 1960 года был ключевым элементом повествования и развития персонажей. На этот раз при создании игры использовался модифицированный движок Unreal Engine компании Epic, и как и упомянутые выше игры, BioShock реализовал полный набор графических технологий. При этом нельзя сказать, что разработчики по возможности не экономили — взгляните на руку персонажа с изображения выше, на ней легко заметны края использованных в модели полигонов. Кроме того, градиент освещения на коже тоже довольно резкий, что говорит о довольно малом количестве полигонов. Как и в случае с Oblivion и Modern Warfare, многоплатформенность игры означала низкое разрешение текстур. Уровень качества графики поднимали кропотливая работа над освещением и тенями, эффекты частиц для воды и изысканный дизайн. Эта ситуация повторялась и в других играх, разрабатывавшихся для PC и консолей: в Mass Effect, Half Life 2: Episode Two, Soldier of Fortune: Payback, и Assassin's Creed использовался схожий подход к реализации графики. Crysis, с другой стороны, задумывался как игра только для PC и имел потенциал быть свободным от аппаратных и программных ограничений консолей. Crytek на примере Far Cry уже доказала, что знает, как максимально использовать возможность графики и вычислительных мощностей… но если PC испытывают трудности с запуском при максимальных настройках новых игр, разработанных для консолей, то почему для Crysis ситуация должна быть лучше? Всё и сразу На ежегодной конференции SIGGRAPH 2007, посвящённой графическим технологиям, Crytek опубликовала документ с описанием исследований и разработок, проведённых компанией для создания CryEngine 2 — потомка движка, который использовался при написании Far Cry. В этом документе компания изложила цели, которые должен достичь движок:
В первой игре, разработанной на CryEngine 2, а именно в Crysis, разработчики достигли всех целей, кроме одной — игровую область пришлось уменьшить всего до 4 км x 4 км. Может показаться, что это много, но игровой мир Oblivion был по площади в 2,5 раза больше. Тем не менее, стоит обратить внимание на то, чего удалось добиться Crytek в меньшем масштабе. Игра начинается на побережье покрытого джунглями острова, расположенного неподалёку от Филиппин. На него вторглись войска Северной Кореи, и проводившая на острове раскопки группа американских археологов позвала на помощь. Вас со своей командой, одетой в специальные нанокостюмы (дающие вам суперсилу, скорость и кратковременную невидимость) отправили разведать ситуацию. Первые несколько уровней с лёгкостью демонстрируют, что заявления разработчиков Crytek не были преувеличением. Море представляет собой сложный меш из реальных 3D-волн, взаимодействующих с объектами в нём — присутствуют подводные лучи света, отражение и преломление, каустика и рассеяние света, накатывающиеся на берег волны. Всё это выглядит неплохо и по современным стандартам, хоть и удивительно, что несмотря на все усилия, вложенные Crytek в создание внешнего вида воды, действие игры в однопользовательском режиме почти в ней почти не происходит. Можно посмотреть на небо и подумать, насколько правильно оно выглядит. Так и должно быть, ведь движок игры вычисляет уравнение рассеивания света на CPU, учитывая при этом время суток, расположение Солнца и другие атмосферные условия. Результаты вычислений сохраняются в текстуре значений с плавающей запятой, которая затем используется GPU для рендеринга скайбокса (купола неба). Облака, которые мы видим вдалеке, «реальны», то есть не просто являются частью скайбокса или наложенными текстурами. Это набор небольших частиц, почти как настоящие облака, а для определения местонахождения объёма частиц в 3D-мире используется процесс под названием ray-marching. И поскольку облака являются динамическими объектами, они отбрасывают тени на сцену (хотя здесь этого и не видно). Прохождение первых уровней демонстрирует ещё одни свидетельства возможностей CryEngine 2. На приведённом выше скриншоте мы видим богатое детализированное окружение — направленное и косвенное освещение является динамическим, все деревья и кусты отбрасывают тени на самих себя и другую растительность. Ветви движутся, когда вы протискиваетесь через них, а небольшие пеньки можно расстрелять, чтобы они не мешали обзору. Кстати, о расстреливании предметов: Crysis позволяет нам уничтожить множество объектов — транспорт и здания можно взрывать на осколки. Враг спрятался за стеной? Не заморачивайся стрельбой через стену, как это было в Modern Warfare, а просто вынеси её целиком. Как и в случае с Oblivion, почти любой предмет можно поднять и выбросить, хотя и жалко, что Crytek не расширила возможности этой функции. Было бы здорово поднять джип и бросить его в толпу солдат — максимум что мы можем сделать — это немного побить его рукой, надеясь, что он достаточно сдвинется, чтобы нанести урон. И всё равно: в каких ещё играх можно убить противника курицей или черепахой? Даже сегодня эти сцены сильно впечатляют, а уж в 2007 году это стало колоссальным скачком вперёд в технологиях рендеринга. Но несмотря на все свои инновации, Crysis можно считать достаточно стандартной игрой, потому что эпичные горные виды и красивые локации скрывали линейность и предсказуемость геймплея. Например, в те времена популярными были уровни, в которых игрок перемещался только на транспорте, поэтому неудивительно, что Crysis последовал этой моде. Спустя какое-то время после успешного вторжения на остров вам поручают управлять стильным танком, но заканчивается всё очень быстро. Возможно, это и к лучшему, ведь управление им неудобно, и игрок может пройти уровень, даже не участвуя в битве. Наверняка есть не так много людей, которые не играли в Crysis или не знают в общем его сюжет, но мы не будем вдаваться в его подробности. Как бы то ни было рано или поздно игрок попадает на уровни глубоко под землёй, в таинственную систему пещер. Она довольно красива, но часто запутывает и вызывает клаустрофобию. Она хорошо демонстрирует системы объёмного освещения и тумана движка, в которых тоже используется ray-marching. Он не идеален (по краям оружия заметно слишком сильное размытие), зато движок с лёгкостью обрабатывал множество направленных источников освещения. Выбравшись из системы пещер, игрок направляется в морозную часть острова с напряжёнными битвами и ещё одной стандартной геймплейной частью: миссией по сопровождению. Систему рендеринга снега и льда разработчики из Crytek переделывали четыре раза, едва успевая выполнять работу в срок. Конечный результат получился очень красивым: снег накладывается отдельным слоем на поверхности, а замёрзшие частицы воды мерцают в лучах света, однако графика чуть менее эффективна, чем на предыдущих сценах с побережьем и джунглями. Взгляните на большой булыжник в левой части изображения: текстуры там не очень. Позже, мы возвращаемся в джунгли и, к сожалению, нас ждёт ещё один транспортный уровень. На этот раз небольшому десантному транспорту (создатели которого явно вдохновлялись «Чужими») нужен пилот на замену, и им, разумеется, будете вы (разве есть что-то, чего не умеют наши солдаты?). И снова игровой процесс заключается в кратковременной борьбе с неуклюжей системой правления и беспорядочной стрельбе, в которой можно и не участвовать. Любопытно, что когда спустя четыре года Crytek выпустила консольную версию Crysis, весь этот уровень был вырезан. Вероятно, активное использование систем облаков на основе частиц, сложная геометрия и дальние расстояния отрисовки были слишком большой нагрузкой для Xbox 360 и PS3. Игра завершается очень напряжённой битвой на борту авианосца с обязательным боем с боссом в стиле «я ещё не умер». Часть графики в этом фрагменте игры очень впечатляет, но дизайн уровня несравним с дизайном предыдущих этапов. В целом, в Crysis было интересно играть, но сюжет оказался не особо оригинальным — во многом игра стала духовным потомком Far Cry, как с точки зрения антуража, так и в выборе оружия, а также в сюжетных поворотах. Даже разрекламированная функция нанокостюма была реализована не полностью, потому что обычно его возможности почти не требовались. Кроме пары мест, где необходим был режим силы, для прохождения оказывалось вполне достаточно стандартного щита. Игра была потрясающе прекрасна, она стала самым красивым релизом 2007 года (и многих лет после), но Modern Warfare имела гораздо более качественный мультиплеер, BioShock обладал более богатым сюжетом, а Oblivion и Mass Effect обеспечивали гораздо бОльшую глубину и реиграбельность. Но, разумеется, все мы точно знаем, почему спустя 13 лет мы по-прежнему говорим о Crysis — всё сводится к мемам… Расплачиваться за всю это великолепную графику пришлось аппаратными требованиями, и запуск игры на максимальных настройках казался недостижимым для самых мощных PC того времени. На самом деле, такое ощущение сохранялось год за годом — появлялись новые CPU и GPU, но все они не могли запускать Crysis в том же качестве, что и другие игры. Да, графика может быть и радовала, зато низкая частота обновления кадров, которая, казалось, никогда не увеличивалась, определённо огорчала. Почему всё настолько серьёзно? Crysis был выпущен в ноябре 2007 года, но демо из одного уровня и редактор карт стали доступными месяцем ранее. Наш сайт уже тогда занимался бенчмарками оборудования и игр для PC, поэтому мы протестировали производительность этого демо (а позже и патч 1.1 с SLI/Crossfire). Мы выяснили, что игра ведёт себя довольно неплохо… но только на самых лучших графических картах того времени и со средними параметрами графики. Как только мы переключались на высокое качество, GPU среднего ценового уровня сразу же выдыхались. Хуже того — рекламируемый режим DirectX и сглаживание почти не помогали внушить уверенность в потенциале игры. В ранних предварительных обзорах в прессе уже говорилось о далеко неидеальных частотах кадров, но Crytek обещала, что грядут дальнейшие усовершенствования и обновления. Так из-за чего игра была настолько требовательной к «железу»? Мы можем получить представление о том, что происходит внутри игры, запустив её со включенным режимом «devmode». Этот режим открывает доступ к консоли, позволяющей включать всевозможные настройки и читы, а также отображать оверлей с информацией рендеринга. На показанном выше скриншоте, сделанном почти в начале игры, мы видим среднюю частоту кадров и количество занятой игрой системной памяти. Значения Tris, DP и DLights отображают количество треугольников на кадр, количество вызовов отрисовки на кадр и число направленных (и динамических) источников освещения. Для начала поговорим о полигонах: в этом кадре их 2,2 миллиона. Именно столько использовано для построения сцены, хоть и не все они отображаются на экране (невидимые отсекаются на ранних этапах процесса рендеринга). Основная часть этого количества относится к растительности, потому что Crytek решила отрисовывать отдельные листья на деревьях, а не использовать простые текстуры с прозрачностью. Даже в относительно простых окружениях используется огромное количество полигонов (по сравнению с другими играми того времени). На этом изображении более позднего этапа игры видно не так много, потому что он тёмный и находится под землёй, но здесь всё равно около 700 тысяч полигонов. Сравните также разницу в количестве направленных источников освещения: в сцене на открытом пространстве в джунглях он только один (т.е. Солнце), однако в этом окружении их 10. Кажется, что это не так много, но каждый динамический источник освещения отбрасывает активные тени. Для их реализации Crytek использовала смесь технологий, и хотя все они современны по меркам того времени (каскадные и дисперсионные карты теней с флуктуационным сэмплированием для сглаживания краёв), они добавляют серьёзную нагрузку на процесс обработки вершин. Значение DP сообщает нам, сколько раз отдельный материал или визуальный эффект «вызывается» для объектов в кадре. Для нас полезна консольная команда r_stats — она подробно отображает структуру вызовов отрисовки, а также используемых шейдеров, подробности обработки геометрии и загрузки текстур в сцене. Вернёмся снова к сцене в джунглях и посмотрим, что использовалось для создания этого изображения. Мы запустили игру в разрешении 4K, чтобы получить скриншоты максимального качества, поэтому статистическая информация видна не так чётко. Давайте её приблизим. В этой сцене вызывается более 4 тысяч групп полигонов для 2,5 миллиона треугольников окружения, чтобы наложить на них 1 932 текстуры (хотя большинство из них повторяется, например, в таких объектах, как деревья и земля). Самый большой вершинный шейдер необходим для подготовки эффекта размытия движения (motion blur), он состоит из 234 команд, а пиксельный шейдер рельефа состоит из 170 команд. Для игры 2007 года такое количество вызовов чрезвычайно высоко, потому что излишние траты CPU в DirectX 9 (и, в меньшей степени, в DirectX 10) для выполнения каждого вызова не были так уж тривиальны. Вскоре после Crysis некоторые игры AAA-уровня для консолей будут вмещать в себя такое количество полигонов, но их графическое ПО было гораздо более специализированным, чем DirectX. Мы можем разобраться в этой проблеме при помощи Batch Size Test из пакета 3DMark06. Этот инструмент с поддержкой DirectX 9 отрисовывает на экране серию движущихся и меняющих цвет прямоугольников, в каждой последующей сессии увеличивая количество треугольников. При тестировании на GeForce RTX 2080 Super результаты демонстрируют заметную разницу в производительности при разных размерах групп полигонов. Мы не можем легко определить, сколько треугольников обрабатывается в одной группе, но если показанное число учитывает все использованные полигоны, то на группу в среднем приходится всего около 600 треугольников, что слишком мало. Вероятно, этой проблеме противодействует большое количество экземпляров (то есть за один вызов объект может быть вызван несколько раз). На некоторых уровнях Crysis используется ещё большее количество вызовов отрисовки; хорошим примером этого является битва на авианосце. На изображении ниже мы видим, что несмотря на меньшее по сравнению со сценой в джунглях количество треугольников, из-за огромного количества перемещаемых, текстурируемых и индивидуально освещаемых объектов узким местом в производительности рендеринга становятся CPU и системы графических API/драйверов. Многие критиковали Crysis за плохую оптимизацию под многоядерные CPU. Большинство мощных игровых PC ещё до выпуска игры было оснащено двухъядерными процессорами, AMD в одно время с её выпуском начала продавать свою линейку четырёхъядерных Phenom X4, а у Intel были четырёхъядерные CPU ещё в начале 2007 года. Действительно ли Crytek упустила это из виду? Мы запустили стандартное CPU2 timedemo на современном 8-ядерном Intel Core i7-9700, поддерживающем до 8 потоков. Похоже, в этих обвинениях была некоторая истина: хотя общая производительность оставалась не такой плохой для теста в разрешении 4K, частота кадров довольно часто падала ниже 25 fps, а временами и до однозначных чисел. Однако если запустить тесты снова, но на этот раз ограничить количество доступных ядер в BIOS материнской платы, то можно увидеть и другую сторону истории. Существует заметный рост производительности при переходе от одного к двум ядрам, и ещё один рост при переходе от двух к четырём (хоть и гораздо меньший). Дальше заметных отличий нет, но игра определённо использует наличие нескольких ядер. Учитывая то, что после выпуска игры четырёхъядерные CPU станут нормой только через несколько лет, у Crytek не было реальной необходимости в дальнейших оптимизациях. В DirectX 9 и 10 выполнение графических команд обычно производится в одном потоке (потому что в противном случае сильно снижается производительность). Это означает, что при большом количестве вызовов отрисовки, наблюдаемом во многих сценах, серьёзно загружены только одно или два ядра — ни одна из версий графического API не позволяет использовать множественные потоки для помещения в очередь того, что нужно вывести на экран. То есть дело не в том, что Crysis неправильно поддерживает многопоточность — очевидно, что причина в ограничениях DirectX; на самом деле в падении производительности виноваты решения о дизайне игры и повлиявшие на рендеринг (например, точно моделируемые деревья, динамические и разрушаемые окружения). Помните скриншот уровня в пещере? Обратите внимание, что значение DP было ниже 2 000, а потом посмотрите на счётчик FPS. Что же ещё настолько требовательно, кроме вызовов отрисовки и проблемы с API? На самом деле, практически всё. Вернёмся к сцене, по которой мы объясняли смысл вызовов отрисовки, но на этот раз переключим все графические опции на минимальные настройки. Из информации devmode мы можем понять очевидные факты: при использовании минимальных настроек количество полигонов уменьшается вдвое, а вызовов отрисовки становится меньше почти в четыре раза. Но обратите внимание на отсутствие теней, а также ambient occlusion и красивого освещения. Однако самое странное изменение заключается в уменьшении области видимости — этот простой трюк снижает количество геометрии и пикселей, которые нужно рендерить в кадре, потому что всё, что не попадает в окно просмотра, отсекается на ранних этапах процесса. Дальнейшее углубление в статистику позволяет пролить ещё больше света на ситуацию. Здесь можно видеть, насколько меньше стала нагрузка на шейдеры — самый большой пиксельный шейдер содержит всего 40 команд (раньше их было 170). Самый большой вершинный шейдер довольно велик — 152 команд, но он используется только для поверхностей с металлическим отражением. Циклическое изменение параметров качества — Low, Medium, High, and Very High При улучшении параметров графики наложение теней значительно повышает общее количество полигонов и вызовов отрисовки, а на высоком и очень высоком уровнях качества вся модель освещения переключается на HDR (high dynamic range) и полностью объёмные туман и освещение; также активно используются motion blur и глубина резкости (размытие движения очень сложно и включает в себя несколько проходов. большие шейдеры и многократное сэмплирование). Значит ли это, что Crytek просто засунула в движок все возможные техники рендеринга, не задумываясь о производительности? Поэтому Crysis заслужил все эти шутки над собой? Хоть разработчики и нацеливались на самые лучше CPU и графические карты 2007 года, было бы несправедливым сказать, что компания не заботилась о том, насколько хорошо будет работать игра. Распаковав шейдеры из файлов игры, можно увидеть в коде множество комментариев, многие из которых касаются вычислительных затрат с точки зрения команд и количества тактов АЛУ. В других комментариях написано, как конкретные шейдеры используются для повышения производительности и когда их лучше предпочесть другим ради скорости. Обычно разработчики не создают игры таким образом, чтобы они полностью поддерживались изменяющимися со временем технологиями. Как только один проект завершён, они переходят к следующему, и применяют уроки прошлого в новых играх. Например, первая Mass Effect была довольно требовательной к «железу» и даже сегодня довольно медленно работает в 4K, зато её сиквелы работают вполне нормально. Crysis разрабатывался так, чтобы игра была максимально красивой, оставаясь при этом играбельной, учитывая тот факт, что игры на консолях обычно работали с 30 fps или даже меньше. Когда настало время переходить к разработке обязательных сиквелов, Crytek, очевидно, решила уменьшить масштаб, и игры наподобие Crysis 3 работают заметно лучше, чем первая часть — это просто ещё одна красивая игра, но она не обладает тем самым вау-фактором своего предшественника. Ещё одна попытка В апреле 2020 года Crytek объявила, что займётся ремастерингом Crysis для PC, Xbox One, PS4 и Switch, и намеревается выпустить его в июле (компания здесь явно упустила свой шанс, ведь действие оригинальной игры начинается в августе 2020 года!). Вскоре за этим последовали извинения за задержку выпуска, необходимую для доведения игры до «стандартов, которые мы ожидаем от игр серии Crysis». Нужно сказать, что реакция на трейлер и утечки роликов геймплея были довольно смешанными, люди критиковали отсутствие визуальных отличий от оригинала (в некоторых областях игра даже стала заметно хуже). Неудивительно, что за заявлением последовали кучи комментариев, повторяющих старые мемы — даже Nvidia решила в этом поучаствовать, опубликовав твит о том, что «включает свой суперкомпьютер». Извините, данный ресурс не поддреживается. :( Когда первая часть попала на Xbox 360 и PS3, в неё были внесены некоторые улучшения, в основном касающиеся модели освещения, однако разрешение текстур и сложность объектов значительно ухудшили. Поскольку ремастер планируется выпустить на нескольких платформах, будет интересно увидеть, продолжит ли Crytek свою традицию или пойдёт по безопасной дороге, чтобы были довольны все. Сегодня Crysis 2007 года по-прежнему оправдывает свою репутацию, и вполне заслуженноso. Планки того, что можно достичь в играх для PC, стремятся достичь и сегодня. =========== Источник: habr.com =========== =========== Автор оригинала: Nick Evanson ===========Похожие новости:
Разработка игр ), #_igry_i_igrovye_pristavki ( Игры и игровые приставки ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:59
Часовой пояс: UTC + 5