Голосование

Как вы оцениваете Смуту?












Оформление



Пользователей
  • Всего: 28871
  • Последний: 123WwW2004
Сейчас на форуме
Пользователи: 5
Гостей: 276
Всего: 281

0 Пользователей и 1 Гость просматривают эту тему.

Тема: Путь Воина v2.4  (Прочитано 32908 раз)

  • Сообщений: 16
    • Просмотр профиля
0
« Ответ #125 : 04 Декабря, 2019, 14:51 »
Хочу отметить, что проблема появилась не в последнем патче. У меня лежит старая версия, кажется, 2.1 - для которой требовался клиент 1.153, там тоже наблюдались лаги со спутниками. Но тогда я просто решил, что старый ноут не тянет.
Я попытался найти скрипт/триггер, вызывающий лаги (были сорцы версии 2.1 и знание о том, как их скомпилировать. С последней версией я как-то не разобрался, ибо моддингом и модулькой не занимался от слова совсем.).
Поочерёдно вырезал подозрительные места: циклы обхода вида
(try_for_range, ":npc", companions_begin, companions_end)
но это не дало результатов.
Пробежался по триггерам, которые срабатывают ежечасно (я же правильно понял, что на период срабатывания указывает первое число в коде триггера? :)), там тоже не нашёл ничего криминального.
  • Фракция: Вегиры
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
0
« Ответ #126 : 04 Декабря, 2019, 21:05 »
Van Weyden, я кста тоже по триггерам пробежался и ничего подозрительного не нашел. Поэтому надо проверять скрипты, ведь они могут быть вызваны с триггеров.
1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 16
    • Просмотр профиля
0
« Ответ #127 : 04 Декабря, 2019, 21:20 »
Van Weyden, я кста тоже по триггерам пробежался и ничего подозрительного не нашел. Поэтому надо проверять скрипты, ведь они могут быть вызваны с триггеров.

Ну я все циклы, пробегающиеся по нпс в отряде игрока вырезал из исходников скриптов и проверял - не помогло. Ещё решил проверить - может дело в фураже для коней - тоже мимо.
У меня пока нет идей, какой ещё код в скрипте может быть связан с нпс ¯\_(ツ)_/¯.
  • Фракция: Вегиры
  • Сообщений: 16
    • Просмотр профиля
0
« Ответ #128 : 05 Декабря, 2019, 00:29 »
Janycz, убрал ВСЕ триггеры (из triggers и simple_triggers), чей период срабатывания менее 6 часов - не дало эффекта.

Такой вопрос: скрипты могут быть вызваны только через триггеры? Я так полагаю, что нет, иначе скрипт на изменение модификатора скорости не работал бы...
Есть ещё один вопрос: могут ли лаги быть вызваны чем-то ещё окромя скриптов?
« Последнее редактирование: 05 Декабря, 2019, 09:43 от Van Weyden »
  • Фракция: Вегиры
  • Сообщений: 892
  • За создание крупных модов и других особо сложных проектов За создание технических проектов различного характера
    • Просмотр профиля
0
« Ответ #129 : 05 Декабря, 2019, 08:43 »
Возможно где-то происходит, перебор инвентаря НПС (возможно он там овес ищет или что-то подобное), игра это почему-то очень не любит. Есть скрипты вызывающиеся напрямую из движка и постоянно, рекомендую посмотреть среди них, например скрипт скорости, или скрипт смены иконки игрока.
  • Сообщений: 16
    • Просмотр профиля
0
« Ответ #130 : 05 Декабря, 2019, 10:09 »
Я нашёл "виновника":
  #script_game_get_skill_modifier_for_troop
  # This script is called from the game engine when a skill's modifiers are needed
  # INPUT: arg1 = troop_no, arg2 = skill_no
  # OUTPUT: trigger_result = modifier_value
  ("game_get_skill_modifier_for_troop",
  [
    (store_script_param, ":troop_no", 1),
    (store_script_param, ":skill_no", 2),
    (assign, ":modifier_value", 0),
    (try_begin), #needed to suppress script can fail warn.
      (troop_is_hero, ":troop_no"),#may be should skip lords too?
      #and sure, we can't do it for regulars
      (store_add, ":holder", skill_holder_begin, ":skill_no"),
      (try_for_range,":slot", 0, 256),#up to 256 items that effect current skills
        (quest_get_slot, ":item", ":holder", ":slot"),#that's not quest, that's skill slots R.
        (try_begin),
          (le, ":item", 0),
          (neg|is_vanilla_warband),
          (assign, ":slot", 256),
          #(break_loop),
        (try_end),
        (gt, ":item", 0),
        (item_get_slot, ":req", ":item", slot_item_intelligence_requirement),
        (store_attribute_level, ":skill_level", ":troop_no", ca_intelligence),
        (ge, ":skill_level", ":req"),
        (item_get_slot, ":method", ":item", slot_item_skill_modifier_method),
        (try_begin),
          (eq, ":method", 1),
          (eq, ":troop_no", "trp_player"),
          (player_has_item, ":item"), #assume other chars does not have inventory
          (item_get_slot, ":modifier_value", ":item", slot_item_skill_modifier_value),
        (else_try),
          (eq, ":method", 2),
          (try_begin),
            (eq, ":troop_no", "trp_player"),
            (eq, "$g_in_mission", 1),
            (get_player_agent_no, ":agent_no"),
            (assign, ":pass", 0),
            (ge,":agent_no",0),
            (try_begin),
              (item_get_type, ":type", ":item"),
              (eq, ":type", itp_type_horse),
              (agent_get_horse, ":horse", ":agent_no"),
              (ge,":horse", 0),
              (assign, ":pass", 1),
              (agent_get_item_id, ":item_horse", ":horse"),
              (eq, ":item_horse" , ":item"),
              (item_get_slot, ":modifier_value", ":item", slot_item_skill_modifier_value),
            (else_try),
              (agent_has_item_equipped,":agent_no",  ":item"),
              (item_get_slot, ":modifier_value", ":item", slot_item_skill_modifier_value),
              (assign, ":pass", 1),
            (try_end),
            (eq, ":pass", 1),
          (else_try),
            (troop_has_item_equipped, ":troop_no", ":item"),
            (item_get_slot, ":modifier_value", ":item", slot_item_skill_modifier_value),
          (try_end),
        (try_end),
      (try_end),
    (try_end),
    (set_trigger_result, ":modifier_value"),
  ]),
P.S. Немного отформатировал код (в плане отступов), чтобы улучшить читаемость.
« Последнее редактирование: 05 Декабря, 2019, 10:23 от Van Weyden »
  • Фракция: Вегиры
  • Сообщений: 892
  • За создание крупных модов и других особо сложных проектов За создание технических проектов различного характера
    • Просмотр профиля
0
« Ответ #131 : 05 Декабря, 2019, 10:22 »
Ну вот о чем я и говорил, пусть теперь умные люди его модифицируют, нужно убрать из скипта перебор инвентаря, и заменить на что нибудь другое.
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
0
« Ответ #132 : 05 Декабря, 2019, 11:44 »
Я нашёл "виновника":
Вы точно уверены, что это он?
1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 16
    • Просмотр профиля
+3
« Ответ #133 : 05 Декабря, 2019, 16:32 »
Насколько я понял, этот скрипт отвечает за бонусы/дебафы от снаряжения, книг и карт. И, для НПС имеет значение только одетая экипировка. Но навскидку из таких вещей я могу вспомнить только перчатки и лошадей (причём для лошади игрока есть отдельная ветка в скрипте, а для лошадей спутников почему-то нет), которые влияют на "мощный выстрел".

Самое интересное началось, когда я начал дебажить этот скрипт. Если выбросить те блоки, внутри которых была проверка вида "(eq, ":troop_no", "trp_player"),", то в цикле останется код, срабатывающий только для НПС (код привожу просто для понимания, что именно скрипт у них проверяет):
  (troop_is_hero, ":troop_no"),#may be should skip lords too?
  #and sure, we can't do it for regulars
  (store_add, ":holder", skill_holder_begin, ":skill_no"),
  (try_for_range,":slot", 0, 256),#up to 256 items that effect current skills
     (quest_get_slot, ":item", ":holder", ":slot"),#that's not quest, that's skill slots R.
     (try_begin),
       (le, ":item", 0),
       (neg|is_vanilla_warband),
       (assign, ":slot", 256),
       #(break_loop),
     (try_end),
     (gt, ":item", 0),
     (item_get_slot, ":req", ":item", slot_item_intelligence_requirement),
     (store_attribute_level, ":skill_level", ":troop_no", ca_intelligence),
     (ge, ":skill_level", ":req"),
     (item_get_slot, ":method", ":item", slot_item_skill_modifier_method),
     (try_begin),
       (eq, ":method", 2),
       (troop_has_item_equipped, ":troop_no", ":item"),
       (item_get_slot, ":modifier_value", ":item", slot_item_skill_modifier_value),
     (try_end),
  (try_end),
Я вставил в исходный скрипт код, отправляющий дебаг-сообщение, чтобы отследить срабатывание блока для НПС в игре. И, как оказалось, на глобалке блок кода для НПС не выполняется. То есть весь перебор предметов для них идёт зазря. А вот в бою есть единичное срабатывание, в самом начале (когда в лог ещё пишется информация о снаряжении, хп и т.п.).

Таким образом, я предлагаю исправить этот код:

На этот:

В скомпилированном виде (scripts.txt):
Заменить это:

На это:

Janycz, после замены скрипта лаги на глобалке пропали. Вернее, почти пропали - периодические микрофризы всё-таки есть, но в среднем 55-60 кадров игра выдаёт.
« Последнее редактирование: 05 Декабря, 2019, 19:20 от Van Weyden »
  • Фракция: Вегиры
  • Сообщений: 16
    • Просмотр профиля
+2
« Ответ #134 : 08 Декабря, 2019, 19:30 »
Раз уж начал ковыряться в модульке, почему бы не поковыряться ещё?  ;)
Заодно прикладываю скомпилированный код, чтобы простые игроки могли отредактировать свои файлы, не дожидаясь, пока эти изменения появятся в моде. Ну, и тестированию помогут  :D
Хотя, кто знает, может меня одного напрягали эти моменты?

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

Отображение прочности оружия и миникарты одновременно:
« Последнее редактирование: 08 Декабря, 2019, 22:10 от Van Weyden »
  • Фракция: Вегиры
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
0
« Ответ #135 : 08 Декабря, 2019, 21:43 »
но с точки зрения сорцов - это костыль
Это неважно. Тут и так много костылей. :)
1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 16
    • Просмотр профиля
0
« Ответ #136 : 08 Декабря, 2019, 22:08 »
Janycz, поэтому и не стоит городить новых, особенно, если знаешь, как сделать по-нормальному ;)
Если кому-то из разработчиков действительно любопытен мой вариант решения, я могу написать и исходный код. Хотя, думаю, просто у них руки до этого не дошли. А, может быть, отсутствие отображения миникарты и прочности оружия одновременно - "не баг, а фича" :laught:
  • Фракция: Вегиры
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
0
« Ответ #137 : 11 Декабря, 2019, 13:36 »
Если кому-то из разработчиков действительно любопытен мой вариант решения, я могу написать и исходный код. Хотя, думаю, просто у них руки до этого не дошли. А, может быть, отсутствие отображения миникарты и прочности оружия одновременно - "не баг, а фича"
Ну представляете, пожалуйста.
1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 10
    • Просмотр профиля
0
« Ответ #138 : 12 Декабря, 2019, 00:27 »
Попробовал заплатку для глобалки и для очистки миникарты. На глобалке стало практически гладко с редкими повторяющимися краткими затыками. Скрин с временем кадра приложил.
Van Weyden, данке шон.
  • Фракция: Свады
  • Сообщений: 16
    • Просмотр профиля
+1
« Ответ #139 : 13 Декабря, 2019, 22:43 »
Ну представляете, пожалуйста.

Сразу оговорю, что:
1. Под спойлером только исходный код
2. Старый код целиком не пишу, только названия скриптов/презентаций, которые нужно модифицировать.
3. Это таки "костыльный" вариант. Если удалять презентацию draw_equipment_hp, то миникарта будет всегда отображаться... А так приходится весь код из draw_equipment_hp дублировать в map_then_battle, что тоже не гуд. Может быть, объявить глобальную переменную и в зависимости от её состояния рисовать/не рисовать миникарту? Я бы может и занялся этим, но сессия, все дела...
4. Тестировалось это усё на версии 2.1, ибо я так и не вкурил, как компилить сорцы 2.4. В той версии были скрипты в папке process, с помощью которых и выполнялась компиляция. А в 2.4 - то ли версию питона стали использовать третью вместо второй, то ли чего-то в сорцах не хватало...
Janycz, если просветите, буду весьма признателен.

« Последнее редактирование: 13 Декабря, 2019, 22:46 от Van Weyden »
  • Фракция: Вегиры
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
+1
« Ответ #140 : 14 Декабря, 2019, 10:30 »
Janycz, если просветите, буду весьма признателен.
1) Питон 3.6
2) Настроить module_info.bat (export_dir)
3) Запустить build_module_fast.bat
1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 10
    • Просмотр профиля
0
« Ответ #141 : 16 Декабря, 2019, 02:59 »
Доброго времени суток. Давно искал хардкорный мод с упором на историчность, и кажется нашел) Спасибо всем кто его делал. Пока разобрался как его установить возникли первый вопросы, можно где почитать FAQ по игре? Возникла проблема с именем персонажа, ввожу его, а отображается "игрок". Также при старте игры можно в настройках поставить "глобальная погода" и "новые названия тевтонский войск". Что сии пункты значат?
  • Фракция: Торговцы
  • Сообщений: 3876
  • За активный вклад в развитие сайта За материальную помощь сайту За активную деятельность, связанную с публикациями и помощью другим посетителям
    • Просмотр профиля
0
« Ответ #142 : 16 Декабря, 2019, 07:57 »
Krevan, Проблема с именем Игрок решается установкой другого русификатора на сам Варбанд.
  • Фракция: Свады
  • Сообщений: 2766
  • За создание крупных модов и других особо сложных проектов За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов Выдается модераторам, достигнувшим значимых успехов на своем посту
    • Просмотр профиля
+1
« Ответ #143 : 16 Декабря, 2019, 10:32 »
Возникла проблема с именем персонажа, ввожу его, а отображается "игрок".
Известный баг пирацких версий, а баги пираток и баги мода на пиратках не рассматриваются.
« Последнее редактирование: 16 Декабря, 2019, 10:44 от Janycz »
1 + 2 + 3 + 4 + ... = ζ(-1) = -0.08(3)
1 - 1 + 1 - 1 + 1 - ... = 0.5
1 - 2 + 3 - 4 + 5 - ... = 0.25

На вопросы в ПС не отвечаю! Спрашивать в темах!
  • Сообщений: 3876
  • За активный вклад в развитие сайта За материальную помощь сайту За активную деятельность, связанную с публикациями и помощью другим посетителям
    • Просмотр профиля
-1
« Ответ #144 : 16 Декабря, 2019, 12:39 »
Прежде чем минусильщику ставить свою анонимноподлую  метку на моём предыдущем посте, неплохо было бы вспомнить, что та же лицензия от GOG идёт без встроенного русика. И этот же русификатор при установке на любую лицензию даст ту же ошибку.
« Последнее редактирование: 16 Декабря, 2019, 16:14 от Alisacat007 »
  • Фракция: Свады
  • Сообщений: 10
    • Просмотр профиля
0
« Ответ #145 : 16 Декабря, 2019, 15:57 »
У меня лицензия от 1 С. Правда она уже не актуальна, поэтому я скачал английскую версию от Taleworlds и активировал ее своим ключом от дисковой версии 1 С. Что на счет вопросов про "глобальную погоду" и "новые названия тевтонских войск"?
  • Фракция: Торговцы
  • Сообщений: 2084
  • За создание крупных модов и других особо сложных проектов
    • Просмотр профиля
0
« Ответ #146 : 16 Декабря, 2019, 16:41 »
Погода на глобальной карте идет дождь и снег. Названия Тевтонских войск это просто переименовывает тевтонских юнитов в более исторически точные имена, подобранные в сотрудничестве с Тевтонологами. Т.к. старый вариант идет еще с версии на Историю Героя, то решили сделать опционально.
  • Фракция: Свады
  • Сообщений: 2520
  • За регистрацию на форуме не позже декабря 2016 года и не менее 2500 постов
    • Просмотр профиля
0
« Ответ #147 : 17 Декабря, 2019, 13:48 »
Погода на глобальной карте идет дождь и снег
Хотелось бы немного уточнить: это лишь графическое отображение имеющихся  эффектов природы. Если игрок "отключит" дождь и снег на глобалке, его отряд не перестанет получать дебаф на скорость передвижения в непогоду :)
Просто - щадящий режим для не очень мощных ПК.
Классика не стареет...
Единственное, что утешает:
дембель, равно как и крушение империализма, неизбежен...
  • Сообщений: 10
    • Просмотр профиля
0
« Ответ #148 : 17 Декабря, 2019, 15:10 »
Хотелось бы немного уточнить: это лишь графическое отображение имеющихся  эффектов природы. Если игрок "отключит" дождь и снег на глобалке, его отряд не перестанет получать дебаф на скорость передвижения в непогоду :)
Просто - щадящий режим для не очень мощных ПК.
На днях запустил мод, немного поиграл. В целом впечатления пока очень положительные. Особенно понравилась: 1) система набора войск, когда нужно улучшить отношения, а лишь затем набирать солдат, также как и их разделение на деревенских, городских, замковых и элитных. 2) система предустановок боевых действий. Я заметил что ИИ применяет например "старую тактику", т.е. действует более осмысленно в бою. 3) Порадовали конные лучники, которые кружат вокруг врагов и стреляют по ним, правда заметил что иногда они все-таки чрезмерно сближаются и в этом компоненте еще можно улучшать их ИИ.
Из того что не понравилось - почему в землях Новгородской республики в летние месяцы лежит снег?))
  • Фракция: Торговцы
  • Сообщений: 10
    • Просмотр профиля
0
« Ответ #149 : 19 Декабря, 2019, 00:59 »
Игра стала крашится (appcrash) >:( Т.к. я играл в режиме одного сохранения, то просто не могу продолжить, при попытке загрузить сейв - вылет. В чем может быть проблема?
  • Фракция: Торговцы

СиЧЪ Total War СиЧЪ Total War
Сайт "Всадники Кальрадии" не является СМИ. Администрация не несет ответственность за высказывания и публикацию каких-либо материалов, сделанные любыми пользователями форума, в том числе посредством личных и публичных сообщений. Материалы, размещенные на ресурсе третьими лицами, могут содержать информацию, не предназначенную для лиц, не достигнувших совершеннолетия. При обнаружении на ресурсе материалов, нарушающих законодательство Российской Федерации, необходимо обращаться к администрации.
Сайт работает на быстром VPS/VDS хостинге от FASTVPS


Powered by SMF 2.0 | SMF © Simple Machines LLC