Автопостройка - Страница 3 - Моды форумчан - Strategium.ru
Перейти к содержимому

Автопостройка

Рекомендованные сообщения

Закреплённые сообщения
  HolodGLD писал:
Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Не помню кто говорил про то, что частыми запросами к каждой ячейки можно пренебрчь.

Да. Можно. Если параметры вашего железа не в три раза меньше рекомендуемых :P

У меня не частые запросы примерно раз в 3 месяца.

  Artos_VV писал:

Да, кстати, вот ты говоришь, что рандом лучше.

А так ли это? Понятия не имею как работает рандом в стелларисе.

Но чисто логически, если у рандомной планеты есть условие, то будут перебираться планеты, пока условие не выполнится.

Если мы ищем клетку с 1 лвл шахтой, а в империи таких нет, то будут перебраны все клетки.

Мы не знаем как действительно закодены рандом тайтл и эври тайтл, вполне может быть так, что лучше 1 раз вызвать эн клеток, чем эн раз вызывать по одной клетки.

Конечно это надо бы в игре проверить, но мне и так хватает тестов.

Просто мысли вслух.

Ссылка на комментарий

Artos_VV
  HolodGLD писал:
Эмммм... Это рабочий мод или наброски? Что-то в упаковке корневой папки мода нет.

Это был рабочий вариант основного блока (эвентов) авторского мода. Сейчас он уже устарел, т.к. мод сильно разросся.

Через часок выложу полную версию варианта мода с которым сам играюсь.

Отличия от авторской версии:

- исключено все не относящееся непосредственно к строительству (порабощения/безсекторность и т.п.);

- добавлен блок кода имитирующий расчистку заблокированных ячеек планет;

- исключены излишние застройки ячеек различными постройками (игрок все же сам что-то должен решать);

- коды оптимизированы для меньшей загрузки движка игры.

  had писал:
Да, кстати, вот ты говоришь, что рандом лучше.

А так ли это? Понятия не имею как работает рандом в стелларисе.

Но чисто логически, если у рандомной планеты есть условие, то будут перебираться планеты, пока условие не выполнится.

Никогда не говорил что что-то лучше без привязки к контексту. И предпочитаю перепроверять на практике, если отсутствует теория/информация.

На практике можно сказать, что если задано действие с every_owned_planet, то в одном срабатывании триггера будут перебираться все планеты под управлением игрока пока позволяют условия. Если задано random_owned_planet - то в том же срабатывании триггера будет взята какая-то одна из планет под управлением игрока. При следующем срабатывании будет взята иная случайная планета.

  Цитата
Если мы ищем клетку с 1 лвл шахтой, а в империи таких нет, то будут перебраны все клетки.

Мы не знаем как действительно закодены рандом тайтл и эври тайтл, вполне может быть так, что лучше 1 раз вызвать эн клеток, чем эн раз вызывать по одной клетки.

Сейчас выложу свой полный вариант и можешь посмотреть как при еженедельном переборе по одной (рандомной!) ячейке на каждой из планет (которые по управлением игрока) осуществляется расчистка/застройка/апгрейд планет. Не никаких очередей строительства, доступные постройки/апгрейды не задерживаются месяцами, отсутствуют излишние траты ресурсов (излишние упреждения) ... и т.п.

Цель мода именно разгрузить игрока от рутины, а не "играть в две пары рук/голов".

  Цитата
Конечно это надо бы в игре проверить, но мне и так хватает тестов.

Просто мысли вслух.

А зря, нужно перепроверять и доводить до ума уже сделанное, а не наращивать сырой функционал. (Тоже мысль вслух.)

Изменено пользователем Artos_VV
Ссылка на комментарий

Artos_VV

Вариант мода с авто-обустройством планет ("Total Governor"): Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. (распаковать архив и всё скопировать в папку с модами). Совместим вероятно со всеми другими модами кроме авторского.

Включает в себя:

1. Блок (эвент) постройки новых зданий на планетах.

- при избытке ресурсов (более чем -300 энергии или -500 минералов от верхней границы вместимости всех хранилищ доступных игроку) новые здания станций/шахт не строятся;

- ячейки со спаренными ресурсами (например, пища+минералы) не застраиваются;

2. Блок апгрейда построек на планетах требующих очков влияния.

- при недостатке очков влияния (<100) модернизации не начинаются;

3. Блок модернизации построек на планетах.

4. Блок расчистки планетарных ячеек.

- оплата по расчистке взимается: 50 энергии и 50 минералов за ячейку;

- расчищается по одной ячейке примерно в месяц;

Все блоки работаю периодически (~1 раз в неделю), при недостатке ресурсов (<250 энергии или минералов) прекращают свою работу. На каждой планете не создаются очереди на строительные работы, т.е. новое здание или апгрейд/расчистка добавляются по мере освобождения очереди на планете.

Ссылка на комментарий

Artos_VV

Обновил архив альтернативного варианта мода авто-строительства: Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. (версия от 14.06.2016)

Исправлен алгоритм постройки клиник на планетах. В отличии от исходного варианта, когда клиника строится в первой попавшейся ячейке, в исправленном варианте постройка клиники на каждой планете ведется методом итерации (до 4-х проходов) по всем ячейкам планеты с целью выбора оптимальной:

1 - застройка ячейки с пищей 2+ без минералов;

2 - застройка ячейки с пищей 1+ без минералов;

3 - застройка ячейки с пищей 1+ и минералами 1-;

4 - застройка ячейки без пищи и др. ресурсов;

х - постройка в любой подходящей ячейке.

had, вот как раз при постройке клиник лучше (а вернее нужно) использовать именно every_tile, т.к. без неоднократного перебора всех ячеек каждой планеты тут сложно обойтись. Но также важно отсечь лишнюю нагрузку на движок, исключив работу модуля ДО получения требуемой технологии и, по-возможности, прерывая как можно раньше работу эвента на уже застроенных или недоступных для клиник планетах (например, в столице империи).

Изменено пользователем Artos_VV
Ссылка на комментарий

  Artos_VV писал:
...

Простой эксперимент с эвентом на чистку клеток.

У тебя рандом клетка с условием, что без блокера.

Блокеры исчезают каждый день.

Следовательно, рандом перебирает клетки, пока не найдет удовлетворяющую условиями.

С планетами не смотрел, но сомневаюсь, что что-то с ними иначе.

В каком месте функционал сырой?

Если бы хотел добавить проверку на очереди, то сделал бы это.

Я то вижу пару мест, но не факт, что их видишь ты.

  Artos_VV писал:
В отличии от исходного варианта, когда клиника строится в первой попавшейся ячейке

  Открыть

Это ты называешь первой попавшейся? Ты меня обижаешь.

В условии 4 есть смысл, добавлю потом.

Не вижу смысла отсекать столицу, ибо игрок ее может перенести (пока только модом, но все же).

А вот отрезать хоумворлды нетитульных видов стоило бы.

Но я пока не пробовал и скорее всего это невозможно.

Кстати.

Зачем эвенты в разных файлах?

Ну и юзать два option в скрытом эвенте прохладно, хотя во втором какое-то безумие, ты, видимо пытался сравнить переменные.

Но такой функционал будет только в патче 1.2

Изменено пользователем had
Ссылка на комментарий

Че Бурашка

Artos_VV

Ну как по мне, так безсекторность и авторабство могли бы пригодиться. ^_^

Тоже спасибо!

Изменено пользователем HolodGLD
Ссылка на комментарий

Artos_VV
  HolodGLD писал:
Artos_VV

Ну как по мне, так безсекторность и авторабство могли бы пригодиться. ^_^

Тоже спасибо!

Ничего не имею против, но ничто не мешает это делать параллельными модами и (под)включать желаемые, а не делать сборную солянку, заточенную под конкретный стиль игры. Да и переизбыток чек-боксов в интерфейсе эдиктов и необходимость скролить уже немало раздражает.
  had писал:
Блокеры исчезают каждый день.

Следовательно, рандом перебирает клетки, пока не найдет удовлетворяющую условиями.

С планетами не смотрел, но сомневаюсь, что что-то с ними иначе.

Ну не каждый день, а в среднем раз в игровой месяц, но суть именно в последовательном срабатывании эвента. Т.е. очистка/постройка/апгрейд на каждой планете начинается для одной какой-то ячейки, а не по всем доступным единовременно.

Помимо отсутствия строительных очередей и напрасной траты возможно дефицитных ресурсов, по-одиночные проверки ячеек не перезагружают движок(!) излишними проверками.

С планетами рандом работает точно также (т.е. по-одной), но для построек/апгрейдов целесообразнее сканировать все доступные планеты (every) дабы не терять время на простоях...

  had писал:
В каком месте функционал сырой?
И мест даже сейчас немало (те же очереди и клиники, о чем ниже), да и по-сути алгоритмы закладываемых строительств недалеки от тупого ИИ... Дано разрешение строить/поработить - тупо строится/порабощается невзирая на кучу игровых ситуаций и коллизий.
  had писал:
Если бы хотел добавить проверку на очереди, то сделал бы это.
Понимаю что хозяин - барин, но(!) в чем такой смысл создания очередей строительства? Почему доп.проверка исключающая и преждевременные затраты ресурсов и, порою мешающие очереди самому игроку что-то построить на нужной планете, тебе так нежелательна?

О том, что сканирование всех планет по всем ячейкам и их многократный (десятки циклов) перебор ради создания очереди является излишней нагрузкой на движок игры уж не говорю.

  Artos_VV писал:
В отличии от исходного варианта, когда клиника строится в первой попавшейся ячейке
  had писал:
Это ты называешь первой попавшейся? Ты меня обижаешь.
Обижаться иль нет - тебе решать, у меня и в мыслях нет. Но то что в твоем нынешнем варианте клиника строится именно в первой же в цикле every_tile ячейке которая не застроена - это видно и по алгоритму и проверяется в игре. Посуди сам: берется планета, на ней запускается цикл перебора всех ячеек. Первая же ячейка (допустим без пищи) проскакивает твои три предварительные "пищевые" проверки и попадает в заключительное условие:

Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

Т.о. даже если на планете есть более пригодные для клиники ячейки, то скороспешная закладка постройки блокирует их постройку.

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

Примечание: Вот при переборе по-одной (random_tile) излишний перебор был бы исключен, хотя и выбор оптимальной ячейки был бы более растянут во времени, а не в одном цикле.

  had писал:
Не вижу смысла отсекать столицу, ибо игрок ее может перенести (пока только модом, но все же).

Хм, ну так когда игрок перенесет столицу - то и ничто не помешает ему самому или твоему же моду построить клинику в бывшей столице!

А вот долбиться с самого начала игры (даже без технологии) в столице империи и до самого конца - это и есть сырой алгоритм и функционал.

Да и не стОит пытаться автоматом выполнить всё-и-вся... и игроку дана голова/руки подстраховать мод, и ничего критичного не произойдет, если автомат не построит на паре-тройке планет клинику иль еще чего. ;)

  had писал:
А вот отрезать хоумворлды нетитульных видов стоило бы.

Но я пока не пробовал и скорее всего это невозможно.

Ничто не мешает использовать систему флагов: Запустился алгоритм постройки клиники на планете и по-любому (построена иль нет) устанавливать флаг для планеты (признак уже выполнения), по которому отсекать все "уже проверенные/застроенные" планеты. Ну и можно раз в десятилетие сбрасывать флаги и заново перепроверят постройки клиник.

  had писал:
Кстати.

Зачем эвенты в разных файлах?

Дурное воспитание... ;) Привычка писать коды по-возможности автономными, дабы было легче править искать ошибки иль вносить обновы. Игре и игроку по фигу сколько файлов, а мне проще и удобнее. Вот уже готовый код можно будет оптимизировать и с точки зрения излишних файлов/эвентов. Например, ту же клинику (autobuild.11) планирую засунуть в цепочку алгоритма основного эвента autobuild.1 (постройка новых зданий).

Вот твою разросшуюся "колбасу" кода в одном эвенте и файле уже даже просматривать затруднительно, не говоря об отладке и правка.

  had писал:
Ну и юзать два option в скрытом эвенте прохладно, хотя во втором какое-то безумие, ты, видимо пытался сравнить переменные.

Но такой функционал будет только в патче 1.2

1. По докам разрабов в эвента допустимы не менее 4-х option. Главное что работает (пока).

2. Во втором option рабочий код итерации макс.пределов по энергокредитам и минералам. Раз нет возможности узнать общее количество доступных для хранения ресурсов - приходится извращаться сравнивая текущие уровни с предыдущими. Так что не ждем следующих патчей, а выжимаем из того что есть.

3. По-идее, код второго option должен работать в корневом (общем) эвенте autobuild.0, но ... кривость синтаксиса и движка стеллариса вынудила переменные @ab1_max_XXX перенести по месту их востребованности. Скорее всего найду все же более красивое решение.

Изменено пользователем Artos_VV
Ссылка на комментарий

  Artos_VV писал:
...

Не каждый день, потому что у тебя недельная задержка.

Когда я проверял твой эвент на расчистку в 1 раз (еще не было задержки), они исчезали каждый день.

Очереди позволяют реже запускать эвент + сразу сливают ресурсы, который большую часть партии копятся.. Если они в дефиците, то есть эдикт.

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

В бывшей столице ты клинику не построишь. Это невозможно. Потому что клиника зависит не от столицы, а от хоумворлда основного вида.

Может даже и без модов столица поменяться, если игрок закрабит и отдаст ее по войне, в твоем варианте в новой столице клиника не построится. Хотя она там нужна.

Ну и про технологии как-то так себе, тогда уж в каждую проверку надо закидывать требование теха. Мне лично лень, тебе, судя по коду, тоже. И не факт, что это необходимо и замедляет игру.

Моя колбаска разбита на части и снабжена комментариями, потеряться сложно, notepade ++ позволяет скрывать блоки, если ты не в нем работаешь, то крайне рекомендую. Очень упрощает понимание.

Тогда я вообще не понял, что ты хотел сделать. Сравнить переменные можно будет только в 1.2.

Они то работают, но опции должен выбирать игрок, если эвент скрытый, то игра включает первый вариант всегда.

Изменено пользователем had
Ссылка на комментарий

Artos_VV
  had писал:
...
  Цитата
Не каждый день, потому что у тебя недельная задержка.

Когда я проверял твой эвент на расчистку в 1 раз (еще не было задержки), они исчезали каждый день.

Согласно MTTH (аналогичному твоему!): mean_time_to_happen = { months = 1 } - вызов эвента расчистки в среднем один раз в месяц. У меня в игре именно так и происходит, хотя случается и сразу два или три-четыре месяца простаивает.

Но сути это не меняет. Главное игрок уже не должен обегать все планеты чтобы разблокировать ячейки, а может положиться на автомат. Тем более по мере освоения новых технологий расчистки автомат сам решает что же можно расчищать иль нет.

Ну а "ежедневность/ежемесячность" все же надеюсь организовать более стабильным и предсказуемым способом, сейчас эта "сыроватость" не напрягает.

  Цитата
Очереди позволяют реже запускать эвент

Что для игры/железа менее затратно: за один раз каждые 4 месяца перепроверять сотни/тысячи ячеек на планетах или же делать это еженедельно, но(!) по одной с каждой планеты?

Это можно сравнить с закупками в магазине: или раз в месяц закупать оптом и вывозить на машине или делать это раз в два-три дня, расходуя средства по мере необходимости и вовремя докупая то что необходимо именно сейчас. ;) Ну о том что не у всех есть подходящий грузовичок для закупок уже не говорю... Как о том что не дай б. такое сканирование совпадет с какой-нибудь баталией - игровые лаги обеспечены.

  Цитата
+ сразу сливают ресурсы, который большую часть партии копятся..

А не логичнее (и оптимальнее) расходовать ресурсы по-мере потребности, а не накапливать их чтобы оптом тратить?!

Можно понять создание очередей самим игроком, когда лень каждый раз заглядывать по каждой планете. Но для автомата это же как раз и не напряжно, пусть и отслеживает не раз в полгода, а хоть еженедельно.

  Цитата
Если они в дефиците, то есть эдикт.

