Shuex
feel my presence
offline
Опыт:
1,024Активность: |
Собственная система снарядов. Воздействие извне.
После просмотра данного ролика:
ссылка И после создания собственной системы снарядов, за идею Diod'у спасибо, я понял, что не знаю как повторить проделанное в ролике: Летит снаряд или несколько, герой использует способность "Замедления времени" и сильно понижает скорость движения всех снарядов вокруг. Если похожих способностей будет более 100, не проверять же мне всё это в самой системе, пока снаряд летит.
Короче, как это сделать?) Приведу пару примеров.
То есть нужно как-то "внедрять код" в уже существующий метод движения снаряда либо однократно изменить его характеристики, во всяком случае так это выглядит для простого обывателя как я :) |
18.12.2014, 17:01 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
Все что надо для реализации такого это стек снарядов, периодика и пик юнитов в радиусе от героя (ну или сортировка снарядов). Обрабатываются снаряды в периодике и например нам надо "подействовать извне" на какой-то из них. Мы его получаем например енамом в области, берем его приаттаченный адрес в хэш-таблице\структурах которые соответствуют нашей системе, и внедряемся в соответствующий инстанс, делая что нашей душе угодно. |
18.12.2014, 19:29 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
вот там в периоде умножаешь скорость снаряда на глобальную переменную аля "timelapse", которая по умолчанию равна 1, но способности влияют на неё |
18.12.2014, 19:52 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Shuex
feel my presence
offline
Опыт:
1,024Активность: |
ScorpioT1000, карту не смотрел, но понял о чем речь. Неплохая идея. Буду пробовать.
Buulichkaa, может мы будем сотрудничать?) Не первый раз мне помогаешь, а я не первый раз не до конца всё понимаю :) Не всё понял, конечно, но попробую что-то сделать. |
18.12.2014, 20:13 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
adic3x
offline
Опыт:
108,439Активность: |
А я бы вообще сделал виртуально двухуровневый логический массив, который бы соответствовал клеткам карты, в одном цикле, не очень часто, несколько раз в секунду перебирал все применения способности, или всех юнитов, имеющих данный эффект, и поднимал бы флаги в вышеописанном массиве, а остальные флаги - опускал бы. А в цикле, который обрабатывает движение снарядов для начала делал бы проверку по этому массиву, есть ли вообще вероятность, что снаряд может быть замедлен. При многих сценариях это заметно снизит вычислительную нагрузку. Я использовал подобный подход в конкурсной способности Napalm, делалась на 3, если не ошибаюсь Spell Contest, но там очень много достаточно хитрого кода. |
18.12.2014, 21:49 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Shuex
feel my presence
offline
Опыт:
1,024Активность: |
Дело в том, что снаряд не только может быть замедлен.
Ударился обо что-то - отскочил под определённым углом в другую сторону. Хочется добиться результата, чтобы не нужно было на что-то домножать и тд., а сразу задать характеристику, вытащив её, к примеру, из хеш-таблицы. Только как это сделать ума не приложу)
Например, босс возьмёт и направит все снаряды, которые на данный момент в воздухе, против тех, кто их выпустил. То есть цель меняется. И не так, чтобы уничтожить текущие снаряды, создать новые, которые летят во врагов, а именно перенаправить уже созданные. |
18.12.2014, 23:40 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
Buulichkaa
Делаю спеллы за еду
offline
Опыт:
20,171Активность: |
BonBo, с принципом работы МУИ способностей ознакомьтесь и тогда все поймете |
19.12.2014, 01:38 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
DioD
offline
Опыт:
45,184Активность: |
Эффекты которые могут быть на снарядах в теории 3 типа:
Когда герой с замедление бегает по окресностям, снаряды попавшие в АОЕ должны получить эффект типа 3 на время нахождения в АОЕ.
Для оптимизации выборок и движения карту следует разделить на регионы размером 32-64 или какой угодно размер в зависимости от нагрузки.
Данные по объектам хранить не в куче, а в подмассиве соответствующем региону в котором находится объект.
Зная что в регионе 1078 находится герой с замедлением, нам не надо сортировать все возможные снаряды или делать сложные выборки, мы посылаем каждому снаряду в регионе 1078 и в регионах которые находятся рядом сигнал "эй ты проверь герой рядом или нет".
когда объекты покидают регион они удаляются из одного подмассива и добавляются в другой.
данный подход применятся в больших играх и мморпг, когда мир живёт только вокруг героев и не может быть загружен весь разом. |
19.12.2014, 11:07 | #8
+1/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
ScorpioT1000
Работаем
offline
Опыт: отключен
|
BonBo, посмотри мой пример, ты можешь на ходу менять и цель и все параметры, в демке правой кнопкой мыши ты задаешь всем снарядам цель - юнита или местность, они туда летят, причем в 3d |
19.12.2014, 11:49 | #9
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|