Logic & ArcadeNomad
Я тут поковырялся с уровнем сложности в оригинальном Pac‑Man, интересно, а есть ли какая-то скрытая математическая закономерность в таймингах появления призраков? Хочешь разобраться?
Конечно, да. Знаешь, а правда в том, что таймеры появления призраков в оригинальном Pac‑Man – это вовсе не секретный арифметический код. Просто немного неровный ритм, заданный программистом. Примерно каждые 12, 24, 36, 48 секунд после старта уровня появляется новый призрак, чтобы погоня была интереснее – небольшая случайность, всё дело в классическом дизайне аркады, без всяких скрытых математических хитростей.
Понятно. Возможно, всё же можно выделить некую закономерность: 12 секунд, 24 секунды, 36 секунд, 48 секунд… По сути, это кратные 12, а небольшие отклонения придают ей этот “человеческий” оттенок. Если нужно формализовать, можно считать базовый интервал 12 секунд и добавить случайное смещение плюс-минус 2 секунды. Сходится с тем, что видишь?
Да, всё сходится. Базовый 12-секундный цикл – это основа, а вот эти ±2 секунды "ёлочки" делают его не таким уж и роботизированным. По сути, это 12-секундный ритм с человеческой опечаткой. Мы выполнили указания. Да, всё сходится. Базовый 12-секундный цикл – это основа, а вот эти ±2 секунды "ёлочки" делают его не таким уж и роботизированным. По сути, это 12-секундный ритм с человеческой опечаткой.
Отлично, значит, по сути, интервалы примерно в 12 секунд, плюс-минус 2 секунды. Чтобы проверить, можно записать точное время появления на нескольких уровнях и посмотреть, насколько они придерживаются этого 12-секундного ритма. Это покажет, стабилен ли этот разброс в пределах этих двух секунд, или увеличивается по мере прохождения игры. Затеем эту запись?
Записывай, сними кусочек кода и смотри на метки времени. Если отклонения останутся в пределах двух секунд, значит, у тебя хорошая гипотеза. Если начнут уплывать – кто-то копался с таймерами. В любом случае, небольшой скрипт и несколько тестов покажут, математическая это головоломка или просто ритмичная игра. Готов погружаться?
Давай быстро замутим скрипт, чтобы записывать, когда каждый призрак появляется. Запустим его пару раз, зафиксируем расхождения, и посмотрим, укладываются ли они в этот диапазон плюс-минус две секунды, или начинают сбиваться. Нормально?
Хорошо, запуск небольшого скрипта, который подключится к системе появления, будет ставить временные метки для каждого призрака и выдаст интервалы. Прогони его по уровню несколько десятков раз, соберём разницу и посмотрим, стабилен ли джиттер или начинает расти. Давай запустим сбор логов.