Хм, так для чего же автомат, если игроку требуется следить за ним и лезть в эдикты дя управления автоматом? Это уже полу-автомат (недоавтомат) получается. Предпочитаю на старте игры выбрать по-душе нужные эдикты и пусть губернатор-автомат заботится об обустройстве, по-возможности не сильно стесняя меня в ресурсах.

  Цитата
А с чего ты взял, что каждая клетка сразу проверяется по всему дереву условий? Мои наблюдения говорят о том, что клиника строится где надо.
Или заблуждаешься или лукавишь! Сам код тебе подсказывает как и что будет делаться, а ты гадаешь, да еще утверждаешь (в очередной раз) что мол все работает как надо. Позволь усомниться в твоей правдивости/искренности. И в игре это проверяется на практике и законы программирования говорят о том, что каждая ячейка из цикла every_tile проходит последовательность условий до тех пор пока или не сработает какое-либо или ячейка будет признана непригодной и цикл проверки перейдет к следующей ячейке.

Могу тебе в доказательство наснимать кучку видео из игры, где при наличии свободных ячеек с пищей (1+ иль 1) твой вариант тупо строит на пустой ячейке иль на "научной". Ну а ты мне оже иль видео или сэйв, где автомат строит "где надо". ;)

Кстати: сделал наблюдение, что цикл every_tile всегда перебирает ячейки в одном и том же порядке. Очевидно каждая ячейка имеет свой id и движок перебирает ячейки последовательно по нарастающему идентификатору. Т.о. если "хорошая" ячейка выпадает вперед плохой - то постройка может быть "там где надо", в противном случае - там где придется. ;)

Ну и вывод их этого наблюдения: порою в игре интереснее именно рандомные циклы/проверки, дабы игра шла не по один раз заложенным рельсам.

  Цитата
В бывшей столице ты клинику не построишь. Это невозможно. Потому что клиника зависит не от столицы, а от хоумворлда основного вида.

Может даже и без модов столица поменяться, если игрок закрабит и отдаст ее по войне, в твоем варианте в новой столице клиника не построится. Хотя она там нужна.

Ну хорошо, что мешает поменять is_capital = no на is_homeworld = no ?! Главное избежать бессмысленной постоянной работы кода на планете, где в принципе нельзя построить.

  Цитата
Ну и про технологии как-то так себе, тогда уж в каждую проверку надо закидывать требование теха. Мне лично лень, тебе, судя по коду, тоже. И не факт, что это необходимо и замедляет игру.

Мне то как раз не лень и для постройки клиники как раз введены условия наличия технологии. Для расчистки ячеек тоже условия присутствуют. В других местах не от лени зависит, а от целесообразности. Если условие наличия технологии может отсечь цепочку/цикл проверок - то оно необходимо/желательно, если по-сути ничего не экономит, и условие проверяется самим движком в момент отданной команды - то пока излишние строки в коде наверное можно не закладывать.

  Цитата
Моя колбаска разбита на части и снабжена комментариями, потеряться сложно, notepade ++ позволяет скрывать блоки, если ты не в нем работаешь, то крайне рекомендую. Очень упрощает понимание.
Спасибо за рекомендацию, но уже не один десяток лет пользуюсь UltraEdit'ом в паре с UltraCompare, а Notepade++ больше для текстов и описалок... А вот тебе рекомендую писать почище код с точки зрения как форматирования (отступы/пробелы/табуляторы) так и бесполезных табуляторов на концах строк. Это конечно не критично, код работает, но при анализе кода иль поиске ошибок - в чистом коде проще и быстрее...
  Цитата
Тогда я вообще не понял, что ты хотел сделать. Сравнить переменные можно будет только в 1.2.

Не хотел - а сделал, то что хотел. Сравнивать переменные и сейчас можно, в ванильных кодах куча примеров. То что написано мною работает, что и требуется. Не вижу смысла ждать 1.2, хотя может там даду что-то более удобное и гибкое.

  Цитата
Они то работают, но опции должен выбирать игрок, если эвент скрытый, то игра включает первый вариант всегда.

Где же ты берешь такие погадалки? Тем более сам задумайся над своим утверждением: ежели эвент скрытый(!) - то как игрок может что-то выбирать, если от него все скрыто?! ;)

Не берусь судить о том как якобы должно быть, но в игре в подобных эвентах обрабатывается два и три (проверяется практикой). Да и уже выше писал, что это пока временный рабочий костыль и будет заменен на более нормальный предсказуемый код.

Ссылка на комментарий

  Artos_VV писал:
...

Это было к работе рандома.

В том то и дело, что они проверяются далеко не по одной.

Например, игра обыскивает все ячейки в поисках шахты 1 лвла, потом 2 и тд. Пока не найдет что-нибудь.

Можно, но лишние вычисления не приветствуются.

Ты мне уже рассказывал про работу MTH, и про trigger рассказывал, и про immediate, так что твой опыт не прилагаем к стелларису, жду ссылку на вики любой игры парадоксов, которая бы подкрепила твою точку зрения.

Я не знал про такой триггер, да он и не работает, во всяком случае как надо мне, чтобы не выбирал хоумворды других видов.

Ну да, можно им исключить изначальную столицу, но смысла в этом не много.

Вот полностью застроенные планеты определенно есть смысл исключать, возьму себе.

Так движок будет проверять не только наличие технологии, но и другие условия. Так что это может иметь смысл. Но на самом деле пока нет нужных технологий, у юзера не так много тайлов. В общем, мне лень заморачиваться.

На моем пк срабатывание эвента никак не сказывается.

Некоторые вещи я делал автозаменой, брал куски кода с интернета, одно повлекло за собой другое.

Табуляторы можно почистить автозаменой, но мне лень, когда-нибудь, может быть, но сейчас слишком много дел, чтобы отвлекаться на такие мелочи.

Для notepad ++ кстати запилили синтаксис стелариса, очень удобно.

Да, протестировал внимательней, клиника почти всегда ставилась где надо за счет того, что она в конце эвента и все клетки без еды занимались автозастройкой. Надо будет исправить.

Каких примеров?

Покажи мне пример в ванильных кодах, где я могу сравнить переменную 001 с переменной 002. Мне разработчик игры сказал, что такого функционала нет, но наверно ты нашел что-то.

Для hide_window есть immediate, как ты можешь заметить по ванильным кодам.

Сейчас глянул, и вправду срабатывают все опции, видимо, это фишка стеллариса, тк в европе и крусайдерах это было не так.

Ссылка на комментарий

Artos_VV
  had писал:
...
Мда-а-а, взгляды на моддинг и познания в программировании у нас с тобою очень разнятся... Попробую все же, если и не доказать, то хотя бы дать повод задуматься.
  Цитата
В том то и дело, что они проверяются далеко не по одной.

Например, игра обыскивает все ячейки в поисках шахты 1 лвла, потом 2 и тд. Пока не найдет что-нибудь.

1. Игра сама по себе ничего не делает, а выполняет действия движок, исходя из того что ему продиктовано скриптами и что в нем самом заложено. А скрип (сценарий) как раз и расписывает движку когда что и как он должен делать.

2. Применительно к нашей теме, сканирование планетарных ячеек выполняется всегда(!) по одной. Иной вопрос что при every(каждая) все ячейки сканируются за один проход цикла, а random(рандомные) по одной на каждое срабатывание триггера. Но это не изменяет алгоритма того, что в заложенном цикле все условия проверяются для каждой ячейки по мере именно ее проверки.

Мне непонятны твои сокращения/аббревиатуры (1 лвла, потом 2 ...) но в игре движок не ищет по ячейкам, а берет объект 'tile' и проверяет параметры этого объекта на выполнение условий заложенных в скрипте. Если условие выполняется - то выполняется некое действие (эффект), если нет - переходит к следующему объекту и начинает все проверки заново. В любом случае многопоточности (кучи единовременно проверяемых ячеек) нет. Да LUA, на котором базируется движок игры неспособен на нормальную многопоточность.

  Цитата
Ты мне уже рассказывал про работу MTH, и про trigger рассказывал, и про immediate, так что твой опыт не прилагаем к стелларису, жду ссылку на вики любой игры парадоксов, которая бы подкрепила твою точку зрения.

Действительно не имею никакого опыта в программировании под стеллариус, могу в чем-то заблуждаться, но здравый смысл, логика и некоторый опыт в общем программировании и LUA в частости все же не самое последнее дело. А любая ссылка для меня на вики всего лишь информация к сведению, а не постулат (для принятия на веру), тем более вики по этой игре практически пусто, а для других игр от тех же парадоксов и неточны и описывают не то что имеем в игре. Для меня на сегодня критерий именно практика: если работает как заложено скриптом в любой ситуации - то код верен, если "тут работает, а тут нет" - то что-то в консерватории подкрутить требуется...

  Цитата
Я не знал про такой триггер, да он и не работает, во всяком случае как надо мне, чтобы не выбирал хоумворды других видов.

Ну да, можно им исключить изначальную столицу, но смысла в этом не много.

Улыбает такая упертость. :) Ну не построится клиника на каком-то из "хоумвордов других видов" - что плохого? На что игрок, чтобы взять к кликнуть по планете и ячейке?! Зато всю партию от самого начала и до конца хоумворд/столица игрока не будет насиловаться напрасными сканированиями ячеек. Да и не факт что "не работает как тебе надо", т.к. is_homeworld = no # Checks if a planet is its owners homeworld - т.е. владельцем вроде как должен быть титульный вид. Попозже проверю, как раз в игре образовалась подходящая планетка.

  Цитата
В общем, мне лень заморачиваться.

На моем пк срабатывание эвента никак не сказывается.

