Комментарии 209
А теперь минутку внимания. Игры весят так много ради того, чтобы сократить количество случайных обращений к файлам во время игры относительно текущей позиции считывания с HDD/SSD по секторам.
Наиболее показательный пример: Marvel Spider-Man, эксклюзив PS4. Директор студии (или кто-то из их топов, не помню), объяснил вес игры очень просто, далее вольный пересказ цитаты:
«Человек-паук весит так много, потому что нам постоянно приходилось дублировать одни и те же файлы для того, чтобы снизить нагрузку на накопитель и обеспечить бесшовный игровой опыт без внезапных пролагов и загрузок посреди игры. Многие текстуры и прочие графические файлы продублированы в игре по 7-8 раз».
Стремление сделать игровой опыт бесшовным — вот основная причина таких размеров современных игр. А не графон и все остальное прочее. Если убрать дублирование из топовых тайтлов, они вполне себе похудеют до привычных 20-25 гигов, вот только локации будут сильно ограничены, лоад-скринов станет на порядки больше, да и загрузки эти будут не сильно быстрыми.
И не пахнет тут никакой «хреновой оптимизацией» и «игроки заплатят». Это просто ограничения HDD, потому что большинство не может себе позволить терабайтный SSD для «игор», да и не нужен он, при такой цене за гиг на классических блинах.
Тогда поступали просто — грузили всё в видеопамять и никакого стриминга.
Стриминг появился уже потом, в 00-х.
А вот на PS1 он уже вовсю использовался в 90-х.
нет никаких проблем считывать файлы столько, сколько нужно.
Где-то в параллельной вселенной, где уже вышла PS6.
Тогда поступали просто — грузили всё в видеопамять и никакого стриминга.
Кстати, насчёт видеопамяти не скажу, но тот же первый Doom (1993 год) подгружает не все данные подряд сразу. Если запустить игру напрямую с CD — видно, как фризится игра при первых подгрузках недостающих звуков (первый раз стреляешь из дробовика и т.п.)
В новом поколении консолей ссд будет стандартом, и та же Сони, рассказывая о ПС5, делает на этом акцент, заявляя что у разработчиков больше не будет в этом необходимости и все новые игры «похудеют».
Всё это я к тому, что и оптимизировать умеют и относительно небольшие размеры делать.
Скорее всего, сейчас дублирование ресурсов происходит не в целях оптимизации загрузки, а в целях оптимизации времени разработки.
Не говоря о том, что в архивах игры есть куча неиспользуемых ресурсов, которые дата-майнеры выковыривают после релиза (типа пистолета в Дум Этёрнал).
А жёсткому диску разве не нагрузка лишние десятки гигабайт лопатить? Или сейчас, с дублями в отдельных паках, всё оптимизировано? Да и отыграли своё они, по крайней мере при нынешней плотности записи. SSD действительно предпочтительны, а у них со случайным доступом всё хорошо.
Разрабы спайдермена на пс4 действительно рассказывали, что дублируют данные так, чтобы система стриминга всегда линейно читала данные. А это игра с открытым миром, где все поделено на зоны. И в каждой зоне, по сути, будут какие-то дупликаты.
Годах этак в 2008-2009 я как раз такую систему пилил. Работал тогда в Creat Studios ныне почившей, делали игры для PS3. Была своя навороченная система упаковки-распаковки данных, как раз для того, чтобы избежать рандомных обращений к диску.
Но это все шло из еще более ранних консолей, из тех времен когда реально бились за каждый байт. А по ощущениям где-то начиная с того поколения консолей к этому стали менее серьезно относиться — мощности стало достаточно. Все еще меньше чем на ПК, и с особенностями, но уже не так чтобы игры в пару Мб пихать.
А не могли бы вы привести пример на комментарий к статье 2017 года? %)
У if-else есть один большой недостаток: ошибка копипасты. В switch невозможно по ошибке написать два одинаковых case, в if-else это случается постоянно.
Создал аккаунт на Хабре именно чтобы это узнать. Но оказалось, что оставлять комментарии под старыми статьями мне нельзя.
Пример? Ctrl+C, Ctrl+V… (отвлёкся)… Ещё раз Ctrl+V, редактируешь новое условие, забыв про предыдущее. Обнаруживаешь статическим анализатором или при тестировании.
Совершенно не факт, что способ кэширования файлов операционной системой — самый правильный, и подходит под конкретную задачу. Например, если ты качаешь торренты, то у торрент-качалки сильно больше понимания семантики происходящих операций, чем у операционной системы. (Какая там семантика у стриминга в играх — я хз, поэтому правильный пример подобрать не смогу)
Но, если говорить конкретно про игры. Напрмиер, ресурсы без дубликатов весят 10 гигабайт, а с дубликатами они весят 50 гигабайт (цифры от балды, могу ошибаться на порядки в любую сторону). В первом случае весь пак ресурсов может остаться в кэше ОС, а во втором случае у подавляющег большинства пользователей он уже в кэше не останется и для загрузки следующего уровня снвоа придётся читать с диска.
Да в крайнем случае вообще можно сделать как в EVE Online, когда скачивание моделей/текстур происходит поштучно, по требованию — по мере того, как они реально становятся нужны игроку.
А вообще это в первую очередь лень разработчиков. Зачем париться и что-то там делать? Ведь куда проще сделать жирнющий клиент, с текстурами на от экрана тостера до 8К, да еще и озвучку на 16 языков впихнуть. Ах, и еще дорожка для роликов-синематиков отдельным файлом — это сложно, поэтому засунем в клиент повторный видеоряд 16 раз.
Могу напомнить, что полтора года назад был скандал с Rainbow Six Siege, когда разработчикам было лень делать отдельный клиент для Китая, поэтому изменения под цензуру собирались сделать для всего мира.
А вообще это в первую очередь лень разработчиков. Зачем париться и что-то там делать? Ведь куда проще сделать жирнющий клиент, с текстурами на от экрана тостера до 8К, да еще и озвучку на 16 языков впихнуть.А не встанете ли вы потом в первых рядах ныть, что современные игры намертво приколочены к интернету?
Ну, коли на то пошло, жирная часть современных игр уже намертво приколочена к интернету %)
Но насчет радуги — я до сих пор не понимаю, что там на 20 небольших картах весит под 70 гигов. В такой объем не то что ультраХД текстуры — можно полнометражное кино в 720 качестве снять про каждого игрового оперативника в отдельности.
Посмотрим на первое попавшееся мне видео — Map Starter Guide Consulate. Там 3 этажа, по ~20 комнаток в каждом, каждая содержит с десяток различных объектов — это даёт порядка 600 текстур. Плюс есть ещё открытое пространство — допустим, это ещё 400 текстур. Тогда на каждую приходится всего 3.5 мб — что совсем немного, ведь даже простая несжатая картинка 24-bit 1920x1080 весит 6 мб — а для правильного отображения материалов в разных условиях освещённости может быть необходимо сразу несколько их для учёта карт нормалей и прочего, причём там и близко не пахнет сжимаемостью современных видеокодеков.
1) Консульство — среднестатистическая карта без извратов, есть покрупнее, есть поменьше. Комнат там дай Бог по 10 на этаж со всякими закоулками.
2) Однотонные стены и регулярные рисунки типа паркетов вряд ли представляют из себя большие текстуры.
3) Очень много объектов типа столов, гаражных дверей, холодильников, ограждений не уникальны. Серверная комната или детская есть вообще на каждой карте.
Я все же склоняюсь к указанной вами ресурсоемкости освещения + разрушаемости объектов. Но для классического шутана без открытого мира в сто километров все равно многовато.
на каждую приходится всего 3.5 мб — что совсем немного, ведь даже простая несжатая картинка 24-bit 1920x1080 весит 6 мб
Так а зачем их несжатыми хранить? Для реалистичных текстур — jpeg, для мультяшных — png.
И текстуры только в редких случаях можно сжимать с потерями:
В современных ААА проектах используется физически корректный рендер — PBR. Суть этой технологии: есть отдельная карта чистого цвета объекта без бликов и затенений, карта отвечающая за силу отражений, и карта передающая гладкость/шершавость поверхности, которая отвечает за размер блика.+ это всё накладывается на развёртку модели.
Если вылезут артефакты сжатия — то это может очень резко бросаться в глаза в виде областей пикселей совершенно левого цвета.
Это не только "лень", а тупо стоимость поддержки. Все эти дополнительные опции требуют дополнительных разработчиков. Чем больше разработчиков — тем медленней они работают (и каждый человек отдельно, и все вместе как команда). Медленные релизы и повысившаяся стоимость игры снижают ее качество на коммерческий успех.
Реальность: покупайте наших слонов.
блогеры на ютубе придумывают интеграцию рекламы в видео, а здесь придумывается статья под рекламу. крайне редко кто-то из корпораций обладает энтузиазмом писать какие-то статьи прст так. в подавляющем большинстве статья пишется для рекламной вставки. лишь варьируется степень вложения ресурсов в «техничность» статьи. где-то поверхностный обзор и реклама, а где-то хоть сколько-нибудь годное исследование.
Аналогично habr.com/ru/company/wd/blog/503368/?reply_to=21650620#comment_21648786.
Ну хз, например, я недавно писал в блоге работодателя статью про организацию пультовых для онлайн-трансляции конференций. Писал как на духу, было интересно поделиться и посмотреть, что скажут наши конкуренты, которые тоже у себя что-то организуют. Руководство не ставило задачи "написать статью под рекламу", скорее — "мы тут делаем крутые штуки, расскажи о них что-нибудь интересное". Вот, рассказал. На этой неделе напишу, как превратить офис в съемочную площадку. Единственная "реклама" там в том, что это не какая-то абстрактная схема реализации пультовых, а опыт конкретной команды, и об этом не стесняясь сказано несколько раз.
В смысле, не надо сразу так уж всех под одну гребенку. Кто-то старается, кто-то нет. Тут первая часть статьи была довольно интересная. Например, я как раз хотел пособирать данные о размерах дистрибутивов разных свежих игр — и оп, автор за меня посчитал размер Колды. Отлично же, ну. Печально, что статья где-то на середине пошла на спад — вероятно, тупо не хватило времени. Еще немножко бы автор дожал, и случилась бы нетленка.
А по-моему, вообще разные люди писали. Скорее всего было так: вот тут у нас есть рекламный текст, разбавьте его немного, чтобы не сильно был на рекламу похож. Но ничего лучше не придумали, кроме как прилепить интересное начало к рекламе
Для меня отчётливой границей (прямо в глаза бросилась и порезала) стала фраза:
"за счет чего оказывается на 60% быстрее, демонстрируя устойчивую скорость 2400 МБ/с в операциях последовательного чтения против максимальных 1500 МБ/с, если сравнивать с NVMe SSD, использующими урезанный PCIe × 2."
После неё тут же перемотал к комментам, так как понятно что сама статья там кончилась.
Так ведь на размер игры влияют в первую очередь текстуры, а не наличие открытого мира. Думаю, самый яркий пример — Minecraft: какого размера там открытый мир, и сколько при этом весит сама игра.
PCIe 4x какая?
Группа из четырёх последовательных интерфейсов?
С другой стороны, устройство в pci-e может трактовать данные, принимаемые по разным линиям, независимо и использовать в разных целях. С третьей — с точки зрения тактирования сигнала, все линии в каком-то смысле параллельны. А ещё, вероятно, можно эмулировать на pci-e шину pci (на сигнальном, не программном уровне) — она будет параллельная или последовательная?..
Кстати, если сгруппировать два эзернета, они тоже перестанут быть независимыми. Есть ещё RAID…
У меня Android Studio совсем без галочек ставится на Linux из ZIPа и занимает 1.4 гига, но со временем (а время тикать начинает с момента начала открытия первого проекта или его создания) разрастается, и сейчас уже занимает 9.8 гигов (дистрибутив + SDK + NDK + ~/.gradle) и при этом всё равно при открытии других проектов норовит подкачать чего-нибудь ещё из интернета раз за разом.
Всего 50?
А вы забыли про геймплей.
Какой сюжет у Тетриса?
Сюжет без геймплея (aka геймплей, состоящий только из сюжета) = фильм
Геймплей без сюжета = игра
Отсюда я бы сказал, что сюжет — важная, но не ключевая составляющая геймплея.
aka геймплей, состоящий только из сюжетаОк, пусть будут «игровые механики»
Вы скорее про отсутствие игровых механик, но таких игр и не бываетЯ про то же: игровые механики обязательны, сюжет — нет. Да, некоторые игры механик кладут мало, а сюжета — много. На мой взгляд, такие «игры» колеблются где-то между играми и другими видами искусства (есть даже термин такой «визуальная новелла»). Про игры без сюжета, но с механиками такого сказать нельзя.
Ок, пусть будут «игровые механики»
Это важно, потому что отсюда и растут ноги у подобных споров, особенно приверженцев «старой школы», у которых любая катсцена показатель деградации. Геймплей в шутере это далеко не только стрельба.
В визуальной новелле точно так же есть игровая механика и это всего лишь один из жанров игр, без кавычек. Я начал про определения, потому что вы закончили фразой
«Отсюда я бы сказал, что сюжет — важная, но не ключевая составляющая геймплея»
Сюжет может быть ключевой составляющей геймплея, а может не быть. Упомянутый хэви рейн — игровая механика там не имеет никакого значения. На минимальности сложности она заключается в нажатии одной кнопки, проиграть практически невозможно. Ключевой элемент геймплея это сюжет и его составляющие. Практически визуальная новелла только в 3д.
Сид Мейер как-то дал определение: «игра — это коллекция интересных выборов». И он был полностью прав. Чем меньше действия игрока влияют на ход событий, тем меньше там собственно игры.
Если в VN'ке игрок только и может, что жать далее-далее-далее, и нет ни одного выбора, влияющего на сюжет, то чем это отличается от комикса? Это что угодно, только не игра.
В принципе, большинство VN'ок можно вообще в виде книг выпускать. Обычных, не электронных даже. И особой разницы заметно не будет.
ru.wikipedia.org/wiki/Геймплей
интерактивное взаимодействие игры и игрока
сюжет как участие в нём игрокаИменно как участие, т.е. взаимодействие, а не просто просмотр. Когда взаимодействие сведено к минимуму, то про геймплей говорить трудно.
Геймплей это всеобъемлющее определение, которое включает весь игровой опытВот графика, например, определенно является частью игрового опыта — но не частью геймплея.
На мой взгляд, такие «игры» колеблются где-то между играми и другими видами искусства (есть даже термин такой «визуальная новелла»).
Да, на самом деле даже "визуальная новелла" без особых каких-то игровых механик (по сути, только перемещение по карте, "активация" и диалоги, состоящие из выбора предопределённых фраз/действий) вполне себе неплохо так может поколебать психическое состояние игрока своими базовыми текстовыми диалогами дополненными изображениями (если реально вжиться в игру).
И новеллы на это и рассчитаны.
«В хорошей книге очень важную роль играет сюжет!» — «Какой сюжет у словаря или телефонного справочника?» ;)
Т.е. вы согласны, что бумажное изделие может содержать текст или картинки, ноты или иероглифы, а может и вообще ничего содержать — и он самодостаточен?
Просто вообще неплохо было бы уточнить, какие классы игр требуют наличие сюжета, а не задаваться пространным вопросом о том, требует или нет наличия сюжета сферическая игра в вакууме.
Другое дело, что сюжет забывают завозить даже туда, где он действительно необходим, как это отмечено в комментариях выше. А если и завезут, то это часто недоваренная каша из клюквы, заезженых штампов и стереотипов.
Про который тоже забыли в погоне за способами монетизации
Чем дальше, тем чаще встречаются «игры» с классным визуальным дизайном, иногда даже с историей, иногда интересный мир придуман, но игры внутри нет и делать там нечего :)
С текстурами есть ещё одна сказочная проблема — нет общеупотребимых lossless форматов. Если дизайнеры хотят, чтобы какая-то конкретная текстура (UI?) была в 24-битном, а не 16-битном цвете, без мыла и артефактов, да ещё и с прозрачностью и mipmaps, то проще всего использовать несжатую текстуру. Для разрешения 4096*4096 это около 85 мегабайт на один файл. Его можно заархивировать, конечно, но перед отправкой на видеокарту надо будет распаковать, а это время CPU. Собственно, если кому-то интересно, могу написать статью с обзором этой проблемы и распространенными методами решения.
Разве не "png хватит всем"? Или у него таки есть проблемы?
Но вообще да, для хранения/использования в видеопамяти он малоприменим.
Спросил без издёвки, действительно интересно, чем png не пролазит в GPU.
Плюс отдельная проблема в том, что сам формат png не хранит mipmaps. Если же их хранить в разных файлах или слепить в один контейнер, то выходит оверкилл, проще просто хранить несжатую текстуру в архиве ZIP/LZMA/RLE*/Binominal.
* Кстати, я использую именно самописный RLE (привет 14й стандарт!) и он дает космические скорости при распаковке, небольшой размер файлов, еще и распараллеливается. Но об этом в будущей статье, вместе с исходниками.
Оказывается png не одинаково полезен — разный софт может по разному трактовать гамма-коррекцию. Для текстур с альбедо это не сильно критично, но когда вы смешиваете разную информацию в разных каналах, может начинаться боль. А ведь в текстурах может храниться не только цветовая информация, а и вектора для смещений и нормали. Потому получается что удобные форматы для передачи из одного редактора в другой и в движок — это скорее TGA и TIFF, которые хоть и не сжатые, но ведут себя понятно.
А после того как "сырая" текстура попадает в движок (например общепринятые Unity/UE), он их перепаковывает в какой-то DXT или PVRTC, которые могут выполнять контекстное сжатие – например вырезать одну из координат из нормали, потому что ее проще считать в реальном времени из оставшихся двух.
Конечно пишите!
А то рисуешь текстуру в условном фотошопе, потом сжимаешь без потерь в формат для DirectX с аппаратной подержкой, потом сжимаешь в другой формат для работы под Андроид, потом в другой формат для порта на Линукс… А потом забиваешь и просто сохраняешь bmp.
Другой вопрос, что даже BC7 не дает Lossless.
Так руками-то не нужно сжимать. Вот питонный скрипт, который чистым фотошопом через WIN32 COM API сохраняет картинку в jpeg с помощью всем известного модуля Save for Web. А еще там многое доступно через JavaScript API, и это сильно приятней COM.
from win32com.client import Dispatch
infile = "test.psd"
outfile1 = infile[:-4] + "_export.jpg"
app = Dispatch("Photoshop.Application")
app.Open(infile)
app.Preferences.RulerUnits = 1 # pixels
doc = app.Application.ActiveDocument
options = Dispatch('Photoshop.ExportOptionsSaveForWeb')
options.Format = 6 # JPG
options.Quality = 80
doc.ResizeImage(1000)
doc.Export(ExportIn=outfile1, ExportAs=2, Options=options)
doc.Close(Saving=2) # 2 = psDoNotSaveChanges
app.Quit()
ранее занимавшейся исключительно созданием игровых автоматов
В первом же абзаце статьи про Famicom в Википедии упоминается, что это не первая приставка Nintendo, ранее они выпускали клоны Pong'а.
Доступную память картриджа они распределили следующим образом
Это не авторы так распределили, это приставка так устроена.
1 спрайт имеет размеры 8 × 8 пикселей и может использовать 4 оттенка.
Три 'оттенка'. В таких малых масштабах это существенная разница.
Конечно, если сравнивать детище Crytek с любым современным AAA-проектом, в глаза будут бросаться более четкие текстуры, более точное освещение, большее количество полигонов, большая дальность прорисовки. Но так ли уж нужны визуальные улучшения, если теперь, для того чтобы с комфортом поиграть в AAA-релиз при стабильном фреймрейте, не обойтись без топовой машины, мощность которой будет избыточна даже для многих профессиональных задач?Дааа, а Crysis-то, конечно, не требовал топовой машины. Он, собственно, и сейчас её требует.
Полная версия DCS World занимает 175 гигабайт (минимальная, если ничего не покупать, порядка 70), требования к ОЗУ у нее 32 гигабайта, я лично видел как было 27 занято (при игре на сервере, синглом 16 хватает впритык). И это при FHD, 4К ожидаемо потребует больше ОЗУ.
MS FlightSimulator 2020 минимально занимает 150 гигабайт, рекомендуется 400 для кеширования высокого разрешения. Игра привязана к сети, общий объем контента 2 петабайта. Канал рекомендуется от 20 мегабит, а лучше 50…
Игра привязана к сети, общий объем контента 2 петабайта.
Майкрософты обещали же карту всей Земли в игру впихнуть, из-за этого объём и вырос, да и качество картинки наверно будет очень высоким.
Вроде бы разработчики WoT несколько лет назад рассказывали, как они в одном из обновлений работали с солнечным светом, небом и облаками, придавая им естественность, улучшали визуализацию… Может кто-то и рассматривал игру солнечных зайчиков сквозь листву нарисованных деревьев, но когда сам геймплей убивает интерес к игре, то, имхо, никакая навороченная графика проект не спасёт.
Разработчики WoT балансируют между геймплеем и монетизацией, а это само по себе не легко дается. Вероятно, одних лишь новых юнитов и карт мало, нужна и топовая графика. Смотрел как то скриншоты, вот мол, тень от лопаты на корпусе танка теперь реалистичная. Есть ощущение, что это как бы никому не нужно в такого рода. С другой стороны, за двадцать лет из таких мелочей складывается современная игра.
Если цель игры это результат на серверах, местный народ настоятельно рекомендует мониторы максимально высокого разрешения. Часто, обнаружение противника и его ракет только визуальное, на FHD ничего издалека не видно.
Grand Theft Auto V — 76 ГБ
Текущая версия (та, что из Epic GS) — 89 Г(и)Б (95,6 ГБ).
Да и где это они сильно дороже?
ПО тестам (видел на ютубах) скорости загрузки игровых уровней — не особо это давало преимущества. NVMe под системный диск — это да, будет польза
samsung evo 860 1TB — 12200 руб
samsung evo 960 1TB — 18500 руб
Это все таки сильно дороже, а за пределами бенчмарков разницы между ними не будет в домашней области применения. NVMe на потребительском рынке сейчас это довольно бесполезная вещь. Реальный толк от них получает только корпоративный рынок.
Эти цифры говорят о том, что потребность во вместительном накопителе становится более чем очевидной. Но что насчет производительности? Быть может, удастся обойтись обычным HDD? Увы, нет.
В таблице ниже приведены данные о потреблении оперативной памяти и VRAM наиболее прожорливыми играми, вышедшими за последние годы (измерения проводились на ультранастройках при разрешении 4K).
А если не выкручивать настройки в край, то мой выделенный под игры старый (10 лет есть точно) жесткий диск (в половину терабайта), все это будет спокойно тянуть, как тянул и раньше. Тем более, что не играю «в графику», и не собираюсь, ибо это путь в никуда. Так что, обойдемся без вашего твердотельника
Самая интересная часть статьи — про Micro Mages, имхо
ИМХО, даже 25 лет назад Micro Mages вряд ли вошла бы в топ-50 лучших игр NES.
Тут интересный разбор RTX в игре Metro, показаны малозаметные, но впечатляющие нюансы.
В целом технология крутая, но еще сырая и малоприменимая на должном уровне.
Потому что лень.
Демосцена — шикарнейший пример оптимизации и генерации ресурсов «на лету», не надо хранить десятки гигабайт текстур, если их можно делать по ходу. И производители железа не в накладе — потребность в мощных процессорах и оперативке останется.
А сейчас игры выходят кое-как, где-то сюжета нет, где-то сложность отсутствует, где-то вообще релиз идёт с кучей багов, и потом долго допиливают и выпускают заплатки.
И кстати, тормозил kkrieger в своё время знатно. Не самый выгодный обмен, компактность ресурсов на скорость работы (которая непосредственно влияет на отзывчивость, а значит и на геймплей) или компактность ресурсов на уровень детализации. Увы, но если бы процедурный подход имел бы реальные преимущества хоть в чём-то, мы давно имели бы множество подобных игр, а у нас до сих пор только одна демка.
Не обязательно писать сложный код под каждую текстурку отдельно, достаточно написать движок генератора (некое ядро графического редактора) и затем программы к нему (скрипты действий художника, которые записываются когда он собственно создаёт текстуру с нуля).
И почему-то мне кажется, что это получится существенно компактнее и (возможно) даже быстрее, чем качать все пакеты текстур под все разрешения, а затем подгружать их с диска.
К примеру, сценарий: качается только движок игры, движок генератора текстур+скрипты генерации и карты уровней. Затем запускается генератор, который оценивает производительность машины и затем прорисовывает сложные текстуры и сохраняет их на диск, а простые (которые на данной конкретной машине быстрее нарисовать заново чем грузить с диска) генерирует на лету при загрузке уровня.
Плюс, можно обрабатывать текстуры для первого уровня перед запуском игры (в момент загрузки), а текстуры для остальных уровней — фоном во время игры, на свободных ресурсах (когда игрок копается в инвентаре/крафтит/болтает с неписью/whatever).
затем подгружать их с диска.
Все текстуры с диска никто и не подгружает. В нормальных двигах грузятся только нужные мип уровни.
Неужели, всё настолько плохо, что в AAA-играх диск стал узким местом, а процессор настолько простаивает, что его можно загружать генерацией текстур в реальном времени?
Потому что лень.
Всегда веселит такое невежество. Игры много весят, потому что качество ассетов с каждым годом растет. Потому что современные PBR графические движки требуют больше текстур для отображения материалов (вы же понимаете, что цвет это всего лишь один тип текстур из множества, которые требуются для отображения материалов в играх). Набирает популярность фотограмметрия. Unreal Engine 5 вон показывает, что возможно в новых играх железо сможет переваривать модели по много миллионов полигонов.
Все это закономерно и верно и демо сцена никаким местов не актуальна здесь. Все подходы там абсолютно не применимы к играм.
Почему же не актуальна? В видео прошли эволюцию от потока jpg до высокоэффективных кодеков (и место экономит, и вычислительные мощности занимает); в картинках конечно пока не дошло до превращения фоток в подобие svg, но тоже реально. Так и тут вместо хранения всех типов всех текстур как есть наверняка можно многое выкинуть и заменить алгоритмом. Вот только если сейчас они всё это создают в адских условиях долгие месяцы, чуть ли не живя на работе, то заниматься перегонкой всего в алгоритмы потребует не меньше времени.
И зачем эти миллионы полигонов например для тела персонажа, если поверх него одежда тоже с высокой детализацией? И из-за того что лень оптимизировать (хотя бы выкинуть детализацию того, что скрыто) приходится таскать и обрабатывать кучу лишних данных? Хотя я не эксперт, и могу ошибаться.
Вы сами то поняли, что тут написали? Я нет.
А миллионы полигонов нужны, чтобы картинку красивее сделать. Теже лица. Полигоны нужны, чтобы морщины показывать, работу мышц.
в картинках конечно пока не дошло до превращения фоток в подобие svg, но тоже реально
И занимать это будет намного больше, чем в растровом представлении. Векторные форматы здесь вообще не актуальны.
Так и тут вместо хранения всех типов всех текстур как есть наверняка можно многое выкинуть и заменить алгоритмом.
Нельзя. Я фотограмметрию не случайно упомянул, почитайте, что это такое. Эффективных кодеков полно и современные GPU позволяют хранить текстуры прямо в сжатом виде в видеопамяти. Консоли следующего поколения будут иметь аппаратную поддержку сжатия на уровне файловой системы, новый формат сжатия текстур.
Ну а алгоритмы это вообще не решение проблемы. Внезапно, создание игры это практически полностью создание ассетов. Последнее это творческая работа множества людей, задача которых сделать так, как задумал человек, а не так, как выплюнул алгоритм. Для многих тайтлов теже персонажи это лицо франчайза. Каждая их деталь доводится до идеала. У алгоритмов есть своя узкая ниша — автоматизации рутины и игры это вполне применяют там, где могут. Компаниям пофиг на место на диске, зато совсем не пофиг на работу художников. Если алгоритм может сэкономить их время без ущерба остальному, то его применяют. Так у нас и появляются хитрые системы растительности, ландшафтов, помещений и прочее и прочее. Вам стоит глубже разобраться в вопросе, прежде чем обвинять кого-то.
> Баги
Как размер ресурсов связан с багами? Вы с пикабу сбежали? Вам 55 лет?
Нет.
Нет.
Много ААА тайтлов зашипили? Давайте честно, вы же умничаете в посте про игры.
> ресурсы оптимизировать
Кроме как текстурных атласов, PVRTC/DXTC компрессии, мержа геометрии, запекания света в лайтмапы и оптимизации формата вершин? Это уже давно автоматизировано на билд серверах.
1k texture = 4Mb
2k texture = 16Mb
4k texture = 64Mb
PBR 1k texture = 12Mb
PBR 2k texture = 48Mb
PBR 4k texture = 192Mb
4k 2k 1k
2500 textures 450Gb 112Gb 30Gb
2000 textures 320Gb 100Gb 24Gb
500 textures 90Gb 25Gb 6Gb
Вот почему.

А теперь признайтесь, только честно: были ли после Crysis игры, которые произвели на вас такой же вау-эффект? Не глубиной геймплея, не сюжетом, не отдельными фишками, вроде лицевой анимации в L.A. Noire или физики огня в Alone in the Dark, а именно превосходной картинкой?
Сейчас, к сожалению, в такое не играют. Сейчас в моде майкрафты всякие, аркады типа фортнайта с пиксельной или мобильной графикой. Лично я в 2000-х после фар края и крайзиса ожидал от 2020 года фотореалистичной графики неотличимой от реальности, желательно в шлеме VR, а не вот это:


Сейчас, к сожалению, в такое не играют
Играют и подобных игры полно. Игр, которые поражают картинкой, выходит с завидным постоянством каждое поколение. Это я не знаю, каким игроком надо быть, чтобы не видеть огромный прогресс со времен кризиса первого, который сегодня выглядит устаревшим и убогим.
Это я не знаю, каким игроком надо быть, чтобы не видеть огромный прогресс со времен кризиса первого, который сегодня выглядит устаревшим и убогим.
Но все же согласитесь что разница между играми конца 90-х и кризисом (2007) на порядки больше чем между кризисом и современными (какая там сейчас самая крутая в плане графики, метро эксодос?)
Игры есть, но они далеко не так популярны как всякие майнкрафты, фортнайты и другие.
Правильно. Потому что как было раньше, так есть и сейчас — графика не продает игры. Крузис продался еле еле, а сама игра, как и вся серия, в общем-то, была провальной, где ничего кроме графона и не было. Такая же судьба была у Ryse. Crytek бездарны как разработчики игр, но вполне способны как инженеры. Правда вот, продать этот свой инженерный талант у них так и не получилось. CryEngine никто не использует.
Но все же согласитесь что разница между играми конца 90-х и кризисом (2007) на порядки больше чем между кризисом и современными (какая там сейчас самая крутая в плане графики, метро эксодос?)
Это закономерный процесс. Чем ближе мы к фотореализму, тем выше становится стоимость улучшений, которые все меньше видны глазу. Раньше достаточно было фильтрацию текстур сделать хорошую, чтобы сделать революцию. Сейчас для небольшого улучшения качества освещения требуется написание научной работы, разработка сложной системы, которая еще не факт что заработает на железе, которое у людей реально есть.
Глянь shadertoy что там рисуют с помощью чистого матана.
наоборот, умер целый класс художников с вводом shader graph в UE и Unity, позволяющий нодами генерировать реалистичные текстуры.
И как-то странно получается, начал с упора на процедурную генерацию, а теперь умер целый класс художников. Так что в итоге?
А когда её рисует художник, то получается искусственная пластика.

Гигантомания: почему современные игры так много весят?