Эта статья представляет собой отрывок из моей книги «Bug Voyage: экскурсия по классическим игровым сбоям».
Книга также содержит информацию о генерации псевдослучайных чисел, выполнении низкоуровневых вычислений с двоичными и десятичными числами и о том, как вывести из строя любую машину Galaga, даже не положив в нее монету.
Если рядом с вами есть аркадный автомат Pac-Man, Ms. Pac-Man или что-то подобное, то вам повезло, в наши дни их не хватает. Даже очень распространенные в прошлом игровые автоматы «20 Year Reunion», в которых в наши дни не так уж распространены Мисс Пак-Ман и Галага.
Но чтобы понять, о чем пойдет речь, достаточно скачать с YouTube видео об одной из таких игр и посмотреть его буквально одну минуту: Вы заметили.
Как Pac-Man и призраки плавно перемещаются по лабиринту? Они скользят так уверенно и четко.
Эта плавность, как мы увидим, — иллюзия, и это еще не все.
Вот еще видео с YouTube: Его загрузил Джейми Питтман, автор статьи.
Досье по Pac-Man , который предоставил большую часть информации о Pac-Man для моей книги.
Видео немного перемотано для экономии вашего времени.
Поищи это.
Особенно следите за Pac-Man и красным призраком (в руководстве указано, что его зовут Блинки).
Обратите внимание, что происходит примерно на сороковой секунде! Вы это видели? Pac-Man без проблем прошел сквозь красного призрака! Как это произошло? Можно ли гарантировать, что это происходит постоянно? Успокойся, я сейчас все объясню, и да, это постоянное поведение.
Если точно следуйте инструкциям Питтмана на первом уровне, так будет всегда.
Пакман
Что такое «спрайт»?
Некоторое оборудование для 2D-графики использовало в играх специальные графические объекты, называемые спрайтами.Вы, наверное, слышали этот термин в современных разговорах о персонажах пиксель-арта.
Но раньше этот термин имел другое значение: он относился к независимо движущейся графике, которую можно было разместить в любом месте экрана, поверх или под остальной графикой, называемой фоном.
Спрайту задаются координаты X и Y, изображение и его цвет. Их часто использовали для игровых персонажей, но также использовали в качестве фоновых дополнений и для других целей.
Большинство систем поддерживали несколько или (в случае Galaga) множество спрайтов.
У них были другие названия: Atari сначала называла их «Player-Missile Graphics», а в ранней документации Commodore они назывались «MOB».
(Блоки подвижных объектов).
Однако постепенно их спрайтами стали называть практически все.
Аппаратное обеспечение аркадного автомата Pac-Man поддерживает спрайтовую графику.
Он может одновременно отображать на экране до восьми спрайтов, и это без использования трюков со строками сканирования.
Один из спрайтов — изображение самого Пак-Мэна, плюс еще четыре используются призраками.
Когда Пак-Ман ест призрака, его глаза, возвращаясь домой, используют спрайт призрака.
Не все, что меняется на экране, является спрайтом.
Еще одним типом графики, использовавшейся оборудованием того времени, была плитка.
фон .
Это была просто сетка отдельных графических элементов, хранящаяся в памяти.
Когда содержимое ячейки памяти изменяется, небольшая часть экрана, соответствующая этой части сетки, также немедленно изменяется.
Поэтому с этими сетками легко работать.
Точки в Pac-Man — это фоновые плитки, которые стираются, когда Pac-Man их съедает. Мерцание Энергайзеров, которые придают Пак-Мэну силу, достигается путем окрашивания этих ячеек в черный, а затем в белый цвет каждые несколько кадров.
Но эти объекты не перемещаются, их можно только удалить или заменить.
Проблема с графикой персонажей, основанной на плитках, заключается в том, что они не движутся плавно.
Он размещен в сетке, поэтому движущийся фоновый объект не сможет плавно перемещаться по экрану, как это делают Pac-Man и призраки.
Он может перемещаться только между ячейками сетки.
Невозможно переместить часть пространства сетки; оно либо есть, либо его нет. Ну да, это интересно.
Но что с того?
Основы мира Pac-Man
В детстве я писал небольшие игры на Microsoft BASIC для своего Commodore 64. В этой реализации BASIC были проблемы.Программы работали медленно и почти не использовали потрясающие для своего времени звуковые и графические ресурсы компьютера.
Если вы хотели сделать что-нибудь с графикой и звуком, вам нужно было изучить загадочные технические инструкции прямого доступа к памяти, называемые POKE, или научиться писать машинный код. Одним из решений было использование объектов-символов вместо спрайтовой графики системы, как я описал выше.
Объекты совершали прыжки размером с плитку, но с ними было гораздо проще работать.
Вы могли начать делать игру с использованием графики персонажей, а затем, когда проект стал большим и серьёзным и вам захотелось показать его людям, перейти на использование аппаратных спрайтов.
Объект в памяти все еще мог прыгать с теми же шагами в восемь пикселей, но игрок его не видел.
Все, что он видел, это мерцающее изображение спрайта, которое могло быть больше, чем плитка персонажа, скрывая то, что на самом деле происходило.
С помощью хитрого программирования можно было интерполировать положение спрайта, чтобы казалось, что он движется более плавно.
Если бы вы сделали это достаточно хорошо, игрок никогда бы не заметил разницы.
Только ты мог знать правду.
Вы, наверное, уже догадались, к чему я клоню.
Потому что именно так была запрограммирована игра Pac-Man .
На самом деле и Pac-Man, и призраки имели две позиции.
Это положение спрайтовой графики, плавно перемещающейся по экрану, который видит игрок.
Эта информация предоставляется игроку, когда он играет в игру, но это всего лишь тень, иллюзия.
Если вы хотите понять, как на самом деле работает Pac-Man, вам нужно посмотреть глубже.
За кулисами игры программа Pac-Man также учитывает, какие слоты персонажей заняты Pac-Man и призраками.
На экране нет следов этих координат. Подозреваю, что на ранних этапах разработки Pac-Man, когда экспериментировали с геймплеем, разработчики могли рисовать тайлы прямо на экране.
Джейми Питтман обнаружил, что эти координаты используются искусственным интеллектом всех призраков, а также они используются для распознавания всех столкновений в игре.
Чтобы поддерживать эту иллюзию, игре приходится прибегать к уловкам.
Он отслеживает, насколько далеко Pac-Man и призраки отошли от своей текущей ячейки на уровне подписки, и переключает их на новую позицию, когда они отошли достаточно далеко.
Чуть более быстрый объект будет иметь скорость, которая заставит его менять ячейки немного чаще.
Эти элементы — координаты сетки, отслеживание между ячейками и положение спрайта на экране — создают иллюзию плавного движения.
Но с точки зрения геймплея движение происходит точно так же, как в моем случае, когда я программировал клеточную графику персонажей на Commodore 64.
Платить
Теперь у нас есть вся необходимая информация, чтобы понять, как Pac-Man может проходить сквозь призраков.Столкновения Pac-Man распознаются путем сравнения координат его сетки с координатами призраков.
Если они одинаковые, то происходит столкновение и одно съедает другое.
Если они разные, то коллизии нет. Вот и всё, ни больше, ни меньше.
Видно, что причиной такого решения является скорость обнаружения коллизий в процессорных циклах.
В каждом кадре он сравнивает числа X и Y Pac-Man с номерами каждого из четырех призраков.
Благодаря этому ему не нужно беспокоиться о расстояниях и рискованных ситуациях.
Столкновениями считаются точные совпадения координат в сетке.
Эта сетка (примерно) соответствует системе координат тайла, представляющей фактические положения игровых персонажей.
Обнаружение столкновений использует эту сетку.
Игра регистрирует столкновение только тогда, когда координаты плиток обоих персонажей совпадают. Это означает, что они должны занимать одну ячейку сетки.
Проблема возникает, когда позиции Pac-Man и призрака, движущихся навстречу друг другу, переключаются на следующую ячейку в том же кадре.
Проверка коллизий выполняется после перемещения всех объектов в текущем кадре.
Если Pac-Man перемещается в ячейку Blinky, а Blinky переходит в предыдущую ячейку Pac-Man в том же кадре, возникает ошибка обнаружения столкновения.
Они поменялись местами! Поскольку это единственный уровень реальности, который действительно что-то значит в игре, то видимый игроку все равно.
Pac-Man и призрак просто проходят мимо, «расплываясь, как корабли в море».
Искусственный интеллект (ИИ) в игре носит детерминированный характер, поэтому можно выявить закономерность повторяющегося поведения.
Несмотря на то, что время возникновения ошибки прохождения должно быть с точностью до кадра, игроку не обязательно должно быть точным до кадра, если оно соответствует правилам выполнения шаблонов движений Pac-Man. Именно так было записано видео Джейми Питтмана.
Я дал такое подробное описание, чтобы подчеркнуть важный факт. Очень легко воспринимать объекты в игре как настоящие.
Пакман такой объект на экране призраки — это тоже объекты, вроде космического корабля, Марио, Соника, Солида Снейка, солдата из Call of Duty. Все они являются объектами.
Но это иллюзия.
На самом деле, все они лишь намекают на внутреннюю, более глубокую систему.
В этой системе компьютеру приходится проделать большую работу только для того, чтобы определить, что два объекта касаться друг друга .
То, что вы видите на экране, является иллюстрацией абстрактного мира, и часть игры передает информацию из этого мира игроку через экран таким образом, который соответствует его ощущению реальности.
Очень легко забыть, насколько тонка эта связь.
Как узнать, каким объектом на экране вы управляете? Он отличается от других и реагирует на управление.
Что, если на экране появится точно такой же? Или ваш объект будет иногда хаотично двигаться, реагировать на сигналы управления с задержкой, иногда становиться невидимым, разделяться надвое, становиться похожим на одного из врагов? Задача дизайнера — сделать связь между внутренним миром игры и тем, что вы видите на экране, максимально простой и прямой (если, конечно, он не пытается добиться какого-то особого эффекта).
Вот что означает это слово или должно означать нырять .
Дополнительная информация
Вставьте монету в аркадный автомат 20 Year Reunion и используйте джойстик первого игрока, чтобы войти: вверх, вверх, вверх, вниз, вниз, вниз, влево, вправо, влево, вправо, влево.Если призрак на экране выбора игры станет розовым и вы услышите звук, значит, все сделано правильно.
Теперь, если вы выберете игру Ms. Pac-Man, вы вместо этого будете играть в оригинальный Pac-Man. На некоторых графических устройствах вы можете использовать трюки со строками сканирования, чтобы творить чудеса.
Например, в системе, которая может отображать только восемь спрайтов, можно добиться большего, хотя и за счет процессорного времени и снижения гибкости.
Консоль Atari VCS/2600 наиболее примечательна в этом отношении, поскольку большая часть системной графики там была создана с использованием трюков со строками сканирования.
Подробнее об этих техниках вы можете прочитать в книге Гонки на луче .
Источники: Досье по Pac-Man: http://www.gamasutra.com/view/feature/3938/the_pacman_dossier.phpЭprint=1 Канал Джейми Питтмана на YouTube: https://www.youtube.com/user/jameypittman/videos
Теги: #Игры и игровые приставки #Pac-Man #аркадные игровые автоматы-
Тайна Йоды - Наследие Стэнвика
19 Oct, 24 -
2 Изменения В Google Reader
19 Oct, 24 -
Еще Раз О Диаграммах Вороного
19 Oct, 24