24

» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты

NazarPunk, Видимо, поговорим об этом еще раз когда я смогу показать все на практике.
Но, если коротко - да, черт подери, в качестве одной из возможностей сборщика изначально планировался его запуск с путем к билд-скрипту в параметре...
24

» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты

NazarPunk, перечитай план в посте)
Сейчас привязка к IDE запланирована на уровне заворачивания в плагин который просто передает правильные параметры. Ну и запуск игры удобнее через плагин реализовать т.к. можно отслеживать запущенный ранее процесс и при необходимости убивать его. Сам сборщик полностью независим от IDE. Весь процесс сборки по плану контролируется билд-скриптом на Lua, в котором можно что угодно делать.
По поводу "засунуть в SDK" - у меня нет идеи и ставить я её ради этого не планирую - если найдешь мне спецификацию для этого, подумаю как получить нужный результат. В теории, это должно быть реально, но, скорее всего, не нужно на практике, да и будет вызывать проблемы т.к. функции из сборщика будут перетекать в подсказки к коду карты, хотя в коде карты эти функции не должны быть доступны.
По поводу "сборки в составе Lua" - все с точностью до наоборот - Lua включается в состав сборщика в виде dll. Сборщик не изображает из себя дистрибутив луа и, в принципе, не должен этого делать т.к. он является не универсальным дистрибутивом луа, а выполняет строго специализированную задачу, пользуясь Lua.


Пока, наверно, самый перспективный "дешевый" способ интеграции этого сборщика в идею может выглядеть так:
  • Проект форматируется в соответствии с требованиями сборщика (или генерится конфиг соответствующий текущей структуре проекта).
  • Сборщик ставится либо локально в каждый проект либо глобально один раз, от этого зависят только пути.
  • В проект добавляются конфиги и скрипты сборки, соответствующие требованиям проекта.
  • На каждую таску сборщика создаются отдельные исполняемые Lua-врапперы, которые и вызываются из идеи. Внутри этих скриптов, по факту, только запуск исполняемого файла сборщика с передачей ему параметра, определяющего какую таску выполнить. Примеры тасок "собрать код карты", "собрать карту полностью", "сгенерировать данные РО из кода", "собрать карту в релизном режиме со всеми оптимизаторами", "собрать карту в режиме совместимости с WE".
  • При работе в идее запускается на выполнение в стандартном Lua соответствующий Lua-враппер над сборщиком, а сборщик дальше уже самостоятельно выполняет свой Lua скрипт сборки проекта на своей копии Lua.
24

» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты

NazarPunk, я пока не планирую включать в состав сборщика какие бы то ни было инструменты для скачивания - это выходит за скоп задач которые должен решать сборщик - как по мне, это задача для внешних подключаемых модулей. А вот по поводу упрощенного импорта надо подумать - какой-нибудь merge-скрипт в состав FlyData вполне может зайти. Да и генерация объектов в РО из кода - тоже потенциальная работа для FlyData, заявленая в возможных фичах для новой версии.


На всякий случай уточню, у меня сейчас в планах и разработке три отдельных составляющих
  • менеджер сборки, то что я в этом посте называю сборщиком, он сам по себе не делает почти ничего кроме выполнения Lua файлов в правильном месте и порядке
  • парсер-компилятор для кода, переработка предыдущей версии компилятора, он может делать много разных вещей с кодом, но в отличии от старой версии ожидает что ему будут отдаваться команды из Lua скрипта, сам принимает решения только в "экспресс" режиме, рассчитаном на максимально быструю сборку по захардкоженным в сборщике правилам. Интегрирован в сборщик для расширения доступного функционала.
  • FlyDataProcessor, новое его поколение, содержит инструменты для работы с данными помимо кода, возможно в итоге будет интегрирован в сборщик, как и модуль для работы с кодом, но пока планируется как внешняя консольная утилита с несколькими режимами работы.
24

» WarCraft 3 / GetLocationZ

Vlod, имхо, этот конкретный человек вполне заслужил такое отношение
24

» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты

Фича, которая будет возможна за счет интеграции с FlyData или другими инструментами парсинга данных в карте
  • автоматическая генерация списка переменных для всех юнитов стоящих на карте
  • добавление этого списка в автоподстановку в IDE
  • регенерация участка кода, отвечающего за создание юнитов и запись их в переменные чтобы гарантировать что все используемые юниты с карты были занесены в соответствующие переменные
  • отсутствие необходимости явно указать через Гуи на юнита прежде чем его переменную можно будет использовать
Также, эта фича может быть расширена на разрушаемые объекты, но тут нужно осторожно, чтобы все не упало из-за деревьев.
24

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Drulia_san, в нынешней jass версии создай юнита, которого никогда не было на карте раньше, так чтобы не было шанса что переменная на него уже есть где-то в кеше. И попробуй обратиться к нему через jass без гуи. И 99% что получишь именно тот результат который имеешь в луа.
24

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Drulia_san, я может чего-то не понимаю, но у меня свежепоставленные юниты на карте никогда не подхватывались жассом пока на них не появлялась хотябы одна ссылка в гуи.Потом эту ссылку можно было удалить, переменная после этого не пропадала.
24

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

