Игра мечты [3] Математика гексов
Всем привет!
Меня зовут Владимир и я в режиме дневника пишу, как делаю свою игру.
Предыдущие посты:
Сразу после написания прошлого поста наткнулся на офигенную статью.
https://www.redblobgames.com/grids/hexagons/
В ней описано практически все, что мне может пригодиться при работе с гексами, и я понял, что пока стоит отложить генерирование красивой карты и заняться закладыванием фундамента.
Первым делом оказалось, что я неправильно раскладываю гексы по осям координат. Я как тупой бычок решил, что если поверхность 2д, то и гексы должны находиться на осях X и Y и иметь координаты типа (2;3). Но оказалось, что алгоритмам проще живется в 3д мире с XYZ осями и координатами типа (2;3;-1).
Поломав голову над 3д миром двухмерного пространства, начал по очереди бомбить фишки из статьи.
Например, теперь я могу спросить у любого гекса, кто его соседи:
Или даже дать всех соседей в определенном радиусе:
О, и даже получить все гексы, находящиеся на прямой между любыми двумя:
Можно даже получить гексы, видимые из определенной точки. На видео, например, точка видит горы, но не видит, что за ними:
Ну и конечно то, чего я боялся больше всего: поиск пути. На него пришлось потратить пару вечеров, ведь произошло самое страшное для программиста: копипаст не сработал, и, пока я не понял, как алгоритм работает, он собственно и не работал.
Приветствуйте, царь всех зверей, алгоритм поиска пути A*.
На видео горы не проходимы, а у остальных ячеек есть циферка-сложность проходимости. Грубо говоря, чтобы пройти светло-зеленый гекс, надо потратить 1 действие, а воду 5, у зеленой и коричневой вроде 2. Вот алгоритм и пытается найти маршрут, который займет меньшее количество действий.
Фух, очень рад, что за меня ученые мужи уже все придумали, я прям опасался, что по крайней мере поиск пути будет огромной проблемой, но это уже в прошлом, а в обозримом будущем по игре у меня только творческие задания)
Ну и у меня есть вопросики для мудрецов. В цивилизации территории стран обведены жирной полосой, подскажите плиз, о чем почитать, чтобы смочь сделать также:


Лига Разработчиков Видеоигр
9K постов23.1K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"