Как стать автором
Обновить

Комментарии 26

Но как и в случае с Oblivion, Modern Warfare на PC всё равно была очень требовательной при максимальных настройках — очень важен был многоядерный CPU.
На самом деле, такое ощущение сохранялось год за годом — появлялись новые CPU и GPU, но все они не могли запускать Crysis в том же качестве, что и другие игры.
Да, графика может быть и радовала, зато низкая частота обновления кадров, которая, казалось, никогда не увеличивалась, определённо огорчала.
И, к превеликой печали, продолжает радовать но огорчать.
А дело, видимо, в том что в упомянутом документе, опубликованном на SIGGRAPH 2007, не описываются планы по совершенствованию «Поддержки систем с несколькими CPU и GPU», а лишь упоминается сложность данного процесса:
Advanced Real-Time Rendering in 3D Graphics and Games Course – SIGGRAPH 2007
Finding Next Gen – CryEngine 2
Martin Mittring, Crytek GmbH

Support for multiple GPU and multiple CPU (MGPU & MCPU)
Development with multithreading and multiple graphic cards is much more complex and often it’s hard to not scarify other configurations.

К тому же:
Многие критиковали Crysis за плохую оптимизацию под многоядерные CPU.
Учитывая то, что после выпуска игры четырёхъядерные CPU станут нормой только через несколько лет, у Crytek не было реальной необходимости в дальнейших оптимизациях.

И хотя
В DirectX 9 и 10 выполнение графических команд обычно производится в одном потоке (потому что в противном случае сильно снижается производительность). Это означает, что при большом количестве вызовов отрисовки, наблюдаемом во многих сценах, серьёзно загружены только одно или два ядра
То есть дело не в том, что Crysis неправильно поддерживает многопоточность — очевидно, что причина в ограничениях DirectX
движок, тем не менее, мог бы эффективнее использовать ядра, незадействованные DirectX'ом, для других нужд — подгрузки объектов и уровней, например. Ведь зачастую выполнение этих операций вызывает заметную просадку fps. Также можно было бы подумать о создании очереди на фоновый рендеринг объектов — во время уменьшения нагрузки на DirectX проводить рендеринг объектов, у которых есть шанс скоро появиться в кадре.

Пример: игра на движке CryEngine 2 целиком находится в рамдиске, включена опция предварительной загрузки уровня целиком. На момент одновременного появления в кадре нескольких мобов с относительно несложной геометрией fps на долю секунды просаживается в два раза практически независимо от количества ядер и их частоты (а также от скорости накопителя — к нему обращений нет, т.к. уровень целиком в памяти).
Конечно, возможно что это особенность конкретной игры, но если бы это было так, не было бы оснований для появления вопроса:
Значит ли это, что Crytek просто засунула в движок все взможные техники рендеринга, не задумываясь о производительности? Поэтому Crysis заслужил все эти шутки над собой?

Складывается впечатление, что CryEngine 2 стеснялся использовать ОЗУ в достаточном объёме — только что произошёл переход на 64 бита, профицит ОЗУ был внове, и, возможно разработчики просто не стали исследовать открывшиеся широкие горизонты, по привычке довольствуясь привычной тесной песочницей.
Возможно, если бы свободные от работы на DirectX ядра занимались бы неторопливой фоновой подготовкой данных — загрузкой и распаковкой в безбрежное ОЗУ ресурс-паков, сортировкой и подготовкой данных для оптимизации загрузки неидеального DirectX и прочими независимыми от него процессами — мемов о легендарных тормозах движка могло быть заметно меньше.

Несмотря ни на что CryEngine — замечательный движок, с версии CryEngine V распространяемый вместе с SDK бесплатно — хочется пожелать ему и создавшей его компании долгих лет и процветания, а пользователям — достойных новинок.

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

Это так не работает. Что значит рендеринг объектов, у которых есть шанс скоро появиться в кадре? Рендерить объекты надо в том положении и ориентации, которые они займут в данном кадре. Заранее это сделать нельзя, т.к. не известно, как будет двигаться игрок. Это работает только для очень далёких объектов, таких как облака или острова в море на горизонте. Техника называется «импостеры» и применяется очень давно.

Возможно, если бы свободные от работы на DirectX ядра занимались бы неторопливой фоновой подготовкой данных — загрузкой и распаковкой в безбрежное ОЗУ ресурс-паков,

Это 100% делалось. Чем ещё, по-вашему, занимались другие ядра? Я в своём движке уже в 2007-2008 делал загрузку ресурсов в параллельных потоках, это был общий тренд в геймдеве.

В статье же объясняется, откуда тормоза — слишком много дипов, без аппаратного инстансинга (в то время его ещё не завезли). В современных движках, наоборот, стремятся как можно больше всего запихнуть в один дип (смерджить геометрию в один большой меш, чтобы отрисовать её одной командой) и использовать инстансинг (когда N копий объекта, например камня или куста, отрисовывается одной командой). А там же:

В этой сцене вызывается более 4 тысяч групп полигонов для 2,5 миллиона треугольников окружения, чтобы наложить на них 1 932 текстуры

т.е. грубо говоря один дип — всего 625 труегольников. И так 4000 раз! Это ужас как неоптимально. В современном движке то же самое рисовалось бы 100 дипами по 100к треугольников, и это работало бы в разы быстрее. 1932 текстуры, если они не собраны в одни огромный атлас, а переключаются для каждого дипа — это тоже очень сурово.

Для игры 2007 года такое количество вызовов чрезвычайно высоко, потому что излишние траты CPU в DirectX 9 (и, в меньшей степени, в DirectX 10) для выполнения каждого вызова не были так уж тривиальны.

Это справедливо и сейчас, поэтому существует инстансинг и прочие методы сокращения числа дипов. Теоретически, такую сложную вещь, как динамически изменямый/подгружаемый на ходу рельеф с уникальными текстурами в каждом патче (типа Google Earth) сегодня можно отрисовать одним вызовом.
Что значит рендеринг объектов, у которых есть шанс скоро появиться в кадре?
Не рендеринг того, что не видно, а постановку в очередь на рендеринг, т.е. поиск нужных объектов, чтение, распаковку. Ну и шейдеры заранее можно подготовить, а не ждать, пока отрисуются все эффекты — выглядит как спецэффекты из «трансформеров» — рядом бегут тела, обрастая по пути плотью. Тут уместна оговорка — я вовсе не сварщик, просто что вижу, о том пою. Конечно, какая-то очередь есть, но этого явно недостаточно — в описанной ситуации, когда вообще вся игра расположена в ОЗУ, а уровень целиком ещё и закэширован — занимает 2,5 ГБ, свободное ОЗУ ещё есть, что мешает разложить всё по полочкам, чтобы потом не было описанной просадки при появлении нескольких мобов четырёх классов?

Чем ещё, по-вашему, занимались другие ядра?
К сожалению, простаивают. CryEngine 2'64. Понимаю, что возможно так написана игра, но подобные тормоза, судя по отзывам на форумах, присущи всем играм на, как минимум, ранних версиях движка. Конечно, внутренняя кухня непроста, но должна же быть хоть какая-то положительная динамика у движка при работе на железе будущего (с его точки зрения)?

Пытался посмотреть, какие объекты наиболее тяжелы для видеокарты в игре, с помощью Intel Graphics Performance Analyzer — к сожалению, не перехватывает он эту игру, хотя другие — на ура. Спасибо vikky13 за обзор Intel GPA — продукт замечательный, жаль, что по-видимому не все разработчики используют подобные инструменты при разработке своих продуктов.

Google Earth да, красавчики, давно не заходил. Есть ещё Moon и Mars, они пока полегче, но это поправимо.

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

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

Конечно, какая-то очередь есть, но этого явно недостаточно — в описанной ситуации, когда вообще вся игра расположена в ОЗУ, а уровень целиком ещё и закэширован — занимает 2,5 ГБ, свободное ОЗУ ещё есть, что мешает разложить всё по полочкам, чтобы потом не было описанной просадки при появлении нескольких мобов четырёх классов?

А при чём здесь ОЗУ, видеокарта держит текстуры и модели в собственной памяти. Сколько там её было в топовых видеокартах в 2007, 512 Мб? Поэтому текстуры и загружаются на ходу по мере надобности, иначе было никак. В некоторых играх и сейчас без этого никак. Хотя видеопамяти уже 8+ Гб, но и текстуры тоже нехилые для 4к разрешения нужны, плюс несколько 4к рендер-таргетов.

К сожалению, простаивают. CryEngine 2'64. Понимаю, что возможно так написана игра, но подобные тормоза, судя по отзывам на форумах, присущи всем играм на, как минимум, ранних версиях движка.

Ну так движок писался под процессоры тех лет, когда 4 ядра было сверхкруто. И ожидали частот 10 ГГц «уже в скором будущем». Полагаю, поэтому ставка была сделана не на распараллеливание, а на ожидание большей скорости одного ядра в будущем.
А при чём здесь ОЗУ, видеокарта держит текстуры и модели в собственной памяти.
Во встроенных видеокартах, внезапно, очень даже причём. Но проблема в том, что на Ryzen 3600/GF RTX2060 происходит ровно то же, средний fps незначительно выше, но просадка столь же огромна, т.е. никакого насыщения и упора в условные 60 fps вне зависимости от нагрузки нет и близко.
Ну и ресурс-паки не прямо в видеопамять же распаковываются, иначе игра не съела бы 2,5 ГБ ОЗУ?

Ну так движок писался под процессоры тех лет, когда 4 ядра было сверхкруто. И ожидали частот 10 ГГц «уже в скором будущем». Полагаю, поэтому ставка была сделана не на распараллеливание, а на ожидание большей скорости одного ядра в будущем.
Будущее настало, но пока что ни марсианских яблочек, ни 10 ГГц процессоров всё ещё нет. Да, вероятно неправильно ожидать от древнего движка чудес производительности а от его авторов непогрешимой прозорливости, как и оптимизации современного железа и драйверов в том числе и под ускорение древних движков. А иногда хочется.
Так вы на встройке играете? Ну тогда конечно, чего вы ожидали. В те времена (да и сейчас, чего уж там) встройка годится только видео смотреть и какие-то 2д аркады гонять, не более.
Просадка при копировании данных в видеопамять может быть из-за того, что в 2007 в видеокартах не было асинхронного copy engine, поэтому копирование данных могло быть только в синхронном режиме, т.е. с остановкой конвеера, между кадрами. Аппаратные асинхронные PBO появились позже, врядли ли crytec занимались апдейтом старого движка ради этого.
За пояснения по встройке спасибо, но
проблема в том, что на Ryzen 3600/GF RTX2060 происходит ровно то же
На указанной конфигурации проверял, принципиальных изменений нет. Зачем гонять лишние 300 Вт, если гарантированного fps всё равно не будет?
Производители игрища сами пересобирают движок, похоже, у них есть исходники — пишут, что заоптимизировали всё вдоль и поперёк.
Ну если у них всё ещё 4000 дипов по 600 треугольников, то чего ожидать. А это изменить можно только редизайном уровня.
14 августа начну перепроходить (кто не знает, дата начала событий Crysis)
я походу единственный кто не обсуждает эту игру и в целом никогда не слышал обсуждений этой игры

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

В апреле 2020 года Crytek объявила, что займётся ремастерингом Crysis

Да шож такое-то, кризис жанра с кинематографа перекинулся на игры, ремейки-ремастеры ранее популярных игр под новое железо. AeO2, Скайрим, сегодня новость была, что собираются ремастерить Масс Эффект, Мафию недавно перерисовали, плюс всевозможные поделия фанатов по переносу старых игр на новые движки, в основном, на UE4.
Все, закономерно — геймдев входит в первый для себя 30-летний цикл (ну плюс-минус)… Ностальгия пришла и сцапала всех кому сейчас 30+. До кучи ремейкают всё, что хоть как-то выглядит устаревшим. Вся индустрия охотно и сама ностальгирует и зарабатывает на ностальгирующих. Кинематограф этим уже давно живет. Сейчас несколько лет такой фигни, потом снова нового захочется… Следующий такой парад ремейков к 40-50 годам стоит ждать.
По-моему, это неплохо. С удовольствием Full throttle и Metro 2033: Redux прошёл. AoE2 тоже хочу, но только недавно HD Edition прошел, где просто старый контент сделали работающим на современных ос/железе.
Ну а когда на Switch выпускают игры прошлых годов — так это вообще замечательно. Игра же не стала хуже от того, что время прошло с её создания.
Тут есть некая глобальная проблема на не-PC рынке. Это вы на windows можете условную AoE прямиком из 97-го запустить. Ну чисто теоретически. А у пользователя с PS4 такой возможности даже теоретически нет. И с первым крайзисом такая же беда. На консолях он остался на PS3, которая в тираж вышла уже черт его знает когда. При этом пользовательская база на той же PS4 просто огромная. И то, что на этой приставке нет первого крайзиса всего лишь означает что его можно туда немножко продать.

Одной из первых игр на PS5, я уверен, будет скайрим (может быть даже с какой-нибудь пафосной приставкой «ремастеред» или «алтимейт алтимейт», который бесезда успешно продает уже вот как 9 лет.

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

Почему нет? Множество отличных игр получат вторую жизнь. Мы же смотрим старые фильмы, отреставрированные.
В игры вложен огромный труд сценаристов, художников, программистов, многие имеют художественную и даже культурную ценность. По сути это часть культурного наследия, но из-за быстрого развития компьютерной техники становятся недоступными или неинтересными в современном мире.
Аналогия с кино ошибочная. В игровом мире постоянно появляются новые технологии, позволяющие пересоздать старую игру на новом уровне. Вот, например, реместер Crash Bandicoot — мечтал ли кто в 1996 году о такой картинке? И насчёт Mass Effect — в своё время не играл, недавно запустил в первый раз — да, интересно, но _хотелось бы покрасивее_ в 2020 году.
Так в кино же тоже технологии появляются. Раньше декорации строили, а теперь зелёные экраны и датчики.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Что-то хронология с моей памятью не очень совпадает

Однако к середине 2007 года самые мощные PC уже могли быть оснащены 2 гигабайтами системной ОЗУ

Да это в общем-то довольно обычный объем для 2007, далеко не самый крутой. Я себе как раз в 2007 2 ГБ поставил, и это была совсем не «самая мощная» конфигурация.

Да и обливион в 2006 упомянут как прорывный в плане графики и взаимодействия, а HL2 и Doom3 в 2004 как будто и не было…

С каждым абзацем начинаешь всё больше ценить Vulkan и современное железо.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории