Сообщество Империал: [Статья: Оптимизация скриптов в Medieval 2 Total War] - Сообщество Империал

bitterhowl

[Статья: Оптимизация скриптов в Medieval 2 Total War]

[Статья: Оптимизация скриптов в Medieval 2 Total War]
Тема создана: 14 января 2016, 21:36 · Автор: bitterhowl
 bitterhowl
  • Imperial
Imperial
El Compilator

Дата: 14 января 2016, 21:36

Автоматически сгенерированная тема для поддержки статьи - Для просмотра ссылки Зарегистрируйтесь.

Сегодня, 17:32 = Дата публикации статьи в Библиотеки.
Сегодня, 17:32 = Дата обновления статьи в Библиотеки.
     gaulish723
    • Imperial
    Imperial
    Форумчанин

    Дата: 31 марта 2017, 15:14

    А что если скриптом ввести исторические события как респавн юнитов с героями-например мамлюков с бейбарсом илиОсмана с кингдомса. У меня есть вопрос по скриптингу.
       bitterhowl
      • Imperial
      Imperial
      El Compilator

      Дата: 08 марта 2023, 07:25

      Дополнение, насчёт операторов campaign_wait и battle_wait.

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

      Корректируя скрипт для тактических битв, уменьшая количество monitor_conditions до одного, в который помещается все содержимое скрипта, столкнулся с тем, что накапливается большое число операторов battle_wait в одном мониторе.

      Да, они через if, но получается, что скрипт считается сверху вниз, и каждый оператор ожидания тормозит весь монитор целиком. То есть части монитора, расположенные под разными if считываются последовательно, а не параллельно. Тогда как в ситуации, где в скрипте много monitor_conditions, каждый со своими if (как изначально в Германикусе, например) - они считываются параллельно.

      Чтобы разрешить эту проблему для своего скрипта, пробую сейчас пользоваться скриптовым таймером. Если у кого-то есть опыт, поделитесь, пожалуйста.
         bitterhowl
        • Imperial
        Imperial
        El Compilator

        Дата: 12 марта 2023, 06:58

        В дополнение к предыдущему сообщению - эмпирические данные. Размножил один monitor_conditions на несколько, скрипт значительно изменился.

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

        Сейчас после изменений мне два юнита дали значение как целая армия в предыдущем варианте.

        Это показывает
        а) частоту обращения движка к оператору monitor_conditions (высокая), раз счётчик показал такой драматический рост значения - подтверждение данных основной статьи про оптимизацию
        б)влияние размера монитора и количества операторов wait на ход вычислений значений в мониторе - оптимизировать надо с умом и без фанатизма

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

        Взаимодействие скрипта кампании и скрипта советника - ещё один вариант оптимизации. Думаю, DinarMayor мог бы хорошо поделиться опытом в этой сфере.
           DinarMayor
          • Imperial
          Imperial
          Форумчанин

          Дата: 12 марта 2023, 18:00

          bitterhowl

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

          Если вызвать скрипт советника содержащий мониторы, то эти мониторы будут работать до окончания цикла
          while I_InBattle 
          end_while

          В данном случае работает пока в битве.

          Если вызвать на страт карте, например, с циклом I_TurnNumber < 5(или какой-нибудь счетчик), то мониторы из скрипта советника будут работать до пятого хода. И влиять на переход хода, само собой. Перезапуск/перезагрузка обнуляет эти мониторы. В риме1 такой метод используется в кампаниях. После каждой загрузки сейва происходит активация скриптов.

          Но я делаю чуть иначе. например у меня есть монитор в скрипт файле кампании и я не хочу, чтоб он влиял на переход хода, то можно прописать вот так вот. По идее этот же монитор будет в файле советника, но он не влияет на время перехода хода(или влияет, но совсем чуть-чуть).
          export_descr_advice.txt (Reveal)

          Pirate_Bonus.txt (Reveal)

          Если не зациклить вайлом и там нет мониторов(вроде именно мониторы не хотят повторно работать с одним триггером и поэтому в германикусе их 20), то сработает лишь раз. И таких советников можно вызывать сколько угодно раз подряд. Например кнопки советников RequestTrainingAdvice и RequestBuildingAdvice я сделал через советника и вызываю неоднократно за один присест.
             bitterhowl
            • Imperial
            Imperial
            El Compilator

            Дата: 12 марта 2023, 18:26

            [quote][В скрипт советника в целом достаточно безболезненно может включать значительное количество мониторов monitor_conditions без ущерба общей производительности, т. к. включается на короткое время по запросу.
            /quote]в данном случае я именно про скрипт тактического ИИ имел в виду. Он выгружается из памяти после окончания битвы и производительность не страдает.

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

            помимо этого, отдельно убрать Германикус полностью к советнику имеет смысл ещё и из-за большого количества счётчиков, которые он создаёт. Если они заданы в скрипте кампании, то будут постоянно занимать память, а при длительной игре именно ошибки записи в оперативку и приводят к вылетам.
               Похожие Темы
              TОбсуждение Total War: Pharaoh
              Очередная часть серии игр Total War
              Автор T Torpedniy_Kater
              Обновление 6 мин. назад
              MТехнические проблемы Medieval II: Total War
              Вопросы и ответы
              Автор s salimanik
              Обновление 11 мин. назад
              TОбсуждение Total War: Warhammer I / II/ III
              Обсуждение Total War: Warhammer I / II/ III
              Автор b bad_manner
              Обновление 45 мин. назад
              Воспользуйтесь одной из соц-сетей для входа
              РегистрацияВход на форум 
              «Империал» · Условия · Ответственность · Визитка · 18 июн 2024, 12:44 · Зеркала: Org, Site · Счётчики