Я правильно понимаю, что использование файлов .pld с подгрузкой моделей и текстур сделано, чтобы устранить пролаги при появлении моделей во время игры?
И смежный вопрос - в оригинальном TFT подгрузка происходит при инициализации карты и создании melee юнитов. А возможно ли сделать call Preload("file.txt") ещё до начала игры, на стадии запуска функции InitBlizzard() (это когда происходит инициализация глобалок в bj)?

В общем, сам провел тесты. Да, всё именно так, как я и думал. Можно создать свой .pld и подгрузить его на стадии bj, до инициализации карты. Благодаря этому можно спокойно делать тяжеленные модели с огромным кол-вом текстур (в моей ситуации нужно было избавиться от лагов скайбокса с 27 512х512-пикс текстурами при первом появлении его в игре) без пролагов. Все "лаги" пройдут во время экрана загрузки, незаметно для игрока.
Разница во времени подгрузки с прелоадом и без составила примерно 1 сек, что существенно.

Теперь можно замутить в 1.26а подобие шейдерной воды, причем играбельной, как тут.
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
В общем во время сохранения файла я попробую продублирую весь код, во время загрузки файла я сначало выполню файл в котором чисто Preload("Код") чтобы его занести на компьютер клиента, а только потом начну выполнять Preload("\")\n <Код>\n//"). Надеюсь сработает. А про то что никто в этом не видит смысла, так часто говорят.
Получилось так что я допустил туже ошибку...
Может есть какая-нибудь нативка/функция которая будет синхронизировать информацию? Если нет, то скорее всего я зря пытаюсь.
Есть какая-нибудь статья про TriggerSyncReady и Start? xgm.guru/p/wc3/159609, тут обсуждается похожая ситуация.
В общем дождался друга чтоб протестить TriggerSyncStart и Ready, в итоге я поставил их перед функцией Preloader(сначало Start потом Ready) и всё десинк пропал.

Ответы (1)
23
Borodach, не годится, мне vjass не подходит. Но за помощь спасибо)
23
В общем, сам провел тесты. Да, всё именно так, как я и думал. Можно создать свой .pld и подгрузить его на стадии bj, до инициализации карты. Благодаря этому можно спокойно делать тяжеленные модели с огромным кол-вом текстур (в моей ситуации нужно было избавиться от лагов скайбокса с 27 512х512-пикс текстурами при первом появлении его в игре) без пролагов. Все "лаги" пройдут во время экрана загрузки, незаметно для игрока.
Разница во времени подгрузки с прелоадом и без составила примерно 1 сек, что существенно.

