24

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

N7 Molot, не тот сандбокс. Сандбокс с точки зрения кода - когда код внутри сандбокса имеет доступ только к строго заданому API и не имеет легких способов из сандбокса выбраться и сделать что-то не разрешенное разработчиком. Причем желательно чтобы еще и не нужно было заново ничего компилировать после каждого изменения пользовательского кода и/или распространять компилятор вместе с продуктом.
24

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

N7 Molot, делал когда-нибудь сандбокс на джаве или шарпах? Я делал. В реальном коммерческом проекте. В итоге перешли на Lua и питон. При этом бекэнд на джаве.
24

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

N7 Molot, ни шарпы ни джава не являются скриптовыми языками, в отличии от Lua - раз. У близов куча опыта работы с Lua - два. Организовать ограниченную по доступу песочницу в Lua намного проще, чем в джаве и шарпах - три. Аудитории основаной на WoW как-то ближе и понятней Lua, хотя я и сомневаюсь что многие авторы плагинов к интерфейсу ринутся делать карты для рефоржа, но всеравно - четыре.
24

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

iliamakar, и каким боком сторонний кастомный интерфейс для WoW, запиленый между прочим на Lua, имеет отношение к ремастеру варкрафта? 99% что это просто ошибка в сабах и речь все-же о Lua.
24

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

Doc, да, я тоже это услышал...
Я даже догадываюсь откуда ноги - китайцы, насколько я знаю, давно юзают Lua подгружая его через мемхак - близы, скорее всего, сделали финт ушами и ради этой части комьюнити решили добавить Lua нативно, тем более что мемхак 99% перестанет работать в каком бы то ни было виде.
Второй вариант который мне приходит в голову - они могли слизать из WoW использование Lua для интерфейса - возможно речь об этом, тем более что проскакивала инфа о возможности кастомизации интерфейса.
24

» WarCraft 3 / Десинхронизация при выборе персонажа

А еще можно попробовать по играться с параметрами союза и общими магазинами работающими только на союзников - возможно параметр союза "заклинания действуют на союзников" и способность выбирающая только союзных юнитов для управления таверной умеют работать вместе. Тогда меняем параметры союзов на время выбора героя по мере необходимости и перед началом боя приводим их в исходное состояние. Ну и после выбора убираем принадлежащего игроку даммика получающего доступ к таверне.
24

» WarCraft 3 / Десинхронизация при выборе персонажа

Принятый ответ
Нельзя удалить способность у юнита для конкретного игрока и не вызвать при этом десинк.
24

» WarCraft 3 / Сделать юнита по настоящему летающим или придумать костыли

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

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

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

» WarCraft 3 / Сделать юнита по настоящему летающим или придумать костыли

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

» WarCraft 3 / Сделать юнита по настоящему летающим или придумать костыли

Принятый ответ
Отлично, значит мы можем однозначно соотнести номер игрока с юнитом в массиве?
  • переключившихся в летающий режим героев добавляем в глобальную группу
  • запускаем таймер на малом периоде, что-то около 0.04, который перебирает всех в группе и выполняет смещение к взятой из массива точке со скоростью движения героя (тут можно экспериментировать с разными алгоритмами движения, главное что все данные мы можем легко получить из массива по номеру игрока которому принадлежит юнит)
  • отслеживаем все приказы для героев в состоянии полета и на основе этого запоминаем текущую точку куда юнит должен двигаться и прочие данные, записываем эти данные в массив
  • при отключении полета убираем героя из группы и перестаем отслеживать его приказы

А, т.е. в карте уже есть системы триггерного движения? Значит самое время унифицировать их в одну, чтобы одна и та же система управляла и полетом и физикой и другими видами триггерного движения.
24

» WarCraft 3 / Сделать юнита по настоящему летающим или придумать костыли

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

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

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

» WarCraft 3 / Сделать юнита по настоящему летающим или придумать костыли

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

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

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

» WarCraft 3 / Blizzcon: Анонсирован WarCraft III Reforged (remaster)

Doc, я когда-то давно писал виртуальную машину на JASS и она не работала быстрее, что я делал не так? ;)
24

» WarCraft 3 / Отключение глобального освещения

Принятый ответ
Нормально заходит в игровых проектах, но только если хорошо проработать.
24

» WarCraft 3 / Модернизация триггеров из 5 урока по джазу

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

» WarCraft 3 / Модернизация триггеров из 5 урока по джазу

VVelikolepniy,
глобальная переменная - доступна в любом месте
локальная - доступна только в той ФУНКЦИИ в которой объявлена
функция - в рамках jass это самодостаточный фрагмент кода, могущий принимать параметры, содержать локальные переменные и возвращать значение
триггер - конструкция, которая при срабатывании события проверяет условия и вызывает действие если условие выполнено, условия и действия триггера выполнены в виде функций
24

» WarCraft 3 / Модернизация триггеров из 5 урока по джазу

VVelikolepniy, просто сформулируй ответы на эти вопросы - я не смогу помочь не разобравшись в том, что именно ты пропустил из основ. А попытки получить доступ к локальной переменной - явно говорят о том что что-то пропущено.
24

» WarCraft 3 / Модернизация триггеров из 5 урока по джазу

ИМХО, слишком сложный спелл для человека который только учится пользоваться jass.
Я просто не понимаю почему я в функцию не могу взять ПЕРЕМЕННУЮ, как мне создать триггер, использующий локальную переменную из другого триггера? засовывать в глобальную переменную массив это костыли, наверняка есть способ это сделать
Начнем с простого - что такое переменная? Что такое глобальная переменная? Что такое локальная переменная? Что такое триггер? Что такое функция? Без понимания этого тебе не продвинуться дальше.
24

» WarCraft 3 / Модернизация триггеров из 5 урока по джазу

Потому что у меня будет 3 разных спелла которые будут по разному вызывать огоньки, мне кажется было бы оптимальнее сделать функцию и просто во всех моих заклинаниях вызывать ее и спокойно работать дальше
Замечательно, три спела создающих огоньки, но зачем триггер при этом? Что не так с вызовом функции которая просто создает огоньки без вызова триггера?