Общее обсуждение моддинга Medieval 2 Total War
#10091
Отправлено 10 апреля 2015 - 05:50
The blue Hasan and Khalkhin-Gol?
Брось ты меня, Митрандир, уходи один.
#10092
Отправлено 10 апреля 2015 - 20:25
Думаю, продвинутые скриптеры знают эти вещи и так, но начинающим, как я например, будет полезно. Итак, оптимизация скриптов нужна главным образом для быстродействия, чтобы не загружать процессор и операционку. Возможно, помимо быстродействия уменьшится и вероятность вылетов заодно. Полезно знать принцип работы программного кода (я не программист, не претендую, пишу только то, что прочел в теме про оптимизацию). Игра разбирает каждый монитор поэтапно, проверяет каждое условие, и если оно верное, то переходит к следующему. На это и тратится время работы процессора, поэтому нужно уметь оптимально подбирать условия скрипта. Пример как это работает.monitor_event FactionTurnStart FactionType englandand FactionBuildingExists >= governor_houseand FactionIsLocalИгра поэтапно проверяет условия, т.е. начало хода фракции, проверяет тип фракции в момент начала хода каждой фракции и если это Англия, то идет дальше. При этом проверка условия наличия у фракции здания "дом губернатора" занимает больше времени, чем проверка условия FactionIsLocal, и при вышеописанном расположении мониторов получается, что если вы играете не за Англию, то игра долго проверяет наличие здания у англичан, а потом обнаруживает что эта фракция ИИ и сбрасывает монитор. В таком случае выходит что процессор выполнил бесполезную работу, затратив время вхолостую. То есть в этом примере как минимум FactionIsLocal должно проверяться до FactionBuildingExists, чтобы не тратить время работы процессора зря. Под этим и понимается рациональное расположение условий.Вот еще более наглядный пример, с цифрами. Допустим, на карте кампании действует 300 персонажей, из них 15 английских. Например, нужно проверить, если на момент начала хода английского персонажа с определенным уникальным трейтом Англия владеет Парижем - происходит событие. Если Парижем владеет другая фракция, то другое событие. Такой скрипт при этом
Сообщение отредактировал bitterhowl: 11 апреля 2015 - 05:32
The blue Hasan and Khalkhin-Gol?
Брось ты меня, Митрандир, уходи один.
#10093
Отправлено 12 апреля 2015 - 17:25
Сообщение отредактировал bitterhowl: 12 апреля 2015 - 17:26
The blue Hasan and Khalkhin-Gol?
Брось ты меня, Митрандир, уходи один.
#10094
Отправлено 15 апреля 2015 - 04:53
В дополнение из той же темы - пишут, что стараются избегать monitor_conditions, как чумы ) В этом же сообщении приводят пример про мод 1648 - добавление/удаление одного монитора monitor_event, содержащего 250 проверок if никак не отражается на производительности игры. Добавление/удаление скрипта "Carl the taxman" (какой-то известный экономический, вроде раньше слышал про него), содержащего 600 мониторов monitor_event для всех фракций в игре - меняет производительность на 40 секунд. В цифрах как-то понятнее, да? )
Здесь же. Одно из самых вредных условий это CharacterTurnStart/End, потому что как мы теперь понимаем, срабатывает для каждого персонажа на карте, это потом уже движок проверяет принадлежность фракции (и тратит на это процессорное время тоже). Дальше по загрузности идет SettlementTurnStart/End, менее вредное, для каждого поселения проверяется то же самое. Ну и потом FactionTurnStartEnd. Какая альтернатива? Предлагают следующие операторы - CharacterSelected (когда игрок выбрал персонажа), Pre/PostBattle (до или после сражения), EventCounter (значение определенного счетчика событий). По идее эти мониторы срабатывают реже и более адресно, нагрузка на процессор снижается.Это не значит, что от других мониторов надо отказаться, я сам сначала стал ломать голову как мне переделывать свой скрипт. Но поскольку мои старые мониторы не занимают много времени их я решил оставить как есть, а вот новые делать уже исходя из полученных знаний. Потому что очень легко сломать работающий скрипт заменой одного оператора, а потом дольше будет отлаживать, с этого я начал, собственно, рассказывать )
Вот еще важный момент из учебника alpaca Порядок загрузки для событий TurnStart и TurnEnd выглядит следующим образом: CharacterTurn[Start/End], SettlementTurn[Start/End],FactionTurn[Start/End]. Почему это важно? Иногда есть взаимосвязанные мониторы в скрипте, но они не работают как вы задумали, т.е. событие происходит в лучшем случае на ход позже, или вообще не происходит. Тогда смотрите очередность мониторов, возможно, к примеру какой-то счетчик меняет нужное вам значение раньше, чем проверяется его значение в другом нужно вам мониторе. Ну и совсем общее - все файлы игра читает сверху вниз, в этом смысле очередность скрпитов и особенно трейтов имеет большое значение.
Сообщение отредактировал bitterhowl: 15 апреля 2015 - 05:10
The blue Hasan and Khalkhin-Gol?
Брось ты меня, Митрандир, уходи один.
#10095
Отправлено 18 апреля 2015 - 06:28
The blue Hasan and Khalkhin-Gol?
Брось ты меня, Митрандир, уходи один.
#10096
Отправлено 18 апреля 2015 - 10:40
Три больших человека: король, священник и богач. Между ними наемник из простолюдинов. Каждый из больших людей требует от наемника убить двух других. Кто останется жив? Кто умрет?
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Отрывок из Битвы Королей Джордж Мартин
Никнейм был изменён с MSAT на Вильгефорц
Это подпись будет отображаться до 08.03.2018
#10097
Отправлено 18 апреля 2015 - 10:52
[color=rgb(153,153,153);font-family:helvetica, arial, sans-serif;background-color:rgb(34,34,34);]ак сделать чтобы “Папа“ римский выберался из дипломатов..[/color]
Папа = лидер фракции, имеющей атрибут papal_faction. Он может быть только полководцем, то есть named character.
[color=rgb(153,153,153);font-family:helvetica, arial, sans-serif;background-color:rgb(34,34,34);]И еще как. сделать женщину фракция правителем фракции , думаю убить ее и оставить ее в древе фракции ,[/color]
Попробуй в декскр_страт лидеру фракции поставить другой пол - вместо male используй female. Я не помню, будет ли лог реагировать как-то на это, проверь ...
#10099
Отправлено 18 апреля 2015 - 12:25
Три больших человека: король, священник и богач. Между ними наемник из простолюдинов. Каждый из больших людей требует от наемника убить двух других. Кто останется жив? Кто умрет?
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Отрывок из Битвы Королей Джордж Мартин
Никнейм был изменён с MSAT на Вильгефорц
Это подпись будет отображаться до 08.03.2018
#10100
Отправлено 18 апреля 2015 - 14:33
1. Батя избирается из священников по показателю "Благочестие". У дипломатов же "Влияние". Поэтому никак не сделаешь. Как вариант - отредактировать в descr_character.txt у данного типа персонажей параметр actions. Но у меня большие сомнения в том, что игра и движок адекватно оценят такую сторону моддинга ...
2. Как сделать бабу мужиком )
Поставь мужику трейт содержания "импотент" (ну чтобы наследников не плодил ... )) ), трейт - плохая жена или что-то вроде того - если надо, то скрой этот трейт (обмани геймеров ! ). Ну и битмап с бабской физией на иконку ))). И нечего париться - это без сомнения геймплейные плюшки, но игроки, думаю, кочевряжиться из-за них не станут. Да и дело того не стоит ... Есть вещи, к-рые могут больше интереса к геймплею вызвать, те же самые трейты какие ни то интересные...
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных
Total War: WARHAMMER
Мы ждали, мы верили. И наша вера была вознаграждена! Анонс Total War: WARHAMMER состоялся! Скептики были посрамлены, а вахоманы возликовали! Но разработчики на форумах успели уже рассказать немало подробностей. Во первых стало известно? что это будет не одна игра, а трилогия сдобренная целым сомном аддонов и дополнительного платного и бесплатного контента. Во-вторых фракций будет только четыре (Империя Сигмара, Зеленокожие, Гномы и Графы-Вампиры) но обещают сделать их максимально проработанными, богатыми на юниты и реально отличающимися друг от друга по геймплею. В третьих - главы фракций теперь не просто генералы которых не жалко потерять в бою. Теперь это Легендарные Лорды (Карл Франц, Гримгор, Торгрим и Маннфрэд фон Карштайн), герои со уникальным оружием, верховым животным, шмотками и набором квестов. Еще обещают такие новинки как летающие юниты, магию, танки, пушки и мущкеты... в общем вкуснятинка! В общем ждем больше информации и надеемся, что игра станет прорывом в серии.
Ну а апологетам историчности спешим успокоить - над Вархаммер трудится отдельная команда. Исторические игры Тотал Вар производство фэнтэзийной игры не тормозит.
Подробней о Total War: WARHAMMER
Total War: Attila
Анонс Total War: Attila с одной стороны немало удивил нас, а с другой еще раз доказал, что СА идет проторенной дорожкой. Ведь Аттила по сути это сиквэл аддона "Вторжение варваров" для Рима 1. Правда на этот раз они не стали скромничать и назвали его "новой игрой". Ок, мы не будем спорить. Отдельная игра про нашествие варварских племен на цивилизации античного мира - это прекрасно. Нужно отметиьт что разработчики действительно поработали на славу. По мнению большинства игроков, Аттила действительно оказался достойным продуктом, позволившим окунутся в мрачные эпохи.
Подробней о Total War: Attila Часть 1 и Часть 2
Total War: Rome 2
Анонс Rome II Total War состоялся 2 июля и это вызвало настоящую бурю восторга нашего сообщества! Настолько люди истосковались по рукопашному бою и легионерам, что анонс сиквела восприняли как настоящее чудо и "сбычу мечт". Снова вести в бой скованные железной дисциплиной легионы, непоколебимых греческих гоплитов и македонских сариссофоров, топтать врагов слонами и забрасывать отрубленными головами - это ли не счастье! Но ведь новые игры Total War это еще и морские баталии. И тут уж будет море фана, ведь разработчики обещают активное взаимодействие между сухопутными и военно-морскими силами. Обоюдный обстрел между береговыми укреплениями и боевыми кораблями на рейде даст новую степень свободы "стратегосам" античного мира.
Подробней о Total War: Rome II