{"id":2712,"title":"\u0422\u0435\u0441\u0442 \u0441 \u0448\u0438\u0444\u0440\u0430\u043c\u0438 \u0438\u0437 \u0435\u0434\u044b: \u043d\u0435 \u043f\u0440\u043e\u0445\u043e\u0434\u0438\u0442\u0435 \u043d\u0430 \u0433\u043e\u043b\u043e\u0434\u043d\u044b\u0439 \u0436\u0435\u043b\u0443\u0434\u043e\u043a","url":"\/redirect?component=advertising&id=2712&url=https:\/\/tjournal.ru\/special\/kaleidofood&placeBit=1&hash=28db11ae3219937c44aa1427c824eab338831a6e3433f41ae22d24d5717c4772","isPaidAndBannersEnabled":false}
Инди
Dmitriy Akhremenka

Сказ о том, как мне была дана невиданная мощь, но я не сумел её подчинить

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

…Well

Когда я осознал происходящее, оно застало меня врасплох. С одной стороны я должен быть рад, ведь это значит, что мои игры более производительны, чем я полагал. С другой стороны, вся многолетняя статистика лишается смысла (примерно % на 80).

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

Конечно, в воздухе ненавязчиво висит вопрос: неужели я раньше не мог этого заметить? Неужели всё это время ничего меня не смущало? … Поразмыслив над этим получше, я понимаю, что хоть периодически и задавался такими вопросами как… «Хмм… Интересно, почему когда я смотрю лишь в 4 треугольника, получаю 12 fps, вместо 60?». Но, как правило, я обращался к иным, хоть и смежным областям, где могла затаиться причина. А такие мелочи как «проверь, какой именно процессор нагружен» прошли мимо.

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

Полученная власть опьянила меня. Я начал действовать безрассудно. Участки, которые хорошо идут и без дополнительной оптимизации воспринимались готовыми. Мысль «и так сойдёт» начала крутиться в голове всё чаще, а страх возвращения в прежнюю эпоху мешал мыслить здраво. …Попробовав это однажды, потом уже тяжело слезть.

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

Теперь то можно вздохнуть с облегчением…

Я не могу заставить автоматически использовать тот графический процессор, который нужен. На столько не могу, что даже костыли не помогают. На данный момент единственными способами это сделать являются «Context menu -> Run with graphics processor» или ручное изменение настройки в утилите видеодрайвера (в моём случае Nvidia). Оба эти варианта я могу рассматривать лишь как альтернативы, ибо говорят, что негоже перекладывать ответственность на пользователя.

Поиск в сети дал понять, что это не редкая проблема (по крайней мере была лет 10 назад). Однако все найденные решения не соответствуют условиям, в которых я нахожусь. Ад курильщика – не когда сигарет нет, а когда их полно, но нет огня.

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

С иной стороны, есть ли среди читателей сотрудники Microsoft и Nvidia для консультации? Как найти либу, что решит столь незатейливую задачу? Вероятно, пропрогеры возразят: «Найти либу? А самому написать?», на что я отвечу «Если знаете как, поделитесь, буду признателен». А до тех пор всё, что я выпустил, без вмешательств будет работать на CPU.

Благо, на данный момент, публично выпущен лишь один малоизвестный проект. Так что, вероятно, массового позора мне избежать удастся. … До тех пор, пока я не начну думать о том, что проблему то я обнаружил до того, как выпустить свою первую игру. А поговаривают, что когда ты осознанно выпускаешь некачественный продукт – к тебе либо относятся с пониманием, либо с презрением, пока ты не умрёшь или не сменишь имя. Имя мне дорого, так что готов смело заявить, что я открыт к диалогу.

Здесь, вероятно, было бы весьма неплохое место, чтобы снова прорекламировать свою игру, оставив ссылочку, но … Знаете это чувство, когда, например, какой-нибудь блогер говорит «позвольте поделиться сокровенным» и начинает говорить о своей жизни, о своих чувствах и мировоззрении. А потом такой «именно поэтому я хочу порекомендовать вам это каз…». И от принятия того, что вся его откровенность лишь подводка для рекламы, начинает как будто рушиться доверие. Понятия не имею, как много людей испытывают подобное и на сколько это вообще разумно. Однако, не хочу испытывать ничьё доверие. Поэтому не будет вам тут никаких игр (полагаю, теперь не останется вопросов о том, почему она малоизвестная).

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

0
16 комментариев
Популярные
По порядку
Написать комментарий...
Маленький бокал

Если написать что за движок, или в случае самописного движка написать каким образом выбираешь GPU и какое графическое API используешь, то шансов что тебе помогут будет больше :)

А до тех пор всё, что я выпустил, без вмешательств будет работать на CPU.

