Лично я картодел не очень хороший, но один очень умный в этом деле человек посоветовал мне все однотипные по ивенту триггеры загонять (как скот в один хлев) в один многоэтажный триггер с одним ивентом. И ввиду того, что я делаю крупную мили-РПГ карту, мне теперь важна каждая такая мелочь, ибо в совокупности по итогу оно люто скажется, я думаю.
Вопрос вот в чём - юзает юнит спелл, и пошла вся эта шобла этажная искать, а какой же спелл юзнулся. Нашла, сделала, что надо, и пошла дальше, хотя уже вроде как сделала, что нужно, но дальше всё равно поискала (вроде как это так работает, поправьте меня, если я ошибаюсь). А это же лишние силы триггерные. К чему их тратить впустую? И мне вот что сделать захотелось - заставлять триггер сбрасываться после каждой "своей" находки нужного. Я начал пихать в каждую "находку" вот это:
Подскажите, пожалуйста, я дичь делаю, или всё чётко-ровно и так и нужно?

Принятый ответ

Не такой уж и умный, если посоветовал такую глупость.
Оптимизировать надо когда это надо, а не когда это лучше. В твоем случае даже появляется угроза превышения лимита операций, что приведет к прерыванию работы триггера, не говоря уже о невозможности поддержки такой гигантской лестницы условий.
Подскажите, пожалуйста, я дичь делаю, или всё чётко-ровно и так и нужно?
Это так называемый оператор возврата из функции return, который завершает работу функции. Тебе это мало о чем скажет, но например такая конструкция
не завершит работу всего триггера, а лишь цикла, вернее, текущей итерации цикла. При этом цикла группы юнитов или группы игроков, но не цикла целочисленных "от A до B", который может быть как внутри триггера, так и внутри цикла группы юнитов/игроков.
В общем, от такого хорошего совета ты сразу влез в океан условностей которые предусмотреть не сумеешь. В итоге такая "оптимизация" лишь породит кучу новых ошибок.
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
19
3 года назад
0
Похожие вопросы:

ответ
Таких багов много, почему то оптимизатор берет данные из слк таблиц игры на часть объектов, пробуй wc3ultimate opt, на хайве выложена... Мб кто уже и новый виджитайзер запилил.
ответ
Закрываю вопрос
Нашел нормальный блокнот и через него отредактил
ответ
Тут скорее всего еще проблема с кодом карты, деоптимизаторы не восстанавливают данные на 100% и ошибки будут почти всегда, 100% рабочий способ - создавать объекты с нуля в карте руками, с теми же id и параметрами что в карте которую вы хотели восстановить...
ответ
В первую очередь, нужно выборочно оценивать и уменьшать размер текстур и количество мипмапов. Например, есть текстура кровли, которая в игре занимает существенную часть видимого пространства в декорациях, которая в целом как-то влияет своим качеством на восприятие картинки, и есть текстура какого-нибудь топорика, который держит в своих руках один из юнитов, и толком не разглядеть мелкие детали топорика. Но зачастую бывает так, что текстура топорика имеет размер 256х256 px, а текстура кровли 64х64 px.
Другой пример с иконками и другими элементами интерфейса, где не требуется более двух самых крупных мипмапов, а остальные можно благополучно удалить, т.к. оин почти ни при каких условиях не будут изображены.
Во-вторую очередь, нужно оптимизировать анимации нестандартных моделей юнитов. У нас до сих пор многие ничего не знают об этом, хотя уже есть инструмент, который делает это автоматически. Вот только Wiedzmin, автор тулзы пока ее не опубликовал, а пора бы дать всем ее пощупать.
Кроме оптимизации анимаций, следует применять все остальные способы, реализованные в mdlvis - это просто галочки, которые почистят прочий мусор, ничего сложного.
ответ
В Mdlvis используешь: Удаление свободных вершин, Удаление не связанных костей, Удаление ничейных КК, Линеаризация анимации. (настоятельно не рекомендую использовать параметр "Увеличение сжимаемости" как правило эта опция может удалять вершины тем самым испортив геометрию модели)
Переходим в Warcraft Model Editor, вкладка Редактировать-> Рассчитать границы
Сохраняем.
Как правило после расчета границ придется настраивать событийные объекты из за того что программа может сместить ключевые кадры, то есть нужно заново назначить им ключевые кадры например: следы от башмаков на земле должны быть видны только в анимации "Walk"
Переходим во вкладку Окна-> редактор узлов настраиваем видимость.
Сохраняем.
Опять открываем в WME сохраненную модель переходим во вкладку Менеджер текстур.
Там удаляем не используемые текстуры. Если не помнишь какие, то последовательно пытаешься удалить каждую текстуру, если WME ругается значит она используется если нет то ты нашел не нужную текстуру. Как правило после удаления поверхностей может остается ее анимация тут уже все ручками нужно удалять. Переходим во вкладку "Редактор анимации поверхности" и ищем не используемые удаляем.
Скачиваем MDX/M3 Optimizer c Хайва.
Разархивируем в отдельную папку, создаем там bat-ик, открываем блокнотом (перед этим копируем полный адрес папки, например: C:\Users\Asssssvi\Desktop\Warcraft Program\MDXM3 Optimizer)
вставляем следующее copt_win -p 32 -t 0.001 "адрес папки" и сохраняем.
скидываем в папку файл модели и перемещаем ее прямо на bat -ик должно получится "имя файла v2. mdx"
Этой программой мы удалили "бесполезные ключевые кадры" которые занимают лишнее(нет) место.
На этом в принципе все.
Помни что у каждой анимации должен быть первый и последний кадр(если кость была задействована в середине анимации и у нее будет отсутствовать начальный и последний кадр, то это будет ошибка, причем позиция и ротация точки это два разных параметра, то есть если ты изменил положение кости (переместил) то это перемещение должно иметь начальный и последний кадр так же и с ротацией они отдельны друг от друга, если этого нет, то анимация будет не коректно работать.
А на Хайвовском "Sanity test" будут сыпаться ошибки, кстати если все нормально то он должен показать серую надпись "Passed" то тогда можешь считать что она оптимизирована.

0
29
3 года назад
0
Чтобы оптимизировать гуй муй, нужно перейти на jass(vjass/zinc) в 1.26 или lua в Reforged. Дальше в 1.26 о количестве триггеров можно не волноваться, а на lua можно сделать например так.
0
22
3 года назад
0
Подскажите, пожалуйста, я дичь делаю, или всё чётко-ровно и так и нужно?
если у тебя нет тонны однотипных условий, то лучше этим не заниматься ну или делать внимательно и смотреть что там за условия
6
17
3 года назад
Отредактирован GetLocalPlayer
6
Не такой уж и умный, если посоветовал такую глупость.
Оптимизировать надо когда это надо, а не когда это лучше. В твоем случае даже появляется угроза превышения лимита операций, что приведет к прерыванию работы триггера, не говоря уже о невозможности поддержки такой гигантской лестницы условий.
Подскажите, пожалуйста, я дичь делаю, или всё чётко-ровно и так и нужно?
Это так называемый оператор возврата из функции return, который завершает работу функции. Тебе это мало о чем скажет, но например такая конструкция
не завершит работу всего триггера, а лишь цикла, вернее, текущей итерации цикла. При этом цикла группы юнитов или группы игроков, но не цикла целочисленных "от A до B", который может быть как внутри триггера, так и внутри цикла группы юнитов/игроков.
В общем, от такого хорошего совета ты сразу влез в океан условностей которые предусмотреть не сумеешь. В итоге такая "оптимизация" лишь породит кучу новых ошибок.
Загруженные файлы
Принятый ответ
2
22
3 года назад
Отредактирован PROSHELDOTU
2
GetLocalPlayer, советовал ему я
но не скипать действия, как ты не правильно понял, а не плодить кучу однотипных триггеров
типа в одном триггере событие умирает юнит такой-то, то делать то то
а другой триггер с таким же событием, но на другого юнита, например
И я сказал ему, что это можно как бы в одном триггере всё отслеживать и т.д. по аналогии с другими событиями
2
27
3 года назад
2
Proshel_Doty, о, я то же самое людям говорил. Никогда не делал 2 триггера с одинаковым событием, если можно пихнуть в один, но всегда волновало "прохождение" по условиям и функциям триггера, поэтому я даже хз как лучше
4
32
3 года назад
4
Если любите гуи переходи в старкрафт, там это всё нормально реализовано и не надо как то ухищряться, как бы ты не делал будет из коробки "нормально", и не придётся выслушивать советчиков и гуру оптимизаций: все заклинания в 1 триггер или по отдельному триггеру на заклинание
1
9
3 года назад
Отредактирован dmgr
1
Отвечая на твой вопрос по поводу пропуска других действий.
-да, ты делаешь дичь.
Открой любую старую компанию близавскую, и посмотри как они в 10 тригеров вмещают часовую компанию с заданиями.
У них используются тригеры с одним событием, а дальше куча условий и действий для них. это никак не ломает и не тормозит игру, если не сидеть в ней по 10 часов.
-поэтому да, совет использовать тригеры с общими событиями полезен. но это нужно делать с умом.
Оптимизируй лучше вес карты, выкидывай тригерные способности которые можно заменить обычными правками в ПО, следи за моделями, некоторые действительно способны тормозить и даже крашить игру. Это лучшее что ты сделаешь для ускорения игры на карте.
ps. поддержу NazarPunk, он прав, в 1.26 лучше все делать на jass.
3
29
3 года назад
3
Открой любую старую компанию близавскую, и посмотри как они в 10 тригеров вмещают часовую компанию с заданиями.
Так у них же все способности стандартные.
У них используются тригеры с одним событием, а дальше куча условий и действий для них. это никак не ломает и не тормозит игру, если не сидеть в ней по 10 часов.
Каждый случай нужно разбирать отдельно, вот например в отлове урона на 1.26 используется один триггер и для каждого юнита вешается событие.
Оптимизируй лучше вес карты, выкидывай тригерные способности которые можно заменить обычными правками в ПО
Зааачем? Если все способности триггерные, то к ним легче добавить нестандартное поведение. Например столкновение снарядов.
в 1.26 лучше все делать на jass.
Не просто jass, а vjass / zinc.
3
17
3 года назад
3
Не просто jass, а vjass / zinc.
Wurst
Чтобы оставить комментарий, пожалуйста, войдите на сайт.