Теперь можно замутить в 1.26а подобие шейдерной воды, причем играбельной, как тут.
Принятый ответ
Ответы (13)
15
EugeAl, А погоду можно подгружать на экране загрузки?) И если это возможно то как это делать?
23
LastUchiha, так же, либо на стадии bj, либо через правку/инжект функции main (на отдельной карте), если нужно сделать постоянную погоду. Так же и с туманом SetTerrainFogEx
С .pld тут не выйдет, ибо погода - тупо данные из slk таблицы
23
LastUchiha, на карте такое не сработает, это только с модами, нужно прописать функцию в bj (blizzard.j) в архиве игры, и запускать её из InitBlizzard() там же. Любая карта по умолчанию запускает во время загрузки InitBlizzard()
15
EugeAl, А, ну тогда провал полнейший). А ведь в war3map.j можно вроде поменять InitBlizzard() на что-то другое, не?
23
LastUchiha, туда можно просто дописать необходимое через инжект/правку функции main
Про инжект самый первый комментарий здесь, Категория inject
15
EugeAl, А что если в war3map.j всё делаю, а не в триггере, куда это ставить?
! inject config
! endinject
23
LastUchiha, я это не делал, но насколько помню, можно в шапке карты, где Нестандартный код, а vjass парсер при сохранении карты сам поставит куда нужно. Ну лучше уточнить, у тех, кто делал.
15
//! inject config
call BJDebugMsg("+")
//! endinject
Вот этот вариант поставит действие в функцию config т.е. насколько я понял это действие в лобби, соответственно много чего не работает.
//! inject main block
call BJDebugMsg("+")  //Действие в начале функции main
//! dovjassinit
call BJDebugMsg("-")  //Действие в конце функции main
//! endinject
Вот этот вариант мне и помог прелоаднуть погодные эффекты на экране загрузки.
Если просто создавать эффекты сразу записывая их в переменную в функции main, то ничего не сработает, а если ввести допустим в конце функции main что-то по типу: call InitWeatherEffects(), и выше сделать свою функцию с названием InitWeatherEffects, в которой погодные эффекты сразу записываются в переменные, то тогда сработает.
Вот и решил отписать, возможно кому то это и поможет что-то запрелоадить во время экрана загрузки карты.
23
LastUchiha, Ну да, принцип похож на bj. Спасибо за инфу, про инжект, буду знать)
15
EugeAl, Блин, я в этом всего то 7 месяцев, а уже инфу кому то дал... xD
23
LastUchiha, ну почему нет?) 7 мес уже хорошо, вполне)
15
EugeAl, Нуу не знаю, опыта ещё очень мало в этом деле. Я вот загорелся идеей, сделать Skyrim в варкрафте 3, ну именно карту, но очень много работы предстоит сделать.
38
А в чем шейдерность воды? Скайбокс долэен быть на нужной высоте и рельеф тоже? Или там прозрачный ландшафт?
Ответы (23)
23
ScorpioT1000, самих шейдеров нет, естественно.
Скайбокс специальный, с текстурами отраженного неба, сбоку и внизу, + анимация текстур ночь утро день вечер
И да, прозрачный и полупрозрачный ландшафт.
Мб неправильно выразился насчёт шейдеров, но по идее свойство материала типа зеркальности - разве не шейдерность?
Потому и написал "подобие" (в смысле визуально похоже, но не является) )
38
EugeAl, да, но ведь оно не зеркальное. Или там скайбокс отзеркален специально как сверху, так и снизу?
Мне напомнило древние работы, где делали полупрозрачное озеро и внутри озера переворачивали все декорации (масштаб выставлялся отрицательный по Z). Тоже было типа отражение
38
EugeAl, Предлагаю попробовать поиграть в это и зафигачить статью со скринами
30
А в чем шейдерность воды?
Всё рисуется с помощью шейдеров. Так что любая вода шейдерная.
23
ScorpioT1000, да, скайбокс отзеркален. Он сделан в виде сплющенной сферы, где сверху небо, а снизу тоже небо, перевернутое, но там текстуры другие, подправлены в фш, чтобы они выглядели как отражение в воде (размытие по Y в низу самих текстур). Плюс текстура ландшафта не совсем прозрачная - для придания цвета "отражению".
Всё верно, вдохновлялся я как раз теми древними работами)
Насчёт статьи подумаю) это возможно, правда придётся в ней писать и методологию создания таких текстур в фш, точнее gimp... в общем немалая работа.
38
EugeAl, было бы круто и достойно для пуляния на главную
Кусочки видео ещё для затравки)
23
ScorpioT1000, с одной стороны да, круто будет)
С другой стороны, хочется в будущем "взорвать" хгм "контент-бомбой", когда уже прям демку выкину, где будет и это + ещё скайбоксы, плюс куча моделей, плюс новые фичи и механики, плюс много новых триггеров и фич для гуи, почти весь переведённый на русский язык umswe и плюшки для редактора карт. Всё это есть, кроме моделей, просто ждёт своего часа. А так - если я фичи по одной выложу, ну как-бы... не будет такого эффекта)
Так что думаю еще, колеблюсь)
24
EugeAl, а нужно ли оно всё в куче?
Контент, если это не цельный проект, всегда лучше выкладывать самостоятельными единицами.
23
avuremybe, это получается цельный проект - мод-патч, где одно завязано на другом, особенно технически. Скажем, те же скайбоксы в связке с погодными эффектами, в т. ч. кастомными, и освещением прописаны в скрипт динамической погоды и в т. ч. в новые гуи действия по работе с погодой. И так далее, и тому подобное.
Со скриптом вообще геморрой будет, если пытаться его разделить на части, хотя бы потому, что там единая бд с другими механиками.
Впрочем, некоторый контент типо паков буду и отдельно выкладывать)
38
EugeAl, если ещё немного сделал - всегда можно компонентный подход примерить. Выделять какую-то абстрактную сущность, ту же бд, а к ней цеплять компоненты, которые не зависят друг от друга и не знают друг о друге, только обмениваются событиями через ту же бд или общую систему событий. Бд, в свою очередь, не обращается к конкретным компонентам. Это не только подход конкретного языка типа vjass, это именно подход к разработке, применимый вообще где угодно
24
EugeAl, ты говоришь о нескольких наработках, которые ты связал кодом.
Скорпи верно говорит - избавь их от этих пут и оформляй как серию самостоятельных.
23
ScorpioT1000, с jass такое не прокатит, всё что доступно - это blizzard.j. war3map.j не подходит (нужно на все карты чтоб работало)
Что касается внутреннего разделения, то бд и функции от неё и так отделены.
Вторая проблема - используемые slk и txt файлы, а там никакого разделения нет и невозможно, а в картах не все эти файлы возможно использовать. Переводить всё это в РО тот ещё геморрой.
В общем, подумаю - что будет просто отделить, то выложу как нибудь)
38
EugeAl, вроде на zinc есть генератор slk или только доставание из ро?
23
ScorpioT1000, так получается нужно наоборот, slk переводить в РО, чтоб в отдельную карту всунуть как наработку редактируемую.
26
EugeAl, Кажется тут есть одна серьездная проблемка.
Тот же дождь будет проходить сквозь террейн не меняя угол в отражении.
Разлагающиеся юниты под землей будут видны.
Прочие утопленные декорации, итд

