Сайт Anivisual.net закрыт

Он продолжит функционировать в виде архива. Новые материалы добавлять нельзя.

Оптимизация изображений для новеллы

Оптимизация изображений для новеллы

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

К слову, чтобы рассмотреть скриншоты можно нажать правой кнопкой мыши и «открыть картинку в новой вкладке. Разберетесь, я думаю :)

Зачем их оптимизировать? Ответ очевиден – чтобы уменьшить вес и ускорить работу готовой игры.

Изображения


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

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

Итак, у нас есть самый настоящий арт, который нам нарисовал художник. Не важно, полноценный ли это CG или простой фон – его необходимо оптимизировать. Для начала посмотрим разрешение и размеры исходника. 4239 на 2507 точек и 9,11 мб веса. Довольно много, не находите? Самое время эти показатели уменьшить.



Первым делом я создаю копию исходника, чтобы случайно не испортить его в случае ошибки. Запускаем фотошоп и создаем нужные нам размеры изображения. Определить их легко, при создании проекта в RenPy вы выбираете размер окна игры. В моем случае это 1920 на 1080 точек. Помещаем в вкладку фотошопа нашу копию изображения масштабируем так, как нам необходимо (Ctrl+T). При масштабировании очень рекомендую зажимать клавишу Shift, чтобы исходное изображение сохраняло пропорции. Когда все будет готово, переходим к следующему пункту.



2. Избавляемся от закрытых областей. Лично я считаю, что скрытые от игрока области фона можно вырезать. Например, если диалоговое окно перекрывает часть фона и не планирует перемещаться (исчезать или появляться), то можно его убирать. Для этого берем уже готовые элементы Gui из вашей новеллы и размещаем их поверх изображения на новом слое. Дважды проверьте все размеры вашего интерфейса и его расположение в окне. Для плашки диалогов можно посмотреть свои настройки в Gui.rpy. Если часть Gui имеет частичную прозрачность, то эти области вырезать нельзя. Данный пункт не является обязательным, но частенько сокращает вес релизной новеллы на 5-9%.



3. Выделяю слой с интерфейсом через Ctrl и скрываю верхний слой на панели слоев. Не отменяя выделение, лезу во вкладку «Выделение» > Инверсия. Или комбинация клавиш Ctrl+Shift+I. Все еще не отменяя выделение, кликаю на нижнем слое изображения и создаю слой-маску. На выходе мы получаем изображение с прозрачным фоном в местах, где должно быть Gui. Слой-маска создается для того, чтобы потом можно было отредактировать вырезанную область. В конце статьи я приведу сравнение размеров картинки с этим пунктом и без него.



4. Подготовка окончена, приступаем к оптимизации. Для этого я использую вкладку «Файл» > «Экспортировать» > «Сохранить для Web (старая версия)».



В верхнем левом углу выбираю вкладку «2 варианта», чтобы сравнивать измененную версию с оригиналом. В настройках выбираю JPEG, т.к. у меня фоное изображение. Если ваше изображение должно иметь прозрачность, то жмите по PNG. Проверяем настройки разрешения. 1920 х 1080, ничего не изменилось. Нас устраивает. Переходим к регулировке качества. Аккуратно понижайте значение и сравнивайте результат с исходным изображением. Если на картинке появляются явные артефакты, то наоборот поднимайте это значение. Помимо видимых изменений, следите и за размером изображения. Для каждого варианта оно указано в нижней левой части окна. Ваша задача – уменьшить размер картинки, не сильно испортив её внешний вид. Для своей я задал 60%, но для большинства случаев это значение колеблется от 70 до 85%. Когда результат вас устраивает – жмите «сохранить». Готово, вы оптимизировали изображение для своей новеллы.



Итак, после всех манипуляций я получил почти неотличимое по качеству 2 картинки. Одна с вырезанным Gui = 682 Килобайта. Без вырезанного Gui = 853 Килобайта. И оригинал, весящий целых 9,11 мегабайт. Просто представьте, что будет если оптимизировать каждое изображение в новелле. Это уменьшит её вес минимум на 40%, за что игроки скажут вам огромное спасибо.

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


• Оптимизация производится в последнюю очередь. Не обязательно утруждать себя этим, когда ваша новелла не близка к релизу или демо-версии.

• Вырезание Gui нужно только громоздким новеллам. Для маленькой не обязательно. Да и в целом, опциональная вещь.

• Для спрайтов обычно используют векторные изображения. Они весят очень мало, но рисовать их очень тяжело. Если у вас есть возможность изобразить задуманное в векторах, то делайте. В ином случае прозрачные рисунки персонажей тоже необходимо оптимизировать.

• Само Gui лучше всего не трогать. Игрок будет видеть на протяжении всей новеллы и заметит, если качество целенаправленно ухудшено.

