Комментарии 19
Получается среди 6угольников будут 12 пятиугольников. Но даже если бы был один - игровые механики могут быть завязаны на то что карта состоит из одинкаковых тайлов. Как это преодолевать?
Обыграть это другими игровыми механиками.
Например: 12 источников ресурсов или алтарей или источников квестов для основных сюжетных линий или это места гильдий/альянсов/спаунов фракций/рас. Или РБ там расставлять самых буйных.
Или сделать что-то вроде "границы карты" - спрятать эти пятиугольники под какой-то ненужной локацией/декорациями.
Или сделать там порталы между остальными пятиугольниками. Или между 12 другими изменериями.
Кучу всего можно приудмать, не обязательно же их внедрять в геймплей наравне с остальными элементами.
Раз они такие специальные, то и игровая механиха должна их как-то обрабатывать иначе.
В реальном мире существуют полюса. Там перестают иметь смысл некоторые привычные явления, типа "севернее/южнее" или "запад/восток". Какая там долгота? Но в остальном мире долгота помогает для определения местоположения и направления движения. Для полюсов, полагаю, существуют какие-то специальные устройства/алгоритма определения направления движения.
Так же и с этими пятиугольниками поступать
В реальном мире наиболее часто используемая шестиугольная карта: H3 от Убер. Они пятиугольники в океан засунули, подальше от земли.
Ну вот разве что. В зависимости от жанра :) В Ascendancy вообще ничего делать не надо, а в Minecraft — порталы размером за пару тысяч блоков вполне надёжно решат задачу отсутствия палева на «бытовых» расстояниях :)
Я вот сходу смог вспомнить только одну механику, которая совсем не ложится на 5угольник.
Это механика окружения, когда надо занять 2 противоположных гекса.
Так что думаю проблема преувеличена.
Ещё если у города радиус влияния с расстоянием N клеток, то город на пятиугольной клетке будет с более маленьким количеством контролируемых клеток. А защищать его наоборот будет легче, потому что сторон только пять.
Я когда-то тоже ломал голову над этой проблемой, но топологию не обмануть.
Кажется, самое незаметное для игрока решение - сделать в мире рандомные нерегулярную клетки, разрешив ещё и семиугольники и пятиугольники. Тогда в этом хаосе спрячутся двенадцать обязательных пятиугольников.
Мне кажется, что можно незаметно менять систему координат при движении, так чтобы пятиугольники всегда оставались где-то далеко за горизонтом.
игровые механики могут быть завязаны на то что карта состоит из одинкаковых тайлов. Как это преодолевать?
Только этим летом ломал себе голову, как бы это сделать. Дошёл до пятиугольников и скис — получается таки «особый случай», причём преизрядно ломающий всю однородность :(
Обычно что нужно для игры? Чтобы можно было игнорировать проблему и это не бросалось в глаза. Поясню на примере «выпученного куба», вот его угол (он проще для понимания, чем шестиугольники):

Красная точка — это, допустим, Би Джей. Поле зрения — примерно 90°. Смотрит не совсем точно на угол куба, а чуть правее (относительно себя; не пугайтесь, что он стоит на нижней грани, вправо-вниз головой). Нарисуем рэйкастинг четырёх лучей из его глаз — крайние левый и правый и парочку рандомных.
В теории, всё работает :) Переход с плоскости на плоскость происходит бесшовно, мы спокойно кастуем и рендерим, как ни в чём ни бывало… но на экране при этом рисуется такая хтонь, что игрок заорёт и отскочит от экрана (я похожим макаром завалил свой то ли первый, то ли второй 3D-рендерер, то ли в школьные годы, то ли на первом курсе… баг быстро нашёл, но в кошмаре потом оно приснилось — не был готов юный ум к гибриду Античамбера с Телеглитчем. Кажется, что-то из этого движка пригодилось потом в CGAStein 3D). Покозявленный при падении в чёрную дыру космос курит в уголке.
Назревает разумный вопрос: как скрыть от игрока то, что его обманули и в этой точке сходятся не четыре угла квадратов, а только три? Надо как-то сделать это палево нелокальным.
В лоб задача не решается от слова «совсем». Пойдём от противного: допустим, у нас есть эффект «закругления», который можно заметить только на большом расстоянии, сравнимом с размерами глобуса. Построим там глобальную мегаструктуру в виде… треугольного квадрата. Да-да, того самого распученного неевклидова треугольника со всеми прямыми углами. На этой картинке легко видеть, что потребуются три прямых стены в один кирпич, переходящие каждая с грани на грань. Все стены прямые, все углы прямые, но стен и углов только три, потому что угол «планетарного куба» находится внутри.
Это нормально. В ТЗ подразумевается, что игроки не будут строить структуры таких размеров, где возникает «палево».
Но теперь начнём пристраивать изнутри вплотную стенки. Внутреннее пространство сжимается каждый раз на один кирпич. При этом треугольник так и останется треугольником, иначе нарушится условие однородности координатной сетки — а ведь при достаточном уменьшении внутренностей этой мега-крепости он должен стать нормальным квадратным домиком, иначе нарушится условие «палево не должно проявляться на размерах меньше геологических». Следовательно, такое замощение невозможно — теорема доказана :(
Что ещё можно сделать? Сделать квадраты не такими ровными, но чтобы это было заметно, скажем, через миллион таких квадратов? А как их такими сделать? Сделать какую-то локальную сетку, которая привязывается к участку глобальной? И как её так привязать, чтобы не было резких переходов в каких-то точках? Замощение невозможно — доказано выше. Значит, это будет не замощение. Что-то неточное, с нано-зазорами. Но с какими именно?
Честно говоря, открывая статью, я робко надеялся, что Вы выкрутились лучше, чем я :( Я не выкрутился никак — встал на тех же «особых точках» с пятиугольниками, где две параллельные стенки шестиугольников вдруг переламываются и радостно кидаются навстречу друг другу :(
Убер сделал шестиугольную сетку H3 для реального мира (https://h3geo.org/), засунул все пятиугольники в океан, где они никому не мешают. В игровом мире наверное это ещё проще? (Я мало чего знаю про игры, больше про реальную гео аналитику).
https://h3geo.org/#hex=804dfffffffffff
не-а, не все. т.е. это в океане, да, но не то чтобы совсем не мешали.
а вот этот - https://h3geo.org/#hex=8031fffffffffff ?
Проблема пятиугольников кажется надуманной. Разве что вам нужны шахматы на глобусе. Вот Townscaper сделан на нерегулярной сетке и прикольно получилось. На такой сетке уже есть и другие игрушки. Играл в сапёра и по приколу сам сделал змейку. А сейчас и для UE5 уже и редактор города подогнали. Шестигранники - красиво, но скучно.
Тоже выход. «И тут появился изобретатель…», приём «сделать наоборот».
Пусть вся сетка будет нерегулярной — не будет проблемы с «особыми точками». Уменьшаем регулярную сетку, скажем, до размера некоего «чанка», который хранится в оперативке одним куском — а внутри бьём нерегуляркой до отдельных клеточек. Главное — такой алгоритм разбиения взять, чтобы границы чанков не выделялись, тогда она будет вся со стороны выглядеть как одна большая нерегулярная сетка.
На самом деле её и так нет и в примере из статьи, и в моём примере. Если обратить внимание, что и та, и другая сетка основана на регулярной треугольной. А остальное - просто группа из ячеек.
Что-то спросоня затупил. В статье на сфере сетка не регулярная, но треугольная. А в Townscaper - не регулярная четырехугольная. Хотя и построена изначально на треугольной.
Гексагональная сетка для игр с круглой Землей