Конкурс! Сделаем новый HD Pack вместе!
#1
В "День Проклятых Земель" мы объявили конкурс на разбор тайлов с интересными призами.

Проделанная участниками работа поможет корректно определить, какие текстуры и с какими масками использовались для создания тайлов ландшафтра игры, а значит сделать новый HD Pack будет куда проще!

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

Принять участие легко. Просто скачайте программу и начните разбирать тайлы.
Подробно с условиями конкурса можно ознакомиться на сайте (ссылка).

Если вы решите принять участие, можете оставлять свои ID в комментариях к новости на сайте или прямо в этой теме.

Давайте сделаем новый HD Pack вместе!
Visit allods.gipat.ru - best resource about Evil Islands and Rage of Mages series
Ответ
#2
А вот тут https://vk.com/topic-99140_40722745 (ссылка доступна без регистрации насайте) можно посмотреть примеры сложных тайлов.

Если будут сложности с разобором тайлов, спрашивайте в этой теме, обязательно ответим!

На данный момент участниками конкурса и организаторами (не учавствуют в конкурсе, но учавствуют в разборе) разобрано около 30%.
Ответ
#3
Какая-то у вас странная модель, по которой получаются тайлы. Некоторые из них явно были получены не так. Например, 1033, 1034, 1043, 1089 и т.д. содержат серые точки только внутри, а вокруг песок. К тому же, по-моему, ваша программа не умеет крутить составные части тайлов, а без этого не очень хорошо получится тайл 1000 и др. Вообще было бы логичней сгруппировать тайлы по аллодам или даже по локациям, это бы ускорило проверку одного тайла в несколько раз, потому что не нужно было бы перебрать те, которые 100% не подходят. Может быть для этой задачи бы больше подошёл не перебор, а какие-нибудь генетические алгоритмы или что-то подобное.

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

Примеры результата работы программы и саму программу можно найти по ссылке отсюда . Я не определился, как лучше считать расстояние между пикселями, поэтому там две папки с результатами: results с суммой модулей разностей и resultsINF с максимумом модулей разности по каждому каналу. Вроде вторая немного лучше, и программа не пытается лепить воду вместо скал на 1004, 1005 , но с остальными нужно смотреть, что будет точнее. В скобках указано, на сколько приближение похоже на нужное. Я считаю его как 1-(сумма расстояний до тайла)/(сумма расстояний до полностью чёрной картинки), поэтому в файлах эти величины не согласуются.

Исходники первой версии лежат в ZIP архиве вместе с вспомогательными файлами. Для сборки нужна libpng и какая-то библиотека для STL потоков (в линуксе это pthreads, в винде это что-то другое). В коде всё считается на 6 потоках, при желании можно менять. Exe дать не могу, потому что компилятор только в линуксе и есть.

Если что, я в конкурсе участвовать не собираюсь, сделал это просто чтобы проверить, правда ли нереально написать более-менее быстрое решение. На моём компьютере, если собрать Release, то по идее всё бы обработалось за неделю непрерывного счёта. Но можно это время уменьшить, разделив тайлы на несколько компов.
Ответ
#4
Я графикой не занимаюсь и могу что-то недопонимать, но, имхо, основная проблема с тайлами в комбинаторном взрыве из-за количества масок и вариантов их поворота и наложения. В то же время в конкурсной программе с практикой становится очень легко выставлять правильные маски для тайла, а ручной перебор текстурок может затянуться (и вообще не особо приятен).

Если принять маски известными, не тривиализируется ли подбор текстур для каждой из них? Как я вижу, должно быть просто выделить часть тайла по маске и простым перебором всех базовых тайлов и их поворотов выбрать наилучшее совпадение для каждой маски независимо от других составляющих тайла (любая вменяемая пиксельная метрика пойдёт, по идее). Edit: не прямо "просто", но должен быть регион не перекрываемый другими масками, по которому можно подобрать текстурку, разве нет?

Если так, то я бы предложил давать юзеру выбрать маски и нажать кнопку "подобрать текстуры".
Ответ
#5
Выбирает, но часто приходится поправлять, а по-моему могло быть лучше (но это не особенно важно, в принципе).
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)