Зрелищность спидранов давно догнала киберспорт, а в исключительных играх и перегнала. Каждая игра обладает своими лазейками, позволяющими немножко нарушить ход игры...
Понять что происходит на экране, можно просмотрев момент несколько раз, либо заглянув в комментарии, однако что происходит во время спидрана с мировым рекордом по GTA : VC очень сложно. Попробуем разобраться как сюжет такой масштабной игры пробежали за 8 минут.
Раннер не использовал читов или трейнеров, использовал обычную версию игры и самое странное что он сделал - это изучил код игры и сообразил сложнейшую цепочку действий.
Что происходит?
И так, что же тут такого уникального? Раннер не сделал ни одного задания, лишь бессвязные на первый взгляд действа, а потом игра сама запустила последнюю миссию. И всё это за 8 минут 38 секунд.
Если есть свободное время, то это стоит глянуть. Однако в статье я изложу всё достаточно понятно и объемно.
Цели раннера
Чисто теоретически для запуска последней миссии, даже если вы прошли почти всю игру, требуется :
- 1000$ на счету
- Недвижимость в собственности
- 60 активных скриптов.
На момент начала игры активен 51 скрипт, а всё остальное получается в ходе сюжета.
Нужно рассказать о крайне важном и наверно основополагающем баге для спидрана : во время просмотра заранее записанного реплея можно активировать значки, такие как запуск миссии, покупка недвижимости и т.д. прямо в записи.
Начало магии
Первым делом раннер делает сет-ап. Несколько подготовительных действий, а конкретно : только получая контроль над героем отправляется на соседний остров, заблокированный прогрессом мост проблемой не является, можно изловчиться и прыгнуть в текстуру :
В первом же здании справа (белом), можно зайти на крышу и забрать вертолет, на котором раннер летит за первым заданием - Rampage.
Это такие миссии, где вам дают оружие, много патрон и цель : убить как можно больше врагов за 2 минуты.
Сейчас он отправился к триггеру другой Rampage с винтовкой M-60, её не видно, так как игра считает что раннер на миссии. Он выходит и встает на место невидимого триггера. Начинается первый реплей и он летит к значку покупки самой дешевой недвижимости - лачуги за 100$. На этом реплей заканчивается и начинается новая игра.
Важно пояснить за таймер слева внизу - он показывает 2:58 по личному таймеру раннера и по игре - она с точностью до секунды считает проведенное в ней время.
В новой игре есть четкая задача - добраться до любой доп. миссии ранее, чем за 58 секунд. Таковой миссией оказывается Pizza Boy :
Запрыгивая на байк и принимая миссию, раннер невероятно быстро дюпает количество активных скриптов.
Как это работает поверхностно : садится на байк - берет пицца боя - загружает реплей - берет ремпейдж - закрывает реплей - берет пицца боя и так 10 раз.
Та самая переменная, подсчитывающая время проведенное в игре, меняется на ту что в реплее, начиная ремпейдж в реплее и перепрыгивая обратно, игра не понимает ничего: ремпейджу еще 2 минуты работать, но отрезок времени между временем в реплее (2:58) и в игре (0:48) больше 2 минут. Игра ломается.
Отныне есть 61 активный скрипт, дабы отменить последний взятый ремпейдж раннер переключает язык игры на немецкий - в этой версии игры rampage-задания вырезаны цензурой, а значит оно отменяется.
Первое условие выполнено.
Теперь две задачи в одной : добыть 1000$ и сделать это у определенного продавца. Почему? Объясню позже.
Продавец ограблен, второе условие с 1000$ выполнено, так же приезжают копы, их машина понадобится тоже. У спидранера есть 53 секунды и это число очень важно, пока что он едет под мост подбирать 100$ для покупки лачуги в реплее и возвращается обратно :
Раннер ждет заветного момента и...
Дает газку, запускает реплей с вертолетом, покупает недвижимость, звезды сходятся - триггер последней миссии в игре активирован!
После нужно лишь расстрелять плохих парней и вытереть пот со лба.
Что же произошло?
По порядку : торговец особенный потому, что одна из переменных внутри его скрипта может встать на место id триггера миссии. Какая переменная?
Когда продавец ограблен либо убит, его нужно будет обновить через некоторое время. Запускается таймер, но обновляется он не когда вы выходите из невидимой зоны вокруг магазина, а тогда, когда в неё заходите и находитесь в ней.
Здесь можно увидеть как раннер выбежал из зоны и забежал заново чтобы запустить таймер. Теперь у него есть 53 секунды, за которые он забрал 100$ и развлекся.
Речь о 53 секундах шла не просто так. Игра отсчитывает время вплоть до миллисекунд и раннеру нужно успеть въехать в зону обновляющегося таймера за 241 миллисекунду, получив значение таймера между 53475 и 53716.
Как я уже писал, у каждой миссии есть свой id, он записан в переменную вида unsigned short. Это целочисленное число, не может быть отрицательным и самое большое значение переменной - 65535.
Раннер зажимает кнопку принятия полицейского задания, въезжает в зону, игра запоминает таймер в виде похожего пятизначного числа, он запускает покупку недвижимости, id миссии в таком случае обнуляется, он отпускает горячую клавишу и полицейская миссия отменяется.
Переменная id миссии принимает значение -1, чего быть не должно, поэтому она становится равна последнему с конца числу - 65535. Подобного триггера на миссию в игре нет, поэтому игра обращается к последним полученным переменным, среди которых число таймера, которое было избрано на выходе из зоны между 53475 и 53716 .
Лишь 20% значений между могут подойти, из них еще 20% - телепортируют вас, а 80% - поставят маркер к особняку и запустят миссию, в остальных случаях игра либо крашнется, либо ничего не произойдет.
Если значение верно триггеру последней миссии, то проверяются условия и при их соблюдении персонаж телепортируется в особняк проходить последнюю миссию.
Таким фокусом можно запустить любую миссию в игре, соблюдая нужные условия, была составлена даже таблица с таймингами :
Так спидраннеры в очередной раз доказали свою гениальность и совершенство.
Соседние статьи с канала :
Как сломали TES V : Skyrim
Игры изнутри: циклы обработки данных
Как работает стрельба в играх
Если появилось желание взглянуть на маэстро и подписаться :
Ave RoK_24