Палитры в игре Ragnarok Online / тема для разработчиков

Вопросы, которые касаются Рагнарок онлайн, но не касаются OpenKore.

Модератор: 4epT

Симбиоз
Начинающий
Сообщения: 15
Зарегистрирован: Пт фев 02, 2007 4:33 am

Палитры в игре Ragnarok Online / тема для разработчиков

Сообщение Симбиоз »

Пирожок, а немог бы ты в кратце рассказать как вобще делатаются палитры для Ро, или дат ьссылочку нагайд хороший?


___

pJ:

Отрезано от темы "Много палитр в анимированных Gif-ах?!", где среди прочего, описано несколько инструментов для работы с палитрами.
viewtopic.php?t=175

[mod="piroJOKE"]Тема отделена и перенесена в другой раздел![/mod]
Аватара пользователя
piroJOKE
Модератор
Сообщения: 8205
Зарегистрирован: Сб ноя 04, 2006 2:20 am
Сервер RO:: localhost
Откуда: Molvania

Сообщение piroJOKE »

ОФФТОПИК.

Симбиоз
Неа. Кустомизация РО-шных палитр - это вообще не к нашему форуму! Некуй тут про это писать! И к сабжу вааааще не относится. Оффтопик, короче, полный.

ЗЫ: Ищи на форуме eA, а еще лучше на форуме Aegis'а людей.
Сам когда-то пробовал этим заниматься, но бросил, ибо не вставило.
Там была одна тётка (уже ник не помню) так она гайд выкладывала,
с картинками. Но щас этой тётки уже вроде нет.

* * *
Палитры РО.

256 цветов, по 4 байта на каждый = 1024 байт.
Каждый 4й байт не используется = 0.
Некоторые палитры имеют размер 1028 байт, последние 4 байта = 0.
Не совместимы с iview's .pal. Не совместимы с фотошопом.
Если к палитрам приделать riff заголовок ms-pal (24 байта) - будут открываться в фотошопе.

В палитрах, как правило, используются 8-цветные градации-переходы.

Имена файлов палитр формируются, вероятно, из имени профессии, пола и нумератора. Примеры:
palette\,Ф\,¶1yпЗ_3¤_0.pal
palette\,Ф\,¶1yпЗ_3¤_5.pal
palette\,Ф\лПТДОUПc·ЗммAI'o_иc_77.pal
palette\,Ф\лПТДОUПc·ЗммAI'o_3¤_3.pal

Кажется, у некоторых профессий отсутствует нулевая (_0) палитра. (Дефект изучаемого мной патча, вероятно.)


Идея. 1. "Мегапалитра". (Резюме - фтопку).
(...бред, удалено...)

Идея. 2. АнтиМегаПалитра - "Матрица палитр". (Резюме - бум юзать, если найдем нужны софт).
Некая программа, учитывающая связь между палитрами разных спрайтов.
Таким образом, изменяя ОДНУ палитру, мы будем транслировать ее на палитры всех профессий. Для реалтайма тоже подходит. И проще чем (1).

Наблюдение... Ля! Да кажется, все палитры всех профессий одинаковы! Т.е. рассматривая патч "77 палитр", я заметил, что палитры разных профессий, но с одинаковым номером _одинаковы_. Что за нафиг? (Устаревший патч? Или избыточная гибкость от Гравити?).

А вот кустомизация спрайта в моём исполнении:
В статье описано как я мучался с кустомнизацией спрайта.

Задумал я было сделать [pJ - указан цвет флага, стёрто] флажок, эмоцию, дабы всем г-дам [pJ - указана нация, стёрто] завидно стало. Ггг. Я отнюдь не "наци", просто идея показалась интересной. Ладно, к технике; казалось бы, всего делов: ищем спрайт, раскладываем его на фреймы, подрисовываем что нужно, собираем обратно. Но... ггг... оказалось, проблем там тоже хватает.

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

1. Ищем нужный спрайт.

А спрайтов-то в RO много. ;) Если по названию не угадаешь, то искать вручную, перебирая их всех - нереально; поэтому ковырялка GF, удобная для других случаев, увы, отпадает. Итак, идем за GRFtool к Опен-Коровцам http://openkore.sourceforge.net/grftool/ . Запускаем, выбираем data.grf. Ставим фильтр *.spr. Выбираем всё, выгружаем куда-нибудь. Получаем ту же кучу спрайтов, НО, удобным образом рассортированными по разным папочкам - по категориям. Теперь отсеиваем лишние - убивая папки с явно неподходящими нам сейчас вещами. Увы, нужный мне спрайт emotion.spr я нашел почти в самом конце этого перебора. ;) Да, а походу дела смотрим спрайты разными смотрелками. Рекомендую spr_conview_v0.11.zip (взято с http://eamirror.skamfroj.net/). Заассоциируйте в Винде .spr-файл с этой штукой, и процесс пойдет. ;) {Изначально я раскатил губу этой же штукой и собирать спрайт, но фиг там, ничего не вышло, глюки.}

2. Раскладываем спрайт на кадры.

Используем встроенную в spr_conview преобразовалку, чтобы получить кучу пронумерованных bmp-файлов.
(На самом деле я использовал SprTool+4-6 из комплекта paltut).

3. Редактируем кадры.

Редактировать спрайт можно чем угодно. Шутка только в том, что кадров в нем много. ;) Поэтому редактор - любой удобный нам.
Из всех кадров я выбрал только нужные мне 11, с анимацией [pJ - указаны цвета исходного флага, стёрто] флажка.
Поскольку спрайтики были небольшие, я воспользовался редактором анимационных иконок Microangelo (взято на сайте FOSI). У него есть такой удобный инструмент, кисточка, заменяющая цвета - она то мне и была нужна. В общем, я сначала собрал как бы анимациную иконку, потом прошелся по ней этим инструментом, а потом разобрал ее обратно на отдельные bmp-шки, увы, это уже вручную.

4. Ужасы редактирования палитры.

А вот тут начинается самое интересное. При этом редактировании изначальная палитра кадров оказалась разрушена, а я даже не знал, сколько именно новых цветов появилось в этой палитре. {В палитре напрочь отсутстовали [pJ - указаны оттенки цвета, стёрто], а для нашего флажка без них ну никак. Новых цветов было немного, но они были.}. И даже более того, мне до сих пор не известно, какие именно есть "правила" обращения с палитрами спрайтов в RO. Все что я видел, это, что при "шаге влево, шаге вправо" SpriteEncoder (тоже взято с http://eamirror.skamfroj.net/) начинал матюкаться. Поэтому...

а) Устаревший вариант, читать токо для ознакомления, но не применять {
Поэтому, я решил не разрушать всю палитру этого спрайта, а лишь добавить свои цвета в неиспользуемое пространство палитры. {Тут следует заметить, что есть определенное неудобство при работе с палитрами. Мне пришлось иметь дело с 3 разновидностями .pal-файлов: палитра РО (256х4 = 1024 байта без заголовка, каждый 4й байт не используется), микрософтовская палитра - тоже самое что и палитра РО, только с 24-х байтным riff-заголовком, и наконец текстовая .Pal, которую можно открывать обычным текстовым редактором}. Палитра хорошо видна в просмотрщике графики IrfanView {которым я пользуюсь постоянно}. Если я правильно понимаю, все кадры в спрайте должны иметь одну и ту же палитру. Значит, несмотря на то, что я изменяю несколько кадров, сконвертировать придется их все. Итак, на повестке дня стоит вопрос, какие же именно цвета появились? Я собрал все отредактированные кадры на одном холсте в Фотошопе, и сконвертировал и сделал с этого безобразия адаптивную палитру. Понятное дело, что туда попали и новые цвета, и часть старых; но зато уж точно не попала большая часть старых цветов. Записываем этот файл в gif. Открываем IView. Экспортируем палитру. Это текстовый файл. Берем оригинальную палитру из одного из не-редактированных фреймов. Копи-пастом заменяем пустоши 0 0 0 примерно в середине файла на цвета из адаптивной палитры. У меня получилось около 25 цветов. Но это еще не всё, ведь скопированы и дубли старых цветов тоже. Смотрим на эту искусственную палитру в IView, копируем ее в буфер PrtScr, и, в Paint'е, глядя на оригинальную палитру в другом окне, закрашиваем черным цвета, которые уже были в оригинале, а так же возможно те, которые слишком незначительно отличаются от уже имеющихся. С этой картинки делается адаптивная палитра, опять соединяем ее с оригинальной палитрой спрайтов в текстовом редакторе. На этот раз добавлены были всего 9 цветов: оттенки голубого и пару новых желтых. {Получена новая палитра, которая будет использоваться для всех спрайтов. Отметим, что все старые цвета в ней стоят на своих местах, а новые расположились на неиспользуемом пространстве.} {Этого жуткого абзаца можно было бы избежать, если бы я заранее позаботился о сохранности палитры в редактируемых кадрах}.
} //конец устаревшего фрагмента;

б) Усовершенствованный вариант получения палитры - "пляски с бубном вокруг палитры, V2" {
В общем случае у нас стоит задача так: Имеется некая картинка с любым количеством новых цветов, которую мы хотим адаптировать под нашу палитру. Но, мы понимаем, что хорошая прямая адаптация невозможна: нехватает нужных оттенков. Поэтому мы сознательно выделяем N новых цветов в палитре, зная, что в ней есть свободный места. Вопрос: как? Ответ: фотошопом. Для начала, нам нужно собрать все уже используемые цвета в кучку. Открываем в фотошопе любой "фирменный" bmp-спрайт, смотрим его цветовую таблицу, PrtScr (убедитесь что видеоадаптер работает в режимиме 32х-битного цвета!), файл - новый рисунок, вставляем ее в "новый" рисунок. Теперь гасим некоторы цвета (закрашиваем их черным). Какие это цвета... во-первых часть интерфейса Фотошопа, серый фон Винды, например. Во-вторых, служебные цвета палитры. Например первый цвет (прозрачность), последние отдельные цвета. Короче всё, кроме цветовых переходов. Готово? - преобразуем RGB в индексный файл. У меня получилось в нем 151 цвет. Неважно, сколько именно, важно, чтобы туда не попали служебные цвета. Записываем эту палитру в файлик. А вот теперь, возвращаемся к нашему творчеству. Все новые кадры, {на которых возможно появились новые цвета}, размещаем на одном полотне фотошопа, в RBG пространстве. Предположим, мы решили выделить под все новые цвета 16 ячеек палитры. Меню - преобразование в индексные цвета. Палитра: адаптивная/перцептуальная/селективная (смотрим превью, которая их них меньше портит картинку), к-во цветов - наши 151+16 = 167, "форсед" цвета - "кустом" - загрузить только что сохраненную палитру, прозрачность - нет, dither - лучше имхо отключить, "ок". Смотрим получившуюся цветовую таблицу. Все так как задумано: сначала идут "фирменный" 151 цвет спрайта РО, затем 16 цветов, адаптированных фотошопом под нашу картинку. Сохраняем полученную картинку в .gif. Открываем ее в IView, палитра - экспорт - записываем "текстовый" .pal-файл. Открываем любой "фирменный" кадр в IView, таким же макаром выгружаем "фирменную" палитру из него. Теперь блокнотом выкусываем последние 16 значащих (не пустых) {адаптивых} цветов, и вписываем их примерно в середину "фирменного" .pal-файла, туда, где идут строки 0 0 0 - пустые места. Записываем. Мы получили палитру, в которой фирменные цвета, в т.ч. служебные, остались на своих местах, а новые добавлены между ними.
} //конец нового варианта;

Но и это еще не всё. Теперь предстоит наложить эту палитру на все кадры спрайтов. После продолжительно сношения с разными утилитами, был скачан Image Alchemy 1.10 (со странички http://perceptron.fatal.ru/utils.html), {кстати ALCHEMY.EXE -l имяфайла.bmp выгружает "текстовый" pal-файл из картинки} и ему была дана следующая команда:
alchemy -- -w -c256 -frx.PAL *.bmp .\res
...где res - пустой подкаталог в папке с кадрами, а rx.pal - "текстовая" новая палитра. Так я получил кучу кадров с модифицированной палитрой. {К моему ужасу, SpriteEncoder отказался конвертировать эти файлы! :( Ошибка, мол формат неподходящий. А если проделать ту же операцию подмены палитры в IView - файлы подхватываются! Выяснилось, что разница работы Alchemy и IView состоит в каком-то странном байте в заголовке bmp-шки по смещению 2F, у Алхимии он был нулевой, а в ИВью - единичка. Короче...} Оказывается, нужна дополнительная обработка картинок в пакетном преобразовании в IView. Открываем это меню, добавляем файлы, указываем результирующую папку, убираем галочку "дополнительные параметры", формат - "bmp", поехали! Вот теперь всё. Хух.

5. Собираем спрайт.

Запускаем SpriteEncoder, "добавить", выделяем все файлы... и... видим что ничего не добавилось! Оказывается, добавлять файлы следует порциями, по 50...90 файлов. {Вероятно, ограничение какого-то буфера}. Окей... делаем... жмём "Encode". И вот, долгожданный спрайт получен! Урррря!

- FIN -

piroJOKE,
Начальная версия: 16:40 29.09.2005.
Отредактировано: 20:28 29.09.2005.

Use brain against brain, ai against ai... · как правильно задавать вопросы · faq · download
Ответить