Приветствую, друзья! Приложение Let's 8 bit Art получило долгожданное обновление до версии 1.3. Описание новых возможностей и другие подробности смотрите далее.
Обновлению поспособствовало большое число отзывов, в которых описывалась та или иная проблема. Я постарался решить самые востребованные из них. Итак, вот официальный список изменений:
Появилась поддержка палитр в формате PAL! Теперь пользователи могут подбирать палитры на смартфоне или планшете, экспортировать их в формат PAL (не учитывая прозрачный канал) и использовать их в любимой программе на ПК, например, в Gimp или Paint Shop Pro. И тоже самое с точность да наоборот. Палитры PAL читаются приложением также легко, как и встроенный формат PLT, только в PLT есть поддержка прозрачности и он занимает очень мало места на диске*. Формат PAL устаревший, но дело, как говорится, правит, и многим он полезен для обмена палитрами между продуктами на ПК и Let's 8 bit Art.
* Формат PLT занимает всего 3 байта на префикс "plt" и по 4 байта на каждый канал каждого образца в формате ARGB, т.е. имея палитру из 10 образцов цвета, получим в итоге всего 3 + 10 x 4 = 43 байта. Для сравнения те же 10 образцов в PAL займут от 100 до 160 байт.
Добавлена опция заливки по 8 направлениям, так называемый 8-way fill. Людям, что имеют дело с пиксель артом, это должно быть знакомо. Фишка в том, что иногда требуется заливать область не только учитывая горизонтальные и вертикальные пиксели, но и диагональные тоже. Допустим, имеется диагональная линия, разделяющая область холста на 2 равные части ровно по середине, толщиной она ровно в пиксель, т.е. отображаться она будет как лестница из пикселей. Если мы, например, зальём область над этой линией стандартной заливкой (4-way fill), то зальётся только область над линией, но если мы воспользуемся 8-way fill, то зальётся всё пространство холста, за исключением самой линии, если она не того же цвета. Т.е. заливка "просочится" сквозь диагональные "отверстия". Иногда это бывает полезным.
Добавлен новый эффект! Теперь можно состарить изображение или всю анимацию до времен 8-битных систем. Название у эффекта "8-битные цвета" и суть исходит из названия. Эффект сжимает информацию о цветах в изображении до 8-битного представления, т.е. как будто на кодирование каждого компонента цвета отводится всего по 2 бита, а не по 256. Если же эффекту приходится иметь дело с прозрачностью, то всё, что выше 50% (256 / 2 = 128) отображается без прозрачности, а всё, что ниже - стирается под ноль. Такая вот аппроксимация прозрачности. В принципе это всё достаточно логично.
Алгоритм замены цвета ускорен в 25 раз! Да-да, это не опечатка. Дело в том, что раньше алгоритм был совсем не оптимизирован, а сейчас были выжаты все соки. То же самое касается и алгоритмов заливки и применения эффектов, правда они ускорились всего в 2-3 раза. Эти цифры не взяты из головы. Проводились реальные тесты и программно засекалось время выполнения алгоритма в миллисекундах. После оптимизаций цифры существенно уменьшились.
Свершилось, эскизы кадров теперь обновляются после каждого действия! Эта долгожданная функция явилась последним нововведением, над которым я работал, а всё потому, что мне пришла идея обновлять эскиз после каждого действия в скрипте записи изображения для отката или при самом откате или отмене отката (undo и redo). Всё заработало на моем Samsung Galaxy Note N7000, но эмулятор по прежнему не хотел обновлять эскизы, видимо, потому, что некоторые сборки Android не позволяют обновлять эскиз простым изменением bitmap'а, на который ссылается drawable в кнопке. Так что работоспособность этой фитчи на всех устройствах не гарантирую. Зато я гарантирую ускоренную загрузку уже прогруженных эскизов кадров. При первой загрузке они теперь записываются в кэш, а потом из него читаются. Это позволяет сэкономить время на сжатии каждого кадра до размеров образца и впихиванию этого bitmap'а в кнопку.
Ещё одна новая полезная функция - это возможность регулирования порогового масштаба, с которого начинает показываться пиксельная сетка. Тут всё просто, пояснять, думаю, не стоит.
Было проделано ещё куча работы, которая не заметна обычному юзеру. Были исправлены баги при загрузки спрайт-сетов или добавления из спрайт-сета кадров, ошибки в редакторе палитры. Исправлено пара неудобств, например, теперь, при нажатии на кнопки "Сохранить" и "Загрузить" в плеере анимации во время воспроизведения, приложение не выдаст сообщение о том, что анимацию следует остановить, а сделает это само.
На этом всё. Работать над Let's 8 bit Art я снова прекращаю и возвращаюсь к разработке новой игры Survive Alone.
С наступающими праздниками! Удачи в Новом 2014 Году!
Обновлению поспособствовало большое число отзывов, в которых описывалась та или иная проблема. Я постарался решить самые востребованные из них. Итак, вот официальный список изменений:
- Добавлена поддержка палитр в формате PAL
- Добавлена функция экспортирования палитры в PAL файл
- Добавлена опция заливки по 8-ми направлениям
- Добавлен новый эффект: 8-битные цвета
- Алгоритм замены цвета ускорен примерно в 25 раз
- Алгоритм заливки ускорен примерно в 2 раза
- Алгоритмы эффектов ускорены примерно в 2 раза
- Эскизы кадров теперь обновляются после каждого действия
- Эскизы кадров теперь кэшируются и загружаются быстрей
- Добавлена возможность регулирования порогового масштаба, с которого начинает показываться пиксельная сетка
- Теперь при воспроизведении анимации кнопки сохранить и загрузить останавливают анимацию автоматически
- Исправлены ошибки в редакторе палитры
- Исправлены опечатки в текстах
- Небольшие исправления и доработки
Появилась поддержка палитр в формате PAL! Теперь пользователи могут подбирать палитры на смартфоне или планшете, экспортировать их в формат PAL (не учитывая прозрачный канал) и использовать их в любимой программе на ПК, например, в Gimp или Paint Shop Pro. И тоже самое с точность да наоборот. Палитры PAL читаются приложением также легко, как и встроенный формат PLT, только в PLT есть поддержка прозрачности и он занимает очень мало места на диске*. Формат PAL устаревший, но дело, как говорится, правит, и многим он полезен для обмена палитрами между продуктами на ПК и Let's 8 bit Art.
* Формат PLT занимает всего 3 байта на префикс "plt" и по 4 байта на каждый канал каждого образца в формате ARGB, т.е. имея палитру из 10 образцов цвета, получим в итоге всего 3 + 10 x 4 = 43 байта. Для сравнения те же 10 образцов в PAL займут от 100 до 160 байт.
Добавлена опция заливки по 8 направлениям, так называемый 8-way fill. Людям, что имеют дело с пиксель артом, это должно быть знакомо. Фишка в том, что иногда требуется заливать область не только учитывая горизонтальные и вертикальные пиксели, но и диагональные тоже. Допустим, имеется диагональная линия, разделяющая область холста на 2 равные части ровно по середине, толщиной она ровно в пиксель, т.е. отображаться она будет как лестница из пикселей. Если мы, например, зальём область над этой линией стандартной заливкой (4-way fill), то зальётся только область над линией, но если мы воспользуемся 8-way fill, то зальётся всё пространство холста, за исключением самой линии, если она не того же цвета. Т.е. заливка "просочится" сквозь диагональные "отверстия". Иногда это бывает полезным.
Добавлен новый эффект! Теперь можно состарить изображение или всю анимацию до времен 8-битных систем. Название у эффекта "8-битные цвета" и суть исходит из названия. Эффект сжимает информацию о цветах в изображении до 8-битного представления, т.е. как будто на кодирование каждого компонента цвета отводится всего по 2 бита, а не по 256. Если же эффекту приходится иметь дело с прозрачностью, то всё, что выше 50% (256 / 2 = 128) отображается без прозрачности, а всё, что ниже - стирается под ноль. Такая вот аппроксимация прозрачности. В принципе это всё достаточно логично.
Алгоритм замены цвета ускорен в 25 раз! Да-да, это не опечатка. Дело в том, что раньше алгоритм был совсем не оптимизирован, а сейчас были выжаты все соки. То же самое касается и алгоритмов заливки и применения эффектов, правда они ускорились всего в 2-3 раза. Эти цифры не взяты из головы. Проводились реальные тесты и программно засекалось время выполнения алгоритма в миллисекундах. После оптимизаций цифры существенно уменьшились.
Свершилось, эскизы кадров теперь обновляются после каждого действия! Эта долгожданная функция явилась последним нововведением, над которым я работал, а всё потому, что мне пришла идея обновлять эскиз после каждого действия в скрипте записи изображения для отката или при самом откате или отмене отката (undo и redo). Всё заработало на моем Samsung Galaxy Note N7000, но эмулятор по прежнему не хотел обновлять эскизы, видимо, потому, что некоторые сборки Android не позволяют обновлять эскиз простым изменением bitmap'а, на который ссылается drawable в кнопке. Так что работоспособность этой фитчи на всех устройствах не гарантирую. Зато я гарантирую ускоренную загрузку уже прогруженных эскизов кадров. При первой загрузке они теперь записываются в кэш, а потом из него читаются. Это позволяет сэкономить время на сжатии каждого кадра до размеров образца и впихиванию этого bitmap'а в кнопку.
Ещё одна новая полезная функция - это возможность регулирования порогового масштаба, с которого начинает показываться пиксельная сетка. Тут всё просто, пояснять, думаю, не стоит.
Было проделано ещё куча работы, которая не заметна обычному юзеру. Были исправлены баги при загрузки спрайт-сетов или добавления из спрайт-сета кадров, ошибки в редакторе палитры. Исправлено пара неудобств, например, теперь, при нажатии на кнопки "Сохранить" и "Загрузить" в плеере анимации во время воспроизведения, приложение не выдаст сообщение о том, что анимацию следует остановить, а сделает это само.
На этом всё. Работать над Let's 8 bit Art я снова прекращаю и возвращаюсь к разработке новой игры Survive Alone.
С наступающими праздниками! Удачи в Новом 2014 Году!
Комментариев нет:
Отправить комментарий