Ещё где-то год назад я начал делать записи для себя про редактор карт Starcraft 2. Записывал туда всякие мелочи, ограничения, чтобы их не забыть. В итоге получился очень внушительный список, он должен помочь любому картостроителю в Starcraft 2, чтобы избежать недопонимания и различных багов:
- Действительное число находится в пределах от -524287 до 524287, причём это касается как триггеров, так и модуля данных. Это самое главное ограничение про которое надо помнить. И оно порождает кучу геморроя в редакторе карт Starcraft 2. Обо всем по порядку.
- В связи с тем, что здоровье, щиты и энергия - это действительные числа, то они ограничены сверху 524287. Что будет если вы попытаетесь установить это значение больше 524287? Будет перегрузка, сначала здоровье юнита сбросится на 1 и его можно будет убить с одного удара, а если еще поднажать, то он сам себя убьет. Весело, да, и это спустя почти четыре года ... Близзард до сих пор не сделали валидацию перегрузки этих значений автоматически. Поэтому если у вас планируется использование большого количества здоровья у юнитов, помните, что оно не может быть больше 524287. Но с помощью баффов и поля damage response это число можно сильно увеличить. Минимальное число, которое можно вбить в поле modify fraction 0,0002. По формуле вычисляем максимальное эффективное здоровье юнита 1/0,0002*524287=2 621 435 000. Также здоровье юнита можно увеличить за счет регенерации, но тут уже не понятно как считать EHP.
- В модуле данных в свойствах юнита нельзя установить здоровье, щиты и энергию больше 100 000, не смотря на то, что максимально возможно число 524287. Спустя почти четыре года близзарды так и не исправили это... Пользуйтесь баффами или триггерами для того чтобы установить эти параметры вплоть до 524287.
- В связи с тем, что действительное число в редакторе карт Starcraft 2 ограничено 524287, то оно касается абсолютно любого значения, и самого главного - урона юнита. Более того начиная где-то с патча 2,1, близзарды угробили возможность поставить в эффект урона значение 524287. Вместо этого они сократили его вдвое 524287/2=262143. Т.е. если вы поставите значение в поле эффекта урона большее 262143, урон в игре будет сброшен до 0,5, весело не правда ли? Для того чтобы обойти это глупое ограничение, вам потребуется использовать бафф с увеличением доли наносимого урона Damage Dealt Fraction, подчеркиваю еще раз, что именно доли, если будете использовать что-то другое это не будет работать. Также заметил, что бонус к урону работает в veterancy behaviorе вплоть до 524287. Так что можно и его еще использовать.
- Минимальное действительное число в модуле данных 0,0002, хотя я в этом не уверен, но для баффов это так.
- Текст нельзя конвертировать в строку. Т.е. по сути вы не можете сравнить текст в триггерах. Печально.
- У юнита не может быть больше 32 способностей. Как это обойти смотрите в видео www.youtube.com/watch?v=UuV9XBxfkKI&list=PLnUf3EaBFl2LBFxnEm...
- Юнит не может иметь больше 64 баффов. Баффы можно динамически удалять и добавлять, поэтому нахимичить тут можно.
- Максимальный радиус обзора юнита равен 16, хотя максимальное значение в модуле данных равно 32. Не важно что туда вы вобьете в игре это не будет работать.
- Миникарта не может рендерить более 2000 юнитов. Они начинают исчезать и появляться на миникарте.
- Близзардкая сигнатура для защиты банков может быть легко взломана, поэтому не рекомендуется ее использовать.
- Можно использовать только 8 текстур рельефа одновременно.
- Может быть только два уровня склонов. Как это обойти смотрим здесь www.youtube.com/watch?v=nDrorYFR8lc&list=PLnUf3EaBFl2LBFxnEm...
- Размер карты ограничен 256x256.
- Размер инвентаря ограничен 6 слотами. Тут имеется в виду открытый инвентарь. Близзары так и не добавили поддержку большего количества. Если хотите большой все время открытый инвентарь, пишите свою систему на диалогах...
- Эффект Set не может содержать больше 8 эффектов.
- Нельзя динамически изменять атрибуты юнитов. Обходится упорно и геморойно через баффы...
Ну и где тут прогресс?
это решает ряд проблем, связанных с сетевой синхронизацией и разницей вычислений на разных процессорах
float хранит числа как M * 10^n, а fixed приблизительно как M/1000000 со всеми вытекающими