Invisible, Inc.

Invisible, Inc.

30 ratings
Добавляем персонажей (графика)
By Shirsh
Советы по правке или созданию графики для персонажей, основы по извлечению и запаковке игровых ресурсов.
   
Award
Favorite
Favorited
Unfavorite
Вступление
Привет, я Shirsh. А это руководство по распаковке и правке графики для агентов, охранников, нпс и чего угодно для вашей возможной модификации Invisible, inc.
Сперва вам нужно прочитать заметки Джейсона Дрегера из Klei, это текстовый файл в папке его мода "API example", здесь, в мастерской Стим.
А ещё, ознакомьтесь с подходом Klei к 2д анимации (если ещё не):
http://www.gdcvault.com/play/1020165/2D-Animation-at-Klei
Инструменты
1. API Example Mod: В папке мода лежит kwad builder - упаковщик от Klei и несколько файлов с анимацией, которые послужат основой персонажу.
2. Последняя версия KWAD Tool от Strelock: https://github.com/Psimage/KWADTool/releases это программа для извлечения содержимого kwad файлов.
3. Графический редактор по вкусу. Я использую растровый (Photoshop или Gimp), можно и векторным. В Klei используют векторный Adobe Flash (программа переименована в Adobe Animate). Главное результат.
4.Total Commander или другой похожий менеджер файлов сэкономит уйму времени. Я, например, открываю два окна с программой: в одном окне png файлы вкидываются внутрь anim файлов, в другом запускается kwad builder и свежий kwad отправляется в папку мода. К тому же Total очень удобен для использования KWAD Tool. Это shareware: http://www.ghisler.com/download.htm
5. Маленький и быстрый текстовый редактор с поддержкой синтаксиса lua тоже пригодится (больше для программной части мода, но и при работе с анимацией). Мой выбор - Akelpad (нужно включить встроенные плагины, особенно раздела "coder", потом потыкать кнопки на панели в поисках схемы lua). Это бесплатная программа, с открытым исходным кодом: http://akelpad.sourceforge.net/en/download.php
6. Ну и удобная программа для просмотра картинок. Если у вас нет, вот ссылка на бесплатный XnView (там нужно будет промотать страничку вниз, до бесплатной версии): http://www.xnview.com/en/xnview/#downloads
1. Заглянем внутрь
В папке игры лежат kwad файлы. KWAD это аббревиатура, классическое "where's all the data" (ну и "K" от Klei).
gui.kwad содержит элементы gui (интерфейс пользователя - окна, иконки, рамки, кнопки, статичные картинки). movie.kwad - видеоролики и т.д.
Наша первая цель - разведать содержимое следующих из них, что хранится внутри и как именно:
characters.kwad, anims.kwad и gui.kwad:

  • characters.kwad - содержит спрайты и "символы" для персонажей: для агентов, охраны, роботов, оружие, в общем увидите.
  • anims.kwad - в основном это анимации не связанные с персонажами напрямую (столы, стены, декорации в общем), но здесь же и папка "portraits" - анимированные портреты.
  • gui.kwad - Много всего, но нам в первую очередь нужны портреты для выбора агентов, картинки для экрана улучшений между миссиями и иконки предметов. Ну и маленькие портреты для экрана статистики по окончании миссии, если это мод с охранниками.

Чтобы распаковать kwad нужно использовать KWAD Tool. Через командную строку или bat файл, Total Commander позволяет очень легко работать с командной строкой:
Поясню: я перенёс anims.kwad в папку KWADTool (исходный файл не меняется, главное потом не забыть вернуть его на место). Правая панель тотала активна (та, где папка KWADTool). Затем я ввёл команду "KWADTool -i anims.kwad -o outputDir -e all" в командную строку (внизу скриншота, видите?): когда я нажму "Enter" начнётся распаковка.
Справка по командам для KWADTool: https://github.com/Psimage/KWADTool

Внимание: с версии KWADTOOL v 1.1.0 alpha и дальше, используйте для распаковки файлов с анимацией "KWADTool -i anims.kwad -o outputDir -e anims": распакованные png спрайты будут 100% готовы к использованию! И с файлом build.xml (содержит информацию о координатах спрайта, полезны если вы хотите использовать те что отличны от спрайтов Деккера или Бэнкс, например головные уборы с хакерскими антеннами и т.д.)
Для других архивов, как gui.kwad, используйте ключ "-e all": "-e anims" извлекает только анимацию, игнорирует картинки, текстовые файлы, музыку/звуки и прочее

Теперь, если вы извлекли то что нужно, сделайте лицом о_о и исследуйте содержимое час или два...
2. Анимация для нового персонажа
Моды к игре хранятся в папке mods внутри папки Invisible Inc. Откройте папку мода API example (workshop-551989114) и вы увидите подпапку "example anim files".

Перед вами список anim файлов:
  • Бэнкс
  • Деккер
  • Три или четыре вида роботов (включая один не используемый в игре)
  • Оружие (пистолет, винтовка, граната)
  • Портрет рядового охранника K&O
Но стоп, их больше?

Да, тут "основная-ое", брхм, давайте скажем animation build, а? Основной animation build ("agent_banks"). Это анимация персонажа при беге и прочем движении на экране. Затем "grp animation build" ("grp_agent_banks") это анимация подстреленного агента, когда его перетаскивают другие. Потом "overlay/wireframe build" ("overlay_agent_banks") это чёрно-белая версия агента, которая отображается на переднем плане когда он/она в укрытии.

  • Та же схема действует и для оружия, например, grp анимация оружия видна всего пару секунд, когда раненного поднимают/бросают, не пропустите, если делаете мод с оружием.
    Также знайте, images.kwad содержит изображения предметов появляющиеся когда вы кладёте их на пол.

Как вы могли понять по страничке GDC, анимация создавалась во Flash. Так вот, эти anim файлы - результат экспорта флэш-анимации в состояние, в котором kwad builder может их понять, разобрать/пересобрать в другие файлы, понимаемые движком игры (.adef, .abld и спрайт-листы atlas... сам не шарю дальше, это нам сейчас не важно) и упаковать в kwad.

Но что для нас важно, это то, что эти вот anim файлы это по сути .zip архивы в которых хранится лог экспорта (пропускаем), два xml файла (animation.xml и build.xml, о них позже, они полезны) и целая куча png картинок. Просто откройте/распакуйте их Total Commander и приготовьтесь к долгим эмм, "many long hours of painful fun" (чёт русский эквивалент, достаточно зловещий, в голову не идёт).

Пока вы ещё не испытали счастье ручной покраски 31-го ботинка Деккера или 107-ми(!!!) спрайтов плаща Бэнкс, знайте:
Чтоб удалить ненужные части (плащи, шляпы, ноги, руки, головы) откройте файл build.xml (текстовым редактором, как Akelpad) и удалите раздел с ненужными частями.
Например, если вы удалите раздел:

<Symbol name="fac_clr_00" >
<Frame framenum="0" duration="1" image="fac_clr_00-0" w="28" h="40" x="0.1255000000000006" y="-6.349499999999999" />...
...<Frame framenum="4" duration="1" image="fac_clr_00-4" w="32" h="36" x="-0.22449999999999992" y="-5.3245" />
</Symbol>

то ваш агент будет без лица/головы, так что просто узнайте имя ненужной части, поищите <Symbol name="Ненужная_Часть_00" > и удалите всё до следующего <Symbol name=

Аналогично можно добавлять части. Kwadtool извлекает build.xml и если вы хотите использовать, например, наушники хакеров - возьмите спрайты шляпы Тони за основу и так же замените разделы build.xml на соответствующие, чтоб координаты совпадали.

Раньше я не знал об этом и использовал для ненужных частей кучу однопиксельных прозрачных спрайтов, вот они, на форуме Klei:
http://forums.kleientertainment.com/topic/59480-some-empty-png-files-for-animation-here/?p=689083
Кроме кучи спрайтов, там ещё и agent_male_empty.anim который вам может пригодится (я использовал для того чтоб убрать ч/б оверлеи в укрытиях, и для оружия и для всего).