И тут не совсем понятно что имеется в виду, так как работать на CPU и на встроенном GPU – всё ещё не одно и то же.

Ответить
3
Развернуть ветку
Владислав Румянцев

"Тем не менее, вышеобозначенная головная боль на данный момент не решена."
Как решишь, напиши. Тоже интересно, хоть пока проблем нет.

Ответить
3
Развернуть ветку
Naykus

Я писал бы похоже, взбреди мне такая глупость в голову

Ответить
2
Развернуть ветку
ViT

Вместо того, что бы просто задать четкий технический вопрос, ты размусоливаешь

Ответить
1
Развернуть ветку
Донкий ХОД

А место, где он его должен задать - тебя не смущает?
Хотя стопэ, ведь ДТФ - это место сбора прогеров, зарабатывающих 300к зелени в наносекунду.

Ответить
2
Развернуть ветку
Донкий ХОД

А место, где он его должен задать - тебя не смущает?
Хотя стопэ, ведь ДТФ - это место сбора прогеров, зарабатывающих 300к зелени в наносекунду.

Ответить
1
Развернуть ветку
Донкий ХОД

А место, где он его должен задать - тебя не смущает?
Хотя стопэ, ведь ДТФ - это место сбора прогеров, зарабатывающих 300к зелени в наносекунду.

Ответить
1
Развернуть ветку
Snowball Snowball

Технических подробностей конечно в посте ноль, но могу предположить, что если дело про винду, то автору нужно что-то такое
https://docs.microsoft.com/en-us/windows/win32/api/dxgi/nf-dxgi-idxgifactory-enumadapters
Ну а затем в полученном списке выяснять, какая карта интегрированная, а какая нет. Обычно палится по наибольшему количеству Dedicated vram. Но с оптимусом иногда свои проблемы имеются

Ответить
1
Развернуть ветку
Владислав Румянцев

Это для DX. А по OpenGL вроде нет интерфейсов. Тоже хотел разобраться как то. Нигде не нашел. Винда пишет что поддерживает OpenGL, но интерфейсов доступа нет. Скорее всего через контекст устройства задается, а винда сама выбирает лучший. Тоже хотел в этом глубже разобраться. Инфы нет. У меня все нормально выбирается, тестил на нескольких машинах, без проблем. Вроде получить инфо можно либо через WMI, либо через SDK видеокарт. Но человек даже не написал на чем он пишет? А так можно было бы поковыряться.

Ответить
0
Развернуть ветку
Snowball Snowball

c OpenGL все сложно, потому что он не специфицирует создание контекста и понятия девайса в нем нет. Увы, тут платформозависимый зоопарк начинается. У нвидии вроде бы есть что-то, но вероятно оно не работает, экстеншен старый https://www.khronos.org/registry/OpenGL/extensions/NV/WGL_NV_gpu_affinity.txt
Вообще с opengl лучше по возможности слезать, очень устаревшее апи с миллиардом проблем, типа вот этой вот с девайсом.

Для амд тоже есть что-то
https://www.khronos.org/registry/OpenGL/extensions/AMD/WGL_AMD_gpu_association.txt

Ответить
2
Развернуть ветку
Владислав Румянцев

О, спасибо. Хотел как нибудь сесть, разобраться. Теперь повод есть. А с OpenGL кажется рано слезать. Пока его все устройства хавают и стабильно работает. Как будет тотальный обвал или устареет, тогда да.

Ответить
0
Развернуть ветку
Владислав Румянцев

А в популярных движках наверно свои интерфейсы выбора должны быть.

Ответить
0
Развернуть ветку
Arseny Zemlin

Хороший сторителлинг, а ситуация немного сверхестественная. Возможно автор не особо разбирается в возможностях GPU и не отличит на глаз 1660 super от 2070 в какой-либо динамичной сцене. Главное не пьяней дальше от новых цифр )

Ответить
0
Развернуть ветку
sedd

"А поговаривают, что когда ты осознанно выпускаешь некачественный продукт – к тебе либо относятся с пониманием, либо с презрением, пока ты не умрёшь или не сменишь имя. Имя мне дорого, так что готов смело заявить, что я открыт к диалогу."

Не хочу тебя огорчать, но миру в целом глубоко пофиг )))

Ответить
0
Развернуть ветку
Денис Кадыков

пока ты не умрёшь, не сменишь имя
или пол

Ответить
0
Развернуть ветку
Marat Sungatullin

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

Ответить
0
Развернуть ветку
Читать все 16 комментариев
{"hash":"806632a5","params":{"id":"dtfru","service":1,"title":"\u041f\u0440\u044f\u043c\u043e\u0439 \u044d\u0444\u0438\u0440","isLegacy":false,"isHidden":false}}