Спрайт

Материал из SpeccyWiki
Перейти к: навигация, поиск

Спрайт (англ. Sprite) — в компьютерной графике объект, перемещающийся по экрану. В играх спрайтами являются изображения героя, противника, различных подвижных предметов. Фон также может состоять из подвижных или неподвижных спрайтов, если они имеют одинаковый размер и расположены на равномерной сетке, они называются "тайлами" (англ. Tile, плитка).

На игровых консолях и большинстве домашних компьютеров конца 1970-х — начала 1990-х спрайты поддерживаются на аппаратном уровне и выводятся видеоконтроллером поверх изображения фона. Это позволяет очень быстро "выводить" спрайты в нужное место экрана, просто указав координаты, а также избавляет от необходимости восстанавливать фон под спрайтом. Недостатком такого подхода является большое количество непреодолимых ограничений, налагаемых на количество отображаемых спрайтов на экране и на одной строке растра, а также на размеры спрайтов. Среди непосредственно конкурировавших с ZX Spectrum компьютеров, имеющих аппаратную поддержку спрайтов, такие компьютеры, как Atari (8-битная линейка), Commodore 64 и MSX.

На ZX Spectrum и некоторых других домашних компьютерах 1980-х, также входивших в нижнюю ценовую категорию, а также на всех отечественных бытовых компьютерах, аппаратная поддержка спрайтов отсутствует. Они выводятся программно, за счёт использования времени процессора. Вывод спрайтов является ресурсоёмкой задачей. Скорость вывода спрайтов сильно зависит от их размеров и количества, но ограничения на размеры и количество спрайтов на экране и на строке растра отсутствуют.

Одной из основных сложностей, возникающих при выводе спрайтов на ZX Spectrum, является позиционирование по горизонтали с точностью до пикселя, так как в видеопамяти каждые восемь соседних по горизонтали точек представлены битами одного байта. Для экономии памяти может использоваться один экземпляр спрайта и сдвигаться на нужное количество пикселей при выводе. Для увеличения быстродействия в памяти может храниться восемь (или менее) заранее сдвинутых экземпляров спрайта. Для зеркального отражения спрайта по горизонтали также может использоваться либо медленное отражение в процессе вывода, либо заранее подготовленные копии.