Advertisement
DrBaldhead

TAS_Luck_Manipulation_beta

Nov 20th, 2015
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.47 KB | None | 0 0
  1. [http://media.tasvideos.org/dw2.png|right]
  2.  
  3. Манипулирование удачей - действия, направленные на предопределение "случайных" результатов, определяемых в игре, путем варьирования последовательности ввода. Данное явление известно под различными именами, в том числе как: "luck abuse", "randomness abuse", или "RNG abuse".
  4.  
  5.  
  6. Необходимо понимать, что никакая ЭВМ, будучи устройством дискретным, не способна к случайному поведению. Все, что она делает - исполняет инструкции. Чтобы симулировать последовательность реалистично случайных чисел, в ЭВМ используются ''[http://en.wikipedia.org/wiki/Pseudorandom_number_generator|генераторы псевдослучайных чисел]'' (часто называемые ''генераторами случайных чисел'' и известные, как ''RNG'' или ''PRNG'').
  7.  
  8. Генератор псевдослучайных чисел - это, по сути, алгоритм, позволяющий формировать последовательность трудно предсказуемых чисел, используемых для нужд игры. Широко известными алгоритмами генерации чисел являются такие, как:
  9.  
  10. * [https://ru.wikipedia.org/wiki/%D0%9B%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D1%8B%D0%B9_%D0%BA%D0%BE%D0%BD%D0%B3%D1%80%D1%83%D1%8D%D0%BD%D1%82%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D1%82%D0%BE%D0%B4|Линейный конгруэнтный метод].
  11. * [https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80_%D1%81%D0%B4%D0%B2%D0%B8%D0%B3%D0%B0_%D1%81_%D0%BB%D0%B8%D0%BD%D0%B5%D0%B9%D0%BD%D0%BE%D0%B9_%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%BE%D0%B9_%D1%81%D0%B2%D1%8F%D0%B7%D1%8C%D1%8E|Регистр сдвига с линейной обратной связью].
  12.  
  13. Это лишь некоторые из множества возможных способов, какими отдельно взятая игра может генерировать псевдослучайные последовательности чисел. Эти значения она использует для принятия решений о наступлении случайных, с точки зрения игрока, событий в таких ситуациях, как:
  14.  
  15. * Промахи или критические попадания при атаках (вообще все походовые RPG)
  16. * Результаты броска костей (настольные игры, симуляторы казино)
  17. * Поведение игровых боссов (Игры из серии Mega Man)
  18. * Графические эффекты с частицами
  19.  
  20.  
  21. В такие моменты и приходит на помощь манипулирование удачей - предопределение случайных событий через устройства ввода так, чтобы результат был в вашу пользу.
  22.  
  23. !! В какие моменты игра обращается к RNG?
  24.  
  25. Чтобы был хоть какой-то эффект, игре необходимо получать новое значение RNG, как минимум, всякий раз, когда требуется определить наступление случайного события. Однако, существуют различные подходы к выбору момента, когда игра использует RNG:
  26.  
  27. * Некоторые игры обновляют параметры, определяемые RNG, каждый кадр. Простейший подход.
  28. * Некоторые игры обновляют параметры, определяемые RNG, время от времени, используя случайные числа для незначительных, часто косметических целей.
  29. * Некоторые игры обновляют параметры, определяемые RNG, изредка, используя результат только для важных событий.
  30.  
  31. !! Какие значения играют роль зерна для RNG?
  32.  
  33. Всякому RNG требуется начальное значение, называемое зерном. Это позволяет ему не выдавать каждый раз одинаковую последовательность чисел. Оно может браться из различных источников, и типичной практикой является на ходу добавлять еще какие-нибудь данные, чтобы повысить энтропию.
  34.  
  35. * У некоторых игр зерно зашито в программном коде. Если между уровнями RNG сбрасывается в начальное состояние, это дает удобную возможность размножать одну и ту же последовательность ввода.
  36. * Некоторые игры хранят зерно в данных сохранения.
  37. * Некоторые игры в определенных моментах накручивают специальный счетчик, например, при обзоре начальных меню, и используют его в роли зерна его.
  38. * Текущее время является наиболее популярным кандидатом на роль зерна в системах, оснащенных часами реального времени.
  39. * Игры для Nintendo DS нередко вычисляют зерно исходя из личного профиля игрока, хранимого в данных ОС консоли.
  40. * Некоторые игры вычисляют зерно RNG, основываясь непосредственно на сигналах устройств ввода.
  41. * Некоторые игры используют сильно варьируемые показатели реального времени, к примеру, точное время, затрачиваемое кодом игры на вычисления в рамках одного кадра.
  42.  
  43. !! Какие из RNG для каких действий использует игра?
  44. Иногда в игре реализовано несколько RNG, используемых для различных нужд. Очень важно знать, какой RNG на какие события игры влияет.
  45.  
  46. !! И что мне с этим делать?
  47.  
  48. Есть вероятность, что у вас получится предопределять случайные события с помощью устройства ввода.
  49.  
  50. [http://www.fceux.com/web/help/taseditor/lib/dw-luck_manipulation.gif|right]
  51.  
  52. * Если игра вычисляет зерно исходя из информации с устройств ввода, то возможностей очень и очень много, и вы сможете манипулировать почти без потерь по времени, пусть даже это осложняет оптимизацию, в силу существенной зависимости RNG от ваших последовательностей ввода.
  53.  
  54. * Если игра обновляет параметры, определяемые RNG, раз в кадр, выбирать момент нажатия кнопок будет необходимо, но достаточно для манипулирования. Правильный момент здесь - самое главное.
  55.  
  56. * Если игра обновляет параметры, определяемые RNG, при легко выполнимых действиях, таких, как движение или стрельба, то их координирование позволит легко манипулировать этим.
  57.  
  58. * Если игра обновляет параметры, определяемые RNG, лишь при действиях трудно выполнимых, или тех самых событиях, которые вам как раз и требуется вызвать, то получить желаемый результат очень сложно. Могут потребоваться жертвы. Способность к планированию сценария и глубокое понимание алгоритма RNG будут весьма и весьма полезны в этом случае.
  59.  
  60. * Если игра ставит себя в зависимость от изменчивых измерительных показателей, тогда обычно нет иного пути, кроме полного перебора всех возможных вариантов. Изменения картины потребления игрой системных ресурсов, такие как устранение активных противников, обычно оказывают наибольший эффект.
  61.  
  62. Представленная GIF-анимация из игры про Черного Плаща наглядно демонстрирует, как разница в один кадр каждый раз вызывает выпадение различных предметов.
  63.  
  64.  
  65. !!! Трудности при манипулировании удачей
  66.  
  67. !! Точка принятия решения
  68.  
  69. Допустим, вы делаете ТАС по игре про покемонов. Ваш покемон, в обычных условиях более медленный, экипирован предметом Quick Claw, дающим 25% шанс сходить первым. Вы пробуете манипулировать исходом проверки, варьируя время перед командой атаковать. Однако, сколько бы вы не ждали, ваш покемон ходит вторым. Что же пошло не так?
  70.  
  71. Очень важно находить тот самый момент, когда игра принимает решение о вызове случайного события. Иначе вы просто будете зря накручивать перезаписи, пытаясь манипулировать уже предопределенным результатом.
  72.  
  73. В данном случае, срабатывание эффекта Quick Claw было предопределено еще до появления меню вашего хода. И коль скоро было принято негативное решение, ваш покемон обязательно сходит вторым.
  74.  
  75. Если вы окажетесь в ситуации, когда событием, доступным для манипуляции, управлять не получается, попробуйте искать ранее (по ходу мувика), пока не обнаружите то место, в котором ваши нажатия повлияют на результат.
  76.  
  77. !! Искусственный интеллект (ИИ)
  78.  
  79. В играх, где предполагается принятие решений, часто бывает реализован соответствующий механизм для игрока-компьютера, чаще называемого ИИ. Ваши возможности ограничены в рамках того, что ИИ умеет делать.
  80.  
  81. Допустим, ИИ способен сделать хороший ход, но вы хотите, чтобы он поступил иначе. Если выполнение того хорошего хода зависит только от решения ИИ, то вам никак не повлиять на это. Все, что в ваших силах, это инсценировать ситуацию, в которой ИИ либо не сможет сделать этот ход, либо не посчитает его хорошим.
  82.  
  83. То же касается несовершенных решений ИИ, согласно которым плохой ход (с точки зрения человека) считается хорошим. Единственный фактор здесь это упорство ИИ в выполнении такого хода.
  84.  
  85. !! Прочие проблемы
  86.  
  87. В тех играх, где требуется манипулировать поведением врагов, обязательно убедитесь, что обстоятельства позволяют это сделать.
  88.  
  89. * Отдельные враги имеют фиксированный алгоритм поведения.
  90. * Некоторые из них выполняют определенные атаки при конкретных обстоятельствах. Это может быть низкий уровень здоровья, или какое определенное положение или состояние вашего персонажа.
  91.  
  92. Помните, что вы не можете заставить игру выйти за рамки ее игровой механики. В некоторых играх реализована механика нанесения урона с некоторой долей случайности. Как бы вам не везло, большего урона, чем может быть рассчитано в рамках игровой механики, нанести не получится.
  93.  
  94. !! Редкость
  95.  
  96. Хотя эта проблема не из технических, редкость (обычно вероятность в 1/1000 или реже) какого-то события или последовательности таковых может предполагаться в силу не наступления этого события в течение любого приемлемого времени. Есть несколько способов разобраться с этим:
  97.  
  98. * Прочтите приведенные ниже советы по улучшению манипулирования удачей. В частности, про разделение манипулирования в целях наступления последовательности событий на ряд таковых в отношении каждого события в отдельности, что может увеличить шанс успеха в целом.
  99. * Разобраться в алгоритме RNG и применить эти знания к искомому событию.
  100. * Воспользоваться LUA или смастерить бота с целью вызвать событие путем полного перебора.
  101. * Сдаться.
  102.  
  103. !!! Советы по манипулированию удачей
  104.  
  105. !! Разделение последовательности событий
  106.  
  107. Предположим, вам нужно вызвать три события, каждое из которых происходит почти сразу после предыдущего. Каждое из них имеет шанс срабатывания, равный 1/16, следовательно общая вероятность - (1/16)^3, или 1/4096, что не очень много.
  108.  
  109. Однако, если возможно воспользоваться управлением (в частности, подождать) между этими событиями, то вместо одного манипулирования тремя событиями мы получим три манипулирования, одно для каждого события. Так будет гораздо проще, ведь для каждого события нужно будет управлять вероятностью равной 1/16.
  110.  
  111. Иными словами, манипулирование множеством исходов становится тем проще, чем в большей степени ввод со стороны игрока позволяет определять их по частям. К сожалению, это не всегда возможно, в особенности, когда параметры, зависимые от RNG, редко обновляются, и ожидание в течение скольких-то дополнительных кадров ничего не меняет.
  112.  
  113. !! Адреса переменных, зависящих от RNG, и их отслеживание
  114.  
  115. Разве не будет полезно знать, какие именно действия обновляют параметры, определяемые RNG?
  116.  
  117. Вот где отслеживание значения, выдаваемого RNG, в памяти очень полезно. Наблюдая за тем, когда оно меняется и как, можно предположить, какие примерно действия могут помочь при манипулировании.
  118.  
  119. К примеру, допустим, что значение переменной RNG в памяти обычно остается постоянным, но изменяется при выстреле из определенного оружия. Тогда вы знаете, что пользование данным оружием позволит вам манипулировать удачей. Более того, вы замечаете, что поведение отдельных врагов также связаны с этим RNG. Так вы знаете, что этим поведением тоже можно манипулировать.
  120.  
  121. Даже если значение RNG меняется все время, иногда некоторые действия изменяют его сильнее прочих. Это обычно указывает на полезность данного действия для манипулировании.
  122.  
  123. В первую очередь надо найти RNG в памяти. Подробнее в статье о [Memory Search|поиске в памяти]. Далее отслеживаем его значение.
  124.  
  125. !! Закономерность RNG
  126.  
  127. Как правило, разобраться в алгоритме RNG - непростая задача, а понять, как игра использует эти случайные числа еще сложнее.
  128.  
  129. Существует [https://en.wikipedia.org/wiki/List_of_random_number_generators|ряд популярных алгоритмов для RNG], но игры на старых системах чаще используют что-то самописное. Современные же игры, напротив, склонны доверять реализацию RNG стандартным библиотекам.
  130.  
  131. Широко распространенные RNG имеют сходство с общепринятыми алгоритмами шифрования: они часто используют одинаковые ключевые константы. Простой поиск ключевой константы в коде игры может позволить опознать реализацию конкретного RNG.
  132.  
  133. Небезопасные RNG часто можно обратить, и существует алгоритм, способный выдавать ту же последовательность значений в обратном порядке. В силу наличия в эмуляторах возможности сохранения состояний, это не слишком полезно, но, тем не менее, возможность есть.
  134.  
  135. !! Примеры
  136.  
  137. Одним из типичных примеров манипулирования удачей может служит мувик по игре [1482M|Dragon Warrior]. В данном прохождении игрок полагается на сверхъестественное везение в следующих ситуациях:
  138. * Все нежелательные встречи с врагами пресекаются за счет приостановки игрового персонажа на кадр или два в различные моменты прохождения.
  139. * При встрече с врагом, его уровнем здоровья манипулируют так, чтобы он был минимален.
  140. * игровой персонаж всегда наносит критический урон, вероятностью которого манипулируют, прокручивая боевое меню и дожидаясь нужного кадра для удара. Сдвиг на один кадр привел бы к отсутствию критического урона.
  141. * Когда игровому персонажу необходимо умереть, встретившимся ему врагом манипулирует так, чтобы он напал первым.
  142.  
  143. !! К прочтению
  144.  
  145. * Манипулирование удачей является одной из основных техник создания ТАС, перечисленных в статье об [GameResources/CommonTricks|основных трюках].
  146. * [Reverse Engineering|Обратная разработка]
  147. * [Advanced Luck Manipulation|Продвинутое манипулирование удачей]
  148. * В статье о [Random Generators|генераторах случайных чисел] описываются технические детали о том, как реализована случайность в различных играх.
  149. * В [Glossary|Глоссарий] можно узнать о прочих терминах.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement