Я абсолютный новичок в разработке игр, и все, что я знаю о предотвращении / разрешении столкновений, я узнал об этом на этом сайте или через него на прошлой неделе ... поэтому не стесняйтесь поправлять меня, если я спрашиваю здесь основанный на неправильных предположениях / недоразумениях. Я старался изо всех сил, чтобы быть ясным, но это сказало, предмет все еще является новым для меня.
Транспортные средства
В моей игре у меня есть машины, которые двигаются автономно. Они размещены в трехмерном пространстве, и их движение определяется рядом переменных, которые различны для каждого транспортного средства. В первую очередь интерес представляют:
- Только движение вперед .
- Скорости , которая может изменяться от мин и макс, но чей мин это не (даже близко к) нулю.
- Радиус рулевого управления , который зависит от скорости (чем выше скорость, тем больше радиус)
- Два максимальных ускорения (для уменьшения и увеличения скорости)
Цель
Моя цель - реализовать своего рода ИИ, который будет на 100% точнее предотвращать столкновения (т.е. я буду уверен, что машины никогда не столкнутся).
дизайн
- Хотя я бы больше предпочел идею иметь ИИ «на борту» (т. Е. У каждого транспортного средства, имеющего собственный «ИИ предотвращения столкновений», в конечном итоге запрашивать и / или отправлять сообщения другим транспортным средствам), я также могу реализовать ИИ ЦА в центральный уровень (диспетчеризация команд на транспортные средства).
- В большинстве случаев транспортному средству просто придется держаться подальше друг от друга в любом направлении, но при определенных обстоятельствах ему придется избегать столкновения и двигаться к одной и той же цели.
Что я нашел до сих пор и где я застрял
Среди множества ссылок, которые я нашел в других вопросах на этом сайте, я обнаружил, что они особенно полезны:
Хотя эти три ссылки «открыли мне глаза» во многих отношениях, мне не сразу понятно, как использовать эту информацию в моем случае. В частности, статья № 2 только «пытается» предотвратить столкновение (но столкновения случаются время от времени). В то время как статья № 3 должна иногда останавливать транспортные средства, чтобы предотвратить столкновения.
Я также заметил, что алгоритмы предотвращения столкновений, связанные выше, используют «мгновенную проекцию» линейной скорости, чтобы проверить, находится ли что-то на пути транспортного средства. Мне было интересно, достаточно ли этого в моем случае, или мне пришлось проецировать свою позицию более реалистичным образом (например: если я на 60 ° поверну на 90 ° вправо, я должен рассчитать свою позицию для остальной части 30 ° кривой, а затем предполагая линейное движение).
Наконец, я особенно боюсь тупиков . Другими словами: хотя плотность транспортных средств в мире будет довольно низкой, я обеспокоен тем, что, учитывая определенное количество транспортных средств, сходящихся к одной и той же точке, как только они поймут, что находятся на пути столкновения, любые маневры уклонения будут невозможны как это привело бы транспортное средство на пути столкновения с некоторыми другими.
Вопрос
Как я могу достичь своей "цели"? Подробное объяснение, конечно, очень ценится, но ссылки на внешние ресурсы также очень помогли бы (я уверен, что я не первый с этой проблемой, но, возможно, я использовал неправильные ключевые слова для поиска в Интернете? )
Заранее спасибо за вашу помощь!