Obelick:
Делать небольшой рект, и смещать его вокруг точки. Тогда за раз будет обрабатывается не большое количество декора. А за 2 секунды можно безболезненно обработать огромные площади.
Пример выше должен помочь, если перебирать не 900 декораций сразу, а например по 90 каждые 0.1. Если равномерно распределить, то по примерно по 5 декораций выбираться будет за кадр.
Я правильно понимаю тебе нужно отсортировать декорации по дальности от базы?
Obelick:
Все таки сколько одновременно юнитов выбираеют декор?
Возможно лагает какраз от того, что у тебя много юнитов делают enum одновременно в одном тике.
В таком случае неважно какая периодичность - лагать будет одинаково. Можно решить примерно
так
Очень утрированный пример:
таймер 0.01
выборка для unit[index]
index++
if index > 200 { index = 1}
на 200 юнитов хватит и будет периодичность 2 секунды.
Потом какие нибудь важные декорации которые ты ищешь можно найти один раз при загрузке карты, тем более что она у тебя генерируемая. Например создать отсортированные массивы определенного типа по которым можно делать более быстрый перебор, чем по всем декорациям на карте.
Obelick:
Лагать не должно, если правильно отсеивать. У меня в карте более 30 к разрушаемых пропсов, заспавненных во время игры (около 30 декораций на радиус 500 ед.) Через енум и стрелы летят и проверка на зрение работает и все норм.
То что предложил Bergi_Bear самое оно, только ректы можно глобальные подготовить разных размеров заранее.
Во первых, если просадка идет не от цикла, а от многократного удаления/создания эффекта, то достаточно запоминать старое значение и сменять эффект, только если хп изменилось на 5%.
Если проблема все-таки в переборе большого кол-ва юнитов в циклом, то:
1.Попробовать событие "юнит хп изменилось".
Возможно тоже тяжело для каждого будет, надо тестить.
2.Свой таймер на каждого юнита, а лучше на небольшую группу (10+). Чтобы грубо говоря не 100 юнитов в один тик перебрались, а по 10 со смещением.
а нет, он по дефолту выше
А так самый простой вариант это делать на эффектах, как советовал темой ниже и прикреплять на "overhead", тогда всегда на месте будет. Да и легче производительности, так как двигать их не надо будет.
Можно поменять порядок рендера материала для хп бара в его модели, тогда он будет рисоваться всегда поверх юнита.
кстати прогресс бар там нормально масштабируется.
ИНТЕРФЕЙС
Добавлены описания приказов.
Изменены иконки.
КРИТИЧЕСКИЕ БАГИ И ОПТИМИЗАЦИЯ
Полностью переписано 70% кода карты
Большинство функций раньше были рассчитаны только на одного игрока, теперь все переписано под мультиплеер.
Раньше множество тяжелых функций, отвечающих за камеру, туман и звуки перебирались циклом для всех игроков, теперь функции не требующие синхронизации рассчитываются локально.
Убрано множество утечек памяти.
Исправлен баг прицельного выстрела ломающий анимацию и скорость передвижения.
ГЕНЕРАЦИЯ ТЕРРЕЙНА
Исправлены коллидеры пней.
Добавлены падающие листья.
Исправлен баг при котором всегда генерировался смешанный тип ландшафта вместо выбранного игроком.
ТУМАН И НЕБО
Теперь на карте генерируются до 20 зон тумана разных размеров, на кол-во зон влияет тип ландшафта.
ПРОКЛЯТЫЕ ЗОНЫ
Исправлено поведение тумана в проклятой зоне.
Временно выключен эффект потери создания.
Темный туман наносит урон.
Внутри зоны спавнятся тени.
ЗВУКИ
Теперь громкость всех звуков зависит от дальности источника.
Добавлены звуки шагов и плеск воды.
СКРЫТНОСТЬ И СИСТЕМА ШУМА
Добавлены индикаторы на миникарте показывающие красным цветом звуки врагов и желтым звуки героя.
Передвигаясь по лесу герой может встретить множество опасностей, избежать которые поможет осторожность и скрытность.
Шум привлекает хищников рядом с вами, и выдает ваше местоположение другим игрокам.
СУЩЕСТВА
Враждебные:
Кабан, Большой кабан Волк, Медведь, Морлок, Паук.
Избегают встречи с игроком. Нападают при близком контакте или агрессии игрока.
Не нападают если игрок преследуется существом другого типа.
Прячутся услышав шум поблизости. Убегают при приближении.
После смерти животного может остаться мясо (тест), поедая которое герой может восстановить сытость и здоровье. Кол-во восстановленных очков зависит от уровня животного.
СИСТЕМА ГОЛОДА (Тест)
Герой имеет 100 очков сытости.
Ежесекундно значение сытости падает на некоторое кол-во очков.
Когда кол-во очков упадет до 0, герой начнет терять здоровье.
Для восстановления сытости можно поедать (пока что сырые) грибы или мясо.
ТРЯСИНА
Теперь проваливаясь в трясину герой теряет 10 ед. здоровья.
ГЕРОЙ
Исправлена скорость, при переключении состояний плаванья и скрытности.
Добавлен 5% шанс на кровотечение при получении урона. Любое лечение останавливает кровотечение.
НОВЫЕ КОМАНДЫ
Добавлены команды отображения объектов на миникарте: showroad - отобразить дороги. showriver - отобразить реки. showswamp - отобразить болота. shpwfog - отобразить туман. showhero - отобразить героев.
VetsaN:
Да, с фарами намного круче будет. Но есть техническое ограничение.
Поскольку превышение 3 источников света на квадрат в радиусе 500+- вызывает проблемы рендера. Лампочки могут не отображаться, мигать и так далее. Для фар одной машины нужно как минимум 5 ламп вряд. От 10 машин будет уже 50. Возможно в рефордж версии источники света будут работать нормально. Но пока я ищу способ решить проблему. Возможно единственный пока способ - отключать все остальные источники света на карте и оставлять только фары, и то локально, только для машины на которой едешь.
Есть ещё вариант - делать лампы из юнитов, удаляя лампы при пересечении, но это выглядит слегка кривовато, да очень прожорливо по ресурсам.
» WarCraft 3 / Как найти ближайший разрушаемый объект?
Делать небольшой рект, и смещать его вокруг точки. Тогда за раз будет обрабатывается не большое количество декора. А за 2 секунды можно безболезненно обработать огромные площади.
Ред. Jack-of-shadow
» WarCraft 3 / Как найти ближайший разрушаемый объект?
Ред. Jack-of-shadow
» WarCraft 3 / Как найти ближайший разрушаемый объект?
Все таки сколько одновременно юнитов выбираеют декор?
Возможно лагает какраз от того, что у тебя много юнитов делают enum одновременно в одном тике.
В таком случае неважно какая периодичность - лагать будет одинаково. Можно решить примерно
выборка для unit[index]
index++
if index > 200 { index = 1}
на 200 юнитов хватит и будет периодичность 2 секунды.
Ред. Jack-of-shadow
» WarCraft 3 / Как найти ближайший разрушаемый объект?
Лагать не должно, если правильно отсеивать.
У меня в карте более 30 к разрушаемых пропсов, заспавненных во время игры (около 30 декораций на радиус 500 ед.) Через енум и стрелы летят и проверка на зрение работает и все норм.
То что предложил Bergi_Bear самое оно, только ректы можно глобальные подготовить разных размеров заранее.
Ред. Jack-of-shadow
» WarCraft 3 / Вопрос по поводу отлова точки
Надо погрешность учитывать, примерно 0.5 ед.
» WarCraft 3 / Если unit == null
Ред. Jack-of-shadow
» WarCraft 3 / Вопрос по поводу отлова точки
» WarCraft 3 / Красивые хп/мана бары
вот
Ред. Jack-of-shadow
» WarCraft 3 / Красивые хп/мана бары
Если проблема все-таки в переборе большого кол-ва юнитов в циклом, то:
Возможно тоже тяжело для каждого будет, надо тестить.
Ред. Jack-of-shadow
» WarCraft 3 / Красивые хп/мана бары
Ред. Jack-of-shadow
» WarCraft 3 / Красивые хп/мана бары
А так самый простой вариант это делать на эффектах, как советовал темой ниже и прикреплять на "overhead", тогда всегда на месте будет. Да и легче производительности, так как двигать их не надо будет.
» WarCraft 3 / Красивые хп/мана бары
кстати прогресс бар там нормально масштабируется.
Ред. Jack-of-shadow
» WarCraft 3 / Есть ли расширение для красных хп-баров?
Bergi_Bear: Может и заточен, я не пробовал. Пока что управление на wasd не вводил. Все на стандарте так то, без хаков.
Ред. Jack-of-shadow
» WarCraft 3 / Есть ли расширение для красных хп-баров?
большой плюс в том, что при движении апдейтить не надо.
20 моделей хватит, для плавного перехода.
» JackCraft / Фриланс. Или что меня отвлекает от проектов.
Ред. Jack-of-shadow
» Hunter or Victim / Hunter or Victim
Обновление 0.83
Добавлены описания приказов.
Изменены иконки.
Полностью переписано 70% кода карты
Большинство функций раньше были рассчитаны только на одного игрока, теперь все переписано под мультиплеер.
Раньше множество тяжелых функций, отвечающих за камеру, туман и звуки перебирались циклом для всех игроков, теперь функции не требующие синхронизации рассчитываются локально.
Убрано множество утечек памяти.
Исправлен баг прицельного выстрела ломающий анимацию и скорость передвижения.
Исправлены коллидеры пней.
Добавлены падающие листья.
Исправлен баг при котором всегда генерировался смешанный тип ландшафта вместо выбранного игроком.
Теперь на карте генерируются до 20 зон тумана разных размеров, на кол-во зон влияет тип ландшафта.
Исправлено поведение тумана в проклятой зоне.
Временно выключен эффект потери создания.
Темный туман наносит урон.
Внутри зоны спавнятся тени.
Теперь громкость всех звуков зависит от дальности источника.
Добавлены звуки шагов и плеск воды.
Герой имеет 100 очков сытости.
Ежесекундно значение сытости падает на некоторое кол-во очков.
Когда кол-во очков упадет до 0, герой начнет терять здоровье.
Для восстановления сытости можно поедать (пока что сырые) грибы или мясо.
Теперь проваливаясь в трясину герой теряет 10 ед. здоровья.
Исправлена скорость, при переключении состояний плаванья и скрытности.
Добавлен 5% шанс на кровотечение при получении урона. Любое лечение останавливает кровотечение.
Добавлены команды отображения объектов на миникарте:
showroad - отобразить дороги.
showriver - отобразить реки.
showswamp - отобразить болота.
shpwfog - отобразить туман.
showhero - отобразить героев.
» Crazy Dwarf Race / Crazy Dwarf Race
Да, с фарами намного круче будет. Но есть техническое ограничение.
Поскольку превышение 3 источников света на квадрат в радиусе 500+- вызывает проблемы рендера. Лампочки могут не отображаться, мигать и так далее. Для фар одной машины нужно как минимум 5 ламп вряд. От 10 машин будет уже 50. Возможно в рефордж версии источники света будут работать нормально. Но пока я ищу способ решить проблему. Возможно единственный пока способ - отключать все остальные источники света на карте и оставлять только фары, и то локально, только для машины на которой едешь.
Есть ещё вариант - делать лампы из юнитов, удаляя лампы при пересечении, но это выглядит слегка кривовато, да очень прожорливо по ресурсам.
» WarCraft 3 / Мемхак - смена миникарты во время игры
Кажется в RenderEdge fbx грузить можно, может так
Ред. Jack-of-shadow
» WarCraft 3 / Мемхак - смена миникарты во время игры
Дык в том и дело она не порезанная даже)
Ред. Jack-of-shadow
» WarCraft 3 / Мемхак - смена миникарты во время игры
Ред. Jack-of-shadow
» WarCraft 3 / Ошибка Missing endblock, cJass
» WarCraft 3 / Ошибка Missing endblock, cJass
я себе еще такую тему сделал)
define end_i () = {i ++;endloop}
define for_n (max) = {integer n = 1;loop;exitwhen n > max}
define end_n () = {n ++;endloop}
» WarCraft 3 / Ошибка Missing endblock, cJass
Я из вопроса код пробовал, а в карте да странно
» WarCraft 3 / Ошибка Missing endblock, cJass