Если вы не знакомы с Flash и символами, поясню: грубо, символ - группа спрайтов, например, символ "лицо" содержит 5 спрайтов лица (разные направления). Когда и какой из спрайтов будет на экране, описывается в файле анимации, а build позволяет вносить изменения - менять координаты, адреса используемых спрайтов и т.д.
Все персонажи-люди Invisible inc это скины-build'ы для двух персонажей-анимаций, мужчины и женщины (у каждого из них ещё две разных "карты" анимаций - охранник или агент, + подвид для CFO и ученых, с анимацией побега).

Ну и общие советы по графике:
  • Типы слоёв фотошопа "multiply" и "color" ОЧЕНЬ полезны чтоб оставаться в рамках цветовой гаммы игры. Например, для Мист я использовал спрайт архивного Шалема поверх куртки чтоб получить нужные оттенки, а для шорт были использован бёдра Siren с эффектом multiply 90%. Чтоб получить оттенки кожи сходные с кожей Siren, использована saturation -43 от цвета кожи Бэнкс. В общем я бы советовал использовать уже присутствующие в игре цвета.
  • Запоминайте номера и настройки, глаза устают и могут подвести (но вы увидите ошибки в игре, с разными шейдерами корпораций). Сохраняйте пресеты hue/saturation и brightness/contrast и всё остальное. Вместо полной заливки используйте полупрозрачные слои 90% или 50% (или 20% или сколь угодно) поверх базовых спрайтов.
  • Стоит проверять все изменения на деле. Добавили шляпу? Копируйте в anim, собирайте kwad и запускайте игру. Сделали агента? Пошлите на миссию с Шалемом и сравните. Это чувиха? Поставьте её рядом с Internationale и сравните. Сделали винтовку...
    Важно чтоб они были по максимуму столь же круты как и существующие персонажи: девица выглядит скучной рядом с Интернешнл? Добавьте деталей. Internationale в тени? Подумайте, мб вы добавили слишком много чего-либо и дизайн стоит упростить. Цель - они должны быть на равных. Так же, проверяйте агентов в разных интерьерах, цветовые шейдеры могут менять картинку очень сильно и, ну вы поняли.
  • Эффективное рабочее пространство. Мой путь - два окна Total Commander.
    В первом окне папка полная новых спрайтов и открытый целевой anim в папке kwad builder с соответствующим путём "anims/characters/agents/". Изменяю спрайты, жму ctrl+A и F5, чтоб перезаписать anim.
    Во втором окне builder/exe с одной стороны и папка мода с другой. Построил kwad, нажал F6 tчтоб перенести из папки "out" в папку мода.
  • Чтобы избежать лишней работы, советую начать со спрайтов с одинаковым последним номером: cst_clr_00-1, fac_clr_00-1, abs_clr_00-1 etc. В игре вы будете видеть результат с одного направления камеры. Добившись нужного работайте над другими ракурсами (с возвращениями если нужно).
  • Начните с персонажа "на поле боя". В определенный момент переключитесь на анимированный портрет. После вернитесь обратно к персонажу, внести правки. Переходите туда и обратно в поисках лучшего решения. Хотя они и требуют разных стилей, они должны работать вместе. Если портрет не работает с причёской которая работает на персонаже, измените причёску и т.д.
В общем время творчества пришло, наберитесь вдохновения и...

*часы, дни, недели проходят*
3. О kwad builder
Вам нужно осилить заметки Джейсона и readme в папке builder. Добавлю только пару слов:
  • Можно пропустить часть со sprite atlases в упаковщике пока вы делаете и тестируете мод и добавить её только для "релизной версии", она занимает больше времени но уменьшает размер kwad очень сильно (чем больше графики тем заметнее).
  • Не забывайте сохранять промежуточные версии отдельно. Вам не понравится заново переделывать 107 спрайтов плаща, я проверял.
  • Лучше использовать стандартные пути к файлам, как в kwad от Klei (это не всегда обязательно, но часто позволяет найти ошибку быстрее).
  • Анимированные портреты можно хранить в одном kwad с анимацией персонажей (хотя Klei так и не делает), положите портреты в anims/portraits. PackageFolder( package, "./anims", true)" в build.lua. Да можно и gui, но если вдруг понадобиться извлекать Kwadtool, или объединять несколько модов в один, будет не так удобно.
  • Кладите внутрь anim файлов animation.xml из файлов-примеров, на самом деле они не будут использоваться (кроме особых случаев, как с неиспользуемым роботом) и не обязательны, но если вы потеряете исходные файлы, это залог того что их можно будет правильно извлечь KWADTool (иначе они будут без build.xml и с потерей прозрачного пространства вокруг - оно по максимуму обрежется).
  • А, ну и да, anim файл это просто zip, создайте архив и переименуйте после точки.
4. Анимация портрета
Анимированные портреты работают как "скины" поверх animation build, исходников хотя бы одного из них у нас нет =(

Если делать портрет на основе анимации охранника:
Пропорции можно изменить правкой xml. Движения немного, глаза на портрете охранника работают парой (что может создать море проблем).
Для изменения координат спрайта в build.xml вы видите штуки наподобие:
  • <Symbol name="nose" >
    <Frame framenum="0" duration="1" image="nose-0" w="67" h="132" x="0.02549999999999919" y="-0.7994999999999983" />
    </Symbol>
Чтоб изменить координаты носа нам нужны w="67" h="132", как это работает:



Сдвинуть вверх - прибавьте к h.
Сдвинуть влево - прибавьте к w.
Нужно вправо - уменьшите w.
Ноль не достаточно справа? Сделайте w ="-67" и т.д.





Оси h и w расположены относительно спрайта, не относительно готового портрета.

  • Глаза.
    у охранника Eyeball-0 и eye_white-0 анимации не разделены, расстояние между двумя глазами определяется числом "w"! "w" меньше - глаза ближе, "w" больше - глаза движутся к краям лица

Как и раньше, делайте скриншоты при каждом изменении и сравнивайте.

Чтобы использовать портрет в игре, добавьте в guarddefs (для охраны) или в agentdefs (для агента):
  • profile_anim = "portraits/portrait_animation_template",
    profile_build = "portraits/xxxx",
Где xxxx - имя вашего нового portrait build.
Если звучит непонятно, перечитайте API example mod ещё пару раз.

А если вы хотите использовать статичную картинку, используйте
  • profile_icon = "gui/LOCATION OF ICON"
В то время как profile_image = "gui/profile_icons/xxxx.png" для маленьких портретов охранников, на экране статистики.

Это моя анимированная гифка создания портрета Мист (лучше открыть отдельно):

Но, как выяснилось позднее, можно использовать любой анимированный портрет в качестве основы, например для Н-Юми я сделал уже:
profile_anim = "portraits/lady_sharpshooter_face",
profile_build = "portraits/nu_lady_face",
Т.е. портрет Н-Юми использует анимацию портрета Ники, куда живее портрета охраны.
5. Что ещё?
  • Вы можете менять размеры спрайтов как угодно. Главное, знайте, в координатах указанных в build.xml будет верхний левый пиксель. Так что увеличивая спрайты вправо или вниз можно вовсе не заморачиваться. Нужна борода? Продлите спрайт волос вниз и нарисуйте бороду. Хотите хай-тек шлем-монитор для анимированного портрета? Продлите спрайт волос или уха и прикрепите то что нужно.
  • Когда вы будете делать большое, 1024x1024px, изображение агента, для экрана между миссиями, возьмите за основу архивную Призму или Шарпа: для обоих в gui.kwad лежат не уменьшенные, а большущие 3172x3172 px изображения. Готовое изображение сохраните в 1024x1024 (с bicubic sharpening) и оно будет четче и ловчее чем при использовании 1024 с начала. К тому же, так вы сможете лучше увидеть и понять (и мб чутка перенять) технику крутого Cheoljoo Lee нарисовавшего их.
Эпилог
Просто спрашивайте, если что, и я расскажу, если знаю.
Ну и там, в английской версии, ещё было немного про anim.xml, как-нибудь перепишу на русском тоже, но потом.

С лучшими пожеланиями, пока.
2 Comments
Shirsh  [author] 4 Jul, 2020 @ 3:06pm 
чочо? не в то окно?
dimastiy90 18 Jun, 2020 @ 7:34pm 
ха! а У МЕНЯ ОБРАТНАЯ СИТУАЦИЯ-У МЕНЯ ВСЕ ПЕРСОНАЖИ ОТКРЫТЫ)
и вот хз как их теперь закрыть...