Манипулирование удачей - действия, направленные на предопределение "случайных" результатов в игре путем варьирования ввода. Данное явление известно под различными именами, в том числе как: "luck abuse", "randomness abuse", или "RNG abuse".
Необходимо понимать, что никакая ЭВМ, будучи устройством детерминированным, не способна к случайному поведению. Все, что она делает - исполняет инструкции. Чтобы симулировать последовательность реалистично случайных чисел, в ЭВМ используются генераторы псевдослучайных чисел (часто называемые генераторами случайных чисел и известные, как RNG или PRNG).
Генератор псевдослучайных чисел - это, по сути, алгоритм, позволяющий формировать последовательность трудно предсказуемых чисел, используемых для нужд игры. Широко известными алгоритмами генерации чисел являются такие как:
Это лишь некоторые из множества возможных способов, какими отдельно взятая игра может генерировать псевдослучайные последовательности чисел. Эти значения она использует для принятия решений о наступлении случайных, с точки зрения игрока, событий, таких как:
В такие моменты и приходит на помощь манипуляция удачей - предопределение случайных событий через ввод так, чтобы результат был в вашу пользу.

В какие моменты игра итерирует RNG?

Чтобы был хоть какой-то эффект, игре необходимо получать новое значение RNG, как минимум, всякий раз, когда требуется определить наступление случайного события. Однако, существуют различные подходы к выбору момента, когда игра использует RNG:

Какие значения играют роль зерна для RNG?

Всякому RNG требуется начальное значение, называемое зерном. Это позволяет ему не выдавать каждый раз одинаковую последовательность чисел. Оно может браться из различных источников, и типичной практикой является на ходу добавлять еще какие-нибудь данные, чтобы повысить энтропию.

Какие из RNG и для каких действий использует игра?

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

Что мне с этим делать?

Есть вероятность, что у вас получится предопределять случайные события с помощью устройства ввода.
Представленная GIF-анимация из игры про Черного Плаща наглядно демонстрирует, как разница в один кадр каждый раз приводит к выпадению различных предметов.

Трудности при манипулировании удачей

Точка принятия решения

Допустим, вы делаете ТАС по игре про покемонов. Ваш покемон, в обычных условиях более медленный, экипирован предметом Quick Claw, дающим 25% шанс сходить первым. Вы пробуете манипулировать исходом проверки, варьируя время перед командой атаковать. Однако, сколько бы вы нb ждали, ваш покемон ходит вторым. Что же пошло не так?
Очень важно находить тот самый момент, когда игра принимает решение о вызове случайного события. Иначе вы просто будете зря накручивать перезаписи, пытаясь манипулировать уже предопределенным событием.
В данном случае, срабатывание эффекта Quick Claw было предопределено еще до появления меню вашего хода. И коль скоро было принято негативное решение, ваш покемон обязательно сходит вторым.
Если вы окажетесь в ситуации, когда событием, доступным для манипуляции, управлять не получается, попробуйте искать ранее (по ходу мувика), пока не обнаружите то место, в котором ваши нажатия повлияют на результат.

Искусственный интеллект (AI)

В играх, где предполагается принятие решений, часто бывает реализован соответствующий механизм для игрока-компьютера, чаще называемого ИИ. Ваши возможности ограничены в рамках того, что ИИ умеет делать.
Допустим, ИИ способен сделать хороший ход, но вы хотите, чтобы он поступил иначе. Если выполнение того хорошего хода зависит только от решения ИИ, то вам никак не повлиять на это. Все, что в ваших силах, это инсценировать ситуацию, в которой ИИ либо не сможет сделать этот ход, либо не посчитает его хорошим.
То же касается несовершенных решений ИИ, согласно которым? плохой ход (с точки зрения человека) считается хорошим. Единственный фактор здесь это упорство ИИ в выполнении такого хода.

Прочие проблемы

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

Редкость

Хотя эта проблема не из технических, редкость (обычно вероятность в 1/1000 или реже) какого-то события или последовательности таковых может предполагаться в силу ненаступления этого события в течение любого приемлемого времени. Есть несколько способов разобраться с этим:

Советы по манипулированию удачей

Разделение последовательности событий

Предположим, вам нужно вызвать три события, каждое из которых происходит почти сразу после предыдущего. Каждое из них имеет шанс срабатывания, равный 1/16, следовательно общая вероятность - (1/16)^3, или 1/4096, что не очень много.
Однако, если возможно добавить ввод (например, подождать) между этими событиями, то вместо одного манипулирования тремя событиями может получиться три манипулирования, по одному для каждого события. Так будет гораздо проще, ведь каждым событием нужно будет манипулировать при вероятности, равной 1/16.
Иными словами, манипулирование множеством исходов ряда событий становится тем проще, чем в большей степени ввод со стороны игрока позволяет определять их по частям. К сожалению, это не всегда возможно, в особенности, когда RNG редко итерируется, и ожидание в течение нескольких дополнительных кадров ничего не меняет.

Адреса переменных, входящих в RNG, и их мониторинг

Разве не будет полезно знать, какие именно действия итерируют RNG?
Вот где мониторинг RNG в памяти очень полезен. Наблюдая за тем, когда оно меняется и как, можно предположить, какие примерно действия могут помочь при манипулировании.
К примеру, допустим, что значение переменной RNG в памяти обычно остается постоянным, но изменяется при выстреле из определенного оружия. Тогда вы знаете, что пользование данным оружием позволит вам манипулировать удачей. Более того, вы замечаете, что поведение отдельных врагов влияет на RNG. Значит, этим поведением тоже можно манипулировать.
Даже если значение RNG меняется все время, иногда некоторые действия изменяют его сильнее прочих. Это обычно указывает на полезность данного действия для манипуляции.
В первую очередь, надо найти RNG в памяти. Подробнее в статье о поиске в памяти. Далее отслеживаем его значение.

Алгоритм RNG

Как правило, разобраться в формуле RNG - непростая задача, а понять, как игра использует эти случайные числа, еще сложнее.
Существует ряд популярных алгоритмов для RNG, но игры на старых системах чаще используют что-то самописное. Современные же игры как раз склонны доверять реализацию RNG стандартным библиотекам.
Широко распространенные RNG имеют сходство с общепринятыми алгоритмами шифрования: они часто используют одинаковые ключи. Простой поиск ключа в коде игры может позволить опознать реализацию конкретного RNG.
Небезопасные RNG часто можно обратить, и существует алгоритм, способный выдавать ту же последовательность значений в обратном порядке. В силу наличия в эмуляторах возможности сохранения состояний, это не слишком полезно, но, тем не менее, возможность есть.

Примеры

Одним из колоритных примеров манипулирования удачей может служит мувик по игре Dragon Warrior. В данном прохождении игрок полагается на сверхъестественное везение в следующих ситуациях:

К прочтению


RU/LuckManipulation last edited by Samsara on 8/7/2023 3:21 AM
Page History Latest diff List referrers View Source