Просмотр полной версии : dehrust и спрайты
Бывают такие ситуации, когда ну совсем нет свободного места под графику в игре, а некоторые спрайты используются несколько редко и размер их велик. (например логотип/враг итд...) и очень удобно такие спрайты хранить пакованными.
Вопрос в следующем: как приспособить dehrust (без стековый депакер) для потоковой распаковки спрайта на экран? Есть идеи у кого?
drbars, вопрос неясен- проясни поподробнее
Есть в памяти спрайт, например 16*16 знакомест. Спрайт упакован hrust'ом.
Нужно распаковать спрайт сразу на экран. Т.е. процедура спрайта сразу распаковывает и выводит.
drbars, нет
у хруста окно 8кб и и в этом окне 4 таких спрайтов поместиться
есть другой вариант
у тебя на экране есть например 3 разных обьекта - ты их (со всей анимацией) распаковываешь в буфер и оттуда кидаешь на экран
при переходе на другой экран - распаковываешь другие обьекты
примерно так
либо переписать хруст под распаковку на экран
это уже реально я переписывал ХРУМ
Я в свое время разработал сжатый формат спрайтов .bit для этих целей. Одно знакоместо на выходе от 1 до 9 байт без атрибутов. Есть вырезалка спрайтов.
Я в свое время разработал сжатый формат спрайтов .bit для этих целей. Одно знакоместо на выходе от 1 до 9 байт без атрибутов. Есть вырезалка спрайтов.
Давай, может пригодится. Где глянуть?
Давай, может пригодится. Где глянуть?
Тут уместно вспомнить еще и Laser Basic в котором если не изменяет память, в спрайте храняться только не пустые знакоместа спрайтов. Для Dizzy мы делали так же, что дает не хилую экономию памяти.
Andrew771
24.12.2012, 09:56
в спрайте храняться только не пустые знакоместа спрайтов
ну это я всегда так и делал, еще с книги "Как написать игру...". И 3D-View моя также нарезает.
Я в свое время разработал сжатый формат спрайтов .bit для этих целей. Одно знакоместо на выходе от 1 до 9 байт без атрибутов. Есть вырезалка спрайтов.
Интересно посмотреть!
Спрайты с маской? Маску можно вычислять.
Давай, может пригодится. Где глянуть?
Статья с алгоритмом:
http://zxvideo.fatal.ru/gfx_pack.htm
Формат спрайтов:
http://zxdocs.fatal.ru/formats/formats.php?file=BIT&type=html
Плагины для BGE 3.х (в том числе вырезалка):
http://zxdocs.fatal.ru/myworks/bge_plugs.zip
Спрайты с маской? Маску можно вычислять.
Я где-то видел оптимизированный тобой депакер дехруста. Где скачать можно последнюю версию?
Я не оптимизировал депакер дехруста!
Я не оптимизировал депакер дехруста!
Извиняй, попутал значит. Был просто не авторский депакер хруста, без стека и короче оригинала.
Использовать LZ-пакеры или же Хаффмана для распаковки спрайтов на лету не эффективно. LZ - требует окно уже распакованных данных, а Хаффман очень тормозной. Идеальных вариант - это паковать только повторяющиеся байты простым алгоритмом. Тогда скорость распаковки на лету будет сравнима с обычным выводом спрайта. Конечно, это эффективно только если у спрайта есть много пустых одинаковых байт.
Был просто не авторский депакер хруста, без стека и короче оригинала.
Где дают?
---------- Post added at 19:38 ---------- Previous post was at 19:37 ----------
Использовать LZ-пакеры или же Хаффмана для распаковки спрайтов на лету не эффективно. LZ - требует окно уже распакованных данных, а Хаффман очень тормозной. Идеальных вариант - это паковать только повторяющиеся байты простым алгоритмом. Тогда скорость распаковки на лету будет сравнима с обычным выводом спрайта. Конечно, это эффективно только если у спрайта есть много пустых одинаковых байт.
Можно разложить спрайт на чанки 2x2 и кодировать 4 чанка (то есть две строки) одним байтом. Так у меня было в видео плеере.
Извиняй, попутал значит. Был просто не авторский депакер хруста, без стека и короче оригинала.
Такой депакер есть для Hrust 2. Для Hrust 1 тоже есть укороченный, но со стеком.
Andrew771
25.12.2012, 09:33
Скорее всего, алгоритм Vitamin лучше всех пока.
А вот еще у большинства спрайтов границы плавные, а внутри всё или почти всё заполнено. Может, еще это как-то учитывать при кодировании.
Скорее всего, алгоритм Vitamin лучше всех пока.
А вот еще у большинства спрайтов границы плавные, а внутри всё или почти всё заполнено. Может, еще это как-то учитывать при кодировании.
Плавные границы — это уже бит-ориентированная компрессия. Усложнится как сам алгорим паковки, так и время на распаковку. Поэтому не особо актуально в нашем случае.
Плавные границы — это уже бит-ориентированная компрессия. Усложнится как сам алгорим паковки, так и время на распаковку. Поэтому не особо актуально в нашем случае.
Вертикальные границы из двух чередующихся байт (размытие шахматной текстурой) упаковываются в два байта на знакоместа. Подобные горизонтальные границы в 3 или 4 байта.
SamStyle в своем редакторе анимации также поддержал вариацию на тему алгоритма BitPack- оптимизирует сжатие сплошных фонов. Так что рекомендую также его попробовать.
А вот еще у большинства спрайтов границы плавные, а внутри всё или почти всё заполнено. Может, еще это как-то учитывать при кодировании.
Если так, надо посмотреть, сколько всего комбинаций из 2 байтов существует. Возможно, меньше 256. Даже если и больше, можно редкие заменить на похожие частые.
Если так, надо посмотреть, сколько всего комбинаций из 2 байтов существует. Возможно, меньше 256. Даже если и больше, можно редкие заменить на похожие частые.
Боюсь огорчить, но, по-моему, всё-таки, 65536 :v2_wink2:
Andrew771
15.01.2013, 16:51
Боюсь огорчить, но, по-моему, всё-таки, 65536
это если все 2х-байтные комбинации используются. А в реале, как правило, их намного меньше.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot