В настоящее время я использую XML-файлы, сгенерированные простым редактором спрайтов, которые хранят спрайт как набор (необязательно анимированных) поз, которые, в свою очередь, представляют собой набор фреймов или ячеек. Кадры хранят информацию для каждого кадра, такую как смещение x и y кадра в листе, ширину и высоту ячейки, а также любые преобразования (изменение размера / вращение / оттенок / и т. Д.). Позы хранят отдельные кадры и информацию об анимации (например, скорость) и имя позы, чтобы легко идентифицировать их в программе (hero.pose = sprite.pose ["stand_right"]). Спрайты служат корнем документа для хранения нескольких поз, например, позы для каждого направления.
Менее гибкая альтернатива, которую я использовал ранее, заключалась в том, чтобы задавать фиксированные размеры для ячеек и листов и рассчитывать смещения и размеры кадров на основе этих значений (например, ширина всегда составляет 32 пикселя, поэтому третий спрайт имеет размер 32 * 2). Позже я начал указывать эти измерения в имени файла (например, sprite_name_32x64.png) для спрайтов, которые не соответствуют фиксированным размерам ячеек. Мне больше нравится новый подход, особенно с упрощенным редактором, который заполняет большинство значений для меня и позволяет мне использовать спрайты в качестве шаблонов для других спрайтов.
Я использую информацию альфа-канала и прозрачности, хранящуюся в изображениях PNG напрямую, поэтому мне не нужно беспокоиться о том, чтобы хранить ее в другом месте, хотя другие подходы заключаются в том, чтобы выбрать фиксированное значение для каждого спрайта и сохранить где-нибудь, использовать самый левый пиксель Поза, если вы знаете, что она всегда пуста, используйте конкретную запись палитры, если вы используете их, спрайтовые маски или что-то еще.