Полезное

Мы Вконтакте

Discord канал

#
Пред.
Модератор: Di-Crash
Аватара пользователя
Пользователь
Сообщения: 589
Здравствуйте. Создал эту тему для обмена опытом.
Тут часто мелькало на форуме в темах, что для большей производительности нужно отказаться от NavMesh и писать свой AI.
Хотел узнать кто как это делает.
Например, я делал свой AI:
В первую очередь делаю что бы вражеский персонаж управляемый AI всегда был повернут в сторону того за кого ты играешь.
Вычисляется расстояние между персонажами и делается LineTrace между ними. Он должен быть короче на величину радиуса капсулы, что бы в LineTrace не попадал наш персонаж за которого играем.
Если между персонажами нет никаких препятствий значит вражеский атакует.
Если есть препятствие. Делаются два LineTrace по диагонали( вперед-вправо и вперед-влево). Два коротких LineTrace примерно 200 - 300. Если препятствий не обнаружено с обоих сторон, то перк управляемый AI движется рандомно по диагонали вперед-влево или вперед-вправо.
Если с одной стороны препятствие, то он движется в сторону где препятствия нет.
Если с обоих сторон препятствия, то делается два коротких LineTrace влево и вправо. Логика такая же.
Если тоже с обоих сторон препятствие делается два LineTrace по диагонали назад( влево-назад и вправо-назад). Тоже самое.
Если и там препятствия, тогда LineTrace назад. Если препятствий нет тогда движется назад. Если есть тогда стоит на месте.
AI работает не постоянно. На короткое время включается. Определяет куда двигаться. Включается таймер. Персонаж движется в течение 1 секунды, например, в определенном направлении. Затем снова определяет куда двигаться. И т.д.
Такой AI подходит для открытой местности где не нужно находить выход из лабиринтов.
Например, для игр стиля 3D Fighting beat-em-up.

Всё это я опробовал на практике. Работает вполне себе удовлетворительно.
Аватара пользователя
Пользователь
Сообщения: 60
NavMesh придуман исключительно для того, чтобы упростить расчеты пути онлайн . По сути оффлайн заменяется сетка пространства на лоуполи сетку NavMesh.
И уже риал тайм идет поиск пути по этой самой лоуполи сетке.
Уверяю тебя, что в болшинстве случаев NavMesh нужен и делает расчеты на уровне нативных кодов и быстро.
То, что делаешь ты будет всяко дольше и не так оптимизировано или просто криво. У Эпиков, на минуточку, над навигацией работают специалисты на несколько порядков опытнее.
От NavMesh есть смысл отказываться при создании пространственного AI - то есть того, что пеермещается в 3-х направлениях. Это авиасимуляторы, космические и иже с ними. Там NavMesh просто не применить.
Во всех остальных случаях отказ от NavMesh просто глупость - попытка изобрести колесо. Уверен вы сможете изобрести только треугольное колесо, особо смышленые сумеют изобрести максимум квадратное ))
Удачи с изобретениями ))

П.С. Я всегда использую NavMesh, еще ни разу не замечал его торможений ни в Анриале, ни в Юнити (у них чуть ли не идентичные системы).
Аватара пользователя
Пользователь
Сообщения: 589
Спасибо за пожелание удачи, конечно. Только это уже мне всё не надо.
Потому что всё уже сделано и изобретать больше нечего, потому что всё уже изобретено. Тот пример AI который я описал пишется буквально за пару часов в Blueprint.
Я конечно попробовал встроенный AI от Эпиков с NavMesh и его работа меня не устроила по разным причинам.

Тот способ который я описал я опробовал уже давно ещё на старых Basic движках. И он показал очень хорошую производительность. Правда там никаких LineTrace как в UE не было. Всё приходилось писать вручную. Что немного сложнее получается. Я там это делал как вычисления в 2D координатах. По аналогии Pawn - это определялась как окружность, а различные препятствия - это отрезки. В аналогии с LineTrace - это обычный отрезок в 2D координатах. В принципе происходило всё также. Только происходило математически вычисление на пересечение LineTrace-отрезка с различными препятствиями-отрезками и окружностями. И всё прекрасно работало.
Аватара пользователя
Пользователь
Сообщения: 60
Ну, для такого рода AI можно вообще не париться, я понимаю.
Я уже молчу о "коде" BP для ресурсоемких целей.
Только и игры с таким AI, как у тебя скучны и однообразны.
Я посмотрю, как ты сделаешь трейсами хотя бы поиск укрытий для Мобов...
Да хотя бы ситуация, когда противник стоит за П образной стенкой и жутко шумит, но с одной стороны у стены выступ, с короткой стены, где твой трейс показал бы отсутствие препятствий.
Твоя трейсовая техника заставит неделю моба искать путь к противнику. А если стена змейкой?)) Ну ты понял, полагаю.
Я только на сокрую руку придумал пару ситуаций, где твоя техника провалится, но есть еще туева хуча более сложных и запутанных.
В целом же Basic это хорошо ))))))
Словом, я рад что ты уже изобрел высокопроизводительное треугольное колесо ))
Аватара пользователя
Пользователь
Сообщения: 589
Да уж у Эпиков над навигацией работают специалисты на несколько порядков опытнее. Только вот для игр в таком стиле, как я описал, их AI как ни крути с трудом подходит или не подходит вообще. наоборот он выглядит треугольным в этой ситуации. А простая самоделка-калашников работает вполне удовлетворительно.
По поводу поиска укрытий такая задача не ставилась. Да и как я уже писал, раз ты не внимательно читаешь сообщения:
Цитата:
Такой AI подходит для открытой местности где не нужно находить выход из лабиринтов.

