ViGaCi Опубликовано 7 ноября Поделиться Опубликовано 7 ноября (изменено) Наверное, я не сильно ошибусь, если скажу, что RTS стратегии - это самый сложный с точки зрения разработки жанр. Да что там говорить, если даже Ashley (разработчик Construct 3) забросил свою RTS Command & Command уже почти год тому назад. Эшли решил отказаться от главной фишки Construct (система событий) и сделать RTS используя JavaScript. И что в итоге? Реализовано выделение юнитов, стрельба, миникарта, всё. Эшли так и не придумал как сделать так, чтобы юниты не ходили сквозь друг друга. Недавно я начал работу по созданию клона мобильной RTS стратегии Art of War 2. И вот, решил, что буду по ходу разработки публиковать в общий доступ исходники. Вдруг кому пригодится. Учитывая, что даже на официальном форуме Construct практически нет никакой информации по созданию RTS, уверен многим будет полезно. Это будут не уроки, а просто публикация исходников. Если у вас будут какие-либо вопросы - задавайте.Содержание: Движение юнитов без прохождения друг сквозь друга ... Изменено 7 ноября пользователем ViGaCi Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ViGaCi Опубликовано 7 ноября Автор Поделиться Опубликовано 7 ноября Движение юнитов без прохождения друг сквозь друга Попробовать на Scirra Arcade каждый юнит имеет анимацию движения по каждому из восьми направлений двигаясь юниты не сливаются в одну кучу и не проходят сквозь друг друга Moving with no overlapping (RTS game).c3p 3 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
cliva Опубликовано 7 ноября Поделиться Опубликовано 7 ноября Не пересекаются, но поведение у них похоже на мышиную беготню %) Копался в коде мода для одной ртски, а именно SCFAF, там была фсм, из разряда - перед юнитом ничего нет- продолжает движение, перед юнитом другой юнит и тот юнит находится в том же отряде - следовать за ним, если отряд не тот же - найти путь для обхода и вернуться на главный путь А главный путь считался для целого отряда, чтобы не забивать проц лишними поисками пути Мод был кажется про более продвинутый ИИ и комментарий от разраба мода был о том, что он не смог заюзать метод задания пути самой игры, потому скопировал его в свой мод и он заработал Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ViGaCi Опубликовано 7 ноября Автор Поделиться Опубликовано 7 ноября (изменено) @cliva Ну, алгоритм, который реализован в исходнике я методом "черного ящика" списал с Art of War 2. То есть, снял геймплей на видео, а потом покадрово разбирал это видео и рисовал на бумаге схему с возможным алгоритмом поведения юнитов. Затем, уже в самой игре воссоздавал разные ситуации, чтобы проверить, насколько мой алгоритм соответствует тому, как юниты ведут себя в Art of War 2. Далее просто придумал как воссоздать этот алгоритм в Construct 3. Есть очень много вариантов поиска пути для RTS игры. То, что хорошо подходит для одной игры может плохо подходить для другой. Если попробовать простыми словами описать реализованный в этом исходнике алгоритм, то он следующий: игровое поле делится на клетки, в каждой клетке одновременно может находится лишь один юнит. каждый юнит имеет переменную "State" (состояние). когда игрок выбирает группу юнитов и даёт приказ двигаться, то каждый выбранный юнит получает координаты выбранной игроком точки, а переменная State юнитов принимает значение "Move". далее каждый юнит (у которого State = "Move") просчитывает путь до конечной точки и начинает движение на соседнюю клетку (то есть на следующий нод на пути к конечной точке) после того, как юнит начал движение на клетку, то эта клетка помечается — стоимость прохода по ней возрастает до условных "999". следующий юнит, который также ищет путь на соседнюю клетку, предпочтёт найти путь в обход "дорогих" клеток. если упростить, то движение выглядит как перемещение с одной клетки на другую. Это как если представить большое шахматное поле, в котором каждый юнит это шахматный король. И в порядке очереди каждый юнит двигается на свободную клетку на пути к цели. каждый раз, когда юнит покидает клетку, стоимость прохода по ней возвращается к норме. Проблема в том, что когда игрок даёт большой группе юнитов команду двигаться, то все юниты (в порядке очереди) помечают соседние по отношению к себе клетки и каждый следующий юнит ищет путь в обход другого. Из за этого создаётся ощущение, будто юниты разбегаются в стороны друг от друга. Это только с одной стороны минус, но с другой стороны, такой хаос добавляет немного "реализма" к поведению юнитов. Если все они будут маршировать синхронно как "на параде", это тоже не очень правдоподобно выглядит. Изменено 7 ноября пользователем ViGaCi 1 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ViGaCi Опубликовано 11 ноября Автор Поделиться Опубликовано 11 ноября Туман войны на базе массива + тайлмапа (без WebGL эффектов) Art of War 2 (fog v.1).c3p Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
ViGaCi Опубликовано 19 ноября Автор Поделиться Опубликовано 19 ноября Нашёл простой и эффективный способ решения проблемы, о которой выше писал @cliva Раньше все юниты искали путь в тот самый момент, когда игрок тапает по экрану. Теперь поиск пути для каждого юнита происходит в порядке очереди, при этом, чем ближе юнит к точке назначения, тем раньше наступит его очередь искать путь. БЫЛО СТАЛО 3 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.