Pull to refresh

Comments 80

Возьму через полгода когда все починят.

С торрентов и сейчас можно, ибо GOG — безо всяких DRM (кстати, за счет предзаказов они уже покрыли все расходы, что в очередной раз показывает особое отсутствие пользы от всяких Denuvo).

Если бы пользы от Денуво не было бы, то ее никто бы не ставил. Это денег стоит.

Денуво взламывают, через несколько дней после релиза. В итоге пиратка меньше тормозит, чем оригинальная. Точно пользу приносит?

Тот же мортал комбат ломали почти год.

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

А зачем ломать мультиплеерную игру то вообще?
UFO just landed and posted this here

Anno 1800 не сломали до сих пор. А скоро уже 2 года будет с момента выхода.

Аудитория конечно поменьше, чем у Киберпанка, но поклонников у серии хватает.
Самому интересно, почему ее еще не сломали на самом деле.

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

От Denuvo есть определённая польза — им «оснащались» все копии CP2077 для журналистов (которые были разосланы за десять дней до релиза) во избежание слива.
черт, а это правильное применение
Только в случае большой фанатской базы. В остальных случаях есть шанс и не окупить
Вот бы Вам зарплату тоже торрентами платили.
Зоозащитник? Не волнуйся ты так за мою зарплату — мне её вообще не платят :)
UFO just landed and posted this here
В глубинке РФ так и происходит.
UFO just landed and posted this here

Можно подумать дело исключительно в пиратстве, а никак не в желании левых контор типа Гугла наварить на теме гейминга.

UFO just landed and posted this here

за то, что сообщение подразумевает не честно купленную?

UFO just landed and posted this here
но когда говорят про игру: «возьму с торрентов», то практически всегда подразумевается именно пиратство.
Всё равно это не повод осуждать человека. Если у него нет лишних денег на игры, то лучше пусть спиратит, потом похвастается друзьям, а там кто-то да купит, чем совсем играть в них не будет.
Больше всего в контексте разговора мне понравился Humble Bundle.
После покупки, получаешь доступ к торрент-ссылке!
*звук разрываемого шаблона*

Но ведь лаунчер "есть не просит", зато даёт огромную скорость закачки (около 40 мегаБАЙТ в секунду), автообновления с гарантированным сохранением прогреса игры и т.д. Что в нём плохого? Такуя сырую игру ещё много будут обновлять и патчить — и без лаунчера прдётся каждый раз качать и переустанавливать

UFO just landed and posted this here

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

UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
с торрента такая скорость тоже не редкость, если раздача популярная. и в то же время лаунчер ничего не гарантирует, с того же стима у меня то 50 мегабайт, то ~5. ну и плюс я, например, в очередной раз не потратил деньги в никуда, т.к. игра крайне не стабильна и через чур требовательная на лоу енд железе (у меня 1063, 900п все лоу и в итоге 40-50 фпс с рывками, грубо говоря пустое поле игра не может в 60 фпс отрендрить). как (если) поправят можно будет и купить

Нету в бульдозерах никакой SMT. Там просто число блоков работы с плавающей запятой 4, а блоков работы с целыми числами — 8.
В играх, скорее всего, от дополнительных 4 ядер нет профита, из-за чего такой код появился, но в не математических приложениях профит есть.

Была какая то проблема на некоторых процессорах, при использовании логический ядер, все жутко тормозило. И для игр использовали спец настройку или запускали через бантинк чтобы работали только физические ядра.

Да. Вот у меня Sandy Bridge, и я через BIOS вообще отключил HT нахрен, потому что никакой прибавки к скорости от него нет, а в вычислениях, наоборот, производительность проседает.

В киберпанке между i5-2500K и i7-2600K почти полуторакратная разница.

Ссылочкой на тест не поделитесь? Не верю.

www.youtube.com/watch?v=rCtXMxkj6Ak
Можете сами проверить, установив минимальные настройки графики с минимальным разрешением и скейлингом 50%, включая и отключая HT/SMT в биос (ограничив количество ядер, если проц не грузится на 100% с вашей видеокартой).

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


