Почему одни чит-коды в GTA San Andreas выглядят нормально, а другие похожи на тарабарщину
К выходу новой части GTA, Rockstar Games серьёзно заморочилась с сокрытием комбинаций для читов, но перехитрила сама себя.
Давеча я наткнулся на интересный разбор механики чит-кодов в San Andreas, ниже оригинал видео и его пересказ.
Я полностью прошёл GTA:SA на PS2, где чит-коды было вводить очень удобно. Например: L1, L2, R1, R2, влево, вниз, вправо, вверх, влево, вниз, вправо, вверх (здоровье, броня, $250k). Наверное, из-за этого тем удивительнее было, почему в ПК-версии были какие-то странные HESOYAM, AEZAKMI и прочие.
На самом деле, Rockstar просто решили заморочиться, чтобы список кодов не нашли в первые дни после релиза, и придумали хитрую схему: представьте, что все ваши нажатия клавиш вводятся в невидимое поле длиной 29 символов, причём очередная буква или цифра встаёт на первое место и сдвигает остальные (ввели 123456, строка выглядит как 654321). После появления каждого нового символа, игра берёт первые 6, применяет к ним хэш-функцию (если просто, по некоторому правилу превращает одни символы в другие) и сравнивает с некоторым списком. Если нет совпадений, то берёт первые 7 и т.д.
https://youtu.be/x8Cb69L2-Uw
Что это за список? Это значения хэш-функции CRC32 от «настоящих» чит-кодов, типа ROCKETMAN, INEEDSOMEHELP и др.
Давайте на минуту отвлечёмся и вспомним ещё один интересный факт из криптографии. Дело в том, что хэш-функции обладают свойством коллизии, когда применение функции над несколькими различными «словами» даёт на выходе одно и то же значение.
Простой пример: функция y=x^2 («игрек равно икс в квадрате»). Если взять «y» равный 4, то в качестве «х» одновременно подходят как 2, так и -2
В результате, у каждого «настоящего» чит-кода есть невероятно много (в видео приведено число с 34 нулями) аналогов, а вышеупомянутый HESOYAM просто нашли быстрее, чем INEEDSOMEHELP. Любопытный факт: некоторые читы можно активировать последовательностью, состоящей всего из 4 различных букв: W, A, S, D. Именно такой случай и произошёл у спидраннера LelReset, когда тот пытался поставить мировой рекорд. После окончания заставки игрок начал движение в автомобиле и случайно «заспавнил» перед собой боевой вертолёт Hunter, погубивший ему попытку.
К слову, в GTA III чит-коды располагались в исходниках игры в открытом виде, а в GTA Vice City они были зашифрованы несложным шифром перестановки. По-видимому, этих мер было недостаточно, и разработчики постарались ещё усложнить поиск заветных символов, однако вместо этого сделали их великое множество. Напоследок, ещё один любопытный факт: сайт ag.ru в своё время опубликовал «эксклюзивные чит-коды» для San Andreas, каждый из которых начинается на AGRU. Думаю, теперь вам стало понятно, почему так вышло.