Адаптивное обновление плитки - Adaptive tile refresh

Адаптивное обновление плитки это компьютерная графика техника для видеоигры с боковой прокруткой. Наиболее широко его использовали id Программное обеспечение с Джон Кармак в таких играх, как Командир Кин чтобы компенсировать низкую графическую производительность ПК в начале 1990-х годов. Его главное нововведение - новое использование нескольких EGA аппаратные функции для выполнения аппаратной прокрутки. Этот метод назван в честь другого его аспекта - отслеживания перемещенных графических элементов, чтобы минимизировать количество перерисовки, требуемой в каждом кадре. Вместе эта комбинация экономит время обработки, которое в противном случае потребовалось бы для перерисовки всего экрана.[1]:50 Кармак разработал программный движок на основе прокручиваемого дисплея для больших изображений 1970-х годов.[2]

Потому что CGA (предыдущее поколение графического оборудования ПК) не имеет функций для аппаратной прокрутки, прокрутка раньше должна была выполняться программно, путем перерисовки всего экрана для каждого кадра - задача, которую ПК того времени не может выполнить. Адаптивное обновление плитки сводит к минимуму вычислительную мощность, необходимую для игр с боковой прокруткой, в пределах досягаемости доступного оборудования. Это работает путем пометки фрагментов растрового изображения и перерисовки только той графики на экране, которая действительно обновляется.[3]

История

Адаптивное обновление плитки с использованием аппаратной прокрутки впервые появилось в еще не выпущенной тестовой игре под названием Опасный Дэйв в нарушении авторских прав, реализованный Кармаком. Название "Опасный Дэйв "ранее использовались Джон Ромеро при программировании игр для Softdisk. Новая игра представляет собой воссоздание первого уровня Nintendo с Супер Марио Братья 3, задуманный как реалистичный испытательный стенд для концепции адаптивного обновления плитки, был разработан в течение недели. Команда будущих сотрудников id Software, все еще работающих в Softdisk, затем полностью воссоздала Марио в надежде, что Nintendo выдаст лицензию на игру для ПК. Nintendo отклонила предложение выпустить игру после того, как id Software завершила ее.[4][5][1]

Первое появление на рынке адаптивного обновления плитки Кармака появилось в первом выпуске id Software. Командир Кин серия игр Оставленный на Марсе.

Технические детали

EGA имеет несколько функций, обеспечивающих эффект адаптивного обновления плитки:

  1. В экранный буфер может быть немного шире экрана и произвольно высоко в зависимости от видеопамять ограничения.
  2. Положение в этом буфере, из которого отрисовывается экран, может быть смещено с шагом в 1 пиксель по горизонтали или вертикали.
  3. В нем достаточно видеопамяти для хранения двух таких экранных буферов, и еще есть место для плитка и спрайты.

Кармак использовал эти возможности для создания буфера, который на 64 пикселя шире и выше экрана, оставляя место для двух дополнительных строк и столбцов тайлов в буфере за пределами экрана. Он использовал возможности смещения карты, чтобы позволить экрану скользить через буфер для плавной прокрутки, которая частично показывает лишние плитки.

Прокрутка ограничена размером буфера, а дальнейшая прокрутка оборачивается для отображения данных с другой стороны буфера. Таким образом, чтобы прокрутить весь уровень, когда прокрутка составляет ценность целого тайла, код Кармака затем рисует следующий ряд тайлов с уровня в буфер, сразу за краем экрана, готовый к отображению, когда прокрутка продолжается в этом направлении.

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

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

Рекомендации

  1. ^ а б Кушнер, Дэвид (2004) [2003]. Мастера судьбы: как два парня создали империю и изменили поп-культуру. Нью-Йорк, штат Нью-Йорк: Random House, Inc. ISBN  9780375505249. OCLC  50129329.
  2. ^ Кушнер, Дэвид (1 августа 2002 г.). «Волшебство программного обеспечения для видеоигр». IEEE Spectrum. Получено 13 апреля, 2018.
  3. ^ Эйкок, Джон (9 мая 2016 г.). Retrogame Archeology: Exploring Old Computer Games. Springer. п. 45. Дои:10.1007/978-3-319-30004-7. ISBN  978-3-319-30004-7. S2CID  20655963. Получено 27 ноября, 2017.
  4. ^ Демоверсия Super Mario Bros. 3 (1990). Джон Ромеро. 1990 г.. Получено 15 декабря, 2015.
  5. ^ Орланд, Кайл (14 декабря 2015 г.). «Вот как мог бы выглядеть порт Mario 3 от id Software». Ars Technica. Получено 15 декабря, 2015.