Drulia_san, и ты никогда не пикал юнитов на карте гуем перед использованием? С последующим удалением этого действия из гуя потому как оно нужно только чтобы редактор понял что юнита надо таки занести в переменную.
24

» WarCraft 3 / Я пикаю,а они не пикаются

SсRealm, перебор отряда и отдача приказа каждому юниту индивидуально. Либо разбиение отряда на отряды по 12 юнитов и отдача приказа каждому из таких отрядов.
24

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

А и еще один баг, это переменные зданий и юнитов, размещенных на карте редактором никак не инициализируются в луа, но если к ним хоть раз обратиться из гуи - то они вдруг оживают.
А в жассе разве не так же? Там же тоже нет переменных у юнитов на карте пока к ним из гуя не обратиться. И всегда так было.
24

» WarCraft 3 / Я пикаю,а они не пикаются

Размер отряда не 12 штук, приказ отдается первым 12 в отряде, даже если их там 100 внутри.
24

» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты

NazarPunk, в первом релизе, да еще и в моей реализации - нет, точно не буду тратить на это время. Но взять тот способ которым ты пользовался у себя и адаптировать его к этому сборщику - дело пяти минут, причем без перекомпиляции самого сборщика, только поправить Lua скрипты.
24

» Эксперименты в Пустоте / [Lua] Спецификация модульного сборщика карты

NazarPunk, смотря что подразумевается под этой совместимостью. Если запись кода обратно в карту, то модуля для этого в стандартной поставке не планируется. Но, модульность подразумевает возможность с минимумом действий прикрутить любую тулзу и утилиту к проекту. Если будет спрос, а лучше - готовый код обертки над внешней утилитой запихивающей код в карту, то этот функционал вполне может быть включен в стандартную поставку.
А если просто речь об одновременной работе в IDE и WE, то тут все на том-же уровне, что и в предыдущем компиляторе Lua - пока не нужно модифицировать файлы в исходной карте, можно одновременно работать и там и там, но если нужно применить какие-то изменения которые должен увидеть редактор, то редактор придется закрыть, применить изменения и открыть заново.
24

» Мир безумного / Государство даст денег на разработку игр

Пишите Ваши мысли в комментариях.
Я сделал именно это - написал в комментарий реакцию, которую у меня вызвала информация из поста. "Наивные" не было адресовано автору поста лично.
24

» Мир безумного / Государство даст денег на разработку игр

Наивные. Будет как с фильмами. Деньги будут выдаваться преимущественно "правильным людям", под откаты и распил или, в лучшем случае, под создание продукта предназначенного для пропаганды, тогда откаты будут меньше и на разработку останется больше.
24

» Эксперименты в Пустоте / Ломаем Warcraft3 1.31 полностью: Кастомный компилятор Lua

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

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

NazarPunk, я имею в виду не ссылкой на коммент, а прямо в статью и с обновленной инфой - коммент то немного устарел - например, с тех пор появился способ более явно указать ланг серверу что в папке лежат API и внешние либы, а не наш код. Но это так, мысли вслух - на практике, если когда-то дойдут руки, сам запилю отдельной статьей или тебе уже готовый текст в xgm-разметке скину.
24

» WarCraft 3 / Выбор своего героя в любой ситуации если никто не выбран

Есть альтернативный вариант - трекать выделение. При обнаружении непотребного выделения - показывать кастомную инфо-панель вместо оригинальной, а выделение возвращать на героя.
24

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

NazarPunk, надо бы добавить в твою статью альтернативный языковой сервер для вс-кода - чистый EmmyLua слабоват по функционалу, имхо.
24

» WarCraft 3 / Бета версия Warcraft III Reforged 1.32

NanO, я пользуюсь vs-code, он бесплатный, туда ставится правильный плагин для подсветки синтаксиса, закидывается файл с нативками вара и все. По поводу Atom - понятия не имею,
24

» WarCraft 3 / Помогите выставить уровень способности

Extremator, в 1.31 есть еще новый косяк - при изменении уровня абилки описание бывает не меняется какое-то время или пока не выбрать героя заново или пока какраз не будет выполнено какое-то действие со способностью. Детально я это не исследовал, но предполагаю что это связано с попытками близов починить изменение текстовых полей абилок с помощью новых нативок.
24

» WarCraft 3 / Таймер на муй гуй

обязательно при создании переменной таймера укажи максимальный размер массива. Если не задашь, то timer[2] и далее изначально заданы не будут.
Плохой совет, лучше создавать таймеры по мере необходимости - если заставить вар создавать несколько тысяч таймеров при старте карты, то можно очень быстро упереться в лимит операций в потоке.
24

» WarCraft 3 / Помогите выставить уровень способности

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

» WarCraft 3 / Помогите выставить уровень способности

easypeasy, напоминаю, есть три вида способностей
  • предметная, предназначена для вставки в предметы
  • геройская, предназначена для изучения героями через меню прокачки, выдается герою в соответствующем поле в РО
  • обычная, просто есть у юнита, ну еще может улучшениями блокироваться в стандарте, выдается герою или юниту в соответствующем поле в РО, отличном от поля геройских способностей, также может быть выдана триггерами
24

» WarCraft 3 / Помогите выставить уровень способности

А может способность должна быть не геройской тогда, если вам нужен уровень, вобще никак не привязаный к уровню героя?