Разработка редактора карт и кампаний для RTW (Remastered)/M2TW
(пока что есть рабочий редактор торговых ресурсов)
Предыстория
Собственно идея у меня возникла ещё давным-давно, я большой любитель автоматизировать разные рутинные действия на компьютере, пусть в итоге на написание программы по автоматизации будет потрачено в разы больше времени, чем если просто выполнить сами рутинные действия вручную. Правда в большинстве случаев это не слишком сложные проекты, а слишком сложные во многих случаях так и не получались и забрасывались с откладыванием в долгий ящик. Моддингом RTW последний раз я занимался осенью 2018 года, тогда собственно я усовершенствовал под себя старый-древний мод Amazon: Total War v3.0c, в числе прочего создавая дополнительные кампании с изменённой картой. На карту я добавил сначала три провинции в Сахаре, чтобы сделать оседлыми фракцию амазонок-Горгон, затем испытал себя в рисовании карты и нарисовал дополнительный континент Атлантиду между Испанией и Ирландией, разбив её на 20 провинций. Пришлось повозиться в числе прочего с размещением в этих провинциях торговых ресурсов и ресурс рабов - для каждого ресурса нужно указывать в файле descr_strat.txt координаты, к тому же вертикальная координата отсчитывается снизу вверх, а не как в графических редакторах сверху вниз. Поэтому взял карту tga, преобразовал её в понятный для Paint формат, отразил по вертикали и дальше подводил курсор в Paint к нужной точке и записывал её координаты. Мне сразу захотелось такие операции автоматизировать, но уже для Атлантиды я сделал всё вручную. А потом на месте Скифии разбил карту на провинции, соответствующие областям современной Украины. Получилось 26 новых провинций, для которых тоже нужно размещать торговые ресурсы и ресурс рабов. Тут я приступил к написанию программы, которая бы это автоматизировала. Программа получилась весьма сложной, в ней я забил в память структуру, которая хранит как карту регионов, так карту высот (которая содержит вдвое больше плюс один пиксель по горизонтали и по вертикали) и эти пиксели должны соответствовать друг другу. Ну и хранение разных слоёв, так как карты состоят из слоёв, например карта разбивки по регионам и карта рек. Выведение на экран я освоил пока только для карты регионов и рек, которые программа считывает из *.tga-файлов. А дальше приступил к работе над торговыми ресурсами, чтобы можно было как заставить программу автоматически добавить по одному ресурсу рабов, а также указанное количество торговых ресурсов в выбранных регионах, так и вручную попиксельное размещение ресурсов на карте. Дальше я планировал, что на основе этой программы можно писать полнофункциональный редактор карт/кампаний с функциями автоматической генерации контента, продумывать который подробно бывает лень, ну или просто нужно быстрое тестирование. Но меня хватило только на рабочий редактор торговых ресурсов, ресурсы на карте Украины я уже добавил автоматически с помощью программы, а затем как-то на время моддинг RTW забросил, переключившись на другие интересы. Оказывается, с тех пор прошло аж два с половиной года, время течёт быстро. Вчера-позавчера я думал, что прошёл год, но то я ошибся, по ошибке посмотрев дату создания файлов, а нужно было смотреть дату изменения файлов, которая сентябрь 2018 года.
Сейчас на возвращение меня к моддингу RTW подтолкнул выход ремастера. Хотелось бы написать всякие простые новые моды, суть которых состоит в переносе готовых фракций с готовой линейкой зданий/юнитов на новую карту. Для этого хотелось бы иметь инструмент, который позволяет автоматически создавать на карте персонажей и войска, либо же чтоб можно было конструировать этих персонажей войска с помощью мышки, выбирая из готовых вариантов в редакторе кампаний, а не прописывать персонажей/войска вручную в текстовике. И уже только имея программу с функционалом, позволяющим генерировать рандомных персонажей/войска на карте приступать к созданию модов. Без наличия этой программы можно было бы сделать разве что адаптацию мода Amazon: Total War v3.0c под ремастер при условии появления нового компа, на котором запустится ремастер. Очень расстраивает пререндерная карта в ремастере и то, что Фералы не спешат выпускать инструмент для её генерации. Увы, это может почти полностью убить и похоронить моддинг под Ремастер а вместе с ним и интерес к ремастеру как к игре ещё до того, как Фералы выпустят этот инструмент, если выпустят его вообще. Создавать программу новый комп мне не нужен и тестировать можно на старом оригинальном RTW, не забывая вставлять фишки для RTW Remastered и для M2TW.
Основная идея программы
В первую очередь программа должна помогать создавать/редактировать кампании, то есть заниматься редактированием/генерацией контента, хранящегося в папке "data\world\maps\" - в папке base и в папке отдельной кампании (главная кампания, например "data\world\maps\campaign\imperial_campaign\", и дополнительные кампании, хранящиеся по адресу "data\world\maps\campaign\custom\" каждая в своей папке). Нужен генератор кампании, который мог бы сгенерировать практически с нуля готовый рабочий descr_strat.txt на основе базовых файлов мода вне папки "data\world\maps\", карты и разбивки по регионам. Это как здорово помогало бы в тестировании базовых файлов мода или же карты, так и позволяло ленивым фактически генерировать играбельную кампанию, просто взяв фракции, линейку зданий/юнитов из одного мода, а карту из другого мода. В том числе нужно, чтобы программа могла автоматически рандомно распределить готовые провинции между фракциями, задав процент провинций, которые будут принадлежать мятежникам. Также нужно, чтобы программа помогала мододелу быстро размещать на карте нужные элементы не путём редактирования текстовиком, а путём выбора позиции на карте и выбора, что хотим там разместить из разных панелек и списочков. То есть чтоб это был в одном пакете и редактор и генератор контента. И чтоб программа уже брала на себя проверку разных ограничительных условий - чтобы имя персонажа бралось только готовое из списка для фракции, чтоб в descr_strat.txt не дублировалось одно и то же имя для двух персонажей, чтоб у персонажа не было больше 4 детей (дурацкое ограничение движка игры, особенно с учётом того, что "сын" может быть старше "отца"), чтоб войска размещались в доступной местности, а не в море или в горах и т.д. Чем больше спорных моментов будет проверяться, тем легче мододелу будет концентрироваться именно на создании контента, а не на валидации его правильности.
Дальнейшее наращивание функционала
Должна быть подробная настройка того, как именно генерировать контент для кампании, в частности файл descr_strat.txt и descr_mercenaries.txt. Например то, как много войск размещать на карте, насколько они должны быть прокачаны, стоит ли провинциям с малым количеством провинций на старте давать более выгодные условия в плане прокачки войск. Стоит ли размещать на карте элитные/позние войска или только базовые и какой процент элитных/поздних войск использовать. Возможность отдельным фракциям на старте сделать упор скажем на кавалерию или на пехоту.
Редактирование карты следующий момент. Нужно, чтобы программа умела накладывать и выводить на экран одновременно карту высот и карту регионов. Также чтобы можно было выводить или отключать для отображения отдельные слои карты. Например, реки один слой, климат другой слой, торговые ресурсы третий слой, войска на карте ещё один слой. Чтобы можно было подредактировать разбивку по регионах с оглядкой на карту высот. Ну и в целом чтобы карта регионов редактировалась программой. Для этого будет некоторые элементы, подобные простейшему редактору Paint из состава Windows. Например, выбор цвета типа пипеткой, попиксельное рисование типа карандашом, заливка указанным цветом замкнутой области. Ну и прямо в программе мы выбираем новый цвет (в том числе рандомный), рисуем новый регион, а дальше вводим название региона, название города, русскую локализацию этих названий, а программа сама добавляет эти названия/локализации во все нужные файлы мода (descr_regions.txt, descr_strat.txt, descr_mercenaries.txt, imperial_campaign_regions_and_settlement_names.txt). Ну или так же легко одним кликом переименовываем регион/город. По тому же принципу рисовать другие слои, например реки и мосты или климатические зоны.
Также помимо редактирования кампании в программу полезно будет внедрить модули по редактированию базовых файлов, хранящихся вне папки data\world\maps\. Например, у меня уже есть готовая программа, помогающая мне создавать список имён. Я ввожу только список имён на украинском или на русском языке, а программа на основе этого создаёт фрагмент файла локализации data\text\names.txt и фрагмент файла data\descr_names.txt, создавая при этом названия на латиннице путём транслитерации (надо наверное эту прогу выложить на форум). Можно внедрить функционал этой малой программы в большую. Ну и например мы пытаемся вручную создать персонажа с именем, которого нет в списке имён для фракции. Программа предупреждает об этом и спрашивает, добавить ли новое имя в список имён для фракции. Если мы отвечаем "нет" то программа не даёт такого персонажа создать.
Обязательно нужно написать хоть какой-нибудь парсер файла data\export_descr_buildings.txt. Это будет очень сложно, но я уже продумывал как можно написать такой парсер, по идее реально. Если не для автоматического редактирования этого файла, так хотя бы для того, чтобы программа могла при автоматической генерации descr_strat.txt сама размещать стартовый набор зданий в городах именно в соответствии с линейкой строительства для данного мода, некоторые моменты возможно придётся программе вручную подсказывать, чтобы генерация проходила более разумно.
Также было хорошо, чтоб программа позволяла клонировать мод, дав новое имя папке с модом и автоматически изменив его во всех файлах мода, где упоминается относительный путь к этой папке.
Что очень важно, это кнопка "отменить"/"вернуть" (Ctrl+Z). Я решил, что нужно с самого начала писать программу так, чтобы она не просто вносила изменения, а запоминала эти изменения и можно было последние неудачные действия отменить. Это будет сложнее, чем просто писать программу без этого функционала, зато результат того стоит. Можно будет в настройках изменить, сколько последних действий должна помнить программа, чтобы имелась возможность отката. Некоторые действия, например заливка цветом на карте, будут требовать много места в памяти для хранения в истории.
Так же как я делал программы Для просмотра ссылки Зарегистрируйтесь нужно сделать, чтобы программа редактор/генератор кампаний/карт умела работать с тремя играми: Rome: Total War Remastered, Rome: Total War (старая оригинальная) и Medieval II: Total War учитывая индивидуальные особенности/отличия этих игр. Точно так же программа будет поддерживать три языка интерфейса: русский, украинский и английский с легкой возможностью перевода, что позволит ей распространиться за пределами постсоветского пространства. (Сложный движок локализации и многоязычности уже написан мною за последний месяц именно с расчётом, что будет использован в более серьёзных программах). Точно так же нужно будет документировать как работать с программой в справке, чтоб не получилось, что некоторый функционал я добавлю, а пользоваться этими функциями кроме меня никто не будет, так как просто не будет знать о них.
Что программа может дать для комьюнити моддеров RTW/M2TW
Программа должна значительно облегчить рутинные действия путём того, что их можно быдет выполнять не правкой текстовиков, а с помощью мышки, с внесением взаимосвязанных изменений во все нужные файлы одновременно. Также значительно облегчит жизнь путем того, что возьмет на себя проверку правильности и не будет давать сделать то, что не даст работать моду. Также это облегчит процесс моддинга для новичков, они смогут быстро и наглядно вносить изменения и не переживать за то, что появятся ошибки. Дополнительный эффект это даст за счёт перевода интерфейса программы и справки на английский язык.
Как это всё должно работать. Структура.
Сначала указываем первоисточник, откуда программа будет брать исходные файлы, но не будет там ничего изменять.
Указываем папку игры и если нужно, то папку с распакованными ресурсами игры.
Указываем папку дополнения и папку с распакованными ресурсами дополнения, если нужно.
Указываем папку мода и то, которое из дополнений используется (например Barbarian Invasion, Alexander).
Указываем рабочую папку, в которой программа будет хранить изменённый мод.
По ходу работы программы можно будет выбрать в выпадающем списке с какой именно кампанией мода мы работаем в данный момент или же редактируем общую для всех кампаний папку data\world\maps\base\, а также создать новую кампанию.
При закрытии программы или при нажатии кнопки "Сохранить" все произведённые изменения будут сохраняться в файлы рабочей папки. Можно будет не закрывая мою программу запустить при этом игру, указав ей в качестве мода рабочую папку, которую изменяет программа, чтобы сразу тестировать "не отходя от кассы".
Можно будет откатить выбранные файлы к исходным версиям из папки мода-источника или игры/дополнения.
Что есть на текущий момент. Рабочая программа по редактированию торговых ресурсов.
Чтоб вы видели, что это всё не голословные заявления, пока что выкладываю к вашему вниманию ту программу, которая у меня есть в наличии. Она умеет добавлять на карту торговые ресурсы и ресурсы рабов, слонов и верблюдов как в автоматическом режиме, так путём указания места на карте для каждого нового ресурса. Удалять добавленный ресурс пока не умеет. Текущая версия программы выводит на экран карту разбивки по регионам с наложенной поверх картой рек. Далее на эту карту наносятся ресурсы, которые считываются из файла descr_strat.txt.
Чтобы начать работать с текущей версией программы, положите рядом с *.exe-файлом программы карту разбивки по регионам map_regions.tga, карту с реками map_features.tga, файл с перечнем регионов descr_regions.txt и основной файл кампании файл descr_strat.txt. Эти 4 файла нужно взять из мода, с которым вы в данный момент работаете, и они не должны противоречить друг другу. Также рядом с *.exe-файлом программы всегда должны лежать файл resources.txt, откуда программа считывает какие вообще типы ресурсов использует игра RTW/M2TW, и папка images\ с иконками инструментов правой панели, в том числе с иконками ресурсов в папке images\resources\. В архиве, который я предлагаю для скачивания, рядом *.exe-файлами программы лежат файлы из изменённого мною мода Amazon: Total War, в который добавлена Атлантида между Испанией и Ирландией (уже с размещёнными на карте торговыми ресурсами и ресурсом "рабы") и провинции областей современной Украины вместо провинций Скифии (для них торговые ресурсы и ресурс "рабы"), также добавлены три провинции в Сахаре и провинция для острова Лесбос. При желании вы можете заменить эти файлы на файлы из другого мода и использовать мой инструментарий для добавления ресурсов на карту. Ещё рядом с *.exe-файлом программа автоматически создаёт файл Options.ini, в котором хранит настройки. *.exe-файлов вложено две штуки - 32- и 64-разрядные версии, они равносильны по функционалу.
Предлагаю инструкцию по использованию программы на примере добавления ресурсов в провинции областей Украины изменённого мною мода со скриншотами.
Скачиваем, распаковываем полностью архив и запускаем программу. Увидим карту регионов с наложенными поверх реками, а также чёрными квадратиками городов, белыми квадратиками портов и цветными квадратиками ресурсов. Каждый квадратик соответствует пикселю на карте map_regions.tga и клетке, на которой может размещаться город, порт, ресурс, ну и в игре армия или флот. Можно менять масштаб вывода на экран карты колёсиком мыши либо с помощью счётчика "Масштаб:". Сначала меняется масштаб, а только потом можно выбрать нужную область карты с помощью полос прокрутки. При любом изменении масштаба, к сожалению, прокрутка сбрасывается в левый верхний угол.
Выберем масштаб и прокрутим карту так, чтобы вывести на экран области Украины. Как видим, ресурсов в этих провинциях, которые раньше были Скифией, очень мало для такого большого количества провинций:
Теперь переходим на вкладку "Ресурсы". Здесь в левой колонке отображается список регионов с цветом региона и названием провинции и города в нём. Если выбрать мышью регион в списке, то в центральной колонке отобразится подробная информация по этому региону, взятая из descr_regions.txt. В числе прочего отображается внизу строка с перечнем ресурсов из descr_regions.txt, для каждого ресурса выводится число, сколько раз он размещён на карте в этой провинции, а также если на карте в этой провинции он есть, то выводятся координаты клеток, на которых он размещен. Флажками слева внизу выбирается, какая именно информация при этом выводится, к сожалению пока забыл дать флажкам более осмысленные названия. Можно выбирать несколько регионов сразу используя нажатия левой кнопки мыши при зажатой клавише Shift или Ctrl. Или выбрать пункт "Все регионы", чтобы отобразить информацию сразу по всем регионам. Выберем регионы, которые соответствуют новосозданным провинциям областей Украины в границах 1991-2013 гг. Для этого сначала нажмем левой кнопкой мыши на самом верхнем в списке регионе из новосозданных с номером 158 под названием "Krym|Simferopol", затем зажмём на клавиатуре клавишу Shift и нажмём самый нижний в списке регион из новосозданных с номером 183 и названием "Sevastopolshchyna|Sevastopol". Будут выделены все 26 провинций/регионов/областей:
Теперь нажмём кнопку "Создать отсутствующие на карте ресурсы". В тех провинциях из выделенных мышью, на территории которых нет ресурса "рабы", этот ресурс будет добавлен в произвольной клетке провинции. Как видим, после нажатия кнопки в регионах Vinnychyna, Volyn и Dnipropetrovshchyna количество ресурсов "рабы" изменилось с 0 до 1 и появились X,Y координаты этого ресурса на карте. В провинции Krym же ничего не изменилось, так как там и так ресурс "рабы" находился сразу в трёх разных клетках (изначально Крымский полуостров был поделен на три провинции в первоначальной версии мода от SubRosa). Внешний вид вкладки после нажатия этой кнопки:
Теперь в автоматическом режиме попробуем добавить указанное количество торговых ресурсов для каждой выбранной провинции. После кнопки "Добавить" находится счётчик сколько именно ресурсов добавлять в каждую выбранную мышью провинцию. Флажок "уникальных" отвечает за то, чтоб при этом рандом не добавлял на разные клетки два и более экземпляра одного и того же ресурса, например два железа или два леса. Флажок "кроме шелка" отвечает за то, будет ли присутствовать шелк в перечне ресурсов из которого рандомно программа будет выбирать тип ресурса. Поскольку у нас Украина, то на её территории шелк не добывают и этот флажок желательно установить. Ставим количество ресурсов шесть и нажимаем кнопку "Добавить":
Переходим на вкладку "Карта" и любуемся как на карте появилось куча новых ресурсов:
Также можно не создавать ресурсы автоматически, а добавлять их на карту в ручную. Для этого на вкладке "Карта" выбираем в правой панели нужный ресурс, а затем подводим курсор к нужной клетке на карте и нажимаем левую кнопку мыши. Ресурс будет добавлен именно в координаты данной клетки.
Теперь нужно сохранить полученный результат. Сама программа пока что в никакие файлы результат своей работы не пишет. Она умеет только вывести в текстовое поле, оттуда нужно скопировать и вставить в текстовом редакторе в нужный файл. Нажимаем слева внизу кнопку "Ресурсы...". Будет выведено на экран новое окно с двумя колонками. В левой колонке отображается содержимое файла descr_regions.txt, каким он должен стать после редактирования. В правой колонке отображается список ресурсов, каким он должен стать в верхней части файла descr_strat.txt, обратите внимание, что ресурсы разделены по провинциям, так легко понимать куда относится тот или иной ресурс, а то в файле descr_strat.txt они обычно скинуты в общую кучу и фиг разберёшь что к чему, если не наводить курсор на карту и не смотреть, где находятся координаты ресурса.
Ставим курсор в левой колонке, нажимаем Ctrl+A, чтобы выделить весь текст, затем копируем текст в буфер (правой кнопкой по тексту и нажать в появившемся меню кнопку "Копировать" или же нажать комбинацию Ctrl+C или Ctrl+Insert).
Теперь переходим в текстовый редактор, вставляем текст из буфера и сохраняем это как новый descr_regions.txt. Далее переходим в моей программе в правую колонку, снова жмём Ctrl+A для выделения всего текста и снова копируем его в буфер. Теперь открываем descr_strat.txt в текстовом редакторе и заменяем в нём перечень ресурсов, который там был, на новый список ресурсов в буфере, сохраняем изменённый descr_strat.txt.
Теперь мы добавили новые ресурсы на карту в наш мод.
Скачать программу (самый ранний вариант): Для просмотра ссылки Зарегистрируйтесь, Для просмотра ссылки Зарегистрируйтесь
Программа по данной ссылке специально для истории не будет редактироваться, а будет со временем выложена новая ссылка по которой программа будет периодически обновляться.
Мои планы на ближайшее будущее
В ближайшие недели мне нужно будет занятся написанием сложной программы по работе, поэтому моддингом и программированием по игре заниматься я не буду. Возможно начну читать серию книг по Дюне Фрэнка Герберта и последователей с выписыванием в блокнот инфы для будущего мода по Дюне. Также буду потихоньку обдумывать концепцию написания данной программы редактора/генератора кампаний/карт, так как лучше изначально хорошо спроектировать, чем потом полностью переделывать. При этом буду общаться с вами, если вы мне предложите что-то по данной программе. Потом я хочу приступить к написанию данной программы. Для начала мне нужен хотя бы модуль, который будет размещать персонажей войска по карте. Ну и естественно весь скелет придётся сразу делать весьма сложный. Добавление функционала буду делать помодульно частями. Таким образом сразу будет виден некоторый результат и не нужно будет подолгу трудиться не видя отдачи. И легче будет отследить ошибки. Когда будет этот базовый функционал, можно будет приступить к созданию какого-нибудь мода из описанных мною в этих темах: Для просмотра ссылки Зарегистрируйтесь и Для просмотра ссылки Зарегистрируйтесь. Нужно будет сделать новую карту, а там с помощью программы можно будет легко и быстро наполнить мод ресурсами, персонажами и войсками. Всё это можно делать и без покупки нового компа и возможности запускать ремастер игры. Можно моддить под старый оригинальный Рим, а потом когда-нибудь перенести разработки в Ремастер. Тем более всё равно сейчас нет инструментария для создания пререндерной карты. Если инструментарий не появится, то так и останется всё в виде модов под старый Перворим. А с покупкой компа возможно возникнут финансовые сложности и придётся отложить это дело не на через полгода, а скажем на через год. Программу буду писать, чтоб она умела работать и с ремастером тоже, просматривать файлы ремастера, не запуская саму игру, я могу. Ну и вы мне подскажете, если программа будет делать с Ремастером что-то не то.
Просьба подбрасывать идеи
Пока что я создал эту тему не просто чтоб покрасоваться/похвастаться, а чтобы собирать ваши идеи по поводу того какой функционал вы хотели бы видеть в программе. Генерировать пререндерную карту для Ремастера, естественно, не просите, это могут сделать только Фералы. И всё что касается 3D-моделирования в целом и редактирования 2D-текстур тоже мимо меня. А вот какие рутинные действия при моддинге вы выполняете с высоким шансом допустить ошибку, чтобы можно было их автоматизировать, это было бы интересно знать. В первую очередь будет функционал по добавлению новой кампании на основе готового скелета мода, ну а потом можно будет заняться и изменением общих файлов мода. Ну и что можете посоветовать насчёт интерфейса программы, чтобы выполнять определённые действия было максимально удобно. Лучше заранее всё хорошо спроектировать и потом частями делать, чем потом отдельные моменты полностью переделывать. Жду ваших идей, предложений и пожеланий.
(пока что есть рабочий редактор торговых ресурсов)
Предыстория
Собственно идея у меня возникла ещё давным-давно, я большой любитель автоматизировать разные рутинные действия на компьютере, пусть в итоге на написание программы по автоматизации будет потрачено в разы больше времени, чем если просто выполнить сами рутинные действия вручную. Правда в большинстве случаев это не слишком сложные проекты, а слишком сложные во многих случаях так и не получались и забрасывались с откладыванием в долгий ящик. Моддингом RTW последний раз я занимался осенью 2018 года, тогда собственно я усовершенствовал под себя старый-древний мод Amazon: Total War v3.0c, в числе прочего создавая дополнительные кампании с изменённой картой. На карту я добавил сначала три провинции в Сахаре, чтобы сделать оседлыми фракцию амазонок-Горгон, затем испытал себя в рисовании карты и нарисовал дополнительный континент Атлантиду между Испанией и Ирландией, разбив её на 20 провинций. Пришлось повозиться в числе прочего с размещением в этих провинциях торговых ресурсов и ресурс рабов - для каждого ресурса нужно указывать в файле descr_strat.txt координаты, к тому же вертикальная координата отсчитывается снизу вверх, а не как в графических редакторах сверху вниз. Поэтому взял карту tga, преобразовал её в понятный для Paint формат, отразил по вертикали и дальше подводил курсор в Paint к нужной точке и записывал её координаты. Мне сразу захотелось такие операции автоматизировать, но уже для Атлантиды я сделал всё вручную. А потом на месте Скифии разбил карту на провинции, соответствующие областям современной Украины. Получилось 26 новых провинций, для которых тоже нужно размещать торговые ресурсы и ресурс рабов. Тут я приступил к написанию программы, которая бы это автоматизировала. Программа получилась весьма сложной, в ней я забил в память структуру, которая хранит как карту регионов, так карту высот (которая содержит вдвое больше плюс один пиксель по горизонтали и по вертикали) и эти пиксели должны соответствовать друг другу. Ну и хранение разных слоёв, так как карты состоят из слоёв, например карта разбивки по регионам и карта рек. Выведение на экран я освоил пока только для карты регионов и рек, которые программа считывает из *.tga-файлов. А дальше приступил к работе над торговыми ресурсами, чтобы можно было как заставить программу автоматически добавить по одному ресурсу рабов, а также указанное количество торговых ресурсов в выбранных регионах, так и вручную попиксельное размещение ресурсов на карте. Дальше я планировал, что на основе этой программы можно писать полнофункциональный редактор карт/кампаний с функциями автоматической генерации контента, продумывать который подробно бывает лень, ну или просто нужно быстрое тестирование. Но меня хватило только на рабочий редактор торговых ресурсов, ресурсы на карте Украины я уже добавил автоматически с помощью программы, а затем как-то на время моддинг RTW забросил, переключившись на другие интересы. Оказывается, с тех пор прошло аж два с половиной года, время течёт быстро. Вчера-позавчера я думал, что прошёл год, но то я ошибся, по ошибке посмотрев дату создания файлов, а нужно было смотреть дату изменения файлов, которая сентябрь 2018 года.
Сейчас на возвращение меня к моддингу RTW подтолкнул выход ремастера. Хотелось бы написать всякие простые новые моды, суть которых состоит в переносе готовых фракций с готовой линейкой зданий/юнитов на новую карту. Для этого хотелось бы иметь инструмент, который позволяет автоматически создавать на карте персонажей и войска, либо же чтоб можно было конструировать этих персонажей войска с помощью мышки, выбирая из готовых вариантов в редакторе кампаний, а не прописывать персонажей/войска вручную в текстовике. И уже только имея программу с функционалом, позволяющим генерировать рандомных персонажей/войска на карте приступать к созданию модов. Без наличия этой программы можно было бы сделать разве что адаптацию мода Amazon: Total War v3.0c под ремастер при условии появления нового компа, на котором запустится ремастер. Очень расстраивает пререндерная карта в ремастере и то, что Фералы не спешат выпускать инструмент для её генерации. Увы, это может почти полностью убить и похоронить моддинг под Ремастер а вместе с ним и интерес к ремастеру как к игре ещё до того, как Фералы выпустят этот инструмент, если выпустят его вообще. Создавать программу новый комп мне не нужен и тестировать можно на старом оригинальном RTW, не забывая вставлять фишки для RTW Remastered и для M2TW.
Основная идея программы
В первую очередь программа должна помогать создавать/редактировать кампании, то есть заниматься редактированием/генерацией контента, хранящегося в папке "data\world\maps\" - в папке base и в папке отдельной кампании (главная кампания, например "data\world\maps\campaign\imperial_campaign\", и дополнительные кампании, хранящиеся по адресу "data\world\maps\campaign\custom\" каждая в своей папке). Нужен генератор кампании, который мог бы сгенерировать практически с нуля готовый рабочий descr_strat.txt на основе базовых файлов мода вне папки "data\world\maps\", карты и разбивки по регионам. Это как здорово помогало бы в тестировании базовых файлов мода или же карты, так и позволяло ленивым фактически генерировать играбельную кампанию, просто взяв фракции, линейку зданий/юнитов из одного мода, а карту из другого мода. В том числе нужно, чтобы программа могла автоматически рандомно распределить готовые провинции между фракциями, задав процент провинций, которые будут принадлежать мятежникам. Также нужно, чтобы программа помогала мододелу быстро размещать на карте нужные элементы не путём редактирования текстовиком, а путём выбора позиции на карте и выбора, что хотим там разместить из разных панелек и списочков. То есть чтоб это был в одном пакете и редактор и генератор контента. И чтоб программа уже брала на себя проверку разных ограничительных условий - чтобы имя персонажа бралось только готовое из списка для фракции, чтоб в descr_strat.txt не дублировалось одно и то же имя для двух персонажей, чтоб у персонажа не было больше 4 детей (дурацкое ограничение движка игры, особенно с учётом того, что "сын" может быть старше "отца"), чтоб войска размещались в доступной местности, а не в море или в горах и т.д. Чем больше спорных моментов будет проверяться, тем легче мододелу будет концентрироваться именно на создании контента, а не на валидации его правильности.
Дальнейшее наращивание функционала
Должна быть подробная настройка того, как именно генерировать контент для кампании, в частности файл descr_strat.txt и descr_mercenaries.txt. Например то, как много войск размещать на карте, насколько они должны быть прокачаны, стоит ли провинциям с малым количеством провинций на старте давать более выгодные условия в плане прокачки войск. Стоит ли размещать на карте элитные/позние войска или только базовые и какой процент элитных/поздних войск использовать. Возможность отдельным фракциям на старте сделать упор скажем на кавалерию или на пехоту.
Редактирование карты следующий момент. Нужно, чтобы программа умела накладывать и выводить на экран одновременно карту высот и карту регионов. Также чтобы можно было выводить или отключать для отображения отдельные слои карты. Например, реки один слой, климат другой слой, торговые ресурсы третий слой, войска на карте ещё один слой. Чтобы можно было подредактировать разбивку по регионах с оглядкой на карту высот. Ну и в целом чтобы карта регионов редактировалась программой. Для этого будет некоторые элементы, подобные простейшему редактору Paint из состава Windows. Например, выбор цвета типа пипеткой, попиксельное рисование типа карандашом, заливка указанным цветом замкнутой области. Ну и прямо в программе мы выбираем новый цвет (в том числе рандомный), рисуем новый регион, а дальше вводим название региона, название города, русскую локализацию этих названий, а программа сама добавляет эти названия/локализации во все нужные файлы мода (descr_regions.txt, descr_strat.txt, descr_mercenaries.txt, imperial_campaign_regions_and_settlement_names.txt). Ну или так же легко одним кликом переименовываем регион/город. По тому же принципу рисовать другие слои, например реки и мосты или климатические зоны.
Также помимо редактирования кампании в программу полезно будет внедрить модули по редактированию базовых файлов, хранящихся вне папки data\world\maps\. Например, у меня уже есть готовая программа, помогающая мне создавать список имён. Я ввожу только список имён на украинском или на русском языке, а программа на основе этого создаёт фрагмент файла локализации data\text\names.txt и фрагмент файла data\descr_names.txt, создавая при этом названия на латиннице путём транслитерации (надо наверное эту прогу выложить на форум). Можно внедрить функционал этой малой программы в большую. Ну и например мы пытаемся вручную создать персонажа с именем, которого нет в списке имён для фракции. Программа предупреждает об этом и спрашивает, добавить ли новое имя в список имён для фракции. Если мы отвечаем "нет" то программа не даёт такого персонажа создать.
Обязательно нужно написать хоть какой-нибудь парсер файла data\export_descr_buildings.txt. Это будет очень сложно, но я уже продумывал как можно написать такой парсер, по идее реально. Если не для автоматического редактирования этого файла, так хотя бы для того, чтобы программа могла при автоматической генерации descr_strat.txt сама размещать стартовый набор зданий в городах именно в соответствии с линейкой строительства для данного мода, некоторые моменты возможно придётся программе вручную подсказывать, чтобы генерация проходила более разумно.
Также было хорошо, чтоб программа позволяла клонировать мод, дав новое имя папке с модом и автоматически изменив его во всех файлах мода, где упоминается относительный путь к этой папке.
Что очень важно, это кнопка "отменить"/"вернуть" (Ctrl+Z). Я решил, что нужно с самого начала писать программу так, чтобы она не просто вносила изменения, а запоминала эти изменения и можно было последние неудачные действия отменить. Это будет сложнее, чем просто писать программу без этого функционала, зато результат того стоит. Можно будет в настройках изменить, сколько последних действий должна помнить программа, чтобы имелась возможность отката. Некоторые действия, например заливка цветом на карте, будут требовать много места в памяти для хранения в истории.
Так же как я делал программы Для просмотра ссылки Зарегистрируйтесь нужно сделать, чтобы программа редактор/генератор кампаний/карт умела работать с тремя играми: Rome: Total War Remastered, Rome: Total War (старая оригинальная) и Medieval II: Total War учитывая индивидуальные особенности/отличия этих игр. Точно так же программа будет поддерживать три языка интерфейса: русский, украинский и английский с легкой возможностью перевода, что позволит ей распространиться за пределами постсоветского пространства. (Сложный движок локализации и многоязычности уже написан мною за последний месяц именно с расчётом, что будет использован в более серьёзных программах). Точно так же нужно будет документировать как работать с программой в справке, чтоб не получилось, что некоторый функционал я добавлю, а пользоваться этими функциями кроме меня никто не будет, так как просто не будет знать о них.
Что программа может дать для комьюнити моддеров RTW/M2TW
Программа должна значительно облегчить рутинные действия путём того, что их можно быдет выполнять не правкой текстовиков, а с помощью мышки, с внесением взаимосвязанных изменений во все нужные файлы одновременно. Также значительно облегчит жизнь путем того, что возьмет на себя проверку правильности и не будет давать сделать то, что не даст работать моду. Также это облегчит процесс моддинга для новичков, они смогут быстро и наглядно вносить изменения и не переживать за то, что появятся ошибки. Дополнительный эффект это даст за счёт перевода интерфейса программы и справки на английский язык.
Как это всё должно работать. Структура.
Сначала указываем первоисточник, откуда программа будет брать исходные файлы, но не будет там ничего изменять.
Указываем папку игры и если нужно, то папку с распакованными ресурсами игры.
Указываем папку дополнения и папку с распакованными ресурсами дополнения, если нужно.
Указываем папку мода и то, которое из дополнений используется (например Barbarian Invasion, Alexander).
Указываем рабочую папку, в которой программа будет хранить изменённый мод.
По ходу работы программы можно будет выбрать в выпадающем списке с какой именно кампанией мода мы работаем в данный момент или же редактируем общую для всех кампаний папку data\world\maps\base\, а также создать новую кампанию.
При закрытии программы или при нажатии кнопки "Сохранить" все произведённые изменения будут сохраняться в файлы рабочей папки. Можно будет не закрывая мою программу запустить при этом игру, указав ей в качестве мода рабочую папку, которую изменяет программа, чтобы сразу тестировать "не отходя от кассы".
Можно будет откатить выбранные файлы к исходным версиям из папки мода-источника или игры/дополнения.
Что есть на текущий момент. Рабочая программа по редактированию торговых ресурсов.
Чтоб вы видели, что это всё не голословные заявления, пока что выкладываю к вашему вниманию ту программу, которая у меня есть в наличии. Она умеет добавлять на карту торговые ресурсы и ресурсы рабов, слонов и верблюдов как в автоматическом режиме, так путём указания места на карте для каждого нового ресурса. Удалять добавленный ресурс пока не умеет. Текущая версия программы выводит на экран карту разбивки по регионам с наложенной поверх картой рек. Далее на эту карту наносятся ресурсы, которые считываются из файла descr_strat.txt.
Чтобы начать работать с текущей версией программы, положите рядом с *.exe-файлом программы карту разбивки по регионам map_regions.tga, карту с реками map_features.tga, файл с перечнем регионов descr_regions.txt и основной файл кампании файл descr_strat.txt. Эти 4 файла нужно взять из мода, с которым вы в данный момент работаете, и они не должны противоречить друг другу. Также рядом с *.exe-файлом программы всегда должны лежать файл resources.txt, откуда программа считывает какие вообще типы ресурсов использует игра RTW/M2TW, и папка images\ с иконками инструментов правой панели, в том числе с иконками ресурсов в папке images\resources\. В архиве, который я предлагаю для скачивания, рядом *.exe-файлами программы лежат файлы из изменённого мною мода Amazon: Total War, в который добавлена Атлантида между Испанией и Ирландией (уже с размещёнными на карте торговыми ресурсами и ресурсом "рабы") и провинции областей современной Украины вместо провинций Скифии (для них торговые ресурсы и ресурс "рабы"), также добавлены три провинции в Сахаре и провинция для острова Лесбос. При желании вы можете заменить эти файлы на файлы из другого мода и использовать мой инструментарий для добавления ресурсов на карту. Ещё рядом с *.exe-файлом программа автоматически создаёт файл Options.ini, в котором хранит настройки. *.exe-файлов вложено две штуки - 32- и 64-разрядные версии, они равносильны по функционалу.
Предлагаю инструкцию по использованию программы на примере добавления ресурсов в провинции областей Украины изменённого мною мода со скриншотами.
Скачиваем, распаковываем полностью архив и запускаем программу. Увидим карту регионов с наложенными поверх реками, а также чёрными квадратиками городов, белыми квадратиками портов и цветными квадратиками ресурсов. Каждый квадратик соответствует пикселю на карте map_regions.tga и клетке, на которой может размещаться город, порт, ресурс, ну и в игре армия или флот. Можно менять масштаб вывода на экран карты колёсиком мыши либо с помощью счётчика "Масштаб:". Сначала меняется масштаб, а только потом можно выбрать нужную область карты с помощью полос прокрутки. При любом изменении масштаба, к сожалению, прокрутка сбрасывается в левый верхний угол.
Выберем масштаб и прокрутим карту так, чтобы вывести на экран области Украины. Как видим, ресурсов в этих провинциях, которые раньше были Скифией, очень мало для такого большого количества провинций:
Теперь переходим на вкладку "Ресурсы". Здесь в левой колонке отображается список регионов с цветом региона и названием провинции и города в нём. Если выбрать мышью регион в списке, то в центральной колонке отобразится подробная информация по этому региону, взятая из descr_regions.txt. В числе прочего отображается внизу строка с перечнем ресурсов из descr_regions.txt, для каждого ресурса выводится число, сколько раз он размещён на карте в этой провинции, а также если на карте в этой провинции он есть, то выводятся координаты клеток, на которых он размещен. Флажками слева внизу выбирается, какая именно информация при этом выводится, к сожалению пока забыл дать флажкам более осмысленные названия. Можно выбирать несколько регионов сразу используя нажатия левой кнопки мыши при зажатой клавише Shift или Ctrl. Или выбрать пункт "Все регионы", чтобы отобразить информацию сразу по всем регионам. Выберем регионы, которые соответствуют новосозданным провинциям областей Украины в границах 1991-2013 гг. Для этого сначала нажмем левой кнопкой мыши на самом верхнем в списке регионе из новосозданных с номером 158 под названием "Krym|Simferopol", затем зажмём на клавиатуре клавишу Shift и нажмём самый нижний в списке регион из новосозданных с номером 183 и названием "Sevastopolshchyna|Sevastopol". Будут выделены все 26 провинций/регионов/областей:
Теперь нажмём кнопку "Создать отсутствующие на карте ресурсы". В тех провинциях из выделенных мышью, на территории которых нет ресурса "рабы", этот ресурс будет добавлен в произвольной клетке провинции. Как видим, после нажатия кнопки в регионах Vinnychyna, Volyn и Dnipropetrovshchyna количество ресурсов "рабы" изменилось с 0 до 1 и появились X,Y координаты этого ресурса на карте. В провинции Krym же ничего не изменилось, так как там и так ресурс "рабы" находился сразу в трёх разных клетках (изначально Крымский полуостров был поделен на три провинции в первоначальной версии мода от SubRosa). Внешний вид вкладки после нажатия этой кнопки:
Теперь в автоматическом режиме попробуем добавить указанное количество торговых ресурсов для каждой выбранной провинции. После кнопки "Добавить" находится счётчик сколько именно ресурсов добавлять в каждую выбранную мышью провинцию. Флажок "уникальных" отвечает за то, чтоб при этом рандом не добавлял на разные клетки два и более экземпляра одного и того же ресурса, например два железа или два леса. Флажок "кроме шелка" отвечает за то, будет ли присутствовать шелк в перечне ресурсов из которого рандомно программа будет выбирать тип ресурса. Поскольку у нас Украина, то на её территории шелк не добывают и этот флажок желательно установить. Ставим количество ресурсов шесть и нажимаем кнопку "Добавить":
Переходим на вкладку "Карта" и любуемся как на карте появилось куча новых ресурсов:
Также можно не создавать ресурсы автоматически, а добавлять их на карту в ручную. Для этого на вкладке "Карта" выбираем в правой панели нужный ресурс, а затем подводим курсор к нужной клетке на карте и нажимаем левую кнопку мыши. Ресурс будет добавлен именно в координаты данной клетки.
Теперь нужно сохранить полученный результат. Сама программа пока что в никакие файлы результат своей работы не пишет. Она умеет только вывести в текстовое поле, оттуда нужно скопировать и вставить в текстовом редакторе в нужный файл. Нажимаем слева внизу кнопку "Ресурсы...". Будет выведено на экран новое окно с двумя колонками. В левой колонке отображается содержимое файла descr_regions.txt, каким он должен стать после редактирования. В правой колонке отображается список ресурсов, каким он должен стать в верхней части файла descr_strat.txt, обратите внимание, что ресурсы разделены по провинциям, так легко понимать куда относится тот или иной ресурс, а то в файле descr_strat.txt они обычно скинуты в общую кучу и фиг разберёшь что к чему, если не наводить курсор на карту и не смотреть, где находятся координаты ресурса.
Ставим курсор в левой колонке, нажимаем Ctrl+A, чтобы выделить весь текст, затем копируем текст в буфер (правой кнопкой по тексту и нажать в появившемся меню кнопку "Копировать" или же нажать комбинацию Ctrl+C или Ctrl+Insert).
Теперь переходим в текстовый редактор, вставляем текст из буфера и сохраняем это как новый descr_regions.txt. Далее переходим в моей программе в правую колонку, снова жмём Ctrl+A для выделения всего текста и снова копируем его в буфер. Теперь открываем descr_strat.txt в текстовом редакторе и заменяем в нём перечень ресурсов, который там был, на новый список ресурсов в буфере, сохраняем изменённый descr_strat.txt.
Теперь мы добавили новые ресурсы на карту в наш мод.
Скачать программу (самый ранний вариант): Для просмотра ссылки Зарегистрируйтесь, Для просмотра ссылки Зарегистрируйтесь
Программа по данной ссылке специально для истории не будет редактироваться, а будет со временем выложена новая ссылка по которой программа будет периодически обновляться.
Мои планы на ближайшее будущее
В ближайшие недели мне нужно будет занятся написанием сложной программы по работе, поэтому моддингом и программированием по игре заниматься я не буду. Возможно начну читать серию книг по Дюне Фрэнка Герберта и последователей с выписыванием в блокнот инфы для будущего мода по Дюне. Также буду потихоньку обдумывать концепцию написания данной программы редактора/генератора кампаний/карт, так как лучше изначально хорошо спроектировать, чем потом полностью переделывать. При этом буду общаться с вами, если вы мне предложите что-то по данной программе. Потом я хочу приступить к написанию данной программы. Для начала мне нужен хотя бы модуль, который будет размещать персонажей войска по карте. Ну и естественно весь скелет придётся сразу делать весьма сложный. Добавление функционала буду делать помодульно частями. Таким образом сразу будет виден некоторый результат и не нужно будет подолгу трудиться не видя отдачи. И легче будет отследить ошибки. Когда будет этот базовый функционал, можно будет приступить к созданию какого-нибудь мода из описанных мною в этих темах: Для просмотра ссылки Зарегистрируйтесь и Для просмотра ссылки Зарегистрируйтесь. Нужно будет сделать новую карту, а там с помощью программы можно будет легко и быстро наполнить мод ресурсами, персонажами и войсками. Всё это можно делать и без покупки нового компа и возможности запускать ремастер игры. Можно моддить под старый оригинальный Рим, а потом когда-нибудь перенести разработки в Ремастер. Тем более всё равно сейчас нет инструментария для создания пререндерной карты. Если инструментарий не появится, то так и останется всё в виде модов под старый Перворим. А с покупкой компа возможно возникнут финансовые сложности и придётся отложить это дело не на через полгода, а скажем на через год. Программу буду писать, чтоб она умела работать и с ремастером тоже, просматривать файлы ремастера, не запуская саму игру, я могу. Ну и вы мне подскажете, если программа будет делать с Ремастером что-то не то.
Просьба подбрасывать идеи
Пока что я создал эту тему не просто чтоб покрасоваться/похвастаться, а чтобы собирать ваши идеи по поводу того какой функционал вы хотели бы видеть в программе. Генерировать пререндерную карту для Ремастера, естественно, не просите, это могут сделать только Фералы. И всё что касается 3D-моделирования в целом и редактирования 2D-текстур тоже мимо меня. А вот какие рутинные действия при моддинге вы выполняете с высоким шансом допустить ошибку, чтобы можно было их автоматизировать, это было бы интересно знать. В первую очередь будет функционал по добавлению новой кампании на основе готового скелета мода, ну а потом можно будет заняться и изменением общих файлов мода. Ну и что можете посоветовать насчёт интерфейса программы, чтобы выполнять определённые действия было максимально удобно. Лучше заранее всё хорошо спроектировать и потом частями делать, чем потом отдельные моменты полностью переделывать. Жду ваших идей, предложений и пожеланий.