Как работает генератор случайных чисел и поведение призраков в Pac-Man

Pac-Man — игра с полностью детерминированной механикой, где движение призраков зависит от текущего положения Pac-Man. Однако при съедании большого шарика — «энерджайзера» — призраки пугаются и начинают двигаться по кажущемуся случайным паттерну, в котором используется простой генератор случайных чисел (RNG).

RNG в игре представляет собой 16-битный индекс, который обновляется по формуле: новое значение = (старое * 5 + 1) % 8192. Вывод функции — не само число, а байт из первых 8192 байт кода игры, что приводит к неравномерному распределению чисел. При этом важны лишь два младших бита, определяющие направление движения призрака: вверх, вниз, влево или вправо.

Из-за особенностей алгоритма и ограничений движения (призраки не могут разворачиваться на 180° и обходят стены по часовой стрелке), распределение направлений сильно перекошено. Например, вероятность движения вверх значительно ниже, чем влево или вниз. Это ведёт к тому, что испуганные призраки чаще оказываются в левом нижнем углу лабиринта.

Для анализа поведения призраков использовалась модель цепей Маркова, где вершинами являются перекрёстки лабиринта с учётом направления подхода призрака. Симуляции показали неравномерное распределение призраков, с ярко выраженным предпочтением к левому нижнему углу. Исправление вероятностей RNG или правил поворота уменьшает перекос, но не устраняет его полностью из-за асимметрии лабиринта.

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

Таким образом, поведение испуганных призраков в Pac-Man определяется двумя основными факторами: неравномерностью RNG и особенностями алгоритма выбора направления при невозможности движения вперёд. Это приводит к характерным паттернам перемещения, которые можно просчитать и смоделировать, но практически не влияют на игровой процесс на поздних этапах.

Понравилась статья? Поделиться с друзьями: