Doo/w3e To Jass (by Raichu)

Добавлен , опубликован
Предназначение:
Написал свой конвертор war3map.doo( и war3map.w3e) в JASS-код, в другую версию war3map.doo и создание пустого war3map.doo.


(В архиве exe файл, пример doo файла, результат работы, и исxoдный код )


Обновил, теперь устанавливает начальный процент "здоровья" декорациям .
Обновление 29.03.13 17:40: Удалил из кода все левое, (добавил конвертацию из w3e в JASS пока только в исходник, т.к не очень работает :)
Ну и теперь размер JASS файла будет намного меньше.
Обновление 29.03.13 18:14: Убрал лишние нули, теперь JASS-файл стал еще меньше.
!Обновление 29.03.13 18:33: Добавил поддержку старой версии war3map.doo
!!Обновление 29.03.13 21:00: теперь создается пустой и конвертированный doo файл.(если версия 7.11 то создается 8.11 и наоборот)
!!!Обновление 30.03.13 18.30: теперь можно засунуть список декораций в функцию выбрав ей имя , выглядит так:
!!!!Обновление 31.02.13: конвертирует w3e в JASS код. (текстуры, возвышенности, и криво уклоны , но все проходимо)
!!!!!Обновление 31.02.13 18:10: Можно выбрать сохранение только типа почв(текстур), и выбрать какой тип почвы сохранить.
!!!!!Обновление 31.02.13 21:45: Исправил несколько ошибок...



Инструкция: скопировать war3map.doo(и war3map.w3e) в папку с прогой, запустить, в консоли выбрать все что нужно, скопировать результат в код карты и удалить с карты декорации.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
8
есть мысль по незначительному байтодрочингу по этому способу.
если 4к декора = 4к строк = 4к полного имени нативной функции, что никак не сократить оптимизаторами. поэтому нативку можно обернуть внешней функцией типа
function O2 takes... внутри этой функции - нативка, с теми же аргументами. вызов будет дольше, это очевидно.
итого наши 4к строк кода теряют огромное количество знаков = вес в архиве теоретически меньше. теоретически потому что полная строчка нативного вызова так или иначе повторяющийся сектор, именно такие сектора очень хорошо сжимаются.
==================================
и ещё по поводу нового обновления (хп объектов)
есть смысл в том чтобы:
  1. ставить хп только если там стоит не максимум. иначе смысла просто нет для 99% декора ставить 100%. это и строчки кода и + к весу и + к времени работы если это не ставить в загрузку карты
  2. косяк в использовании GetLastCreatedDestructable. оно возвращает бж глобалку, но "возвращение" будет правильным, если в эту глобалку записать предыдущее создание, чего не делается. т.е. если это делать то надо bj_lastCreatedDestructable= создать декорацию. сейчас это работать не может. ещё лучше локальную декорацию с обнуление в конце - опять же экономия на знаках.
  3. всё ещё создаются лишние знаки в указании типа декора - то что есть в скрине. могу дать свой ду файл, если это нужно
сделал тест на "оборачивание" нативок и получил экономию 0.5 Кб через обычный архив, что будет очень похожим и на результат мпку архива.
если смотреть глобально, то предрелизная обработка с исправленными 3мя пунктами - это: небольшая экономия веса карты 3-4 Кб, 0.1-0.7 уменьшение времени загрузки. в принципе, это неплохо.
^ хз что там с форматированием :О:
38
Карточка:
как думаешь какой задний фон подойдёт
офк без импорта - только цвет
#1D3F38
еще могу вас удивить великим открытием - есть функция R2SW, которой можно значительно сократить нули
7
я написал еще и конвертер из w3e в jass код :) только там есть некоторые проблемы с координатами и с уклонами, нормально только возвышенности получается конвертировать, но с потерей координат, хотя по моему координаты верные, а значит что-то не так читаю.
Карточка, все готово.
Если хп = 0 значит сразу создается в "разрушенном" виде?
Обновляю , в коде оставил свой конвертер из w3e в JASS код.
war3map.doo из доты не хочет обрабатываться, похоже там что-то сломано :)
ScorpioT1000, видно белые полосы по краям квадрата и мне кажется они выглядят не красиво на черном фоне:)
Обновляю, теперь лишние 0'ли сами убираются :)
38
raichu, это не моё, я просто разместил объяву я просто ответил про цвет и нули
7
аааа :) я просто не нашел тут этого поста, думал твоё :)
в доте war3map.doo не поломанный , просто другой версии, сейчас добавлю "поддержку" 7 версии war3map.doo файлов.
8
хмм, откуда у него другая "версия" и что там другого?
из 4к строк создания декора были 2 такого вида:
call CD( 'YOks', -7040, 832, 128, 4.76837e-007, 0.956, 0 )
call CD( 'YOks', -7040, 128, 128, 4.76837e-007, 0.956, 0 )
соответственно парсер "e-007" моя не панимат. вручную убрал. мёртвые декорации создаются действительно такими как нужно. правда присутствует сей эффект - при таком создании в тумане войны видно живую декорацию, подходишь - а она мёртвая. в принципе это легко пофиксить временным микропросветом всей карты
для фикса достаточно:
FogEnable(false)
FogEnable(true)
после создания всего декора. видимо не для всех карт это будет отличным вариантом (если кто-то что-то прячет с начала игры), но для меня годится вполне.
миникарта, видимо, из-за отсутствия декора окрашивается не так как обычно. просвет тут не помог, но изменения не категоричные абсолютно.
в вжассе/сжасс надо вырубать оптимизатор синтаксиса - иначе пропадает "оборачивание" функции. быстрота создания декора от оптимизации никак не окупается (эффект незаметен), а вес заметен. сами эффекты оптимизаторов восстанавливаются тем же векс оптимизатором, так что проигрыша тут никакого не будет (оптимизатор векса "оборачивание" не убирает без доп. вмешательства в опции).
новые тесты: благодаря новому состава кода, экономия веса карты 9 Кб, это конечно не 1 Мб, но теперь это ощутимо.
экономия скорости загрузки составила 0.5 секунд. всё тестировалось вместе с виджитайзером + оптимизатором векса. 0.5 сек на их фоне это очень неплохое дополнение. строго рекомендую использовать это для релизных версий.
я бы даже сказал это лучшее что сделано за всё последнее время, которое прошло после того как был сделан видж с оптимизатором векса. если сюда ещё и создание ланда подцепить - будет очень круто.
38
на чем писал ? инженерные строки фиксятся заменой %f на %g или наоборот
7
c++ , код в архиве.
но я не заметил проблем со строками
Карточка:
создание ланда подцепить
это уже будет как защита карты, ведь war3map.w3e никуда нельзя убрать? а значит вес карты увеличится.
8
где-то писалось, что не всё можно воспроизвести через джасс (склоны уровни - что-то из этого). так что я не знаю как там может получиться, пригодится ли это. довесок к защите будет не хилый, даже если не удастся оптимизировать загрузку/выиграть с весом
7
хмм, откуда у него другая "версия" и что там другого?
старая версия, которая в w3m файлах. Там просто некоторые данные не сохраняются. Весит на 1-2 кбайт меньше.
Добавить конвертацию из 8.11 в 7.11 версию?
Карточка:
не всё можно воспроизвести через джасс (склоны уровни - что-то из этого)
кажется только возвышенности нормально будут создаваться, можно какой-нибудь генератор рельефа написать :)
Новое обновление, теперь создается пустой и конвертированный doo файл.(если версия 7.11 то создается 8.11 и наоборот)(, файл war3map.doo из доты весил бы на 40 кбайт больше если бы был 8.11 версии)
FogEnable(false)
FogEnable(true)
это тоже добавил, если не нужно будет то просто не копировать последнюю строку из скрипта.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.