Задумался, как например в EUIV и подобных играх хранят данные карты, конкретно границы провинций?
Просто списком кривых Безье или что-то более сложное? Получается, что границы будут дублироваться в базе для каждых соседствующих провинций. Мне сложно представить, какой геморрой это составлять в редакторе.
И ещё интересно: как они работают с координатами? Ведь речь идёт про глобус по сути.
- 01 августа 2019, 00:06
- 00
Ну может и ладно?
Наверно можно как-то хитро хранить какая провинция с какой соседствует по какой границе. И дальше для каждой провинции при отрисовке соединять отдельные границы в одну.
Отрисовка это вообще отдельная тема, тут пока надо разобраться с форматом хранения :)
Можно сделать и прямыми линиями, а за счёт перепадов высоты будет казаться, что границы идут волнами. Или добавлять к этим линиям шум Перлина с постоянным зерном.
А хранить, наверное, лучше ближе к тому виду, в котором оно будет использоваться. То есть если нужен поиск пути, то имеет смысл сразу сделать как навмеш.
Вот тут скриншот с провинциями на зуме. Графически видно, что есть искривления, но непонятно, хранятся ли так границы или движок уже сам дорисовывает округлости, где надо. Так что идея с прямыми линиями может иметь смысл. И проверка попадания клика/тача будет чуть проще, наверное.
Поиск пути нужен, по карте перемещаются, например, войска. При этом время, затрачиваемое на переход, зависит от местности, но, как я понимаю, той провинции, куда этот переход совершается. Иногда ещё по границе может протекать река. Соответственно, это тоже должно быть отражено в исходной информации. Значит, привязку границ нужно делать ещё и к географическим сведениям карты.
Ещё есть идея нарисовать всю карту многоцветной маской в пиксель-арте, а потом обработать автоматически до получения линий.
В рантайме?
Границы должны быть понятны движку во время игры; выбор провинции приводит к выделению границ
Я имел в виду, что автор рисует пиксель-арт (как удобно автору), а потом в игре это уже становится навмешем (как удобно движку). Конвертировать между представлениями можно как при загрузке, так и при запекании.
Понял.
Я тут подумал, что линии вообще не нужны. Можно хранить опорные точки и всё.
Оказалось, что, по крайней мере для моддинга, используется схема с кучей карт: высот, провинций, рек. Всё это рисуется в редакторе и скармливается движку. Похоже, что какой-то специальной базы провинций и границ нет.
Кстати, интересная рубрика - как сделано то, как сделано сё. Пиши ещё! :)
Сейчас мне уже интересно, как они рендерят каждую отдельную провинцию. Учитывая наличие карты высот, то обычным полигоном там не обойтись, нужно делать триангуляцию. Надо погуглить, есть ли какие-то отладчики, позволяющие увидеть количество треугольников на экране в gl-приложении
renderdoc, но там, правда, не все версии opengl поддерживаются