Последнее что я обдумывал в этой сфере было посвящено тому, не выйдет ли такие ситуации разрулить с помощью алгоритмов симуляции жидкостей.
Вот это прикольно, кстати! В толпе неизбежно нужно толкаться, а не пути искать, я тоже делал толчки у себя. А тут некоторая надежда организовать этот хаос именно на уровне столкновения пачек. Оффтоп: ретро про жидкости :)
Clamp, никаких роутов и вейпоинтов. Делишь большую карту на крупные квадраты и рассчитываешь кратчайшие пути между центрами этих квадратов. Пути от каждого квадрата к каждому. Теперь когда тебе нужно найти путь из точки А в точку Б, то ты узнаешь в каком квадрате А, в каком квадрате Б. Путь между этими квадратами у тебя уже рассчитан заранее. Осталось просчитать коротенькие пути до центров этих квадратов и сгладить полученный конгломерат, чтобы естественно смотрелось. Дёшево и сердито. Зависимость времени расчета от длины пути - константа! Пофигу куда искать - в соседний тайл или в противоположный конец карты. Астар, не астар, любой честный проход по сетке не может иметь константную сложность.
Круто! Баннер можно зареюзать. :) А как вы будете игру давать поиграть? По блютсу apk'шку раздавать? Или у вас как в МВидео пачка телефонов на верёвочках? :)
15-го октября вывешивают списки, пока не торопись. :) Кстати, Jusper обещался тоже заглянуть, если мне таки вывадут там столик.
H, darkowlom: Это следствие того, что звенья червей рисуются в порядке их нумерации от головы. Это не первое попавшееся решение, это наиболее удачный костыль из дешевых. Он позволяет двум червям пересекаться в нескольких местах по-разному (то один поверх другого, то другой) и держит это пересечение достаточно стабильным. Проблемы возникают, тогда, когда черви пересекаются в точке более менее одинаково отдалённой от их голов, тогда глитч, который на видео.
Спасибо за пример решения, но, боюсь, я уже так пробовал. Пришел к выводу, что любая отрисовка червей целиком не годится. Черви имеют свойство расти, что приводит к переключению последовательности перекрытия на ходу, к тому же создаёт ситуации, когда один червь "подныривает" под другого. Это плохо смотрится. Хочется, чтобы наползающий червь наползал сверху, но при этом его хвост могли тоже переползти.
Когда червь "наезжает" на своё тело, это не выглядит очень красиво. Как насчёт сделать постепенное небольшое увеличение сегментов, если они находятся над другими сегментами?
Точка пересечения червей, это не точка, а n звеньев одного червя, пересекающих n звеньев другого. В пересечении могут участвовать более двух червей, черви могут оказаться один вдоль другого. Пока этот комбинаторный взрыв пугает меня настолько, что я цепляюсь за последнее удачное просто решение.
Потом, я наверное поделю карту на квадраты, в которых буду учитывать порядок появления червей и регулировать их пересечение внутри квадрата, тогда я смогу и приподнимать звенья верхнего червя. Хотя тут непонятно как решать вопрос со звеньями на границах квадратов. Но попробую, когда много червей толкаются, глитчей становится многовато.
P.S. Можно попробовать пересекать не звенья, а траектории червей! Тогда вопросы приподнятости можно решить набором точек пересечений с разной высотой для каждого червя. Чем ближе к точке, тем больше подъём звена. С перекрытиями непонятно, зато с приподъёмом вопрос можно решить!
Авторитетно заявляю, что если игра - стратегия, то такое не делается по куче причин.
Обоснуй пожалуйста! Я как автор одной-единственной, но стратегии (клона первого Starcraft'а) имею противоположный опыт. Я вообще использовал примитивный поиск в ширину, т.к. он никогда не искал в большой зоне, он был нужен только для поиска внутри мелких квадратов карты и для обхода динамических препятствий. Большие пути собирались из заранее рассчитанных. Только так я мог считать пути сразу для большого количества юнитов вне зависимости от расстояние на которое им нужно было переместиться. Проблемой может быть только динамически изменяющийся ландшафт карты, которого в моём случае не было.
Может картинки в галлерее выравнивать по высоте, а не по ширине? Ряд картинок разного размера сейчас выглядит неряшливо, потому что они делаются одинаковой ширины, а высота скачет. В горизонтальной ленте как раз можно выровнять высоту картинок, за счет того что ширины они могут быть разной - лента не нарушится. Вот в моём посте несколько таких кривых лент: xgm.guru/p/insatia/pererabotka-suschestv3
Как можно решить такую фигню "необычным способом"?
Предобработкой карты. В реальных играх никто не рубит в лоб A* или чем-там ещё сколько бы не был он оптимизирован. Если у тебя большая карта и много юнитов, то ты просто заранее считаешь популярные пути, делишь карту на сектора с известными путями между ними и прочая - вот там полёт фантазии не ограничен ничем. Может быть 4 секунды тут дают именно на демонстрацию такого подхода.
А вообще явно задание на общее нахождение в теме и организацию архитектуры решения, оформление кода, как ты оптимизацию используешь и всё такое.
Прикольный кораблик с астероидами. Астероиды будут ломаться на части? Я раньше мечтал сделать игру, в которой астероиды можно расстреливать, а они разламываются физически достоверно. Ни черта не сделал. :)
awesomesk1ll, я тоже так делаю. :) Но из-за движущегося бэкграунда объём получается слишком большой, либо ролик слишком маленький. Я тут подумал делать гифки на однотонном фоне, спецально тип ландшафта для съёмки гифок запилить.
Ну и если уж на то пошло, то частиц при поедании червя не хватает, вроде брызг крови
Вот тоже про это думаю. Но всё стесняюсь реализовать. Глядел Фруктового Ниндзя на мобилках - там просто шарики такие разлетаются и превращаются в лужицы в итоге. Надо попробовать, спасибо за совет!
Добавлено через 3 часа:
Uber, ты гений! Я набросал черновые капли (их роль маленькие блохи сейчас выполняют) - офигенно в динамике работает! Это то, чего мне давно не хватало. Поедание стало реально сочным и вкусным. Оказалась дешевая и сердитая фишка - уже готовая, осталось только сделать спрайт капельки и отбалансировать их частоту появления.
» BranaR's workshop / WIP
» Администрация XGM / Оформление текстов - txt2
» Администрация XGM / Оформление текстов - txt2
Ред. Kozinaka
» Логово Снежного Волка / Работа в Paradox Interactive
» Логово Снежного Волка / Работа в Paradox Interactive
» Логово Снежного Волка / Работа в Paradox Interactive
» Логово Снежного Волка / Работа в Paradox Interactive
» Osteya / Мы едем на White Nights Moscow 2015
Ред. Kozinaka
» Несыть / Переработка существ (часть 3)
Ред. Kozinaka
» Логово Снежного Волка / Работа в Paradox Interactive
» XGM Помощь / Помощь по ресурсам
» Администрация XGM / Оформление текстов - txt2
» Логово Снежного Волка / Работа в Paradox Interactive
» XGM Помощь / Помощь по ресурсам
» Несыть / Переработка существ (часть 3)
» Космический Базар / Космический Базар
Ред. Kozinaka
» Zombie in village.The game / Лог разработки #1
» rootHARDCORE: Pixel / rootHARDCORE: Pixel
Ред. Kozinaka
» Несыть / Несыть
Ред. Kozinaka
» Несыть / Несыть
» Несыть / Несыть
» Несыть / Несыть
Ред. Kozinaka
» Несыть / Несыть
Ред. Kozinaka
» Несыть / Несыть