Sergei Kushnirenko@dalerank
Люблю (ш)кодить, алгоритмы и старые авто.
Information
- Rating
- 23-rd
- Location
- Москва и Московская обл., Россия
- Date of birth
- Registered
- Activity
Specialization
Десктоп разработчик, Разработчик игр
Старший
From 300,000 ₽
Git
C++
Многопоточность
Прикладная математика
ООП
Могут, но это уже не ко мне вопросы :)
Ну вы же прочитали эту статью, она размещена в сети, написана с помощью пк и вызвала некоторый отклик у вас, раз вы решили написать комментарий. Вероятно с помощью смартфона. Разве ваш комментарий не реален? Музыка и игры тоже не имеют физических воплощений, но это не мешает им вызывать эмоции.
Не надо жалости, у меня все отлично ;) Специально спрятал под спойлер, он появился после выхода книги для обратной связи. Вы еще про бусти забыли сказать...
Есть такие понятия как комерческая тайна, авторское право и мнение игроков. Если пользоваться открытами тулами, то рано или поздно код или его части утекут. Если код пишет ИИ, то нет явного авторства кода и условный ChatGPT может взять кусок как есть и встроить его в игру, если код взят из открытых источников и имеет специфичную лицензию, то автор лицензии намример может потребовать открыть всю кодовую базу изза этого небольшого фрагменты. Есть мнение игроков, которые считают что игры должны писать люди для людей, и пока их большинство.
@Kotyara99А у вас была возможность разобрать фрейм через RenderDoc? Может получится вытащить реверснутые шейдеры?
Благодарю, надеюсь найдёте полезные моменты и практики
Ну так там не про современный с++, а про базовые вещи, структуры данных, работу с памятью, строки, паттерны оптимизации. Это все мало связано с конкретным стандартом, если охота 20/23 стандарта - это уже отдельно, в нескучное программирование.
Ага, семплирующие это только верхушка чтобы наметить самые явные области куда смотреть: А смотреть надо на Self time (exclusive) проведённое непосредственно в теле функции. Высокое значение = внутри функции есть дорогой код, Total time (inclusive, если есть) время вместе со всеми вызываемыми функциями. Высокое значение = функция является точкой входа в дорогой пайплайн, т.е. надо разбираться не самой функцией, причиной почему функции внутри дорогие, но смотреть выше 3-4 уровня смысла нет, main и update всегда будут дорогими по понятным причинам.
Я тут про книгу рассказывал, вся вторая часть посвящена оптимизациям, как, зачем и где смотреть.
Выложил оглавление под спойлер, всё есть.
Добавил ссылку на ozon, там есть оглавление.
Определенно стоило, думаю опыт разработки и оптимизации AoE2, Sims, WarThunder, Metro, Deathloop, Stellaris и еще пары крупных проектов интересен многим. Не всем надо писать с нуля игровой движок. Заглянуть стоит в оглавление, там темы не такие вялые ;)
Таже, просто не все из тех кто на меня подписан читают блог bhv, поэтому с разрешения издательства я утащил текст к себе. Ну и тут часть материала, которая появилась у меня уже после постов в bhv и на линкеде.
Google docs + word. Aнатлий работал в Corel насколько я знаю
Очень многое зависит от сферы применения. Нет отдного какого-то инструмента который мог бы ответить на все вопросы. Начать надо с чегото простого вроде verysleepy, собрать статистику прогонов,чем больше тем лучше. Посмотреть на результаты, но если время работы устраивает, то нет смысла что-то менять. Дальше если действительно есть потребность уменьшить время работы, и есть доступ к исходникам, по интегрируем pix, tracy, optick, mpro или что еще душе угодно, это абслютно неважно, можно и студийным профайлером смотреть. Если есть внутренняя уверенность, что функция должна работать быстрее, ставим метки и смотрим. В половине моих кейсов случаев получить x2 можно просто избавившись от аллокаций, строк, массивов и копирования, но опять же... оптимизировать надо только если действительно надо. По поводу программирования без аллокаций могу вас зазвать на свой курс на степике, будете понимать о чем разговор. Если хочется окунуться еще глубже в теорию оптимизации, то вот здесь еще очень много. Универсального рецепта нет, надо смотреть код
ОпасТное упрощение, потому что автоматический лод (nanite для геометрии, и streaming mips для текстур емнип) лишь автоматизирует часть пайплайна. Nanite работает только с определёнными типами мешей и не поддерживает скелетную анимацию (не поддерживал насколько я помню), прозрачные материалы и еще какие кейсы были, так что художник всё равно обязан понимать, какие ассеты подходят, а какие требуют ручных LOD-ов. текстурный стриминг тоже надо настраивать, и судя по томуже хогвардсу на это тупо забивают, потому что надо потратить столько же времени если не больше на каждую модель.
Чтобы не прийти через некоторое время к "ээээ ууу гугл, давай добавь еще что-нить на этой как, его.. вот сюда вообщем" приходится не только читать, но и слушать. На удивление я сейчас читаю больше разных техматериалов, чем лет десять назад, когда не было клода, чатика и иже с ними
Именно в шутерах вроде контры или валоранта разброс строго детерминирован и есть такое понятие как высокоточные дуэли, которые происходят с выцеливанием по пикселю. Там разница в несколько мс решает, особенно при реакции топовых игроков ближе к ~100–150 мс, это 5–7% от общего времени реакции.
Серверный предикшн компенсирует пинг при регистрации хита, но не компенсирует то, что вы видите противника позже из-за интерполяции и низких фпс на своей стороне. Peeker's advantage потому и существует, что клиент атакующего показывает ему противника раньше, чем клиент обороняющегося показывает атакующего, и фпс здесь напрямую влияет на этот разрыв.
Есть такое, но тут надо различать две категории игр, супертяжикам вроде BF пофиг на ваше железо, потому что они выходят для консолей и там всё норм, и вы либо миритесь с низкими настройками либо покупаете новый пк, а еще лучше приставку, потому что приставка это постоянный денежный поток от большого числа игроков.
А вот вторая, которым опять же пофиг на ваше железо, вроде инди, AA‑проектов, всякого «долгоиграющего» онлайна с модами и воркшопом. Для них ситуация принципиально другая, потому что они ориентированы на стимовское картофельное железо, которое отстает года на 4 от рынка.
Вы приходя c ноутбучной gf1650 поиграть в последний BF не попадаете в ЦА игры. Ну и не стоит забывать, что японский и американский рынки сильно оконсолены, и топовые тайты выходят и собирают основные деньги на консолях, а не пк и там всё норм.
И потом -- оптимизировать игры сложно, дорого и затратно по времени, а прироста аудитории дает мало, так скажите будет ли студия тратить условно десять процентов ресурсов, чтобы привлечь еще 1% игроков?
Вот насчет memcpy я бы поспорил, видимо автору чудесным образом удавалось избегать этой черной дыры, ожидая, правильного поведения, но:
это законно с точки зрения сях, но там есть lifetime, и там есть проблемы
компилятор может и оптимизирует это в «невыровненную загрузку», но чаще нет - ибо мемкопи для другого
Компилятор может распознать шаблон
int32_t x; memcpy(&x, addr, sizeof x);и заменить его на невыровненную загрузку, если целевая архитектура такое поддерживает.поймайте для начала момент, когда в предложения надо вводить точки.