• Сжать картинку можно разными способами. Гугл запрос «Сжатие изображений» ответит на все ваши вопросы. Лично я пользуюсь своим. Он трудозатратный, но позволяет лично регулировать степень сжатия.

• Всегда делайте копии. Любую картинку можно сжать, но из уже сжатой невозможно сделать оригинал.

• Создайте пресеты (заготовленные настройки) для оптимизации. Если вы прогоняете много изображений, то выставлять качество нужно для всех не ниже 60 (прим.) Иначе некоторые из ваших фонов будут выглядеть лучше, чем другие.

• PNG весит больше JPEG. Если нет прозрачностей, то лучше использовать .jpg

• Просите художников самостоятельно сохранять пропорции под размеры новеллы. Если это 1280х720, то их рисунок должен быть 2880х1620 и так далее. Это нужно, чтобы часть изображения не оказалась за границами.

=========================================================


Надеюсь, небольшое руководство было вам полезно и вы перестанете создавать двухчасовые новеллы с весом в 8 гигабайт ^^. В свободное от работы время я пишу вам следующую часть статьи по сценарию. Оптимизацию музыки и звуков рассмотрим как-нибудь в другой раз. Да, это только малая часть :D.

Другие мои статьи:

Работа в команде и регулирование
С чего начать? (Экспозиция и завязка сценария)
Сценарная импотенция или ошибки юных писак
18
Декабрь
9
4.4
24702
Добавлять комментарии могут только зарегистрированные пользователи.

Комментарии к записи: 9

avatar
#1 mrWebster
19499
в 13:15 (03/Авг/2017)
4
Маленькое замечание: если вы знаете, что такое ATL, и собираетесь использовать его по максимуму, то забудьте об обрезании изображений. И, скорее всего, об уменьшении качества. Навсегда. Плюс важно помнить, что при некоторых событиях Ренпи скрывает интерфейс, поэтому, если так хотите сэкономить, то пропишите на всякий случай window show.
avatar
#2 Coffee_with_milk
61263
в 14:13 (03/Авг/2017)
1
Для интересующихся ссылка:
https://www.renpy.org/doc/html/atl.html

Тут все банально. Если разработчики используют ATL, то 100% знают эти условности.

Согласен с тобой!
avatar
#3 gardares
8420
в 09:35 (04/Авг/2017)
0
Pngquant — это раз. Программа свободная, позволяющая пакетную обработку и делающая всё в лучшем качестве. Здесь гайд.
Webp — это два. (хоть с потерями лучше старого JPG, хоть без потерь лучше PNG). Само собой, фотошоп всё ещё не поддерживает новейший формат, который появляется уже повсеместно, но есть плагин, а лучше вообще забыть о плагинах и качать ffmpeg, который позволяет сжать картинку максимально без потери качества.

Насчёт аудио/видео:
Работаем с FFMPEG
Ускоряем обработку видео
avatar
#4 Obhodchik
33546
в 01:29 (05/Авг/2017)
0
Цитата
Для спрайтов обычно используют векторные изображения. Они весят очень мало, но рисовать их очень тяжело. Если у вас есть возможность изобразить задуманное в векторах, то делайте. В ином случае прозрачные рисунки персонажей тоже необходимо оптимизировать.

Для RenPy - неверно. Изображение придётся переводить в растровые PNG, JPG или webp, и все преимущества в весе файла теряются.
Тут важнее выбрать растровый формат, в который переводим вектор, и задать ему разумные настройки сжатия, чтоб без шакалов обошлось.
avatar
#5 Coffee_with_milk
61263
в 05:51 (05/Авг/2017)
0
Что-то вы ерунду говорите :)

Экспорт из векторов в тот же png дает безумно маленький по объемам файл. Да, это не браузерный формат svg, но сжимать векторы при экспорте не нужно.

Если не использовать в проекте растровые эффекты, естественно.
avatar
#6 Apoich
57083
в 13:34 (07/Авг/2017)
0
Откуда артик? smile_32
P.S. Из статьи для себя ничего нового не почерпнул.
avatar
#7 Coffee_with_milk
61263
в 15:40 (07/Авг/2017)
0
«Забавы богов»

Оно и не удивительно :)
avatar
#8 Apoich
57083
в 21:14 (08/Авг/2017)
0
Спасибо. Нет серьезно. Это как писать или читать. Даже сказал бы... немного... очевидно?
Но новичкам эта статья будет в самый раз.
avatar
#9 Coffee_with_milk
61263
в 07:28 (09/Авг/2017)
0
Для них и писалось. Не вижу смысла дублировать продвинутые материалы с источников, которые опытные разработчики могут найти и сами.