Роглайт-платформер Noita, где каждый пиксель подчиняется законам физики, выходит 24 сентября в steam early access: Gyt29 августа 2019, 18:23017
Очень охота поиграть, конечно
Помню-помню. Воде и клёво, а с другой стороны я вижу это отскейленные и повёрнутые пиксели и мне сразно грустно становится...
Риторический вопрос - и конечно этой пиксельной графике никак не обойтись без посл. трехмерного OpenGL и целых 4 Гб оперативной памяти? Да еще, не дай бог окажется что игра на Юнити сделана.
Хотя нет, вроде пишут что это самописный движок на Си++. Тогда я тем более не понимаю откуда такие огромные системные требования.
При том что игра на диске требует всего-то 0,5 Гб. Она что, 8 раз себя в ОЗУ загружает?
с учетом того, что там не просто песочек сыплется, а есть некие аналоги фазовых переходов, реакций и т.д., и что, вроде как, симуляция происходит не только для того, что на экране - то вполне резонно
да ещё и с процедурной генерацией.
👀
Прям как Firefox.
А у тебя жесткий диск на 10 гб наверно.
OpenGL 3.0 - это старая версия, ей уж лет 10.
Да, действительно, ошибся.
Значит это я уже старый. OpenGL 3.0 был последним уже давно.
А как бинарные данные могут занимать гигабайт памяти, если они состоят только с нулей и единиц?
Вообще-то ресурсы хранятся в упакованном виде. Например, картинки на диске хранятся png, jpg, музыка - в mp3, ogg.
Все это упакованные форматы. В ОЗУ все это хранится в сыром виде. Особенно текстуры в видеокарте - там на 1 пиксель уходит 4 байта, как в BMP.
Просто требовать в 8 раз больше ОЗУ, чем весит игра на диске - это какой-то перебор. Только если это не демо на 64 кб, к-я все ресурсы генерирует программно.
Скорее всего они проверили на компьютере с 4Гб и убедились что этого хватает. Компьютер с меньшим количеством памяти найти не так-то легко.
Ну а opengl 3.0 потому что там нормальная модель шейдеров, писать самописный движок и под GL 2.1 с его FFP и под 3.0 - сомнительное развлечение, логично выбрать более новый.
Ну вообще я вел к тому, что в оперативке обычно хранятся не только ассеты игры, но и инфа о всех дискретных игровых объектах. А мы тут говорим об игре, где у каждого пикселя своя физика. А значит, игре нужно помнить как минимум расположение каждого пикселя.
Что-то я не думаю что это прям так много. Ну например полный экран FullHD (а в игре не оно, но допустим такой экран и полностью заполнен) это 1920*1080*64-бит вещественные числа*2 (координаты x, y) = 33МБ. И всё. Допустим ещё мы храним три вещественных числа - цвет, направление и скорость движения (давление) - 82МБ. Что ещё нужно записать? Я не знаю. Главная нагрузка тут должна идти на процессор (или видеокарту, если она приспособлена, что вполне возможно), а не на оперативку.
Ну так в игре-то, насколько я понимаю, в игре просчитывается куда больше, чем то, что происходит на экране. Если ты выпилил сверху кусок породы, игра должна проверять, что за этим куском породы, а то вдруг там озеро, и нужно будет всё озеро сливать в отверстие.
Вообще, надо больше актуальной инфы по игре.
Плюс, как я вижу, может быть несколько "слоёв" - на видео враги бегают в "газе" каком-то, к примеру. Плюс ещё, в отличие от Powder Toy, здесь как-никак симулируется прочность - куски породы действительно отламываются и падают, дробятся на части, а не висят в воздухе на манер Worms и тому подобного - всю инфу о структуре надо хранить тоже. Плюс ещё, если моделировать течения газов и жидкостей, там, вероятно, потребуются некоторые промежуточные поля для вычисления давления и так далее, так что может быть и больше, чем Кситилон оценил. Хотя, конечно, могут быть варианты, с учетом того, что многое можно (и нужно) на видеокарте считать.
плюс состояния соседних комнат, плюс таблицы предсказаний чтобы не считать во время взрыва, плюс 3Гб оставлено для ОСи, антивиря и браузера
Это кстати да, народ часто упускает, что в системных требованиях указывают, сколько оперативки должно быть у компа, а не сколько оперативки может жрать игра.
Тогда почему в требованиях к месту на диске указывают сколько занимает игра, а не сколько всего должно быть места на диске у компа? Где логика?
Потому что для диска нет автоматического аналога свопа
Потому что состояние оперативки куда более изменчивое, чем состояние жесткого диска, и в менеджмент оперативки юзер вовлечен куда куда меньше, чем в менеджмент своего жесткого диска. Зная, что у тебя есть 50 свободных гигабайт на диске D, ты знаешь, что этот объем не изменится, если ты туда ничего не запишешь. А если ты посмотришь в менеджер задач, и увидишь, что у тебя свободно 4 гига оперативки, то это не значит, что ты можешь стабильно запустить игру, требующую 4 гига, потому что есть сотни факторов, которые запросто приведут к изменению этого числа без твоего ведома.
Допустим у игрока всего 4 Гб памяти. По такой логике для игры 1 Гб свободной памяти и 3 Гб свободной памяти должны ощущаться одинаково и игрок не заметит разницы. А если у меня осталось 500 Мб памяти? Будет игра виновата в том что она не работает или адски тормозит, если в требованиях написано 4 Гб памяти всего? И авторы при этом не сказали сколько должно быть свободно.
Допустим, что параллельно с игрой ты запустил мощный расчет на всех ядрах процессора, и игра будет тормозить. В системных требованиях тоже надо указывать это как-то?
Вообще-то по-хорошему да, только вот как измерить макс. нагрузку? В кол-во операций в секунду, в Flops'ах? Ни один комп этого не покажет. А кол-во процентов свободного процессорного времени для разных процессоров неравнозначно. А вот объем свободной памяти измерить проще и она у всех компов измеряется в одинаковых величинах.
Другое дело что если ЦП не поспевает, то игра может просто увеличить dt между рассчетами.
И потом, игра будет тормозить, но будет работать. Если же игре не хватает виртуальной памяти, то она крашнется.
Если не хватает физической памяти, то игра будет свопать на диск и тоже тормозить но работать. А виртуальную память в требованиях и не пишут, ее всегда 4гб если версия 32-разрядная.
А ты на говнокоде никогда не тусил?
ну да, тусил. много бесполезной эрудиции получил с тамошних обсуждений.
Если просто увеличить dt, то всё сломается однажды. А если он ограничен сверху, то тормоза будут при просадке.
Есть такой аспект (в моём видении) - игра всё же делается авторами так, что она должна восприниматься определенным образом. Если красивая штука с плавной анимацией и атмосферной графикой будет сильно проседать по частоте кадров, а не продолжать быть красивой и плавной как это и было задумано, то она скорее всего никого не впечатлит, и никакого авторского замысла не передаст. Не надо только начинать, что графика нинужна, главное геймплей и всё такое прочее.
Потому системные требования говорят о том, на каком железе игра будет минимально нормально восприниматься с точки зрения авторов. Можно запустить, наверно, и на более слабой машине, но целесообразность будет сомнительной (не всегда)
Вот поэтому, зная, что у тебя условно 2-3 гига заняты виндой, и еще какой-то условный гиг занят фоновой оперой, которую среднестатистический юзер будет забывать закрывать, авторы и пишут, что надо 8 гигов.
Помимо прочего, разрабы также часто смотрят на среднестатистическое количество игроков с тем или иным количество оперативки, и с учетом того, что у ~70% стима и так больше 8 гигов, им нет особой необходимости точно высчитывать необходимое количество памяти.
Не у меня, а у вас. У меня виндой занято всего-лишь 0,25 Гб.
Память-то у тебя свободна, но что с неё толку, если она медленно работает?
Если памяти будет не хватать, то она будет выгружаться и загружаться с диска. Это в сотни раз медленнее чем обращение к ОЗУ.
Всех людей, которые не знают что такое своп, буду направлять к тебе, договорились.
~44%
Ок, 8 или больше, я хотел это сказать.
Тогда ты прав. И даже больше, ~80%.
Фиговый из тебя будет программист.
Мои работодатели с тобой не особо согласны.
Он же сказал "будет", так что учитывая общее направление обсуждения можно предположить что имеется в виду что ты будешь фиговым программистом когда состаришься и умрёшь.
Кодер не программист, а программист не геймдизайнер. Уже проходили все эти вопросы.
Ну наверно тому есть несколько причин:
Если они делают самописный движок, то оптимизировать-то его можно. Если захотеть.
Области где никого нет можно сохранять на диск и загружать только когда там что-нибудь появится.
Но нет, пусть лучше геймер купит себе еще пару планок памяти и новый компьютер.
Ведь наверняка и раньше делали игры с физикой пикселей, но при этом они не жрали столько.
Ну да, если захотеть можно и оптимизировать чтоб на пентиум1 под досом шло, лиеро же работают а там почти физика.
Конечно эта оптимизация займет вдвое больше времени чем разработка остальной игры, результат будет несколько менее красочный, да и к тому времени как начнет что-то получаться сил на то чтоб сделать еще и контент уже не останется, но зачем, ведь намного важнее чтобы геймер с первым пентиумом и досом смог насладиться их игрой не покупая новый компьютер.
Вообще-то ты прав. Сейчас важнее чтобы хоть кто-то поиграл в твою игру, а не чтобы игра заработала на каждом компе. Об этом только популярным играм надо заботиться чтобы расширять аудиторию за счет тех кто раньше не мог поиграть.
Загружать на диск? Делать своп прямо в своём уютном движке? А у тебя в компе SSD или он ласково шуршит каждый раз при чтении?
Какой SSD для WinXP? Покрестись! Православный HDD.
Бекапы делаю регулярно, если что, не переживай.
Монитор да, жидкокристаллический, каюсь. Пришлось скрипя сердце свой ЭЛТ поставить в угол, поскольку ЭЛТ-мониторов с такой диагональю не делают. А так, если бы нашел ЭЛТ с такой же диагональю - поставил бы его. Из недостатков - только больше места занимает на столе и больше кушает электричества. По остальным параметрам ЖК хуже ЭЛТ.
И ты предлагаешь прямо во время игры е#@#шить сотни мегабайт данных на диск и диска? Хоть loading screen оставишь или просто на фризы смотреть?
Ну не такие же там огромные уровни.
Зачем ставить всякие игры на SSD? Пусть нормально пишут код загрузки, нечего предполагать какие-то SSD по умолчанию.
#teamhighramusage
Да-да-да! Раньше же у всех был HDD и ничего не тормозило, нормально игры работали!
Но для этого надо всё про текущий уровень оставлять в оперативке.
Если у тебя stateless игра, то не нужно))
Ну да, только игр которые будут убивать ресурс ssd во время игры и не хватало. В конце концов функционал "сбрасывать неиспользуемые области памяти на диск" встроен в Винду, писать для него ничего не надо.
Только она делает это всегда, даже когда свободной оперативной памяти еще дофига.
В отличие от линукса, к-й начинает свопить только когда ОЗУ закончилось.
По идее, она не сбрасывает содержимое оперативки, когда та пуста, а наоборот, зачитывает левые файлы, чтобы её забить.
Ты так говоришь, будто тут крестики-нолики сделаны, вот прям смешно. Тут и жидкости, и газы какие-никакие (понятно, что это, скорее всего не самое точное решение, а просто неплохо выглядящее), и реакции и вообще все. Ты вообще имел дело с моделированием чего-то подобного в реальном времени?
Пишут, что Powder Toy (а там уж точно больше видов взаимодействия) работает на 512МБ и 800МГц. Сложный вопрос на самом деле.
Там просадки FPS и на более мощном железе, если плотно застелить. Никак не 60 фпс. И насчет симуляции жидкостей и газов там есть вопросы.
И про размеры моделируемой области тоже не всё ясно.
А тут ещё и враги есть, помимо симуляции, они чет делать должны.
И процедурная генерация
Не знаю, мне кажется каждый враг сопоставим по вычислениями с 5-10 такими частицами, а их реально много. Powder Toy намного большего размера чем экран рассматриваемой игры, это тоже надо учесть. Но это всё пальцем в небо, а подробно исследовать лень.
Экран Noita несколько больше, это точно. Меня только смущает возможная закрепленность экрана, что уже технологически даже скучно.
Насколько я читал, там может моделироваться в т.ч. то, что находится за пределами экрана
А чо б не скачать эту Ноиту на компе с 512Мб на борту и не проверить, как она будет работать.
Максимум (минимум?) что я могу откопать это 1ГГц, 1ГБ на моём нетбуке 5-летней давности.
Problem solved? :)
Я на ту барахолку доберусь только во вторник, если получится.
Я к тому, что сегодня не так и просто найти ПК или даже ноут с половиной гектара памяти. Потому никто и не запаривается
Могу достать из шкафа старый ноут и вытащить одну планку, за сколько берёте? :)
Лучше достань из шкафа бутылку вина
Видимо у Андрея такой?
Я бы сказал про бюджетные телефоны, но что-то уже даже бюджетные телефоны на 512МБ зашкаливают.
XP поддерживает до 4 гигов как раз, так что не факт, не факт.
У меня есть комп с 768 Мб ОЗУ, Athlon XP, Geforce 5200 (или 6200) FX, уже не помню.
Но мне неохота делать ничего подобного. И там стоит Линукс.
Есть же проги, к-е могут занять ресурсы компа на указанные значения, уменьшив тем самым свободную память и время ЦП/видеокарты до нужных значений.
Почему их нельзя использовать?
Можно ещё попытаться ограничить RAM/CPU для процесса.
Можно поставить Win XP в виртуалку, выделить виртуалке 512 Мб памяти и запустить игру в ней.
Можно арендовать VPS на полгига памяти, запустить игру в вайне и пробросить иксы через ssh.
Выполняйте. Завтра к обеду отчёт мне на стол
А ещё можно играть на картошке, все вычисления будут проходить на сервере. Но зачем?
Если игра работает на компе с 4гб на котором браузер отьел 3гб, это не гарантирует работу на компе где есть 1 Гб памяти. А если выключить свап-файл - наоборот, ограничение будет слишком жёстким, вполне возможно что уже из-за браузера винда начнет падать, даже без запуска игры. Ну а с видеокартой ещё сложнее, там десятки параметров которые могут ограничивать запуск помимо собственно объема памяти. Максимальный размер текстуры, макс. длина шейдера и т.д. и т.п.
А разве разрабы пишут общее кол-во оперативы на ПК, а не сколько нужно свободной?
Почему тогда в требованиях к месту на диске пишут свободное место, а не его общую емкость?
Запускаешь игру, она просит много оперативки, фаерфокс уходит в своп, игра идёт норм. А вот если игра идёт в своп (физически оперативки меньше требуемой), то тогда будут тормоза.
По поводу ограничений на параметры видеокарты - все их можно обойти программно, разрезав большую текстуру на маленькие и рисовать покусочкам, разбив шейдер на 2 и т. д. Все упирается только в лень разработчиков.
Даже если это какой-то ноунейм на дешевом ноутбуке и видеокарта не может в освещение или не поддерживает нужный DirectX, OpenGL - можно сделать программное освещение. Так например игры на Юнити делают на таком ноутбуке - игра выглядит странно, тормозит, но работает.
Юнити не имеет никаких опций для "программного" (имеется в виду software рендеринг?) освещения, игры на ноутбуках на юнити могут запускаться на встроенных в процессор видеокартах, которые, сюрприз, работают на той же DirectX технологии, что и отдельная видеокарта, только они послабее, конечно. Софтвеерного рендеринга в играх на юнити нет.
Время — деньги, а попытки оптимизировать современные игры под устаревшее железо тратит время и не приносит денег вообще.
Подобный луддизм меня поражает просто, я уже не могу терпеть.
Я не знаю что именно там именно делается программно, но что-то программно делается, потому что даже простая сцена сильно тормозит.
Современные игры - это когда пиксельный платформер требует несколько Гб памяти?
Это не луддизм, это деградация разработчиков.
"Тяп-ляп и работает. Ах, много памяти кушает? Нет, мы ничего с этом делать не будем - просто купите себе новый комп или планочки с памятью и отстаньте от нас."
Меня печалит что люди считают что это нормально.
Такими темпами лет через 10 у нас будет винда, сжирающая 32 Гб ОЗУ и 100 Гб на диске, из них 90% - это косметика, сделанная на фреймворке, который сделан на фреймворке, который делает байт-код для виртуальной машины, который только потом преобразуется в машинный код.
Лишь бы побыстрей и попроще разработчикам было.
Оно и видно.
Только если стандартом через 10 лет станет 256ГБ оперативной памяти и жесткие диски на 4 терабайта. То есть — ничего в сущности не изменится, и 256ГБ оперативной памяти через десять лет будет стоить как сейчас 4ГБ. И все будет работать как часы, прямо как сейчас Windows 10 работает на стандартных 16ГБ оперативной памяти.
Технологический прогресс позволил любому человеку делать великолепные видеоигры, а не только тем, кто изучает ассемблер, что несомненно улучшило художественную часть видеоигр. В технологическом прогрессе есть одни только плюсы, из объективных минусов можно назвать лишь загрязнение окружающей среды старыми комплектующими, в котором виноват даже не сам прогресс, а связанные ресурсовые индустрии, которым выгоднее продавать, чем перерабатывать.
Это я к чему? Если какая-то игра неоптимизирована и много кушает, то кто в этом виноват- геймеры или разработчики? Кто главнее - железо или ПО, которое на нем работает?
Сейчас люди уже привыкли покупать новый ПК ради какой-нибудь новой игры, если ваш он не удовлетворяет ее требованиям. Они просто смотрят на системные требования и думают - "пора новый комп покупать". Вместо того чтобы поднять яйца с пола и сказать разрабам - "Вы не ох*"?ели!? Мы не собираемся покупать новый комп ради одной вашей игры, идите оптимизируйте игру как следует и сокращайте системные требования, иначе мы в ваше говно играть не будем!".
Вот тогда они зачешутся и переборят в себе лень - им придется напрягать булки из-за того что где-то в коде они поленились, взяли жирную готовую библиотеку (хотя им нужна всего пара функций), неплотно упаковали текстуры в атлас, слишком много полигонов оставили, не сделали грамотную подгрузку текстур во время игры, а все хранят в памяти и т. д.
А то такими темпами свалки будут каждые 10 лет будут заваливаться очередной кучей вполне нормальных компов, которые выбросили только потому что на нем "новый крайзис не идет". И потом, когда складывать мусор будет негде, а в городах начнет вонять свалками, люди почешут репу - "нафига мы это делаем?".
И всю ту лень, с которой люди смешивали весь мусор в одну кучу и везли на общую свалку, придется перебарывать. Кому-то придется ездить на свалку и перебирать там мусор только потому что людям было лень делать это самим еще до того как это стало вонять.
Но это так, чтобы было понятно почему я против лени в целом. За лень одного человека расплачивается другой. Потому что все думают только о себе, любимых.
Эта игра будет летать на любом нормальном компьютере десятилетней давности. О какой неоптимизированности идет речь, о каком "много кушает"?
Да, особенно когда эта новая игра - современная ААА игра, использующая новые технологии, которая выглядит как какой-нибудь трехмерный фильм. Таким играм нужны новые технологии, потому что оптимизировать их для старых — тратить огромное количество человекочасов. Ради чего? Ради поддержки устаревшего железа?
Ты наверное сильно разозлился когда узнал что Half-Life не пойдет на твоем Commodore 64 с 256 дополнительными килобайтами памяти?
Речь не конкретно про эту игру, а любую неоптимизированную с высокими требованиями.
На что там тратить? Уменьшить кол-во полигонов и качество текстур? Это программно делается.
Их надо оптимизировать для новых компов, а для слабых можно просто понижать настройки графики и выключать неработающие шейдеры.
Теоретически любую современную игру можно оптимизировать под четвертый пентиум. Теоретически. Будешь этим заниматься? Знаешь сколько работы надо для всего этого проделать?
"На что там тратить", господи.
Ты не путай оптимизацию игры и сокращение расходов. Сокращение расходов - это когда требования к ОЗУ и видеокарте можно понизить, снизив уровень графики. Плохая оптимизация - это когда игра жрет в 2-3 больше ресурсов чем другая, которая по графике почти не отличается.
Есть еще такая вещь как минимальные возможности ЦП, когда разрабы совсем отказываются от поддержки старых возможностей в пользу новых. Тем самым, отрезая все ЦП, которые этой возможности не умеют. А ведь можно было оставить и никому бы ни жарко ни холодно от этого не было. Это - прямое навязывание игрокам нового железа.
Ты по сути говоришь что Noita должна требовать максимум железо уровня SNES, потому что она выглядит как игра на SNES, при этом полностью не обращая внимания на то, что в игре каждый сраный пиксель просчитывается и является отдельным элементом в реальном времени. И эти сраные пиксели надо хранить в памяти.
"По графике почти не отличается" my ass.
Ничего я не говорю про SNES, не выдумывай. На приставках ограничение кол-ва цветов и отсуствует возможность поворота и масштабирования спрайтов. Если нужно - это делается аппаратно отдельными чипами на картридже.
Насколько знаю, на SNES были трехмерные игры, но это уже не была SNES в исходном виде, поскольку трехмерные вычисления выполнялись на них, а не на приставке. Также ничто не мешало разработать свой чип для попиксельной физики и сделать похожую на Noita игру. Но не сделали, тогда 3D было модно, а не отдельные пиксели. Но это все равно не SNES в исходном виде, а приставка с расширениями, как допотопный компьютер с 3D-ускорителем.
> А ведь можно было оставить и никому бы ни жарко ни холодно от этого не было.
Если на новом процессоре есть новая команда позволяющая ускорить мой алгоритм в 4 раза, то чтобы поддерживать старые компы я должен либо собирать два бинарника, либо в рантайме проверять есть ли поддержка этой команды и в зависимости от этого выбирать нужную процедуру. При этом на старых компах алгоритм будет работать в 4 раза медленнее (помимо того что они и так слабее по определению), что делает всю затею сомнительной.
Но да, тут уже претензия скорее к компиляторам С++. Если бы там был встроенный функционал "собрать под н процессоров и в рантайме загрузить нужный код" то им бы может и пользовались. Сейчас там есть только "собирай под старый процессор игнорируя все новые расширения" или "собирай и оптимизируй под новый процессор игнорируя все старые", а любителей копаться в ассемблере чтобы объединить два подхода несколько меньше чем игроделов.
Это что, так сложно?
Ну будет какая-то часть игры работать медленнее на старых компах, это логично. И потом, для того и программисты и оптимизируют свои проги чтобы свести лишние вычисления к минимуму.
По-моему сложно. Я вот не шарю в этих SSE4.5 vs SSE4.2 vs AVX512. Какие из них всегда поддерживаются а какие нет. Сколько в итоге я должен модулей собрать. Да и как их переключать. Эти инструкции ведь могут в любом месте кода использоваться. Единственный вариант - собирать Н ехешников (кстати сколько? Амд достаточно сильно отличается от интела чтобы их учитывать? У них там тоже какие-то поколения и кажется есть несовместимые расширения. Ноутбучные процессоры от настольных? А ведь есть(был) еще VIA, под него тоже надо собрать. И как их в рантайме детектить?) разных процессоров и сделать ланчер который бы определял процессор и запускал нужный ехе. Ну используемые библиотеки типа физдвижка или луа тоже под разные процессоры пересобрать. А, потом еще учесть что есть ХР где кажется файл манифеста нужен другой или что-то такое и под него все эти варианты тоже надо собрать. Пожалуй нет, я не буду этого делать. Если бы мне готовый ланчер и список опций компилятора дали я бы подумал.
Эндрю, гугли fat binaries. Только у тебя потом экзешник будет толще во столько раз, сколько архитектур ты хочешь поддерживать
Нельзя один большой exe-шник разбить на dll-ки?
И зачем таскать с собой мертвый код, если достаточно реализовать только тот, который отличается, а одинаковый код не дублировать.
Не все системы поддерживают динамическую линковку в прикладных приложениях.
А вообще твоя проблема решается компиляцией из сырцов, только в геймдеве так никто делать никогда не будет
В теории да. А на практике я пишу компилятору "-march=xx -mtune=xx" и он при сборке модуля оптимизирует его под заданный процессор. Ну да, если я вынесу критичный для быстродействия код в отдельные модули и буду собирать их под разные платформы то можно будет вызывать только те процедуры. Но то какой именно код критичен а какой нет может поменяться. Ну и тысячи условных прыжков каждый кадр тоже не радует. А если все эти вызываемые функции в длл то это ещё один удар по быстродействию. Самое простое это всё-таки целиком бинарник (со всеми длл) собрать и не страдать фигнёй. Дело только за лаунчером (ну и тем что в дистрибутиве будет гора файлов под разные архитектуры.
Короче, все свелось опять к тому что разрабам лень :)
А тебе самому не лень было бы на их месте? Игра и так занимает огромное количество сил чтобы её сделать. Поделай сам что-то подобное, потом говори. Оптимизация это всегда дополнительные расходы сил и времени, а значит денег, которые должны как-то окупаться. Люди со слабым железом зачастую неплатёжеспособны, чтобы за их счёт повышать цену игры.
Как делается? Берётся статистика и пилится игра под Windows 10 64-bit, 8-16 (!) ГБ оперативки, 2-4GB (!!!) VRAM. И всё. Если ты так не будешь делать, ты будешь неконкурентоспособен попросту, так как оптимизация съест съест твои силы для всей остальной игры. Конечно можно сказать "пусть все прогают, а я буду ходить оптимизировать". Ну вот хотелось бы верить что такой способ работы вообще возможен, а не что каждый будет просто вслед тебе думать "Охереть, зачем в проекте этот человек нужен? Я только сделал то что нужно, а теперь опять недостаточно быстро и недостаточно старо.".
В одном я с тобой согласен - не хватает галки "отключить весь блум и вообще шейдеры", чтобы игра стала выглядеть совершенно голой и пустой, и чтобы это оставалось играбельным. Этот идеал мне близок. Ну и чтоб запуститься она вообще смогла, а не какие-то "нужно обновить с фреймворка 5.0 до фреймворка 5.1, но производители ОС программно вырубили возможность установить 5.1". Это да. А остальное что ты сказал - нет. Никто не будет резать текстуры 2048x2048 на кусочки 128x128 и прописывать ещё одну ветку для ещё одного более legacy deprecated API V0.9.
Вообще-то это шутка была про "все опять свелось к лени разрабов".
Но все-равно где-то должна быть золотая середина и разрабы первыми несут ответственность за адекватность системных требований игры.
А все почему? Потому что геймеры не воспротивились и просто купили новый ПК, подсадив себя на игру иглу. Теперь разрабы знают до какой степени им можно лениться и не экономить ресурсы.
И это тоже. Вообще давно образовался порочный круг "ОС => Игры => производители железа". А должно быть "производители железа => ОС => Игры". Железо главнее, но вместо этого разрабы склоняют разработчиков видеокарт оптимизировать драйвера под конкретную игру вместо того чтобы самим писать игру так, чтобы она нормально работала на разных видеокартах.
Как иначе объяснить "обновите драйвера на видеокарту". Как это должно помочь конкретной игре, если сама видеокарта не поменялась?
Авторы будут сокращать аппетиты ровно до того момента как большая часть аудитории перестанет жаловаться. А 5% со "старым" железом - это совсем не большая часть аудитории.
Да им в голову это не пришло. Потому что над ухом не стоял АндрейМаст19 и такая возможность осталась для них тайным знанием древних мудрецов.
> Как иначе объяснить "обновите драйвера на видеокарту". Как это должно помочь конкретной игре, если сама видеокарта не поменялась?
Если речь про ААА, то (по рассказам одного чувака из "индустрии") там суть такова - игры пишутся под консоли и соответственно там хардкодится поведение консольного железа со всеми его багами и особенностями. Под PC переписывать что-то в движке игры бесполезно, там миллионы строк индусокода, поэтому для портирования проще исправить драйвера чтобы видеокарта для этой игры работала так как та ожидает. Общество потребления и все такое во все поля.
А если про инди под которые никто драйвера не оптимизирует, то там, в случае OpenGL, проблема в том что драйвера помимо всего прочего содержат компилятор шейдеров. И это довольно сложная и глючная штука, потому что разработчики что в амд что в нвидиа в компиляторах совсем не разбираются, а раскрыть код не могут опасаясь конкурентов. Соответственно драйвера надо обновлять когда шейдерный язык меняется (добавляются новые возможности) и когда в нем исправляют очередной баг.
Какая дичь. Мы-то дураки пишем игры под ПК и экспортируем их под консоли уже вторично.
и тогда с требовательной игрой вы озвереете делать все красиво. А игроки все равно станут злиться что на консоли вы что-то упростили и урезали.
Хотя пока вы на уровне школьных поделок можете пилить как хочется - без гитхаба, без нормально организованных процессов, без программистов. Эти штуки все для серьезной работы
Разработчик ОЗВЕРЕЛ, когда увидел, что из компилятора лезет... [ЧИТАТЬ ДАЛЕЕ]
Так нельзя, есть пункт про feature parity. Если его нарушать, претензии имеет держатель платформы при сертификации релиза, раньше каких-либо игроков.
Как же вам всем пичот, а с чего именно, так и непонятно. "Серьёзная работа", лол. Инди для того и инди, чтобы работать так, как работается, а не по заветам карго-культов. Для бэкапов гит не нужен, степень организации наших процентов тебе неизвестна, т. к. аудит не проводил, программист в основном я же и есть, и мне норм.
А в 2D можно сделать очень много хороших игр. Сотни. Просто развелось много по факту двухмерных игр, которые визуализируются в 3D, честных трёх измерений там нет.
Ну исходя из твоих слов инди - это работать по заветам Кситилона. А если умеешь лучше, то получаешь ярлык "не кси тру" :)
Ага, я везде так и пишу, слово в слово!
"Инди для того и инди" - так а инди не при делах -"Если речь про ААА, то"
Для бэкапов гит не нужен - Для бэкапов гит удобен
степень организации наших процентов тебе неизвестна - известна - Мы-то пишем игры под ПК и экспортируем их под консоли уже вторично
программист в основном я же и есть, и мне норм. - о том что тебе не норм речи не было
2D != инди. вообще не знаю зачем ты про 2D сказал. много хороших 2Д, много хороших инди, много хороших школьных поделок. Но "Если речь про ААА, то..." "...Эти штуки все для серьезной работы"
Вот непонятно. Ты меня повеселить сюда пришёл (вряд ли), или это я уже совсем поехал и не вижу логических связей? Консоли это всего лишь консоли, PC Master Race for the win - и целиться всегда удобнее, и играть может любой Васян с любого подъезда. А между прицеливанием на видеокарты консолей и школьными поделками - вполне достаточно творческой свободы.
Во-во, "по заветам карго-культов". Все использовали гит, и мы будем. Кто все, зачем использовали, не важно. Ритуал такой.
Не всем удобен. Зато все могут бэкапить без него.
степень организации ваших проектов такова что вас не волнуют неудобства могущие возникнуть при разработке серьезного проекта. Когда вы физически не сможете сделать равный порт на косноль и пострадаете от игроков и от держателя платформы
Я всё знаю что у нас может возникнуть. И что серьёзное, а что нет.
Все использовали гамак и мы будем. Кто все, зачем использовали - неважно. Ритуал такой.
fixed
С точностью до наоборот:
https://www.reddit.com/r/gamedev/comments/8s20qp/i_researched_the_market_share_of_game_engines_on/
Я просто напомню, если ты забыл, что твоё бомбометание началось с утверждения, что "В инди-геймдеве гитхаб нафиг не упал", а теперь ты мне приводишь диаграмму из Стима с Анрилами и КрайЭнжинами. Лучше сделай мне такую выборку по базе геймина
Типа это будет более репрезентативно? Не будет.
Не то чтобы склоняют, просто пользуются платной поддержкой. Драйвера - такая же прослойка, как и движок. Да и производителям видеокарт выгодно, чтобы крутая игра на их картах шла быстрее, чем у конкурентов.
Количество жалующихся * цена игры <= количество зарплаты оптимизаторов, оторванных от разработки следующей игры
(глупая формула, конечно, но всё же)
Вообще-то оптимизаторы не делают игры. Оптимизировать должны программисты-генералисты, в играх разбирающиеся только на уровне их технической составляющей. Потому что область компетенции не может быть сразу везде.
Ну это слишком явный подкол. Все проедают деньги, и можно было проедать и писать код новой игры, а они пойдут вместо этого делать патч для компьютера АндреяМаста.
Проедают деньги те, кто юзает гит.
Кто такие "разбирающиеся в играх" люди и чем они занимаются? Пишут много комментариев на одном уютном сайте?
А это уже ваша вина. С вами чем больше говоришь, тем меньше игры делаешь. Сами не делаете, другим мешаете, а молодёжь гитами совращаете.
Просто интересно: ты считаешь, что ты разбираешься в играх, а я нет? Если так, то можно услышать аргументацию?
Ты? Я не знаю, в чём ты и насколько разбираешься. Я просто утверждаю, что оптимизаторов не могут отрывать от разработки следующей игры, их могут отвлекать от оптимизации следующей игры.
Я, кстати, не сильно понял, как разделение одной большой текстуры на несколько маленьких поможет шото оптимизировать. Атласы обычно и группируются с расчётом на то, что картинки из них будут грузиться примерно в одном месте.
Размер текстур. У видеокарт есть ограничение на макс. размер текстур, она не даст тебе загрузить текстуру большего размера, не ужав картинку.
Еще у некоторых видеокарт есть ограничение что размер текстуры должен быть степенью двойки, иначе при ее отрисовке возникнут артефакты. Решается добавлением пустых пикселей до нужного размера.
Причем все это можно реализовать в самом движке, разработчикам игры не придется все это делать вручную.
Я не в курсе, что это за видеокарты, которые не могут работать с текстурами 2048x2048? Я загуглил, даже на иПаде можно было загрузить такую текстуру в далёком 2010-ом году. Ты уверен, что сегодня такие видюхи кто-то делает ещё?
Про степень двойки то понятно, любой нормальный texture packer это сделает.
Современные консьюмерские видеокарты имеют ограничение в 16384x16384. Даже встроенные в процессор типа HD Graphics и т.п.
Значит плохой я пример тебе привел.
Ну не совсем берётся статистика, эта статистика от игроков в Овервотчи КоДы, а не от конкретной целевой аудитории.
Справедливое замечание, просто если взять именно эту статистику - это значит что большая часть именно устройств в мире будет способна запустить игру. То есть, если у тебя нет, то у соседа/знакомого/родственников есть. Но можно и просто занизить статистику в два раза - тогда и получим 4-8ГБ оперативки вместо 8-16ГБ. Никак не 512МБ или что мы там обсуждали.
Просто не играй в эту игру. Ты же не бежишь покупать все консоли из-за эксклюзивов. Захотят сделать для тебя - оптимизируют в патче.
10 лет - это норм для апгрейда, на моём ЭЛТ-мониторе пошли волны за такой срок)). А вот каждые 2 года, например, - не норм.
мегабайты и мегагерцы наращиваются специально чтобы разрабы не занимались ерундой типа разрезание текстур и попиливание шейдеров, а тратили время на важные геймплейные задачи.
Просто игры не для нищебродов с дешевыми ноутбуками, игры это роскошь. И ОС роскошь. И даже десктоп, когда он не рабочий инструмент
Я про это и говорю. Вместо "занимающихся ерундой разрабов" тысячи геймеров побегут покупать новый ПК и выбрасывать свой старый на свалку.
только те, кто считает что новая игра стоит нового ПК. Остальным пофиг. А если у покупателей есть такие ресурсы, нельзя их винить в том что они поощряют рублем такое стремительное развитие технологий
Ты видимо за играми не следишь и не видишь сотни постов от игроков, которые жалются что новая игра не идет на их ведре
Одни тысячи геймеров побегут, другие не побегут.
А ведь можно сделать так чтобы и те и те были довольны.
Я уже сто раз повторил что для разработчика не выгодно угождать людям, которые отказываются пересаживаться со своих ведер. Эти люди купили свою суперкрутую систему за тысячу долларов 15 лет назад, и теперь думают что спустя это время им не нужно обновляться, и разработчики должны их поддерживать. Это ограничивает прогресс. Отвратительно.
Надо знать о каких тысячах говорим. У тебя есть какая-нибудь статистика?
В данном случае речь не об оптимизации. Просто чтобы убедиться что игра идет, скажем, на "видеокарте с 512Мб памяти", есть только один способ - протестировать (желательно путем прохождения, т.к. вполне может не работать какой-то определенный момент) ее на компьютере с такой видеокартой. Все эти эмуляции и замеры ничего не гарантируют, т.к. наверняка она упрется не в то ограничение которое ты ожидаешь.
И с памятью аналогично. И нет, в требованиях к диску так и пишут "нужно свободного места", т.к. сколько игра занимает на диске учесть легко (ну, если сейвы не включать в расчет, но это обычно проблема игрока). А сколько она занимает в памяти - по большому счету вообще посчитать нельзя (в каком-нибудь KSP никто не запретит упорному игроку понастроить суперстанцию из тысяч деталей и добиться чтоб игра падала с нехваткой памяти). Поэтому пишут с каким количеством оперативки ее проверили на играбельность.
Бобров на максималках.
Выглядит аппетитно.