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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На практике можно сказать, что если задано действие с 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
Ссылка на комментарий

...

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

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

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

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

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

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

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

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

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

кодНажмите здесь!
 

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

[Cкрыть]

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

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

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

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

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

Кстати.

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

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

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

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

Че Бурашка

Artos_VV

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

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

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

Artos_VV
Artos_VV

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Кстати.

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

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

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

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

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

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

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

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

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

...

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

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

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

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

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

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

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

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

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

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

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

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

Когда я проверял твой эвент на расчистку в 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, хотя может там даду что-то более удобное и гибкое.

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

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

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

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

...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Например, игра обыскивает все ячейки в поисках шахты 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
Ссылка на комментарий

...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...

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

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

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

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

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

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

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

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

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

Клиники тк

1) Полезны.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

...

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

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

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

Пока.

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

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

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

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

Я тебе про холодное, ты мне про мягкое. ;) Право уже смешно. :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
had

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

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

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

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

had

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

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

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

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

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

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

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

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

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

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

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

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

  Only 75 emoji are allowed.

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

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

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

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

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

  • 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

  • flexus

    3

  • fenix293

    3

  • belior

    3

  • AngryRussian

    3

  • He3Hak0MeLL

    3

  • NopzHopz

    3

  • nekitosh

    3

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

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

had

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

had

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

had

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

had

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

had

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

had

Обновил до 1.3

had

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

had

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

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

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


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

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