Многое читал о функции начисления этого ресурса после постройки здания, написанной с помощью JASS. Можно ли обойтись встроенным в ворлд эдитор редактором триггеров, чтобы создать триггер на автоматическое начисление игроку древесины?

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

Копируй себе все три триггера и настраивай на свой лад:
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
28
5 лет назад
0
Слышал звон, да не знаю, где он.
8gabriel8:
Вряд ли
Под конкурсом мини-игр как раз-таки такое было про карты с мемхаком.

Про утечки это как минимум бред потому, что тогда все триггеры, юниты и прочие объекты висят в памяти после выхода карты.
0
26
5 лет назад
0
Год или два назад читал, причём здесь конкурс мини-игр?

Проверить не сложно, возьми карту с утечками, дождись состояния, когда игра начнёт сильно тормозить, закончи карту и начни новую.
0
28
5 лет назад
0
Год или два назад читал, причём здесь конкурс мини-игр?
Потому что только там в комментариях я такое увидел.
PT153:
Про утечки это как минимум бред потому, что тогда все триггеры, юниты и прочие объекты висят в памяти после выхода карты.
Всё же очень глупо оставлять объекты карты после выхода из неё, разрабы вк3 не кретины же.

Прикрепил карту. В ней во время инициализации создаётся 250000 групп.
Скриншоты потребления игры во время работающей карты и после выхода из неё.

Утечки влияют исключительно на ту карту, где они и были созданы.
Загруженные файлы
0
17
5 лет назад
Отредактирован N1ghtSiren
0
Утечки удаляются в момент выхода из карты, чем дольше игра виснет когда тыкаешь ок на лоадскрине, тем больше было утечек
это тестил утечные тексттаги, минут за 10 набралось 2кк, утекало по 50 тт каждые 0.01 сек
вар стал требовать почти 1гб озу, ну и фпс дико просел после 1.5кк
Загруженные файлы
0
32
5 лет назад
0
PyCCKuu_4eJl, а месье знает толк в извращениях XD, но до такого ни 1 карта не дойдёт наверное, гуишная мапа вылетит на 100к, а не на двух миллионах
0
26
5 лет назад
0
Если всё так, то это хорошо. Но чем тогда объяснить увеличение времени загрузки карты Survival Chaos после каждой игры в неё (без выхода из программы)?
0
28
5 лет назад
Отредактирован PT153
0
Survival Chaos
Если там используется мемхак, то дело вполне может быть в нём (забыли что-то где-то почистить). Если нет, то дело может быть в импортируемых звуках и шрифтах, которые подгружаются в память, но не очищаются после выхода из игры (и это не JASS объекты).

Сам вопрос-то решён?
0
26
5 лет назад
0
Если бы был мемхак, то не соответствует тому, что после мемхака игру всегда требуется перезапускать. Шрифтов новых вроде бы нет, но есть несколько импортированных wav-звуков английской озвучки. Только размер их слишком мал по сравнению с заметным увеличением времени загрузки. Явно есть что-то ещё. И это не только с Survival Chaos проблема, в ней лишь наиболее ярко это наблюдал, потому что много играл в неё, с многими другими картами аналогичная ситуация, поиграешь в карту, следующая медленнее загружается, потом ещё медленнее.

Какой вопрос имеешь ввиду? Если основной вопрос автора, то конечно)