Да ,он высокопроизводительный. ещё и потому что производит расчеты не постоянно. Вычислил куда двигаться и пока персонаж двигается он не работает. Если заставить его работать постоянно будет не реалистично. Будет дергаться, появятся рывки в движении и пр.

Эту тему я заводил не для того что бы спорить что лучше или кто умнее. У меня своё мнение которое сложилось у меня из своего опыта.
Мне интересно просто кто как решает вопросы с AI без NavMesh раз уж об этом пишут на форуме.
Аватара пользователя
Пользователь
Сообщения: 60
Цитата:
раз ты не внимательно читаешь сообщения

Я внимательно прочел. Ответил по заявленной теме - AI без NavMesh (обмен опытом).
Мой опыт показал, что AI без NavMesh разумно делать только если летающие мобы или же совсем примитивный AI (такой примитивный, что годится только в лабораторных условиях - на плоской поверхности в ограниченном и открытом пространстве). Такой используется только когда наткнешься на противника и некуда будет укрыться. Пойдет для игр типа AlienShooter, где толпа просто ломится на ГГ и все. Этот AI будет спотыкаться о коробки и не способен обойти простенькие препятствия, о которых я писал выше (там где по короткой стороне будет яма, а длинную он не выберет в силу простоты AI).
Если такой AI реально что-то стоящее, тогда - да, нужно порассуждать кто как еще такие делает )))

Цитата:
Эту тему я заводил не для того что бы спорить что лучше или кто умнее. У меня своё мнение которое сложилось у меня из своего опыта.
Мне интересно просто кто как решает вопросы с AI без NavMesh раз уж об этом пишут на форуме.

Да не вопрос. Фантазеров тут уже немного, но, вполне возможно найдется парочка - порассуждать всерьез.
Так что оставляю тебя в покое...
Покойся с миром, милый друг ))
Аватара пользователя
Пользователь
Сообщения: 1341
я NavMesh использую

отказаться от него можно только если пол идеально ровный и из препятствий только стены (лабиринт одним словом)

например у меня есть винтовая лестница в многоэтажном здании, не думаю что AI без NavMesh сможет забраться на верхний этаж просто с помошью LineTrace , а NavMesh позволяет найти кратчайший путь и даже использовать нежелательные(но возможные для перемещения) зоны
_________________
прикрепленные картинки с radikal не смотрю.
Аватара пользователя
Пользователь
Сообщения: 60
Цитата:
я NavMesh использую

Ты совсем не внимательный чтолЕ?
тут нужно рассказывать как ты без NavMesh делаешь свой AI, какие костыли при этом изобретаешь и как быстро они (те самые костыли) у тебя функциклируют.
Не спамируй тут уже, ну-ка!
Говори тока по-суЧеству!
Аватара пользователя
Пользователь
Сообщения: 1341
по-суЧеству я же написал, самый примитивный лабиринт, как был в моей первой игре на Спектруме обходится без навмеша
_________________
прикрепленные картинки с radikal не смотрю.
Аватара пользователя
Пользователь
Сообщения: 60
Цитата:
самый примитивный лабиринт, как был в моей первой игре на Спектруме обходится без навмеша

ну там ты, вероятнее всего использовал соты. Вся локация, по крайней мере у меня на Спектруме (вернее даже это была Электроника, с еще меньшими ресурсами чем Спектрум), была в виде двумерного массива. И я вычислял ячейку слева/справа и так далее, и выбирал последовательность клеток что вела врага к игроку (Пакмана я копировал тогда).
Но это 2D, извинити. 3D же это несколько другая тема, хотя, кого я обманываю ? ))))
Как говаривал мой наниматель - "Общайтесь... Общайтесь..." )))


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница