Сообщество Империал: Открытие новых горизонтов в моддинге M2TW - Сообщество Империал

KAST

Открытие новых горизонтов в моддинге M2TW

Легальное изменение возможностей движка M2TW
Тема создана: 19 мая 2014, 01:09 · Автор: KAST
  • 14 Страниц
  • Первая
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • Последняя »
 3 
 KAST
  • Imperial
Imperial
Варгеймщик

Дата: 19 мая 2014, 01:09

Вчера на TWC произошло... незаурядное событие. Один мододел из Италии (никнейм Zarathos) сообщил следующе. Думаю нашим мододелам будет интересно почитать. Как обычно просто даю перевод. Заранее немного извиняюсь я не очень силён в технологической части, но поверьте, вас это обрадует :D .

Imp


"Привет. Недавно я начал анализировать экзешник M2TW: Kingdoms для того, чтобы лучше понять как работает сам игровой движок, как он анализирует и как использует базу данных (как неизвестные значения и параметры влияют на игру, как временные данные сохраняются в памяти) и как всё этого приводит к разнообразным ошибкам, проблемам и неправильному поведению ИИ. Это огромная задача, которая мало по малу может привести к значительным результатам, и обогатит знания всего сообщества модеров.

Затем, внезапно, я понял, что если я хочу продолжать работу в этом направлении (делать правки в движке игры или модифицировать его алгоритмы), то я должен найти способ сделать это без нарушения игровой лицензии… и я нашёл этот способ; редактирование памяти. Сейчас объясню: факт в том, что изменение экзешника игры строго запрещено лицензионным соглашением СА, как сказано:

Цитата


Вы соглашаетесь использовать Программу только в соответствии с условиями данного Соглашения и ОБЯЗУЕТЕСЬ:
….
е) не выполнять инженерный анализ, восстановление исходного кода, модификацию, обратную компиляцию или дизассемблирование Программы, как в целом, так и по частям, кроме случаев, описанных в пункте "к";

и) не создавать данные или программы, которые повторяют содержание или функциональность Программы, кроме случаев, описанных в пункте "к";


Те же правила применяются почти для всего программного обеспечения, касающегося закрытого кода, но очень трудно понять, о каких именно ограничениях идёт речь. Например, с моей точки зрения, заявления «не выполнять инженерный анализ» и «восстановление исходного кода» должны были зарубить весь моддинг на корню, поскольку открытие структуры бинарных файлов (mesh, текстуры и пр.) абсолютно попадают под инженерный анализ. Тоже касается заявления «не создавать данные или программы, которые повторяют содержание или функциональность Программы», поскольку отредактированные файлы могут рассматриваться, как программы, повторяющие уже существующие официальные приложения. Например, созданные на форумах различные лаунчеры, полностью являются исполняемыми программами, повторяющими оригинальные приложения от СА. Не так ли?

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

Но вот здесь на сцену и выходит редактирование памяти: первое, что я узнал, когда начал работать с декомпиляторами, отладчиками и прочим подобным софтом, это то, что хоть экзешник нельзя изменять, но на 100% законно для пользователя редактировать свою собственную память без каких-либо последствий. Редактирование памяти – это «серая зона», в которой, в настоящее время, не существует никаких реальных правил, поскольку всё, что записывается в виртуальную память вашего компьютера, становится вашей собственностью. Это ваша память, вы её купили, и вы можете делать с ней всё, что хотите.

Когда исполняемые файлы запущены, они загружаются и отображаются в памяти вашего компьютера, и там, они могут быть отредактированы без каких-либо ограничений закона и лицензионного соглашения. Всё правильно, и единственный путь по которому можно следовать – это обход ограничений лицензионного соглашения и игровых лимитов. Но как? Используя самопальный лаунчер/патч, который создаёт полностью игровой процесс, загружаемый в виртуальную память, где можно будет изменять и модифицировать небольшие части с той целью, чтобы изменить его и далее продолжать игру. Ниже примерный вид такого лаунчера:

Imp


Приведённое приложение было создано для моего персонального пользования и нигде не распространялось. Администрация форума (TWC) написала следующее по этому поводу:

Цитата

Ваш вопрос был рассмотрен и решение следующее:

GrnEyedDvl (владелец TWC) и Jack Lusted (член СА) подтверждают, что вы можете продолжать свою работу. Так как экзешник не изменён, а изменены только значения и параметры в виртуальной памяти, то всё ОК.

Будут вопросы, пишите. Удачи


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

Вот список, чего пока я смог достичь:

- Изменение EDU лимита юнитов от 500 до 1000 (ещё предстоит сделать некоторые корректировки распределения памяти);
- Изменение лимита солдат от 4/100 до 1/150 (если у меня получится найти мультипликатор, используемый в опциях «unit_size», то мы наконец сможем получит нормальный юнит с одним солдатом);
- Расширил диапазон задействованной памяти в 64-разрядных системах, как минимум с 6 ГБ; (поддержка нескольких ядер практически невозможна)
- Оптимизация игрового движка на одноядерных ПК.

Всё, что мне нужно – это помощь и сотрудничество. Анализ исполняемых файлов очень сложен и это очень трудоёмкий процесс. Для всего прочего мне нужны знания архитектуры софта и пр. Любой, кто силён в использовании (IDA Pro, OllyDBG или подобных шестнадцатиричных редакторов) прошу помочь.

Планы на будущее:
- Завершение увеличения лимитов EDU
- Увеличение скрытых ресурсов с 64 до 128
- Фиксы вылетов на рабочий стол
- Улучшение управления картой высот
- Увеличение лимита провинций от 200 до 300 (сам размер карты возможно увеличить не удастся)
И много много прочего...

Ещё раз повторюсь. Всё, кроме игрового рендеринга и поддержки нескольких ядер возможно, нужно только желание... :008:

Ссылка на TWC: Для просмотра ссылки Зарегистрируйтесь
     Dart Kovu Nazgul
    • Imperial
    Imperial
    Гранд-мофф

    Дата: 24 декабря 2018, 17:18

    Kosss

    Как получить потрясающую графику в Меди

    Где то была тема по улучшению графики в модах, но не могу вспомнить где :038:
       bitterhowl
      • Imperial
      Imperial
      El Compilator

      Дата: 02 февраля 2019, 14:45

      Оффтоп (контент вне темы)
         bitterhowl
        • Imperial
        Imperial
        El Compilator

        Дата: 09 февраля 2019, 20:34

        По заявленной в заголовке теме.

        Вот файл из скрипта Германикуса Для просмотра ссылки Зарегистрируйтесь

        Это переключатель настроек боевки, он случайным образом через определенные небольшие промежутки времени перезаписывает.xml файлы (их 5 вариантов идет у Германикуса), отвечающие за параметры боевки на тактике (melee-hit-rate, поведение отрядов в городе, дистанция начала атаки и т.д.) Скрипт работает независимо от хода работы kingdoms.exe, запуск его прописан в батник мода, на который установлен Германикус.

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

        Дело за малым - нужен программист способный это реализовать.
           bitterhowl
          • Imperial
          Imperial
          El Compilator

          Дата: 10 февраля 2019, 15:31

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

          Осталось найти программиста знакомого с этим синтаксисом.
             Edmond
            • Imperial
            Imperial
            Белый маг

            Дата: 10 февраля 2019, 15:43

            Гм а я тебе вчера не то же самое сказал?)

            - - - Сообщение автоматически склеено - - -

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

            Таким образом получается когда игра запущена и активна ничего в лог не выводится... В общем нужно исследовать вопрос прежде чем что то писать)
               bitterhowl
              • Imperial
              Imperial
              El Compilator

              Дата: 10 февраля 2019, 16:41

              Я стал прикидывать - нужно ли это вообще, куда такое можно использовать. Например - дополнить BGR, когда армия без фуража и в долгом походе вступает в битву - повысить melee-hit-rate, т.к. изможденные люди хуже сражаются и быстрее получают урон. Либо - на начало хода фракции монголов повышать missile accuracy для конных стрелков.

              Ну и формации по фракциям разделить. Надо только выяснить мне - перестроение в начале битвы в ванильную формацию это из-за Германикуса или движок виноват. Если движок то смысла поавить формации нет.
                 bitterhowl
                • Imperial
                Imperial
                El Compilator

                Дата: 11 февраля 2019, 04:22

                Хорошие новости - судя по всему на перестроение формации влияет Германикус. То есть без него юнит атакует в изначально заданной формации. Соответственно, технически есть смысл делать разные формации для разных фракций.
                   bitterhowl
                  • Imperial
                  Imperial
                  El Compilator

                  Дата: 11 февраля 2019, 21:23

                  Проверил сегодня SkynetAI - меньше влияет на формацию, т.е. часть юнитов побежало меня атаковать, часть отошла и наблюдала. Я торопился, себе поставил 5 юнитов а компу дал неограниченные деньги и он сам выбрал себе на 100к армию. Завтра поставлю равные армии, посмотрю как будет.

                  Видимо, придется отказаться мне от Германикуса, ну а в ЕВ2 и так SkynetAI установлен. Так что возможно есть вариант сабмода с формациями по фракциям для ЕВ2.
                     vadim1
                    • Imperial
                    Imperial
                    Форумчанин

                    Дата: 12 февраля 2019, 12:12

                    Добавлю свои 5 копеек, чтобы народ повторно на грабли не наступал...
                    По поводу формаций в Меде...
                    формации ИИ описаны в файле descr_formations_ai и там можно как Риме 1 прописать их целую кучу с разными условиями для каждой фракции и тд. И всё это работает при начальной расстановки армий игрока и ИИ на поле боя...
                    А дальше начинается следующее - армия ИИ начинает перестраиваться... и перестраивается она в формацию которая прописана
                    в файле config_ai_battle в строчках <attack-battlegroup>formation, в ваниле это формация под названием ai_triple_missiles_in_front, можно сменить эту формацию на другую из descr_formations_ai и войска ИИ будут перестраиваться в неё. Понятно что эти перестроения никак не идут на пользу ИИ так как он часто не закончив перестроения начинает атаковать дружной гурьбой вместо формации. Так что лучше ему сразу указать во что ему надлежит построится. Это не отменяет некоторых перестроений ИИ но они уже не столь значительны. Проблема в том что прописать в файле config_ai_battle можно только четыре вида формаций и их смена зависит только от уровня сложности игры и никак не зависит от фракции... те по сути мы имеем возможность использовать только одну- две нормальные формации в игре для использования ИИ. Отсюда следует что наша единственная формация должна удовлетворять требованиям всех фракций чего впрочем можно достичь варьируя параметры заполнения блоков - в результате можно получить что для армий разного состава построение войск будет радикально различаться..
                    Если вдруг ИИ начинает перестраиваться не в ту формацию что вы прописали в config_ai_battle а в ванильный вариант - это означает что файл config_ai_battle не работает и движок подменяет его на ванильный и подгружает формацию которая в нём прописана - те ту самую ai_triple_missiles_in_front ! это позволяет кстати проверить работает ли файл config_ai_battle
                    -если вы указали в нём другую фомацию а ИИ упроно перестраивается в ai_triple_missiles_in_front то файл нерабочий...
                       bitterhowl
                      • Imperial
                      Imperial
                      El Compilator

                      Дата: 12 февраля 2019, 12:53

                      Сегодня тестировал полные армии, обрезал Скайнет, оставил только часть, где юниты маркируются и формируются в группу MainArmy (игрок) и EnemyUnits (ИИ). Задал скриптом формацию, отличаюшуюся от config_ai_battle, и он ее построил на начало битвы. Потом 2 варианта - есть у меня условно агрессивный config_ai_battle, при нем ИИ не меняя формацию пошел на меня. Второй конфиг,осторожный - там застрельщики бегут на меня, а остальные отходят и ждут. Но это 4 теста,мало. И всегда ли хорошо агрессивный ИИ, который сходу идет атаковать.

                      В итоге имеем - похоже, есть возможность назначать формации по скрипту без ухищрений с копированием файлов через внешние программы-свитчеры. Но это не точно.
                        • 14 Страниц
                        • Первая
                        • 6
                        • 7
                        • 8
                        • 9
                        • 10
                        • 11
                        • 12
                        • Последняя »
                         Похожие Темы
                        КТрейлеры новых сериалов и новых сезонов
                        Только трейлеры
                        Автор D Dr.Schmeisser
                        Обновление 12 апреля 2024, 02:08
                        ЛОткрытие всех фракций и 2-3-4-6-12 ходов в год
                        Открытие всех фракций и 2-3-4-6-12 ходов в год
                        Автор n nia
                        Обновление 16 февраля 2024, 10:33
                        IОТКРЫТИЕ ГОДА - Imperial Game Awards 2023
                        Голосование
                        Автор D Dr.Schmeisser
                        Обновление 31 декабря 2023, 11:55
                        Воспользуйтесь одной из соц-сетей для входа
                        РегистрацияВход на форум 
                        Сообщество ИмпериалMedieval 2: Total War Моды Medieval 2 Total War: Kingdoms Мастерская M2:TW Обратная Связь
                        Стиль:Language: 
                        «Империал» · Условия · Ответственность · Визитка · 19 апр 2024, 09:00 · Зеркала: Org, Site, Online · Счётчики