Грустно читать подобное от автора в публичном топике по поддержке мода, даже после обращения одного из пользователей (HolodGLD): "Задумайтесь о нищебродах" ... :(

  Цитата
Каких примеров?

Покажи мне пример в ванильных кодах, где я могу сравнить переменную 001 с переменной 002. Мне разработчик игры сказал, что такого функционала нет, но наверно ты нашел что-то.

Дай поиск своему нотепаду++ поискать 'change_variable =' в ванильных файлах и просмотри коды. То, что переменная сравнивается с числом может для тебя и твоего "разработчика" и является табу для применения сравнения с переменной которая задана числом, но предпочитаю перепроверить на практике и ... работает! Ограничение, правда, имеется, о чем уже и поминал - переменная должна определяться(задаваться) в том же самом файле где и используется в кодах, а не в соседнем, хотя бы даже и в одном и том же namespace.

Вообще ужасаюсь от синтаксиса и возможностей движка стеллариса, если заложен оператор, то какая его забота как в коде прописан amount (числом иль в виде переменой). Такое впечатление что разрабы заботились в основном чтобы движок не упал от возможных ошибок/коллизий задаваемых внешними скриптами, а не о функциональность удобстве использования. :(

  Цитата
Для hide_window есть immediate, как ты можешь заметить по ванильным кодам.

Сейчас глянул, и вправду срабатывают все опции, видимо, это фишка стеллариса, тк в европе и крусайдерах это было не так.

Ну вот видишь сам, что вики от каких-то там европок и крусайдеров не аргумент доказующий что-либо. Как, впрочем, и любые иные вики писанные всем кому не лень. ;) Изменено пользователем Artos_VV
Ссылка на комментарий

  Artos_VV писал:
...

Еще раз: я включал эвент на расчистку, блокеры исчезали каждый день (ты же не хочешь сказать, что каждый раз рандом случайно брал именно тот тайл, в котором есть блокер?)

Значит, рандом перебирает все клетки и срабатывает, когда клетка удовлетворит условиям.

Значит, если нет блокеров, то рандом переберет все клетки, чтобы убедиться в этом.

Значит, если у нас нет зданий, которые можно было бы заупдейтить, то рандом переберет все клетки в их поиске.

Значит, твое решение не такое оптимальнее, как тебе хочется думать.

В том то и дело, что клиника строится в чужих хоумворлдах (где она может быть нужна, а может быть и нет). Но я придумал пару вариантов, что с этим можно сделать. Надо будет потестить.

Нищеброды должны страдать. Я и так пошел им на встречу и выложил мод на яндекс диск. Лимит исчерпан.

Давай конкретный пример, как я мог бы сравнить две переменные, мне очень интересно.

Возможно, и в крусайдерах с европой тоже все опции срабатывают, просто у меня сложилось такое заблуждение. Проверять не вижу смысла. Многие вещи работают аналогично. Так что я склонено доверять написанному в вики других игр, пока не будет доказано обратное.

Изменено пользователем had
Ссылка на комментарий

Artos_VV
  had писал:
...
  Цитата
Еще раз: я включал эвент на расчистку, блокеры исчезали каждый день (ты же не хочешь сказать, что каждый раз рандом случайно брал именно тот тайл, в котором есть блокер?)
Изволь уточнять какой из моих вариантов эвента очистки планет ты имеешь ввиду: актуальный (от 14.06) или двухнедельной давности! Если старый(технологический!) - то какого лешего ты о нем продолжаешь трындычать? Если актуальный то... опять лукавишь и говоришь неправду. Актуальный эвент очистки имеет структуру в точности аналогичную твоему моду, т.е. MTTH = 1 месяц.

Ну да не суть... идем дальше.

  Цитата
Значит, рандом перебирает все клетки и срабатывает, когда клетка удовлетворит условиям.
Да, если имеешь ввиду оператор random_tile и с уточнением: перебирает по одной случайно выбранной клетке (из массива `все`) с каждой планеты за одно срабатывание триггера.
  Цитата
Значит, если нет блокеров, то рандом переберет все клетки, чтобы убедиться в этом.
Нет. Подними глаза на верхние строки, где в условии для каждой планеты прописано: has_blocker = yes. Т.е. перебор ячеек начнется только в том случае, если на планете имеется хотя бы одна заблокированная ячейка. Иначе, планета с ее ячейками пропускается.
  Цитата
Значит, если у нас нет зданий, которые можно было бы заупдейтить, то рандом переберет все клетки в их поиске.
Хотя это уже из другой оперы и не относится к очистке планет, но совершено верно: проверки на возможность апгрейдов построек со сканированием всех застроенных ячеек вызываются периодически пока разрешено эдиктом и пока имеется достаточно ресурсов. Создавать отсекающее условие на перепроверку достижения всех возможных в игре апгрейдов всех построек считаю не целесообразным для своего случая, когда проверяется по одной рандомной ячейке с планеты в неделю. А вот для твоего варианта, когда за раз сканируются тысячи ячеек - я бы сильно задумался...
  Цитата
Значит, твое решение не такое оптимальнее, как тебе хочется думать.
Во-первых нет предела совершенству/оптимальности, и глупец тот, кто гонится за достижением пределов.

Во-вторых, по сравнению с твоим вариантом мои варианты на порядок оптимальнее с точки зрения нагрузки на движок игры и разбазаривания ресурсов на создание очередей построек.

В-третьих, не подозревал что на форуме имеется экстрасенс, заглядывающий в мозги другим и уже знающий "как мне хочется". Мне бы самому понять что иль как мне хочется... ;)

  Цитата
В том то и дело, что клиника строится в чужих хоумворлдах (где она может быть нужна, а может быть и нет). Но я придумал пару вариантов, что с этим можно сделать. Надо будет потестить.
Так и хочется съязвить на тему: не клиника ли у тебя, что так зациклился на этих клиниках? Мне до сих пор не ясно, чем так они(клиники) выдающиеся перед теми же "памятниками чистоты" иль иными подобными и более полезными постройками?! Пусть автомат строит там где однозначно можно и нужно стоить, а в сомнительных ситуациях - нечего и заморачиваться и напрягать движок игры, пусть сам игрок решает строить иль нет и где.
  Цитата
Нищеброды должны страдать. Я и так пошел им на встречу и выложил мод на яндекс диск. Лимит исчерпан.
А вот тут попрошу Вас уточнить: это неудачная шутка или позиция автора мода? По сути сам отношусь к нищебродам (и комп не из топового железа, и игру до сих пор не купил), но подачек никогда и ни от кого не приемлю. :mad:

Если это высказана позиция автора мода: удаляюсь из темы и прошу(требую) убрать из описания мода всякие спасибки в мой адрес.

  Цитата
Давай конкретный пример, как я мог бы сравнить две переменные, мне очень интересно.
Раз тебе Вам интересно - так и ищите сами способы (пере)проверить то в чем есть сомнения, а обращаясь к другим, советую быть повежливее. Не имею желания тратить время на доказательства, когда имеется код и программист способен сам проверить что ему потребно или интересно. Извините, но до более корректной формулировки просьбы и уточнения по "нищебрам" Вашими словами: "Лимит исчерпан". :stop: Изменено пользователем Artos_VV
Ссылка на комментарий

  Artos_VV писал:
...

Эвент на расчистку я взял как пример работы random_tile, который можно легко посмотреть.

Попытаюсь объяснить уже наверно в 4-й раз:

Вот беру я твой эвент, удаляю trigger и MTH, чтобы эвент срабатывал каждый день.

Начал новую игру, закинул ресурсов, блокеры исчезают каждый день на каждом тике эвента (кроме гигантских трущоб, видимо, недоработка).

Значит, команда random_tile исполняется столько раз, сколько потребуется для нахождения тайтла, подходящего под нужные условия.

Если таких тайтлов нет, то она будет загружать процессор так же (если не больше), сколько и команда every_tile

Вот и все, что я пытаюсь тебе объяснить.

Я тот еще экстрасенс, следующим президентом РФ будет Путин. Можешь скринить.

До остальных уникальных зданий я со временем доберусь.

Клиники тк

1) Полезны.

2) Меньше требований.

3) Более универсальны. Клиника нужна на почти любой планете, в отличие от некоторых других уникальных зданий.

Можешь воспринимать как хочешь, эта тема не тюрьма народов.

Из списка благодарностей, как и с Летучего Голландца, выхода нет.

Есть, но не покажу? Знакомо.

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

Сейчас можно переменную назначить несколькими способами, сравнить с числом. И вроде бы все.

Новая версия в шапке. Ничего нового, только исправления.

Изменено пользователем had
Ссылка на комментарий

Artos_VV
  had писал:
Значит, команда random_tile исполняется столько раз, сколько потребуется для нахождения тайтла, подходящего под нужные условия.

Если таких тайтлов нет, то она будет загружать процессор так же (если не больше), сколько и команда every_tile

Как же все запущено в консерватории... :(

Оказывается мододел не знает элементарных понятий и загрузку процессора/движка игры меряет не процентами (грубо: соотношение времени выполнения операций (User Time) и времени простоя (Idle Time) за единицу времени), а общим количеством выполняемых операций за весь период их выполнения. Теперь мне понятно его полное пренебрежение к оптмизации кодов мода и тяга выполнять всё за раз, а не по-очереди, распределяя нагрузку во времени.

Что-либо разъяснять или переубеждать уже не имею никакого желания. Свой вариант мода по авто-строительству выложу в отдельной теме (если админы форума не будут против), дабы не пропадал даром, да и таким как я "нищебродам" может пригодится.

Откланиваюсь.

Ссылка на комментарий

  Artos_VV писал:
...

При чем тут это?

Ты мне говоришь, что перебирает одну клетку за срабатывание эвента, я тебе говорю, что перебирает, пока условие не удовлетворится.

Это видно в предложенном мной эксперименте или хотя бы по ванильным эвентам.

Пока.

Ссылка на комментарий

Artos_VV
  had писал:
При чем тут это?

Ты мне говоришь, что перебирает одну клетку за срабатывание эвента, я тебе говорю, что перебирает, пока условие не удовлетворится.

Это видно в предложенном мной эксперименте или хотя бы по ванильным эвентам.

Я тебе про холодное, ты мне про мягкое. ;) Право уже смешно. :D

Тебе действительно клиники потребны... ну нельзя же с таким пониманием "мат.части" что-то модить.

Само собою цель любого написанного подобного кода/скрипта - проверить условие и выполнить действие. Или ты ждешь чтобы кто-то писал код, который без перепроверки условий самопрерывался бы? Сам подумал о чем говоришь?

Срабатывание эвента (триггера) - это один такт в игре. За этот такт (миллисекунды реального времени) в случае с random_tile цепочка условий для него проверяется один раз(!). Если какое-либо условие из цепочки выполнится - запустится и эффект (выполнится действие). В любом случае, при срабатывании условия или достижении конца всех условий, какие-либо операции с этим эвентом прекращаются. Итого имеем, отработав миллисекунды, все остальное время процессор/движок игры свободен для выполнения иных действий связанных с игрою/другими эвентами/модами... Уточню: если эвент проверяет массив every_owned_planet, то за цикл проверяется столько ячеек, сколько планет имеется под управлением игрока.

В случае с every_tile в этот же самый такт вся последовательность по перепроверке условий повторяется столько раз, сколько ячеек имеет проверяемая планета, т.е. нагрузка на процессор/движок возрастает на порядок и более! Если еще игра без секторов, то нагрузка множится и на переизбыток планет.

Дам условное сравнение твоего кода и моего варианта обычного апгрейда построек:

Берем равные условия: У игрока под его управлением десяток планет в среднем с 20-тью ячейками на каждой. Размер цепочек условий у нас примерно одинаковы.

В моем варианте с цепочкой every_owned_planet -> random_tile в цикле проверок будет: 10 х (1х7) = 70.

Десять планет и по 1-ой ячейке на 7 типов построек. Причем 1х7 - это технологический вариант (для удобства отладки), и будет сведено к 1х1. Итого 7 цепочек проверок для ячеек.

В твоем случае every_owned_planet -> every_tile предусматривается проверка:

10 х (20х29) = 5800 , т.е. за один раз (такт) все ячейки подвергаются проверке 5800 раз!

Почувствуй разницу: 5800 : 70 или даже 5800 : 10

Это конечно максимальные цифры, и по мере срабатывания условий некоторые условия для проверок будут отсекаться, но суть единомоментной нагрузки на движок игры видна. И это только по обычным апгрейдам. А все по-ячеечные цепочки проверок твоей "колбасы" могут запросто зашкаливать за 10тыс. Множим все это на "игру без секторов"...

Возникает вопрос: Что оптимальнее для игрока? Раз в три месяца игры (~1,5 минуты времени) запускать стреш-тест движку и получать очереди построек с растратой ресурсов и, возможно, лаги и фризы? Или раз в игровую неделю (~7 секунд) порциями подгружать процессор и в итоге получать ровно все те же постройки и апгрейды?! Каждый игрок имеет свой ответ на это...

Не знаю... зачем я тут еще что-то пытаюсь объяснить... пора перестать удивляться нежеланию думать и познавать.

Изменено пользователем Artos_VV
Ссылка на комментарий

Че Бурашка

had

Таки - да. Пограничная клиника строится где попало. Редко когда угадывает попасть на ячейку с едой.

После обновления мода у меня что-то автопостройка и автообновление остановились. Или стали срабатывать значительно реже. Не было достаточно времени что бы это в полной мере отследить. Во всяком случае за половину игрового года ни одного строительства в глаза не бросилось. Хотя до этого строчило как из пулемёта.

При обновлении мода - чистое сохранение надо делать?

Ссылка на комментарий

Artos_VV
  HolodGLD писал:
had

После обновления мода у меня что-то автопостройка и автообновление остановились. Или стали срабатывать значительно реже. Не было достаточно времени что бы это в полной мере отследить. Во всяком случае за половину игрового года ни одного строительства в глаза не бросилось. Хотя до этого строчило как из пулемёта.

В прошлой яндекс-версии мода автор забыл снять коммент с MTTH поэтому и "строчило как из пулемета".

Ну а в актуальной - включено раз в 3 месяца (хотя могут быть и годовые и более паузы).

Ссылка на комментарий

  HolodGLD писал:
had

Таки - да. Пограничная клиника строится где попало. Редко когда угадывает попасть на ячейку с едой.

После обновления мода у меня что-то автопостройка и автообновление остановились. Или стали срабатывать значительно реже. Не было достаточно времени что бы это в полной мере отследить. Во всяком случае за половину игрового года ни одного строительства в глаза не бросилось. Хотя до этого строчило как из пулемёта.

При обновлении мода - чистое сохранение надо делать?

Клинику пофиксил.

Примерно раз в 3 месяца должно.

Может быть тебе не повезло с рандомом, поиграю завтра нормально с новой версией и проверю.

Нет, просто заменяй файлы.

Изменено пользователем had
Ссылка на комментарий

Присоединиться к обсуждению

Вы можете оставить комментарий уже сейчас, а зарегистрироваться позже! Если у вас уже есть аккаунт, войдите, чтобы оставить сообщение через него.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Only 75 emoji are allowed.

×   Ваша ссылка автоматически преображена.   Отображать как простую ссылку

×   Предыдущее содержимое было восстановлено..   Очистить текст в редакторе

×   You cannot paste images directly. Upload or insert images from URL.

  • Ответы 346
  • Создано
  • Последний ответ
  • Просмотры 51026

Лучшие авторы в этой теме

  • had

    158

  • Artos_VV

    26

  • plm1234

    14

  • Че Бурашка

    11

  • Kelnimiir

    11

  • Alex Kit

    8

  • mahmud

    8

  • hind

    8

  • Resso

    7

  • Pasha223

    7

  • Naugrim12

    7

  • HugoBo-SS

    6

  • sanas

    5

  • VitaliiCN

    5

  • frezer123

    5

  • Дейтерий

    4

  • Iviom

    3

  • Evil1Russian

    3

  • Cozdatel

    3

  • flexus

    3

  • fenix293

    3

  • belior

    3

  • NopzHopz

    3

  • Koshachii

    3

Лучшие авторы в этой теме

Популярные сообщения

had

Картинка   Hide     Скачать: Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое. Войдите или зарегистрируйтесь, чтобы увидеть скрытое содержимое.

had

Обновил мод, исправил меню. Кто качал с яндекс диска - нужно перекачать. Но если вы не используете 2 других мода с меню, то забейте.

had

@LeGuS Вчера была ошибка, она исправлена. Не будет.

had

Нет, я такого пока не находил, поэтому и до сих пор не запилил в мод. Не случалось у меня проблем с пищей, первого растущего поселенца ставим в ферму, потом возвращаемся после сообщения о безработице

had

Не включай остальные настройки мода в меню и будет только этот эдикт.

had

Обновил до 1.3

had

Мне так лень разбираться, что я просто перезалью архив.

had

Обновлено до v2.6 Улучшена локализация. Изменена логика специализированных планет. Переименование автоматических строительных кораблей. Уникальные постройки теперь будут учит

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу

12/26/2024 2:21:42 AM

Copyright © 2008-2024 Strategium.ru Powered by Invision Community

×
×
  • Создать...