Pull to refresh

Comments 21

Слова «вилька» и «тарелька» пишутся без мягкого знака, а слова «сол» и «фасол» — с мягким.
Я хотел именно эту интерпретацию идеи опубликовать, но поиск выдал другой вариант. Суть та же — некоторые вещи просто один раз заимплеменьтить и забить.
Но самий сложний русский слово — это слово ГРУСТ. Это не тот ГРУСТ, который в кошёлка собирают — это тот ГРУСТ, который ТОСКА. Это не тот ТОСКА который заборы делают — это тот ТОСКА который ГРУСТ.

(орфография анекдота сохранена)
Не так давно тоже занимался построением диаграммы Вороного на плоскости.
Стоит заметить, что диаграмма Вороного двойственна триангуляции Делоне, для которой построения которой существует более просто, чем sweeping line алгоритм, при этом работающий также за O(NlogN).
Можете привести названия алгоритмов? И может быть встречали описание алгоритма sweeping line для 3D пространства? Попытки обобщить для n-мерного случая не увенчались успехом. Я для поиска Делоне в пространстве использую выпуклую оболочку.
UFO just landed and posted this here
Вот нашел описание триангуляции Делоне на русском. Там заявлена сложность O(n^2). После этого потребуется еще потратить время на переход к диаграмме Вороного.
Вопрос к читателям, хорошо знающих теорию оценки вычислетельной сложности. Одна и та же оценка ( O(nlogn) ), но для разных алгоритмов может давать разное время работы алгоритмов? Количество операций приблизительно одинаково, но операции разные… Будет ли различие значительным?
Если распределение точек не случайное, а такое что соседние точки расположены по близким индексам, то написать алгоритм, справляющийся за O(nlogn) — несложно, сам такой реализовывал. В противном случае нужно применять динамическое кеширование, для итеративны алгоритмов, например.
Чаще на случайных точках строят связный граф, а на вершинах-ребрах уже что-то делают. Все остальное тогда нужно для красоты, не больше.
Пример с вестнотом тоже не от туда, на описанной механике базируюся серии Total War и Dominions.
Открытые реализации диаграмм Вороного есть, из того, что видел сам, в XScreensaver, MATLAB и Mathematica.
Ещё про алгоритмы построения двойственной диаграммы можно почитать в «Триангуляция Делоне и ее применение» Скворцов А.В.
Горе от ума.
Суть любой ролевой системы — скелета ролевой игры это умное упрощение. Главная задача построить игровую модель максимально простую и при этом максимально четко описывающую игровой мир и взаимодействия.
В молодости из максимализма мы меняли простые правила ролевой системы на физические модели потому что так правильнее, как нам казалось. Вместо того чтобы одним броском кубика выяснить попал ты в противника или нет мы строили траектории снарядов, вектора рикошета и другие очень нужные, как мы думали, вещи.
Что в итоге? В итоге ничего хорошего. Игра интереснее не становится зато становится на порядок сложнее и монструознее. Хорошие ролевые системы гениальны в своей простоте, это начинаешь ценить после реализации каких-то RPG проектов. Усложняя систему вы не делаете ее лучше вы всего лишь делаете ее сложнее.
К чему я это все?
К тому что шестиугольники в РПГ используются не из-за возможных 6 противников а по одной простой причине — расстояния между центрами любых соседних гексагонов одинаковы. Это единственное преимущество гексагональной карты перед обычной прямоугольной сеткой, где расстояние диагональных клеток отличается от расстояния между центрами горизонтальных и вертикальных клеток. К тому же расстояния между диагональными клетками не целое число и это многое усложняет.
То есть единственное обоснование существования гексагональной карты это простота расчета пути персонажей перемещающихся по гексам. Все.
Ваша модель рушит весь смысл гексов, по вашим полигонам невозможно перемещаться равномерно, следовательно придется переходить к перемещению по отдельной сетке координат, тогда ваша сетка полигонов будет иметь некоторую стратегически-декоративную роль, но эта роль не будет описывать никаких реальных моделей. В итоге система усложняется вводится ряд условностей которые невозможно объяснить и ради чего все это происходит понять сложно.
P.S. Очень радует подход с которым вы относитесь к играм, почитайте про PnP системы, там очень много интересного по данной специфике, оттуда растут корни современных RPG.
простота расчета пути персонажей перемещающихся по гексам.

Видел описание двух алгоритмов просчета гексагональной системы координат (с 2мя осями и 3мя). Лично мне не показались эти алгоритмы уж больно простыми. В моем случае сетка подразумевается прямоугольной. Просто не во всех точках этой сетки может быть помещен персонаж. Зато нет необходимости преобразовывать прямоугольные координаты в гексогональные.
по вашим полигонам невозможно перемещаться равномерно, следовательно придется переходить к перемещению по отдельной сетке координат, тогда ваша сетка полигонов будет иметь некоторую стратегически-декоративную роль, но эта роль не будет описывать никаких реальных моделей.

Что значит равномерно? Алгоритмы поиска пути для полигональной карты описаны. Есть список возможных позиций с их координатами, есть текущая позиция, есть целевая. Требуется найти путь. В чем конкретный недостаток такого подхода? Я и писал, что меняется тактика ведения боя.
Почему игровой алгоритм должен описывать реальную модель («реальная модель» <=> оксюморон — «горячий лед»)?
Видел описание двух алгоритмов просчета гексагональной системы координат (с 2мя осями и 3мя). Лично мне не показались эти алгоритмы уж больно простыми. В моем случае сетка подразумевается прямоугольной. Просто не во всех точках этой сетки может быть помещен персонаж. Зато нет необходимости преобразовывать прямоугольные координаты в гексогональные.

Мы с вами о разной простоте говорим. Клетка в RPG это мера расстояния.
«Герой продвинулся на 3 клетки вперед» — типичный отыгрыш передвижения. Пока в прямоугольной сетке герой перемещается исключая диагональные переходы, все просто, ходим по клеткам, считаем их, как кончились шаги — встали. Красота.
Когда мы добавляем переход по диагоналям, красота пропадает. Шаги начинают дробиться, расчет усложняется. То что вы называете алгоритмами просчета к RPG никакого отношения не имеет, это всего лишь алгоритмы визуализации.
Ваша беда в том что вы пока не разделяете ролевую систему и вид игры. Это примерно как в MVC, RPG — контроллер, а алгоритм просчета гексагональной системы это вид, его вы можете усложнять или упрощять, это никак не повлияет на игровую составляющую. Например вы можете использовать какой-нибудь простой и очень примерный алгоритм пересчета координат и ваши герои будут позиционироваться внутри гексов неровно или можете ввести суперточный алгоритм и при этом добавить еще эффектов перемещения, на игру это никак не повлияет, лишь будет смотреться чуть топорнее или чуть лучше.
Что значит равномерно? Алгоритмы поиска пути для полигональной карты описаны. Есть список возможных позиций с их координатами, есть текущая позиция, есть целевая. Требуется найти путь. В чем конкретный недостаток такого подхода?

Равномерно значит если герой прошел 5 клеток длина его пути равна пяти клеткам. Вы возможно не понимаете, но на гексагональной карте герои перемещаются исключительно по клеткам, плавное передвижение от клетки к клетке на игру никак не влияет, это всего лишь украшение.
Вы взяли гексагональную карту которая является неотъемлемым механизмом игры и отвечает за перемещение, убрали основное преимущество этого метода да и собственно прямое назначение и создали свою надстройку, в силу своего понимания процесса игры. Но при этом я вот лично не понимаю почему герой должен находится в центре вашей клетки и как он теперь должен двигаться? На него можно напасть пока он не дошел до центра или надо ждать пока дойдет? А вдруг он передумает? Может на меня напасть противник если он не в центре соседней клетки… и много других вопросов в результате усложнения концепции.
Почему игровой алгоритм должен описывать реальную модель («реальная модель» <=> оксюморон — «горячий лед»)?

Потому что классическая РПГ именно этим и занимается, что естественно вовсе не означает что не может быть других оригинальных подходов.
«Реальная модель» в отличии от вашей «искусственной модели» интуитивно понятна — герой ходит по клеткам которые единовременно может занимать только один субъект, если рядом с героем кто-то стоит, с ним можно взаимодействовать и т.д. Ваша модель искусственна, вы должны объяснить игроку почему он перемещается внутри полигона, что это за полигон, почему он такой, почему противник может напасть только с одной стороны полигона, почему в одном полигоне помещается только один герой и тд.
Вы можете перевести вашу игру на другой уровень и сделать вашу модель «реальной», то есть интуитивно понятной упрощенной моделью реальной жизни. Например ваши полигоны могут быть королевствами, тогда становится понятно почему герой перемещается внутри полигона, понятно почему один противник нападает с одной стороны, но это уже немного другой жанр.
Но при этом я вот лично не понимаю почему герой должен находится в центре вашей клетки и как он теперь должен двигаться? На него можно напасть пока он не дошел до центра или надо ждать пока дойдет? А вдруг он передумает? Может на меня напасть противник если он не в центре соседней клетки…

С точки зрения позиционирования внутри полигона мало что меняется. В гексагоне персонаж находится в центре. Здесь под «центрАми» полигонов понимается те случайные точки, что изображены на диаграмме. Рисунок 3 неудачен в плане понимания. Позиционирование также дискретное. Хватает очков действий для перемещения в выбранный полигон — персонаж туда попадает. Не хватает — остается в соседнем. Режим пошаговый. Сначала один игрок ходит потом другой. Поэтому такое разбиение карты не только декоративное. Это как раз и получается структура на графах.
У текущего полигона есть соседи. Заданы некие связи между ними.
Равномерно значит если герой прошел 5 клеток длина его пути равна пяти клеткам. Вы возможно не понимаете, но на гексагональной карте герои перемещаются исключительно по клеткам, плавное передвижение от клетки к клетке на игру никак не влияет, это всего лишь украшение.

А про плавное перемещение Вы заговорили. Вот я и не понял к чему оно в пошаговой игре. Итак понятно, что все анимации к логическому быкграунду имеют опосредованное отношение.
Про расстояние… «Центры» распределяются по прямоугольной сетке. То, что по диагонали расстояние визуально отличается от двух переходов «по катетам», при выбранной схеме генерации топологии будет иметь меньшее значение, т.к. нет четко выраженных форм полигонов (квадратов, гексов и/или т.д.). И почуму на расстояние завязываться. Ту же функцию играет стоимость пересечения каждого конкретного полигона.
UFO just landed and posted this here
Согласен… Но я и не делаю упор на РПГ. Я вел разговор о влиянии на тактическую часть.
Здесь очень интересно написано про генерацию игровой карты с помощью разбиений Вороного: www-cs-students.stanford.edu/~amitp/game-programming/polygon-map-generation/
Было изначально в списке литературы
ой. хреновый я читатель…
Изображенная на иллюстрации карта асимметрична. Возникает вопрос: каким образом при организации игры на такой карте обеспечить начальный паритет игроков?
Чтобы избежать изначального окружения одного игрока другими, можно использовать шаблон размещения, предопределив заранее некоторое количество точек. Можно привязать базы к углам, можно к серединам сторон карты и т.д.
Sign up to leave a comment.

Articles