Added by , published
Программы
Предназначение:
Работа с картами
🚧 WarCraft Data Sync – внутренний инструмент для управления разработкой проекта WarCraft Legends! ⚙️
В основе проблемы — горизонтальное масштабирование проекта. Создать Мод — это специфическое внедрение данных, еще специфика распространения мода и настройка, которая может отпугнуть новичков. Кампания не подходит, так как она не имеет мультиплеера. А работа с картами рано или поздно превратится в большую рутину из копи-пасты. Поэтому был разработан WarCraft Data Sync — инструмент, который связывает карты как единую базу данных, позволяя легко переключаться между ними и поддерживать индивидуальные данные в каждой. Это важно, так как каждая карта требует своего набора моделей, текстур и зависимостей и технических данных.
Этот внутренний инструмент критически важен для работы с множеством карт в проекте. Он синхронизирует данные между всеми дочерними проектами и позволяет быстро собирать их в карты, когда это необходимо. 🗺️💨 Переключение между картами стало проще, с индивидуальными и плавными обновлениями для каждой. 🔄
Кроме того, он очищает технические теги и удаляет ненужные ассеты, поддерживая каждую дочернюю карту легкой, чистой и оптимизированной. 🔥 Это ключевое для обеспечения стабильной работы проекта по мере его роста.
Без WarCraft Data Sync дальнейшее расширение WarCraft Legends просто НЕВОЗМОЖНО. ⚠️ Его минималистичный дизайн помогает сосредоточиться на главном и обеспечивает плавный и эффективный рост проекта. 🚀
WarCraft Data Sync выполняет несколько операций для каждого дочернего проекта:
  1. Анализ файловой структуры: Система анализирует файлы и директории в проекте, используя конфигурацию из .env и config/w3x_const.php.
  2. Фильтрация файлов: Определяет, какие файлы должны быть скопированы в зависимости от настроек.
  3. Автозамена: Применяет автозамены в соответствии с правилами из config/w3x_replace.php.
  4. Очищение тегов: Очищает технические теги из файла war3map.wts, если это предусмотрено.
  5. Свич: Параметр "Current Project" позволяет переключаться между дочерними проектами.
  6. Сборка архива: Все изменения собираются в архив .w3x, который включает все необходимые файлы и изменения.
Интсрумент построен как веб-сервер на яп PHP и фреймворке Laravel, поэтому имеет очень специфичный запуск. Подробнее о деплое и настройке - по github-ссылке
GitHub Repository:
Впринципе этот пост можно было бы и не выкладывать, но над этим инструментом я довольно долго промучался. Мне важно показать, что в целом WarCraft Legends живее всех живых и будет дальше развиваться, тут решена проблема горизонтального масштабирования. Впринципе задел есть для переработки под свой личный проект, а может кого-нибудь это натолкнет на свои идеи в рамках моддинга Варкрафт
`
LOADING AD...
31
Ничего не имею против, но стек для такой работы выбран довольно таки странный.
Replies (2)
13
nazarpunk, очень-очень странный стек (классическое windows приложение было в разы лучше), но как умею... тут получилось именно решать задачи, а не думать как реализуется та или иная часть. Поэтому получилось достичь требуемого результата относительно безболезненно, хоть и помучался над разработкой концепта, до этого все крутилось вокруг консольных команд, и десятков конфигов с вручную забиваемыми файлами и директориями.
Поэтому и прицепил решение не к родительскому проекту WarCraft 3, а именно к своему, т.к. вряд ли за пределами проекта это кому-то понадобится.
31
тут получилось именно решать задачи, а не думать как реализуется та или иная часть
Ну так поэтому и не имею ничего против. А то в последнее время многие забывают, что главная задача программиста задачи решать.
22
О, интересно! Так понимаю, этот софт преобразовывает карты в папочный вид, и в эти папки можно запихивать файлы через прогу, а потом собирать это всё обратно в карту? Или карты?
Было бы полезно для сборки кампаний силами нескольких человек. Но кампании он не тянет, да?
И ещё вопрос по файлам типа w3o, w3u, и так далее. Как он их преобразовывает? Или в данном случае актуальнее будет делать юнитов итд в slk? А ландшафт как извлечь-собрать?
Replies (15)
13
EugeAl, рефордж уже позволяет в директорию перегнать проект, и в таком виде происходит основная разработка. Этот софт от родительского ультимативного проекта раскидывает файлы по дочерним проекта, не затрагивая ландшафт и инфо о карте. Если нужно поработать с ландшафтом на одной из карт, то выбирается из списка нужный проект и вытягивается ландшафт и инфо о карте в родительский проект (так как у него полный набор моделек и текстур).
Непосредственно преобразованием w3* файлов я не занимаюсь, хотя были некоторые идеи, даже направление существует по парсингу бинарных данных из этих файлов с преобразованием json. Однако чисто технически не было задачи превращать в полноценно раскрытый проект. Тут больше про раскидывание файлов по папочкам и сборка проекта назад w3x архив.
Вот эти файлы я держу для каждой "дочки" не тронутыми, но в случае перехода к выбранному проекту перетягиваю их в родительский проект:
  • 'war3map.w3e', terrain texturing
  • 'war3map.shd', shadow map
  • 'war3map.wpm', passability map
  • 'war3map.doo', info about trees
  • 'war3mapUnits.doo', information about all objects placed on map
  • 'war3map.w3i', Various information about the map, which is set in the editor in the scenario section
  • 'war3mapMap.blp', Minimap
  • 'war3map.mmp', Minimap icons during initialization
  • 'war3map.w3c', Camera parameters
  • 'war3map.w3r', Info by regions
  • 'war3map.w3s', Sounds are set
С кампаниями не работает! это именно узкое решение про поддержку карт а-ля кампания (с общими данными и частными различиями)
22
AMark, понял, спасибо за инфу.
Вот с этими war3map.w3e и так далее, самая проблема, их нельзя адекватно раскрыть и править нескольким людям одновременно, в отличие от slk, которое можно впихнуть в гугл-таблицы и онлайн редактировать, а потом кто то будет извлекать их из гугла и загонять обратно в slk
А локализация на русский не планируется? Для большей юзабельности)
22
AMark, насчёт кампаний.
Технически возможно ли допилить сборщик кампаний, который будет разбирать w3n на папку с картами w3x и собирать обратно? С учётом общих файлов типа ассетов и юнитов. Что то вроде двухэтапной сборки - сначала собрать карты, только без ассетов, затем карты собрать в кампанию и подтянуть в кампанию ассеты
13
EugeAl, перевод в json можно выполнить для 95% этих файлов. Однако дальше нужна отдельная утилита для представления всех этих данных в удобоваримом виде, и тем более совместная работа с выгрузкой в общий файл. Это совсем иное направление.
Локализация - там всего 3 кнопки, локализовывать нечего. А вот если настройки и прочее - это на гите в ридми файле на 2х языках, если кому-то уж прям очень понадобится запустить сие "чудо".
Но это прямо нишевый софтик.
13
EugeAl, вообще да. Принцип сборки карт есть, только специфика иная. А в целом вообще ничего сверхъестесвенного. А, стоп, w3x и w3n - это аналоги? я сборкой занимаюсь через интегрированный в проект MPQEditor, он отвечает за сборку, я не делал самопального движка для сборки.
Даже по идее можно даже с минимальными правками настроек запустить сборку карт в кампанию без переписывания кода. Но... а есть ли смысл? я с кампаниями не особо дружу
22
AMark, нишевый то нишевый, но он очень перспективный в плане командной разработки. Особенно если его расширить для работы вообще с варкрафт 3 и сделать режим для работы с 1.26-1.27 )
Да, w3n это тоже архив, как и w3x, с минимальными отличиями. И они все подвид mpq
Да в кампаниях, кроме отсутствия мультиплеера, по сути всё то же самое. Ну и в картах есть код по работе с кэшем для переноса героев, собственно и всё.
имхо, мне кажется, что кампаний мало делают из за их геморройности в сборке и отсутствии адекватного функционала по командной работе. Но этот софт в теории мог бы всё перевернуть!)
13
EugeAl, ну для переворотов наверное уже поздно. Осталось 1,5 землекопа, которые прям "упарываются" с оптимизацией рабочих процессов в модмейкинге варкрафт, остальные используют стандартные средства.
22
AMark, ну, если по количеству судить, тогда да, мало кто остался...
13
EugeAl, смотри!
Это инструмент по превращению данных war3 в json в карте. Это наиболее близко к твоей философии.
Как бы если мне рассматривать данный инструмент, то как парсинг данных из карты на свою вики, чтобы вручную не заполнять всё.
Или как 2-стороннее общение через некий файл на сервере, как источник.
Но уровень данного инструмента как бы низкоуровневый, чтобы сделать что-то полезное на его базе - нужно сверху наворачивать логику.
И ограничение версии игры - 1.28+ (но это не точно, забыл где видел, может и нету)
Пример парсинга w3u, мы получаем как раз ключи, юнит на основе футмэна (есть hp, список абилок и список апгрейдов на скрин попали)
Uploaded files
13
AMark, вот такая штука получается... непонятно как связывать id юнита с его именем в wts файле, написал на хайве. Пока что пробы пера, ничего серьезного
Uploaded files
22
AMark, уууу.... Муторно всё это будет. Честно говоря, как по мне, парсинг файлов юнитов лучше вообще не рассматривать. Ведь в карту и slk txt можно с юнитами запихнуть, а там командно работать куда проще, ведь софт уже есть готовый, и онлайн сервисы есть.
13
EugeAl, и как подкинуть slk в карту? как это работает?
22
AMark, как в первой доте, так же, как в архив с игрой, по тем же путям пихаешь и игра должна читать slk. Редактор карт их не откроет, но он тут и не нужен, в общем-то. Хотя можно делать карту с архивом патча, и тогда редактор будет их видеть. Перед релизом перекинуть slk в карту и выпускать в релиз)
22
AMark, в wts файле, насколько помню, ид юнита идёт в квадратных скобках, а под ним уже прописывается имя, описание итд итп. И wts можно открыть блокнотом)
13
EugeAl, тоже спорное решение, slk накладывает ограничение на разработку.
Касательно пропавших имен и всех путей графики в относительно свежих патчах каким-то лядом близзы перенесли это в war3mapSkin.w3* файлы, отсюда возникшее недопонимание. Так, получается нужно парсить данные из 2 таблиц в кучу + wts, и потом это дело разбирать. Есть куча минусов работы с данным через парсер, любой апдейт блиизов может сломать его, поэтому использовать его как альтернативный инструмент для работы с объетами данных спорно.
И еще есть нюанс, мы тянем только измененные данные, а если обращаться к дефолтным параметрам юнитов, это отдельная история, в которую я не лез.
В моем случае парсер - это способ легко и быстро вытягивать данные для заполнения вики проекта, я буду указывать код юнитов, и делать некую сетку (порядок), а по указанию код начнет вычленять все данные из спаршенного json и заполненять данные для страницы.
Как некий облачный обработчик через гугл-драйв тоже забавно бы сделать, где у нас редактор объектов крутится локально, но каждый раз при запуске забирать файл с гугла, и в конце работы заливать назад. Таким образом сервак локально работает, а гугл api вроде бы бесплатный (но это не точно).
с SLK тоже имело бы смысл работать, если бы не эти махинации. Во первых нужно заранее выбрать технологию SLK, а не навешивать на текущий проект, во вторых без эдитора смысл лишается... ключевое ведь не нарушать связь с оригинальными файлами.
Но я попробую редактор объектов локальный сделать. НО тут вопросов больше чем ответов, и огромный страх перед новыми патчами близзов. Чудом Reforged 2.0 мне не поломал проект, только пару критических багов вылезло, которые я сразу починил и чайную ложечку хайпа получил.
38
Сначала обрадовался, что на php, потом стало грустно, что там лежат .exe :)
Думал, вдруг с imp можно будет интегрировать. Но скорее нет, чем да. У меня цель - для трех ос собирать
Replies (1)
13
ScorpioT1000, ага, воспользовался хитростью) пошел по пути наименьшего сопротивления
To leave a comment please sign in to the site.