XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
Собственная система снарядов. Воздействие извне.
После просмотра данного ролика:
ссылка
И после создания собственной системы снарядов, за идею Diod'у спасибо, я понял, что не знаю как повторить проделанное в ролике:
Летит снаряд или несколько, герой использует способность "Замедления времени" и сильно понижает скорость движения всех снарядов вокруг.
Если похожих способностей будет более 100, не проверять же мне всё это в самой системе, пока снаряд летит.
Короче, как это сделать?)
Приведу пару примеров.
  1. Показанное в ролике - замедление снарядов вокруг героя с баффом.
  2. Вокруг объекта или области щит, при столкновении с которым стрелы ломаются.
То есть нужно как-то "внедрять код" в уже существующий метод движения снаряда либо однократно изменить его характеристики,
во всяком случае так это выглядит для простого обывателя как я :)
Старый 18.12.2014, 17:01
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
Все что надо для реализации такого это стек снарядов, периодика и пик юнитов в радиусе от героя (ну или сортировка снарядов).
Обрабатываются снаряды в периодике и например нам надо "подействовать извне" на какой-то из них. Мы его получаем например енамом в области, берем его приаттаченный адрес в хэш-таблице\структурах которые соответствуют нашей системе, и внедряемся в соответствующий инстанс, делая что нашей душе угодно.
Старый 18.12.2014, 19:29
ScorpioT1000
Работаем
offline
Опыт: отключен
вот там в периоде умножаешь скорость снаряда на глобальную переменную аля "timelapse", которая по умолчанию равна 1, но способности влияют на неё
Старый 18.12.2014, 19:52
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
ScorpioT1000, карту не смотрел, но понял о чем речь. Неплохая идея. Буду пробовать.
Buulichkaa, может мы будем сотрудничать?) Не первый раз мне помогаешь, а я не первый раз не до конца всё понимаю :)
Не всё понял, конечно, но попробую что-то сделать.
Старый 18.12.2014, 20:13
adic3x

offline
Опыт: 108,439
Активность:
А я бы вообще сделал виртуально двухуровневый логический массив, который бы соответствовал клеткам карты, в одном цикле, не очень часто, несколько раз в секунду перебирал все применения способности, или всех юнитов, имеющих данный эффект, и поднимал бы флаги в вышеописанном массиве, а остальные флаги - опускал бы. А в цикле, который обрабатывает движение снарядов для начала делал бы проверку по этому массиву, есть ли вообще вероятность, что снаряд может быть замедлен. При многих сценариях это заметно снизит вычислительную нагрузку. Я использовал подобный подход в конкурсной способности Napalm, делалась на 3, если не ошибаюсь Spell Contest, но там очень много достаточно хитрого кода.
Старый 18.12.2014, 21:49
Shuex
feel my presence
offline
Опыт: 1,024
Активность:
Дело в том, что снаряд не только может быть замедлен.
Ударился обо что-то - отскочил под определённым углом в другую сторону.
Хочется добиться результата, чтобы не нужно было на что-то домножать и тд., а сразу задать характеристику, вытащив её, к примеру, из хеш-таблицы. Только как это сделать ума не приложу)
Например, босс возьмёт и направит все снаряды, которые на данный момент в воздухе, против тех, кто их выпустил. То есть цель меняется. И не так, чтобы уничтожить текущие снаряды, создать новые, которые летят во врагов, а именно перенаправить уже созданные.
Старый 18.12.2014, 23:40
Buulichkaa
Делаю спеллы за еду
offline
Опыт: 20,146
Активность:
BonBo, с принципом работы МУИ способностей ознакомьтесь и тогда все поймете
Старый 19.12.2014, 01:38
DioD

offline
Опыт: 45,134
Активность:
Эффекты которые могут быть на снарядах в теории 3 типа:
  1. Установка значения на фиксированную величину, не обратимо, окончательно.
  2. Добавление фиксированной величины - обратимо
  3. Добавление процента от базовой величины - обратимо
Когда герой с замедление бегает по окресностям, снаряды попавшие в АОЕ должны получить эффект типа 3 на время нахождения в АОЕ.
Для оптимизации выборок и движения карту следует разделить на регионы размером 32-64 или какой угодно размер в зависимости от нагрузки.
Данные по объектам хранить не в куче, а в подмассиве соответствующем региону в котором находится объект.
Зная что в регионе 1078 находится герой с замедлением, нам не надо сортировать все возможные снаряды или делать сложные выборки, мы посылаем каждому снаряду в регионе 1078 и в регионах которые находятся рядом сигнал "эй ты проверь герой рядом или нет".
когда объекты покидают регион они удаляются из одного подмассива и добавляются в другой.
данный подход применятся в больших играх и мморпг, когда мир живёт только вокруг героев и не может быть загружен весь разом.
Старый 19.12.2014, 11:07
ScorpioT1000
Работаем
offline
Опыт: отключен
BonBo, посмотри мой пример, ты можешь на ходу менять и цель и все параметры, в демке правой кнопкой мыши ты задаешь всем снарядам цель - юнита или местность, они туда летят, причем в 3d
Старый 19.12.2014, 11:49
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 11:00.