Возник интерес к разработке парадоксоподобных игор (Hearts of Iron/Victoria/Europa Universalis). Сразу же возник вопрос с картой (пикрилейтед пример). Карта состоит из неравномерных кусочков, не разбита по рядам и столбцам. Если правильную карту можно представить в виде двухмерного массива и так же отрендерить, то как хранить и отображать подобную карту? Самый простой вариант - одномерный массив со с списком соседних локаций, но тогда как делать отображение? Пилить карту вручную, а потом связывать каждую локацию с элементом массива? И какой движок лучше всего подходит для подобного? Юнити скорее всего сильно просядет по производительности, а ЮЕ скорее для шутеров - в стратегиях не нужен графон.
Возможно, тебе поможет эта статья.http://www.ckiiwiki.com/Map_modding
Карта в виде дерева. В клетках инфа о соседях для поиска пути и т.д. Сама карта, должно быть, сделана вручную, но в европке4 есть опция генерировать Новый Свет, то есть набор "клеток" для генерации тоже имеется.>Юнити скорее всего сильно просядет по производительностиВ каком плане? Тем более ты ставишь уичку по производительности выше, интересно почему?
А по-моему, даже на скринах отчётливо видно, что карта разбита на диагональные столбцы. Все "неравномерные" кусочки это просто набор предварительно созданных кусочков, на карте есть почти идентичные и с некоторыми различиями. Это скорее всего благодаря тому, что некоторые кусочки рисуются внахлёст и с другим скейлом. Юнити под такое вполне подойдёт, не вижу причин для просадки производительности.
>>266183Кстати да. Там ряды идут ровно, только под углом.
>>266183>>267338Не вижу никаких профитов в "ровных рядах по диагонали". Когда число соседей разное и форма абсолютно произвольная у клеток. То что там 2 спрайта похожи просто совпадение. Средний спрайт даже не похож.
>>267393>Не вижу никаких профитовА они есть.>форма абсолютно произвольнаяВсе формы - квадраты. >просто совпадениеЭто отрицание или проблемы со зрением?
Бля, пацаны, там Hearts of Iron 4 вышел, а я тут сижу.
>>266161 (OP)>представить в виде двухмерного массива ААААААААААА!!!Ну серьезно, как можно быть таким дауном?Карта в парадоксах тайловая, для каждого тайла есть n путей к соседям. Программно это реализуется любым видом графа, например деревом, как уже выше подсказали.
>>267834>деревом Черно-красным?
>>267834Какое дерево, там циклы есть. И массив со списком соседних локаций - это и есть граф (ну можно множество вместо списка взять).Лично я бы генерировал подобную карту так: случайно расставляю на плоскости точки, каждой точке отходит ближайшая к ней область, потом границы искривляются каким-нибудь алгоритмом.
>>268097https://ru.wikipedia.org/wiki/%D0%94%D0%B8%D0%B0%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0_%D0%92%D0%BE%D1%80%D0%BE%D0%BD%D0%BE%D0%B3%D0%BE
>>268114Спасибо, я хотел сослаться на что-нибудь такое, но забыл название.
>>268097Я надеюсь, ты понимаешь, что у опа никакой не вороной, а обычные гексы.
>>268628вороной есть генерация карт когерентного шума по типу хаймепа из гексов, так что ЭТА НЕ ПОМИДОР, ЭТО ОВОЩ
>>268628Как сгенерировать такие няшные гексы?
>>268639гугли вороной
>>268639Это не гексы.
Карта в парадоксодрочильнях вроде хранится примерно как растровая картинка, потом она просто визуализируется хитро. Инфа о провинциях и их соседях прописана явно в виде списка. Погугли как делать моды на парадоскодрочильни, там всё это есть, я уже не помню.
>>268639Диаграммы вороного. Возможно, их использовали при генерации карт из оп-пика. Но у оп-игр, очевидно, мир не генерируется каждый раз. Он был предварительно сгенерирован для того, чтобы работать с простейшей гексагональной механикой. Хотя скорее всего, там даже и вороного не было, тайлы всё-таки одинаковые. С трушным вороным такой фокус не пройдёт.
Я тут порассматривал карту и возникла одна идея. Карту состоит из ромбов (не гексов даже), и каждый (почти) ромб имеет четыре границы. Форма каждой границы случайно выбирается из доступных вариантов, и в итоге получается фигура.
Интересно.
Поделюсь и я своей примитивной но рабочей идеей. Нужно базовый слой где помечены территории провинции.>>266163Также нужно поделить карту на провинции для зарисовки. Действия с картой происходят в таком порядке: рисуется базовый слой для отслеживания пикселя -- накладывается видимый слой провинций -- при нажатии на провинцию, снимаем координаты мыши и сравниваем с цветом базового слоя (по цвету базового слоя определяем провинцию) -- исполняем действия, например для закраски провинции нужно просто изменить цвет спрайта (да-да неэффективно, но мне лень придумать что-то лучше, все равно 1000 провинций более-менее прорисовываются за допустимый час) сама провинция загружается в таком формате: само изображение только одной провинции (никаких других и ничего больше), размер провинции, расположение на глобальной карте (можно добавить загрузки еще каких-то объектов). Плюсы этого - работает. Минусы - медленно работает с количеством провинций больше 1000 или еще с дополнительными объектами на карте типа городов и тд. Реквестирую хороших методов зарисовки провинций.
>>270710Ого ты умный.
Бамп.
Хуй.
>>284515Ты. Что, так и никто не додумался как такое заделать? Ебаный стыд!
Вот так выглядит мапа у парадоксов (Crusader Kings II). В отдельном txt-файлике прописаны провинции в следующем формате: цвет на мапе, море/суша, расположение в ней города относительно геометрического центра, всякая мета-игровая инфа, типа начального владельца, кол-ва нигр, регилия и т.п.На выходе получается, что все, что ты на мапе покрасил в R G B будет отображаться как провинция, у которой в файлике прописан цвет R G B.При первой загрузке на сколько я понял (инфа не 100), клаужевитц (движок) строит варианты путей из каждой провинции в каждую. Хз, каким образом, можешь попробовать кривые Безье.Больше идей нет, разве что можешь на форум мододелов для гейропки 4 или CK II заглянуть и посмотреть как они модифицируют карту. Такие дела
>>285931>При первой загрузке на сколько я понял (инфа не 100), клаужевитц (движок) строит варианты путей из каждой провинции в каждуюОхуеть. То то он столько грузится.
>>286377Ты правда поверил этому шизофренику?
>>285931>попробовать кривые Безье.Эээ... юнцы, извените что вмешиваюсь в вашу беседу, я как правило тут не пишу. Но может вам стоит попробовать обычный А? Это же типичная задача поиска путей на связанном графе. Ее до дыр затерли. Собвенно можно даже просто СКАЧАТЬ А и все заработает. И не надо строить ВСЕ СО ВСЕМИ... ну вы и лалки. Ладко, удачи вам, хорошего настроения.вы бы ахуели еслиб узнали кто я но я слишком скромен
>>286672>вы бы ахуели еслиб узнали кто я но я слишком скроменРиточка?
Бокал вина и еды и не только в том числе и в чём проблема с тобой не разговариваю.
А что насчёт гексов?
>>267442>Все формы - квадраты.Не квадраты. На разных широтах размеры тайлов отличаются (проекция меркатора). Все они произвольно неправильно формы.Количество переходов из тайла в тайл для разных тайлов разное. От 4 (для крупных приполярных тайлов) до 8 (или 7, точно не знаю, 7 находил точно). В тайлах граничащих с водой, переходжов может быть 2, или вообще 1. >>268651>чтобы работать с простейшей гексагональной механикой. Но там не гексагональная механика.>всё-таки одинаковыеНет, не одинаковые. Мне лень качать игру, запускать, и делать пачку скринов для разных широт. >>266183>А по-моему, даже на скринах отчётливо видно, что карта разбита на диагональные столбцы.Так только кажется. Я, в свое время, оброчил эту карту вдоль и поперек. Столбцы там выстраиваются только локально в рамках определенных областей. Провести их хотя бы через одну крупную страну не получится. >Я тут порассматривал карту и возникла одна идея. Карту состоит из ромбов (не гексов даже), и каждый (почти) ромб имеет четыре границы.Какие ромбы, блять? Ты слепой, шоле? Четырехграничные тайлы очень редки на карте, их поискать еще нужно. Смотри картинки.http://imgur.com/a/UR9ldНа первом пике я красными цифрами отметил количество границ у тайлов.На втором фейловая постройка диагоналей. Тайлов, которые не дают простроить диагонали дохуища просто. На разных участках диагонали имеют разный угол, иногда поворачивающий прямо посреди диагонали.
Ну вот у меня есть двухмерный массив. Как его пендерить в юнити?
>>294421>рендеритьФикс.
>>294422пендерить
>>294421Массив чего?
>>295674Чисел, где каждое число - номер спрайта.
>>294421Зачем двумерный то?
граф не вариант?