Прототип врага (Новость №2)

Добавлен , опубликован
Ну что же, товарищи, наконец-то закончен базовый класс для врагов. Функционал пока ограничен двумя действиями - движением к игроку и атакой. Примечательным можно назвать разве что то, что враг не тупо сунется к игроку, застревая в стенах, а корректно ищет ближайший путь. В общем, видео-демонстрация.
Простите за качество, у меня что-то с настройками игры, и она запускается в окне 800х600.
Если вам кажется, что местами враг немного неадекватно движется, то проблема не в нем, а в путевых точках на карте. Поскольку карта исключительно для тестов, я пока с этим не заморачивался. Тем более, возможно, в будущем я перейду на другой тип навигации ИИ.
Иногда замечаю странный баг, когда враг атакует на достаточно большой дистанции. Пока это единственный заметный баг, но и с ним скоро разберемся.

Лирически-техническое отступление
Если говорить о самом нахождении пути, то тут система проста. Смотрим, есть ли прямой путь к игроку, если есть - движемся немного вперед, если нет - ищем ближайшую путевую точку и немного двигаемся к ней. После чего, это все опять повторяется, и так пока мы не дойдем до расстояния атаки, а там, ясное дело, один раз атакуем, после чего опять проверяем, доступен ли враг для атаки, и, если нет, догоняем. Почему нужно двигаться понемногу, а не сразу к местоположению врага? Дело в том, что, когда дать боту команду двигаться к точке, следующую строчку кода он исполнит, лишь прибыв на место. Таким образом, получив приказ идти к вашему текущему положению, он побежит не к вам, а к точке, где вы в тот момент стояли, и пока он будет бежать, ему будет пофиг, остались ли вы на месте, или убежали за тридевять земель.
Помимо прочего, был занятный баг. ИИ бота работал исправно, давал ему команду следовать за мной, даже проводил атаку, когда мой павн оказывался достаточно близко, но, при этом, сам бот не двигался с места. Расшевелить его могла только пуля. Помучившись над этим полдня, я нашел банальнейшее решение - боту попросту не была задана физика. Он не знал, каким образом ему стоит перемещаться. Только после того, как я назначил ему физику перемещения, он сразу же заработал полностью корректно. Вот такая мелочь, а какие последствия.

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

Добавлено 08.10.12
С интерфейсом проблема. Опять таки, тот же размер мувика при смене разрешения игры. Теперь, если разрешение мувика больше, чем разрешение окна игры, элементы интерфейса тупо вылезают за пределы видимости. Фишка в том, что в самом мувике есть скрипт на корректировку положения элементов интерфейса при смене разрешения, но блин, он работает только при смене этого самого разрешения, которое я изменить не знаю как((( Так что, либо дальше искать метод смены разрешения мувика, либо писать собственные функции в скрипте мувика, и вызывать их со скрипта игры. Что будет несколько через универсальный интерфейс

Отмена тревоги. Решение, как всегда, банальнейшее. Есть просто такая штука, как масштабирование. И я, опять таки, идя по поводу тутора, выставил соответствующий параметр на "Не масштабировать". Сейчас параметр изменен на "Показывать все". Который, соответственно, показывает все, но сохраняет отношение сторон (тобишь, при несоответствии сторон, по сторонам появятся черные полоски). Есть еще несколько вариантов, нужно будет пересмотреть их все и решить, какой лучше всех.

Что тут же породило новый баг. Масштабирование масштабированием, но разрешение остается тем же самым. И тут возникает неприятный баг. Чтобы не объяснять долго, ловите схему.
В общем, красный кружок - персонаж, красный крестик - положение курсора на экране. Красная линия - это куда он должен был повернуться, зеленая - как поворачивается на деле. Я ведь использую функцию, которая находит точку в мире, соответствующую положению курсора на экране. Ясное дело, эти расчеты используют размер интерфейса. И поскольку размер интерфейса, по сути, не поменялся, то и точка в мире находится такая, будто бы у нас разрешение окна 1280х800 (это зеленый крестик соответственно). В итоге, персонаж поворачивается абсолютно неадекватно. Итог - масштабирование отпадает.

Фух, добил. Теперь все корректно работает. Правда, элементы интерфейса не масштабируются, и чем ниже разрешение, тем больше они занимают пространства, но, такая уж там система. Да и разберусь позже более детально, может, удастся их масштабировать.
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.