Версия для печати темы

Нажмите сюда для просмотра этой темы в оригинальном формате

Город Джунов _ Новости _ Конкурс! Сделаем новый HD Pack вместе!

Автор: MorgenS Понедельник, 11 Ноября 2019, 13:34

В "День Проклятых Земель" мы объявили https://allods.gipat.ru/index.php?p=news&id=402 с интересными призами.

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

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

Принять участие легко. Просто скачайте программу и начните разбирать тайлы.
Подробно с условиями конкурса можно ознакомиться на сайте (https://allods.gipat.ru/index.php?p=news&id=402).

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

Давайте сделаем новый HD Pack вместе!

Автор: Demoth Понедельник, 11 Ноября 2019, 14:03

А вот тут https://vk.com/topic-99140_40722745 (ссылка доступна без регистрации насайте) можно посмотреть примеры сложных тайлов.

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

На данный момент участниками конкурса и организаторами (не учавствуют в конкурсе, но учавствуют в разборе) разобрано около 30%.

Автор: KnightL Четверг, 14 Ноября 2019, 21:29

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

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

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

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

Если что, я в конкурсе участвовать не собираюсь, сделал это просто чтобы проверить, правда ли нереально написать более-менее быстрое решение. На моём компьютере, если собрать Release, то по идее всё бы обработалось за неделю непрерывного счёта. Но можно это время уменьшить, разделив тайлы на несколько компов.

Автор: AleksZh Пятница, 15 Ноября 2019, 02:58

Я графикой не занимаюсь и могу что-то недопонимать, но, имхо, основная проблема с тайлами в комбинаторном взрыве из-за количества масок и вариантов их поворота и наложения. В то же время в конкурсной программе с практикой становится очень легко выставлять правильные маски для тайла, а ручной перебор текстурок может затянуться (и вообще не особо приятен).

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

Если так, то я бы предложил давать юзеру выбрать маски и нажать кнопку "подобрать текстуры".

Автор: AstraZak Воскресенье, 08 Декабря 2019, 21:41

QUOTE(AleksZh @ Пятница, 15 Ноября 2019, 02:58)
Если так, то я бы предложил давать юзеру выбрать маски и нажать кнопку "подобрать текстуры".
*


Это так и работает, выбираешь маски, а прога сама выбирает текстуры.

Автор: AleksZh Воскресенье, 08 Декабря 2019, 22:17

Выбирает, но часто приходится поправлять, а по-моему могло быть лучше (но это не особенно важно, в принципе).

Автор: AstraZak Воскресенье, 08 Декабря 2019, 22:51

QUOTE(AleksZh @ Воскресенье, 08 Декабря 2019, 22:17)
Выбирает, но часто приходится поправлять, а по-моему могло быть лучше (но это не особенно важно, в принципе).
*


Как я понял автора - это не важно, главная задача на данный момент это подобрать маски, остальное сделает он сам.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)