А так реально прикольно смотрится.
38
Jack-of-shadow, поэтому надо режиссировать и постановку сцен/локаций делать хитро)
23
Jack-of-shadow, проверял я этот момент. В общем, под полупрозрачным террейном почему-то не видно погоды/юнитов/декор. Кроме скайбокса. Видно только под абсолютно прозрачным. Возможно, так было задумано близами для их скайбоксов
38
EugeAl, так вот почему они полностью прозрачные делали для отзеркаливания декораций
23
ScorpioT1000, Да, вот. для просвета надо 100% прозрачный
Загруженные файлы
26
Jack-of-shadow, проверял я этот момент. В общем, под полупрозрачным террейном почему-то не видно погоды/юнитов/декор. Кроме скайбокса. Видно только под абсолютно прозрачным. Возможно, так было задумано близами для их скайбоксов
Мне кажется, что поломано полупрозрачное смешение у самого террейна, поэтому объекты под ним пропадают. А у моделей скайбоксов фишка в том, что там в материалах стоят два флага, которые полностью убирают их из буфера глубины, и заставляют рендериться на экране всегда, независимо от того, что их перекрывает.
Для эксперимента можно попробовать тыкнуть любой модельке свойства NoDepthSet и NoDepthTest, и засунуть её под полупрозрачный террейн, возможно прокатит.
23
Makeba, ну хз, обычный пнг формат текстуры был, так же как и всегда делаю. А вот с тестами глубины можно попробовать, но скорее всего будет жутко глюкавая модель. Сам скайбокс тоже глючит дико, если его смотреть с неигровой большой высоты в том же редакторе карт. Как и стандартные скайбоксы, в общем
38
Makeba, дыг там в материале фича такая, up blend чтоль называлась, игнорит вообще всё. Причем её и в моделях можно ставить и будет работать. Вот тоже на ковыряние и эксперименты на том же уровне, как ты эти кинематик файлы юзал
Чтобы оставить комментарий, пожалуйста, войдите на сайт.