Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Как реализована карта в EU4?

Как реализована карта в EU4?

boolCountПостоялецwww29 мая 20182:10#0
Здравствуйте.
Каждый раз играя в EU4/HoI4 задумываюсь, как же сделана карта мира?
Как она хранится и в каком формате? Как загружается? Почему так мало потребляет ram? Как определяется попадание луча на провинции с такими кривыми границами(выбирается провинция очень точно)? Почему не лагает рендер, если рисуется очень много кривых границ вокруг провинций?

И вот я набрался храбрости искать в гугле. Но не смог найти того, что нужно.
Очень понравилась статья https://habr.com/post/322504/ про генерацию карты. Но эта статья не даёт все ответы(если вообще в EU4 используется подобная система графов).
В европе провинции не выглядят как шестиугольники(и я вообще молчу об островах).


Надеюсь мне подскажут пару слов, куда копать)
А если ссылочки дадите, то буду рад как слон)


для наглядности

+ Показать

Правка: 29 мая 2018 2:15

NyakNyakProductionПостоялецwww29 мая 201811:25#1
boolCountПостоялецwww30 мая 20180:22#2
NyakNyakProduction
Спасибо огромное!)
Многое понял, но из-за нехватки извилин у меня осталось несколько вопросов.

1. До конца не понимаю, как именно из этого

+ Показать

получаются такие сглаженные провинции
+ Показать

Это внутренний алгоритм парадоксов такой крутой, что по такой зернистой картинке получается такая сглаженная и аккуратная провинция? Или что то я упустил?
2. Вопрос на счёт граници. Откуда она берётся? Опять тот же крутой алгоритм, который сглаживает провинции? Т.е. граница генерируется автоматически между провинциями, а потом куда то сохраняется?
3. Попадание луча при клике. Вряд ли этот вопрос относится именно к EU4, но всё же. Я проверял на всевозможных горных рельефах и попадание 100%. Как они это делают? Просто рендерят террейн с текстурой provinces.bmp и определяют цвет пикселя?) Или же они просчитывают попадание луча?
4. Граф. Я не смог найти файлик с графами, а только для дополнительных связей. Это означает, что граф также строится по картинке provinces.bmp на основе соседних пикселей провинций?

Если кому не сложно, ответьте пожалуйста на эти глупые вопросы)

BUzerПостоялецwww30 мая 20182:23#3
boolCount
Думаю, эту карту сначала немного размывают, чтобы она не была такой ступенчатой.

Вот к примеру, беру твою первую текстуру, открываю её в paint.net, и дальше увеличиваю разрешение в два раза и применяю размытие по Гауссу с радиусом в 10. А затем просто кликаю в какую-нибудь область "волшебной палочкой":

+ результат

Получаем плавную и красивую границу выделения.
Правда, теперь её надо отрисовать при помощи полигонов, но это уже другая история.

NyakNyakProductionПостоялецwww1 июня 201813:14#4
1. Размыли просто.
2. У Пиксара даже есть пейпер по обводкам (из 3D получают 2D комиксные обводки). Там есть и более наивные алгоритмы. Выглядит как сходная задача.
3. У меня нет времени в эти рендеринги вникать, но наверно з-буффер какой-нибудь. Если гора закрывает юнитов, то пикнуть ее мышью проблем быть не должно?
4. Часть про Adjacencies в вики.

Правка: 1 июня 2018 13:14

boolCountПостоялецwww9 июня 201821:33#5
Всем спасибо!) Решил попробовать сделать и у меня даже что-то получилось) Правда мне кажется, что я не туда пошёл)
Вот результат азовского моря
+ Показать

В общем выдумал свой велосипед, который просматривает province.bmp, и на выходе получаю "Границы между провинциями". Просто список границ, со списком точек(которые образуют линии). Но по границам можно построить граф(т.к. в них хранятся обе провинции)
Правда не очень быстро работает) Запуская в одном потоке стандартную картинку province.bmp(5632x2048), в которой ~3500 провинций, получаю ответ через 30 секунд!! ..... Но зато работает.

В конце концов, ответы на некоторые вопросы, с вашей помощью я нашёл. Но ни как не понимаю ещё парочку вопросов:
1. Сами границы(точки образующие сглаженную линию) я смог получить. Просмотрите внимательно следующую картинку, а особенно как рисуются границы.

+ Показать

Они рисуются наклонно, как будто по настоящей земле идут.
Если же я просто нарисую свои линии, используя карту высоты с нормалмепом, то получится кака(даже если их рисовать с отключенной проверкой глубины). Смотрится не естественно. В EU4 границы провинций "чётенько" идут поверх карты(со всеми наклонами и т.д.). Такое чувство, что они отрендерены на текстурку, а текстурка наложена на террейн. Но этого же не может быть.

2. Как рендерится политическая карта? А именно как рендерится провинции с определённым цветом. Провинция - это не полигон, это несколько десятков пикселей из province.bmp, которая образуется только линиями границы.
Или у них изначально каждая провинция создаётся как полигон? И в результате у них хранится куча провинций/полигонов? Тогда это бы объяснило первый и второй вопрос, но не слишком ли это странно? да и появляется куча проблем с островами и озёрами внутри других провинций.

+ Показать

Если кому не сложно, помогите куда капнуть.

/ Форум / Программирование игр / Игровая логика и ИИ

2001—2018 © GameDev.ru — Разработка игр