Лорд13, вот карта с оптимизацией/совершенствованием триггера.
Там несколько триггеров stage x, на которых поэтапно показаны изменения. В итоге становится понятно, почему один триггер лучше не использовать, так как просто не хватает необходимого функционала для полноценной работы одного триггера.
  • stage 0 - это первый этап оптимизации, где убраны действия Ничего не делать и добавлено удаление группы, чтобы устранить утечку. Важно отметить, чтобы удаление группы стояло в нужном месте. Если бы поставил его в перебор группы с действиями Если/То/Иначе, то оно удалило бы группу после перебора первого юнита, и дальше перебор не пошёл бы;
  • stage 1 - это создание уточняющих условий, что здание не в процессе строительства и живое. К сожалению, нет условия на проверку здания, построено ли оно уже, потому использовать надо событие Юнит Завершает строительство. Но чтобы всё-таки сделать один триггер, можно использовать проверку на уровень способности. У большинства зданий, не принадлежащих Нежити, есть способность Развеивание порчи. Она имеет уровень 1, то есть активна, лишь у строящегося здания, а у построенного её уровень 0, то есть способности этой словно нет. Такая проверка на уровень способности не будет универсальным решением, так как в процессе работы над картой может появиться идея добавить здания Нежити, а у них уже способность Распространение порчи, которая и у строящегося, и у построенного здания имеет уровень 1, то есть ею этап строительства не определишь. Конечно, можно потестировать, как работают эти две способности вместе, но это всё-таки костыльный метод, а не простое триггерное решение. И ещё, это методы под версию игры 1.26а, на более поздних патчах есть дополнительные триггерные возможности, например, определение защиты юнита, а у строящихся зданий вроде защита 0;
  • stage 2 - это второй этап оптимизации, где объединены повторяющиеся проверки. Условия проверки способности и жив ли юнит указываем в фильтре группы, а вместо 3 разных Если\То\Иначе делаем 2 с условием ИЛИ, типа такое-то или такое-то здание получает золото, а такое-то или такое-то дерево;
  • stage 3 - это просто логическое улучшение, которое можно и не добавлять. Если этот триггер будет использоваться, например, в многопользовательской карте с несколькими командами игроков, один из которых ливнёт, то все его юниты замрут, перестанут атаковать и добывать ресурсы, но инком со зданий продолжит поступать. Если контроль над юнитами этого игрока получат его союзники, то можно и не менять ничего, но если нет, то и инком не нужен. Поэтому в действии на перебор группы игроков следует поставить проверку, что игрок Играет.
stage 0
stage 1
stage 2
stage 3
Загруженные файлы
0
32
5 лет назад
0
8gabriel8, Дело в кешировании строк, строки никуда не деваются...
0
26
5 лет назад
0
Вот строк там много, конечно. Но всё равно на них же не столько памяти уходит, чтобы значительно затормозить следующую загрузку. Пусть строк в карте аж на 4 Мб, следующая загрузка карты будет иметь всего лишь на 4 мб меньше памяти, что явно недостаточно, чтобы сделать загрузку ощутимо медленнее. Тогда уж либо места под кэш строк мало, либо ещё что-то должно быть.
0
28
5 лет назад
0
Но всё равно на них же не столько памяти уходит
Любая конкатенация создаёт новую строку. То есть операция "a + "b" + "c" создаст строки "a", "b", "c", "ab", "abc".
0
26
5 лет назад
0
Сейчас прикинул, что там ведь много информации обновляется в таблице результатов, а это, наверное, тоже строки. Если вся эта информация из ОЗУ не устраняется, то как раз вполне возможная причина.
Раз уж коснулись этой темы, то можно как-то удалить строки?
0
28
5 лет назад
0
Раз уж коснулись этой темы, то можно как-то удалить строки?
No.
0
29
5 лет назад
0
Раз уж коснулись этой темы, то можно как-то удалить строки?
Сколько патчей висит баг, а воз и ныне там. Надеюсь в рефоржед всё починят)
0
30
5 лет назад
0
Это не баг, а особенность работы виртуальной машины. В той же Java ситуация со строками такая же, например.
0
23
5 лет назад
0
не баг просто строка кешировано что ускоряет даже если везде карты использует слово "привет" чем создавать каждому карту новые строки
0
24
5 лет назад
Отредактирован prog
0
В той же Java ситуация со строками такая же, например.
В джаве начиная с 1.8 нет пермгена, который не подлежит чистке, и строки теперь вполне себе подвержены сборке мусора. А еще, в джаве есть инструменты для работы со строками, не генерирующие по отдельной строке на каждую конкатенацию, позволящие собрать в буфере всю строку прежде чем записывать результат в пул строк.
0
30
5 лет назад
0
А еще, в джаве есть инструменты для работы со строками, не генерирующие по отдельной строке на каждую конкатенацию, позволящие собрать в буфере всю строку прежде чем записывать результат в пул строк.
StringBuilder называется, да.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.