Всё дело в том, что при обращении к видеокарте CPU ожидает результата в busy wait. DX12 позволяет обращаться к видеокарте из нескольких потоков — как следствие, более количество потоков нужно для эффективной загрузки видеокарты. При этом эти потоки ничего полезного не делает, они только ожидают выполнения команд.


А вот в DX11 такого эффекта наблюдаться не должно. Многопоточность используется для формирования очереди команд, но сами команды отправляются из одного потока.

Там видно, как 2500 ложится в полку.


Ожидающие потоки планировшик вытеснит, они же не на while(true) ждут?

Ожидающие потоки планировшик вытеснит, они же не на while(true) ждут?

Не вытеснит. Они именно что ждут на while (!gpu_ready()) { spin(); }. Сихронизация же через планировщик будет слишком долгой.

вместо «4 ядра и 4 потока"

instead of «4-cores 8-threads»

небольшая неточность.

И на одной картинке — 16-тиядерник с загрузкой в 18 потоков, а на другой — 6-тиядерник в 12 (а больше нету) потоков.
При этом в первом случае описанное поведение — желательно.

Вот такой вопрос, а как можно было догадаться, что нужно открыть exe-шник игры в Hex-редакторе и поменять определённую строку в нём?

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

Ассемблировать не надо, здесь просто поменяли код операции одной из команд, например, заменив условный переход на безусловный. Предполагаю, что специалисты, способные на это, знают КОПы наизусть…

Не буду говорить за всех, но лично мне порой очень помогает armconverter — там можно задизасмить кусочек кода, подредактировать его и ассемблировать обратно — имхо, удобнее чем опкоды заучивать.
Хотя порой удобнее как раз в hex' е опкоды менять, бывало и такое (когда попадались dex' ы которые были собраны как-то по особому и не работали после простой разборки-сборки).

Дизассемблер Hydra умеет это на лету :)
UFO just landed and posted this here
Ещё можно вспомнить проект XRayExtensions.
А так же мой форк этого проекта XRayExtensions 2.
У меня этот процесс автоматизирован, например, автоматически меняют адреса релокации. Добавляется новые секции.
Я правильно понимаю, что эти dll-ки достаточно кинуть в папку со Сталкером?
Да, заменяешь оригинальные файлы на пропатченые, и вперёд.
Вот тут другая технология используется.
github.com/yamashi/PerformanceOverhaulCyberpunk
Пропатчивает дллка после разгрузки, можно использовать если исполняемый файл упакован протектором. А у меня файл должен быть без всяких упаковщиков, протекторов.

О, да. Я как-то давно писал к одной программе расширение таким образом. Была самописная, исходников не было, документации формата данных тоже не было. Некоторые данные были внесены в базу без возможности их редактировать, а мне это надо было позарез. Вот таким образом я выяснил, какие функции за что отвечают и дописал свою библиотечку, которую внедрил в софтинку подобным же образом, как по первой ссылке.


Потом мне показалось этого мало, и я вместо библиотечки решил дописать свой код прямо в исходный exe. Но там места не было достаточно. Добавил свою секцию.


Забавное это развлечение, но, увы, отнимает много времени...

За столько лет ожиданий игры про киберпанк можно было уж и подготовиться...

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

UFO just landed and posted this here

Что-то мне подсказывает, что после такого патча производительность в игре только упадёт, особенно для 16-ядерника. С ростом числа потоков возрастают накладные расходы на синхронизацию, закон Амдала также никто не отменял. Также не стоит забывать, что SMT — не бесплатный, это просто разделение ресурсов ядра. Второй поток, работающий на том же ядре, будет существенно замедлять первый поток.


Да и тесты современных игр показывают достижение оптимальной производительности при 6-8 ядрах, а дальнейшее повышение числа ядер для некоторых игр уже приводит к снижению FPS.


Так что я считаю описанное в статье поведение для 16-ядерника желаемым. Судя по графику загрузки процесса, я не вижу, что игра упирается в проц. А вот для 4-6-ядерников возможны варианты.

Для 12 и 16 ядер эффекта не заметили. А вот владельцы 6-8 ядерников очень рады, например на конфигурациях типа 5600х + RTX3080. Главное перед патчем посмотреть в диспетчере, упирается ли игра в видеокарту или процессор, и если не в видеокарту, проанализировать загрузку ядер процессора.
Тут дело в том, что подобный «патч» не заставляет игру использовать больше ядер, он просто дает возможность ими пользоваться. Если бы игру можно было заставить использовать все ядра простым HEX-патчем, любители старых игр открыли бы какой-нибудь дорогой алкоголь в честь такого события…

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


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

Судя по всему таки не библиотеке, а игре в целом, а уж для чего она там это использует внутри хрен его знает. Упоминаемый репозиторий это обычный пример, который через WinAPI определяет число ядер. От GPUOpen там ноль строчек кода. Разрабы скопипастили его, не читая, хотя код неверный.
Да и тесты современных игр показывают достижение оптимальной производительности при 6-8 ядрах

Это какие игры? Думаю, что игры, использующие DX12 или Vulkan, наоборот, не деградируют при увеличении используемых ядер CPU, т.к. само API заточено на асинхронность, в отличие от DX11 (и ниже) или OpenGL

У меня как-то и без патчевания используются все ядра. Учитывая тот факт что на втором скрине где «пропатчено» всего 6 ядер, а не 16 — допускаю, что обычные пользовательские процессоры патчить и не нужно. Вполне возможно что в случае с 16-ти ядерным процессором так было сделано намеренно.
скрины
image
image
Используются, но не полностью. Понятно, что часть остаётся системе и другим приложениям. Видно, что часть используется не полностью, и видеокарта простаивает. На 1600 результаты патча у людей с реддита были замечательные. Пропатчить несложно, сохранив оригинал.
Заголовок: «игнорирует многопоточность микропроцессора AMD»
На самом деле: «использует 16 логических ядер из 32» (при том что для игр, логику в которых частенько трудно распараллелить, 16 это довольно-то дофига)
Это иллюстрация. Такая же картина и для 6-8 ядерных, где включение логических ядер существенно улучшает FPS.
На форуме было предложено решение — изменить несколько байт в EXE-файле игры. Нужно в Hex-редакторе найти строку 75 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08 и изменить ее на EB 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08.

Люди, наверное, реально думают, что это какая-то черная магия. А тут всего лишь замена JNZ на JMP (75 => EB). То есть принудительная активация некоего условия.


Первоначально пользователи пробовали заменять строку 75 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08 на значения 74 30 33 C9 B8 01 00 00 00 0F A2 8B C8 C1 F9 08.

А это мне видится как кривой патч с самого начала, потому что вместо JNZ делалось JZ. (75 => 74). То есть действительно, инвертируется условие перехода. И маловероятно, что разработчики допустили ошибку, перепутав TRUE с FALSE.

В этом случае на ПК с процессорами AMD станут использоваться все логические ядра центрального процессора, а производительность игры улучшится на 10-20%.

Как-то слишком уж безапелляционно. Да, ядра использоваться начнут. Но далеко не факт, что это даст какой-то выигрыш по производительности. Во-первых, я более чем уверен, что в подавляющем большинстве случаев узкое место — GPU. Так что увеличение пропускной способности и/или отзывчивости CPU хоть на 20%, хоть на 50% ничего не даст. Во-вторых — не нужно забывать, что SMT/HT ядра только в диспетчере задач неотличимы от "настоящих". На деле же заметный выигрыш в производительности они могут дать в довольно ограниченных сценариях и типичная игра в эти сценарии не входит.


У меня вот на 3950X/RTX 3080 при игре на 1440p и около-максимальных настройках графики производительность от данного патча не улучшается. Может даже немного ухудшается. Жаль что в игре нет нормального бенчмарка.

Помимо этого еще обнаружили некоторые очень странности по количеству памяти выделяемой игре, возможно кому то это поможет www.reddit.com/r/cyberpunkgame/comments/kccabx/hey_cd_projekt_red_i_think_you_shipped_the_wrong
Вообще уже есть github репа в которую потихоньку стекаются все эти фиксы. Патчинг силами комьюнити. github.com/yamashi/PerformanceOverhaulCyberpunk
Интересно что бы было если CD Project выложили исходники к игре?
UFO just landed and posted this here
Хех на то он и сайбер панк )
Sign up to leave a comment.

Other news

Change theme settings