Добавлен lentinant,
опубликован
Ну что же, товарищи, наконец-то закончен базовый класс для врагов. Функционал пока ограничен двумя действиями - движением к игроку и атакой. Примечательным можно назвать разве что то, что враг не тупо сунется к игроку, застревая в стенах, а корректно ищет ближайший путь. В общем, видео-демонстрация.
Простите за качество, у меня что-то с настройками игры, и она запускается в окне 800х600.
Если вам кажется, что местами враг немного неадекватно движется, то проблема не в нем, а в путевых точках на карте. Поскольку карта исключительно для тестов, я пока с этим не заморачивался. Тем более, возможно, в будущем я перейду на другой тип навигации ИИ.
Иногда замечаю странный баг, когда враг атакует на достаточно большой дистанции. Пока это единственный заметный баг, но и с ним скоро разберемся.
Если вам кажется, что местами враг немного неадекватно движется, то проблема не в нем, а в путевых точках на карте. Поскольку карта исключительно для тестов, я пока с этим не заморачивался. Тем более, возможно, в будущем я перейду на другой тип навигации ИИ.
Иногда замечаю странный баг, когда враг атакует на достаточно большой дистанции. Пока это единственный заметный баг, но и с ним скоро разберемся.
Лирически-техническое отступление
Если говорить о самом нахождении пути, то тут система проста. Смотрим, есть ли прямой путь к игроку, если есть - движемся немного вперед, если нет - ищем ближайшую путевую точку и немного двигаемся к ней. После чего, это все опять повторяется, и так пока мы не дойдем до расстояния атаки, а там, ясное дело, один раз атакуем, после чего опять проверяем, доступен ли враг для атаки, и, если нет, догоняем. Почему нужно двигаться понемногу, а не сразу к местоположению врага? Дело в том, что, когда дать боту команду двигаться к точке, следующую строчку кода он исполнит, лишь прибыв на место. Таким образом, получив приказ идти к вашему текущему положению, он побежит не к вам, а к точке, где вы в тот момент стояли, и пока он будет бежать, ему будет пофиг, остались ли вы на месте, или убежали за тридевять земель.
Помимо прочего, был занятный баг. ИИ бота работал исправно, давал ему команду следовать за мной, даже проводил атаку, когда мой павн оказывался достаточно близко, но, при этом, сам бот не двигался с места. Расшевелить его могла только пуля. Помучившись над этим полдня, я нашел банальнейшее решение - боту попросту не была задана физика. Он не знал, каким образом ему стоит перемещаться. Только после того, как я назначил ему физику перемещения, он сразу же заработал полностью корректно. Вот такая мелочь, а какие последствия.
Помимо прочего, был занятный баг. ИИ бота работал исправно, давал ему команду следовать за мной, даже проводил атаку, когда мой павн оказывался достаточно близко, но, при этом, сам бот не двигался с места. Расшевелить его могла только пуля. Помучившись над этим полдня, я нашел банальнейшее решение - боту попросту не была задана физика. Он не знал, каким образом ему стоит перемещаться. Только после того, как я назначил ему физику перемещения, он сразу же заработал полностью корректно. Вот такая мелочь, а какие последствия.
Поскольку не вдохновляет отстреливать унылых человеков, необходима моделька врага-монстра. Есть такая идея - на время, для базового типа врага взять модель Зерлинга. Но у меня нету ни Старика, ни необходимого софта для графики. Есть добровольцы выковырять и сконвертировать для меня ресурсы? Необходимы сама моделька в формате *.ASE (само собой, с сохраненными костями, так как без них не будет работать анимация), анимация в формате *.PSA (а вот тут уже на Максе нужен плагин ActorX) и текстурки всех типов в формате *.TGA (всех типов - это Diffusive, Normal, Specular; в общем, можете предоставить все присутствующие текстуры для модели, я разберусь). Еще можно соответствующие звуки. Буду рад помощи.
А пока, следующим в TDL числится перезарядка оружия (это будет скоро, так как эта система есть среди моих наработок) и интерфейс (во всяком случае, его заготовка).
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован lentinant
С интерфейсом проблема. Опять таки, тот же размер мувика при смене разрешения игры. Теперь, если разрешение мувика больше, чем разрешение окна игры, элементы интерфейса тупо вылезают за пределы видимости. Фишка в том, что в самом мувике есть скрипт на корректировку положения элементов интерфейса при смене разрешения, но блин, он работает только при смене этого самого разрешения, которое я изменить не знаю как((( Так что, либо дальше искать метод смены разрешения мувика, либо писать собственные функции в скрипте мувика, и вызывать их со скрипта игры. Что будет несколько через универсальный интерфейс