1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Тулинг для моддинга Fantasy General 1

Тема в разделе "Мастерская", создана пользователем quasilyte, 14 фев 2025.

?

Хочется модов/тулов/патчей для FG1?

  1. Да

  2. Нет

Результаты будут видны только после голосования.
  1. quasilyte

    quasilyte

    Регистрация:
    14 фев 2025
    Сообщения:
    7
    Привет!

    Я пишу инструменты для создании модификаций Fantasy General 1, так как не нашёл к игре никаких фанатских дополнений или патчей.

    Что уже готово:
    • Распаковка SHP-файлов (графика) в PNG, которые можно редачить, а потом паковать обратно в SHP
    • Распаковка некоторых DAT-файлов (карты, статы юнитов) в JSON; тоже можно редактировать и обратно конвертировать
    • Патчи в бинарник, которые могут менять некоторые особенности игры (например, делать 6 тех уровень максимальным, вместо 5)
    То есть, вполне можно себе делать следующие виды модификаций:
    • Добавлять новых юнитов
    • Редактировать существующих
    • Редактировать карты кампании и сценарии арены
    • Всяческие ребалансы
    • Рескин игры (даже интерфейсы можно перерисовать)
    • Можно добавить недостающие в игре анимации
    • Менять некоторые игровые константы (типа max tech level)
    Как базовый пример, можно создать кампанию за темную сторону, играя за нежить и орков, а врагов заменить на каких-то добрых существ (люди, магические юниты).

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

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

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

    Сам тулинг и его исходники можно найти на гитхабе (https://github.com/quasilyte/fantasy-general-tools). Сейчас все выглядит как утилика командной строки, которая может распаковать данные и упаковать их обратно, а редактирование данных - уже забота моддера (изображения в редакторе графики, JSON-файлы в текстовом, и так далее). Там же будет README и всё такое.

    Я пока не придумал, как лучше выгружать карты, поэтому сейчас это JSON с информацией о тайлах, но в идеале было бы экспортить какой-то проект Tiled/LDTk, чтобы можно было визуально редактировать эти карты. Тут наверное проще будет уже с обратной связью и/или когда я начну свою кампанию делать.

    Этот пост пока что нужен, чтобы понять, интересно ли это кому-то или нет. :D
    И может в будущем если кто-то будет искать "а как модить/реверсить FG1" будет хотя бы какая-то информация.

    И чтобы не быть совсем голословным, вот JSON-файл одного из игровых юнитов:

    Код:
    {
      "Index": 0,
      "ImageID": 5,
      "TechLevel": 0,
      "Race": "mortal",
      "Side": "good",
      "BuyPrice": 5,
      "MeleeDamage": 8,
      "MeleeDamageType": "normal",
      "SkirmishDamage": 0,
      "SkirmishDamageType": "normal",
      "MissileDamage": 0,
      "MissileDamageType": "normal",
      "SiegeDamage": 0,
      "SiegeDamageType": "normal",
      "UnitClass": "light_infantry",
      "Name": "Peasants",
      "Life": 15,
      "NumAttacks": 15,
      "Armor": 8,
      "MagicDefense": 75,
      "Speed": 4,
      "MovementType": "light_infantry",
      "SearchRange": 3,
      "Spell": "",
      "Ability1": "",
      "Ability2": "",
      "Ability3": ""
    }
     
    Последнее редактирование: 14 фев 2025
    MrFlibble, Ivorrus, Aynane и 2 другим нравится это.
  2.  
  3. quasilyte

    quasilyte

    Регистрация:
    14 фев 2025
    Сообщения:
    7
    upload_2025-2-14_17-11-0.png

    Не всегда всё идёт по плану. Возможны спорадические спавны lion dragon'ов в количестве 0 в отряде и древнерусские шифры в названиях.

    (это пример, как криво закодированные DAT-файлы могут сломать игру, но в текущей версии таких багов уже нет)
     
    mcrstar нравится это.
  4. Ivorrus

    Ivorrus

    Регистрация:
    16 апр 2008
    Сообщения:
    417
    ИМХО, главное изменение, которое требуется FG - исключение необходимости стратегии no-kill на самом высоком уровне сложности
     
  5. quasilyte

    quasilyte

    Регистрация:
    14 фев 2025
    Сообщения:
    7
    Я не настолько хардкорный игрок в FG, так как не хотел душиться сложностью (бот и так играет как-то странно и читерит, если армию игрока считает несбалансированной), поэтому не особо в курсе ситуации. no kill тактика на харде - это пробежать карту, избегая лишних сражений?

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

    Я бы лично хотел ещё опцию отключения (или ослабления) автобаланса (https://www.tapatalk.com/groups/fantasygeneral/unbalanced-army-penalty-t402.html). Только пока сложно нащупать простое воспроизведение этого сценария, чтобы можно было продуктивно проверять какие инструкции в бинарнике нужно будет запатчить, чтобы это открутить (или в вычислениях формулы поменять так, чтобы бонус был равен 0).
    --- добавлено 15 фев 2025, предыдущее сообщение размещено: 15 фев 2025 ---
    upload_2025-2-15_22-15-14.png

    Кстати, я немного экспериментировал и думал над форматом экспорта карт/сценариев и тем, как их потом редактировать.

    Можно сделать шаблон в Godot и использовать его как редактор карт. Скриптами в нем делать потом экспорт обновленной сцены, которую потом можно паковать в формат игры.
     
    MrFlibble нравится это.
  6. Ivorrus

    Ivorrus

    Регистрация:
    16 апр 2008
    Сообщения:
    417
    Не уничтожая вражеские отряды, а ослабляя их до минимального не опасного уровня.

    У компа есть лимит кол-ва юнитов на карте. Если в рамках миссии последовательно уничтожать целиком отряды, то в конце миссии комп выкупает на освободившийся лимит в последних города, обычно являющихся и целью миссии, новые юниты, которые за оставшиеся ходы выбить из города малореально
     
    MrFlibble нравится это.
  7. quasilyte

    quasilyte

    Регистрация:
    14 фев 2025
    Сообщения:
    7
    Понял, помню такое. Я удивился, что в картах есть значение под этот unit cap, но нет лимита на найм войск (например, по золоту или по количеству). Как и нет лимита на размер закупки за 1 ход. В итоге действительно бот часто создает просто неприятные ситуации.

    А есть предложение, как было бы лучше (если бы не было технических ограничений реализовать задумку)?
     
  8. Ivorrus

    Ivorrus

    Регистрация:
    16 апр 2008
    Сообщения:
    417
    Тут нужно серьёзно думать, считать и тестировать и игре. Навскидку придумать сложно.
    Первая мысль у меня была - ограничить компа по деньгам, но тогда надо считать схему получения им денег. Можно просто выдавать компу в начале миссии кол-во золота = 100 * номер континента + 10 * номер миссии на континенте.
    Т.о. для первой миссии на втором континенте, Vale of sorrow, это будет 2*100+ 1*10 = 210 золота. Этот вариант удобен тем, что его можно легко подкручивать в нужную сторону.

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

    quasilyte

    Регистрация:
    14 фев 2025
    Сообщения:
    7
    У бота есть встроенный income, который даже при минимальной сложности до 0 как будто бы не опускается. Но в теории можно попобровать это в бинарнике найти и поправить. Ограничив приток денег в 0, то будет легче - у каждой SCN (карта кампании) уже есть параметр стартового золота для компьютера.

    Кажется, нет готового способа размещать на карте опциональных юнитов, которые при определенном уровне сложности размещались бы. Триггеров на спавн юнитов и какого-то скриптинга я пока тоже не нашёл, но можно поискать информацию в PG1 и PG2, для них юзеры больше контента создали и, может быть, часть из этого будет работать и в FG. По-моему, у них очень много общего кода с этими играми, если не один и тот же движок собственный вообще.

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

    Так как я на харде не играл, мне пока трудно оценить, какие параметры там меняются и есть ли в картах SCN что-то, отвечающее за это. Но как будто бы нет. Тем более что параметров на самом деле 5 (от -2 до +2), поэтому не очень понятно, не только ли в игровой логике это применяется (то есть в самих файлах SCN ничего с этим связанного может и не быть).

    Идея с лимитом радиуса расстановки прикольная. Кажется, она тоже неплохо бы решила проблему. Интересно, насколько сложно будет это в бинарнике запатчить.
     
  10. MrFlibble

    MrFlibble

    Регистрация:
    23 мар 2008
    Сообщения:
    3.724
    @quasilyte, у меня нет конкретный предложений, но Вы однозначно благое дело делаете!

    Кстати, а неужели нет попыток переписать движок игры и портировать его? Есть пара фанатских ремейков Panzer General (PG Forever и LGeneral -- у последнего открыт код, кстати), может быть, на основе какого-то из них можно было бы построить такой движок? А вместе с инструментами по редактированию ресурсов игры (если новый движок поддерживает чтение оригинальных форматов) это бы открыло возможность для создания полноценного открытого клона этой неплохой игры.
     
    quasilyte нравится это.
  11. quasilyte

    quasilyte

    Регистрация:
    14 фев 2025
    Сообщения:
    7
    Я не нашёл таких проектов, но может недостаточно хорошо искал. Это в любом случае проект минимум на пол года или больше, поэтому сам я пока за такое взяться не готов, так как уже другой игрой занимаюсь. А вот раз в пару недель на выходных ковырять Fantasy General и пробовать прикрутить редактор карт на основе Godot - такое могу.
     
    MrFlibble нравится это.
  12. Ivorrus

    Ivorrus

    Регистрация:
    16 апр 2008
    Сообщения:
    417
    Тогда не вижу смысла этим заниматься. Проще уменьшить стартовое кол-во золота

    Вспомнил про пару ИМХО, недостатков игры:
    1. Если отряду выдать стрелковый артефакт (Magic bow или Magic crossbow), то он получает стрелковую атаку и, соответственно, возможность атаковать воздушные юниты. При этом, похоже, при расчёте атаки берется вся атака юнита, в т.ч. и melee/skirmish, что, считаю, неправильно
    2. Осадные юниты могут стрелять и по воздушным, что для меня тоже странно
     
    quasilyte нравится это.
  13. quasilyte

    quasilyte

    Регистрация:
    14 фев 2025
    Сообщения:
    7
    Насколько помню из мануала, там многофазовый бой. Сначала применяется дальняя атака (missile), потом skirmish, а затем melee. В итоге герой типа Dreggo имеет все три типа атаки и в теории может нанести больше 10 повреждений за атаку, хоть кол-во атак у него 10 (сначала 10 атак missile, затем 10 skirmish, а потом уже 10 melee).

    Насчёт осадных юнитов. Я ещё не нашёл в файлах юнитов ничего про дальность стрельбы. Как будто бы в самом бинарнике где-то есть хардкод, что if unitid == что-то, то дальность +1. Либо это пассивный бонус для любого siege engine с определённого tech level (2, если считать первую siege engine нулевой). Было бы любопытно, если бы контроль над дальностью был прямо в описании статов юнита, так можно было бы и range3 дать каким-то мощным осадным юнитам, так и range5 для дальнобойных.
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление