Warcraft 3 Reforged рекламируют с помощью сцен, которых нет в самой игре
Возможно, разработчики просто забыли поменять старый ролик.
Фанатское сообщество Warcraft недовольно качеством Warcraft 3 Reforged, ремастера классической стратегии. Участники сабреддита Warcraft 3 обратили внимание, что в рекламных материалах ремастера показываются сцены, отсутствующие в игре.
А вот еще история
Почему фанаты недовольны Warcraft 3 Reforged
Речь идет о разделе на официальном сайте Warcraft 3 Reforged, посвященном сюжетной кампании игры. Разработчики здесь рассказывают о четырех часах переработанных внутриигровых роликов и показывают один из них — катсцену из Стратхольма.
Проблема в том, что в финальной версии Warcraft 3 Reforged такая катцена отсутствует. Вместо сложных кинематогарфических сцен с проработанными анимациями здесь показаны просто модели персонажей, стоящие рядом друг с другом.
СЕКРЕТЫ Warcraft 3 Reforged
В принципе, считают фанаты, это можно считать ложной рекламой. Некоторые игроки пишут, что планируют подать на Blizzard жалобы в Федеральную торговую комиссию США, занимающуюся защитой прав потребителей.
При этом само описание, вероятно, не противоречит действительности. В Warcraft 3 Reforged действительно переработали внутриигровые ролики, просто теперь они выглядят не так, как в той версии игры, что демонстрировалась на BlizzCon.
Возможно, это стало следствием отказа разработчиков от корректировки сюжета игры. Некоторое время сотрудники Blizzard собирались привести сюжет Warcraft 3 Reforged в соответствие с актуальным лором вселенной, однако затем — под давлением фанатского сообщества — отказались от этой идеи.
Тем не менее, разработчики никогда не говорили, что отказ от правки сюжета приведет к исчезновению проработанных катсцен.
Источник: wtftime.ru
Как сидеть на двух стульях. Совмещаем 1.26 и Reforged.
Цель этой статьи собрать различные техники и фишки, позволяющие создать мультиверсионную карту полноценно работающую на клиенте с любым актуальным патчем (в частности, 1.26, 1.31, 1.32+ Reforged SD/HD). Показать, как внедрять механики из последних патчей, не теряя совместимости со старым клиентом.
Если у вас есть замечания по оптимальности описанных методов или другие предложения, то обязательно напишите об этом. Будем вместе дополнять статью.
Оглавление
- Основы. Узнаём версию клиента
- Импорт HD моделей. Альтернативные модели
- Исполнение новых функций через Preloader
- Работа с фреймами
- Превью и миникарта
- Анимируем портреты в Reforged HD
- Два стула и табуретка. Совместимость с патчем 1.31
Основы. Узнаём версию клиента
Всё описанное далее актуально для создания мультиверсионных карт в редакторе патча 1.26. Карты, созданные в более новых патчах, не будут работать в старых клиентах.
Для начала, полезно будет узнать текущую версию клиента (1.32, 1.31 или более старая версия). Для этого используются следующие функции:
Скопировать в буфер
//True, если версия клиента 1.32+ function Is132OrNewer takes nothing returns boolean return GetLocalizedString(«REFORGED») != «REFORGED» endfunction //True, если версия клиента 1.31+ function Is131OrNewer takes nothing returns boolean return GetLocalizedString(«WINDOW_MODE_WINDOWED») != «WINDOW_MODE_WINDOWED» endfunction
Также, при игре на 1.32+ Reforged важно знать текущий графический режим (SD или HD). Для этого можно воспользоваться фактом, что у некоторых аудиофайлов разная длина в этих двух версиях:
Скопировать в буфер
function IsHD_Default takes nothing returns boolean return GetSoundFileDuration(«sound\buildings\death\ancientuprootdeath1.flac»)==4631 endfunction
Тем не менее, предпочтительнее использовать вместо стандартного аудиофайла заранее импортированную пару. Это связано с тем, что некоторые игроки ставят модификации на замену аудиофайлов (в частности, очень популярен мод на «Возвращении старой русской озвучки»). И этот мод конфликтует с этим методом. Импортируйте файл_1 с полным путём «Check_SD_HD.mp3» и файл_2 с полным путём «_HD.w3modCheck_SD_HD.mp3».
Скопировать в буфер
//True, если у локального игрока включена HD графика function IsHD takes nothing returns boolean return GetSoundFileDuration(«Check_SD_HD.mp3»)==144 endfunction
Внимание! При игре по сети возможно, что у разных игроков будет включён различный режим графики. Используйте только локальный код (без создания новых объектов) при проверках на графический режим.
Скопировать в буфер
function GetVersion takes nothing returns nothing local string s if Is132OrNewer() then set s=»1.32+ Reforged» elseif Is131OrNewer() then set s=»1.31″ else set s=»1.26-1.30.2″ endif set s=»Current version — «+s if IsHD() then set s=s+» (HD)» else set s=s+» (SD)» endif call DisplayTextToPlayer(GetLocalPlayer(),0,0,s) endfunction
Карта-пример (12.6 КБ) с определением версии игры и результаты её запуска на разных клиентах:
Импорт HD моделей. Альтернативные модели
Для импорта HD-версий моделей достаточно добавить к полному пути префикс «_HD.w3mod». Аналогично импортируются текстуры.
При замене стандартных моделей стоит учесть, что у некоторых юнитов в HD режиме меняется путь к модели (поле file в Редакторе Объектов) и масштаб (scale), в случаях, если в эти поля не были внесены изменения. Используя этот факт можно проводить замену моделей только для одного из режимов, используя в другом версию по-умолчанию. К примеру, юнит Мечник (hhes) в SD режиме имеет модель человеческого капитана «unitshumanTheCaptainTheCaptain.mdx», а в HD эльфийского солдата «UnitsHumanHighElfSwordsmanHighElfSwordsman.mdx».
Если же в поле масштаба внести изменение, то может получиться так, что юниты со стандартными моделями получаются сильно несоразмерными в SD и HD режимах. Это связно с тем, что несоразмерен масштаб самих моделей.
И изменение поля scale при переходе из SD в HD как раз компенсировало эту несоразмерность. В этих случаях можно задать необходимый размер юнита в коде карты. Это не вызывает рассинхронизацию.
Скопировать в буфер
function Rescale takes unit u, real sclSD, real sclHD returns nothing local real scl if IsHD() then set scl=sclHD else set scl=sclSD endif call SetUnitScale(u,scl,scl,scl) endfunction
Карта-пример (4.15 МБ) с новой импортированной SD и HD моделью; только с изменённой SD моделью; с изменением масштаба юнита в зависимости от режима графики:
Исполнение новых функций через Preloader
Внимание! Описанный ниже метод подходит только для версии 1.32+ Reforged. Он не работает для 1.31.
К версии 1.32+ Reforged в Warcraft было добавлено много новых native-функций. Но при попытке обратиться к ним напрямую в редакторе 1.26 происходит ошибка компиляции (так как они не описаны в текущих common.j и blizzard.j). Обойти эту ошибку можно использовав следующую команду:
call Preloader(«CustomPreloader.pld»)
Эта команда выполняет функцию PreloadFiles() из импортированного и предварительно созданного файла предзагрузки «CustomPreloader.pld» (название файла произвольно). Воспользуемся здесь тем свойством этой команды, что при синтаксической ошибке в этой функции она просто игнорируется, а не вызывает вылет игры с ошибкой. Использовать эту команду можно в любой момент игры. Разрешено иметь несколько различных .pld-файлов.
Внутри функции PreloadFiles() нельзя ссылаться на пользовательские функции из карты, а также на глобальные переменные. Разрешено использование локальных переменных.
В качестве примера, используем функцию BlzSetAbilityIcon() для изменения иконки способности Самопожертвование (Adtn) у Светлячка, когда игра запущена в версиях 1.32+ Reforged. С помощью блокнота создаём новый файл с названием и разрешением «CustomPreloader.pld» и вставляем туда следующий текст:
Скопировать в буфер
function PreloadFiles takes nothing returns nothing call BlzSetAbilityIcon(‘Adtn’,»ReplaceableTextures\CommandButtons\BTNSacrifice.blp») endfunction
Импортируем этот .pld-файл в карту. Вызываем выполнение этой команды через call Preloader(«CustomPreloader.pld»).
Карта-пример (13 КБ) с вызовом новой native-функции через Preloader:
Работа с фреймами
Для работы с фреймами в рамках мультиверсионной карты воспользуемся тем свойством функции Preloader(), что при вызове она наследует поток исполнения. И хотя внутри функции PreloadFiles() мы не можем обратиться к глобальным переменным или другим пользовательским функциям, но через функцию GetTriggeringTrigger() разрешено получить триггер, вызвавший исходный поток.
В качестве примера создадим кнопку, выводящую всем игрокам простой текст по нажатию.
Подготовим файл ButtonExample.pld, в котором будет создаваться элемент-кнопка
Скопировать в буфер
function PreloadFiles takes nothing returns nothing local trigger trig = GetTriggeringTrigger() local framehandle mainButton =BlzCreateFrame(«ScriptDialogButton», BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI,0), 0,0) call BlzFrameSetSize(mainButton, 0.12,0.05) call BlzFrameSetAbsPoint(mainButton, FRAMEPOINT_CENTER, 0.3,0.3) call BlzFrameSetText(mainButton, «Hello, world!») call BlzTriggerRegisterFrameEvent(trig, mainButton, FRAMEEVENT_CONTROL_CLICK) set trig=null set mainButton=null endfunction
В коде карты прописываем функцию ButtonTrigger_Init():
Скопировать в буфер
globals trigger udg_trig triggeraction udg_trigact endglobals //Функция с действиями по нажатию кнопки function ButtonTrigger_ClickAction takes nothing returns nothing call DisplayTextToPlayer(GetLocalPlayer(),0,0,»Hello, world!») call Preloader(«ButtonResetFocus.pld») //Исправление залипания фокуса на кнопке после нажатия endfunction //Функция создания кнопки function ButtonTrigger_CreateButton takes nothing returns nothing call TriggerRemoveAction(udg_trig,udg_trigact) //Уберём с триггера действие по созданию кнопки set udg_trigact=null call Preloader(«ButtonExample.pld») call TriggerAddAction(udg_trig,function ButtonTrigger_ClickAction) //Добавим действие по нажатию кнопки endfunction //Создаём и запускаем триггер function ButtonTrigger_Init takes nothing returns nothing set udg_trig=CreateTrigger() //Создаём триггер. В итоге он будет запускаться при нажатии кнопки. set udg_trigact=TriggerAddAction(udg_trig,function ButtonTrigger_CreateButton) //Понадобиться только для первонального создания кнопки. call TriggerExecute(udg_trig) endfunction
Дополнительно, для исправления фичи (или бага?) с залипанием фокуса на кнопке после нажатия, создадим и импортируем файл ButtonResetFocus.pld:
Скопировать в буфер
function PreloadFiles takes nothing returns nothing call BlzFrameSetEnable(BlzGetTriggerFrame(), false) call BlzFrameSetEnable(BlzGetTriggerFrame(), true) endfunction
Источник: xgm.guru
Фанат улучшил качество катсцен в Warcraft III: Reforged с помощью нейросети
На YouTube-канале Upscale были опубликованы видеоролики из ремейка стратегии Warcraft III: Reforged, которые подверглись улучшению с помощью нейросети, благодаря чему их разрешение было увеличено с 1080р до 8К и 60FPS. Смотрятся они в результате куда четче официального варианта.
Пользователи в комментариях отмечают, что энтузиасту удалось справиться с апдейтом видео лучше, чем Blizzard и ее партнерам.
Запуск Warcraft III: Reforged стал провальным. Пользователи сильно раскритиковали Blizzard за невыполненные обещания, ложную рекламу и многочисленные технические проблемы. Компания пообещала исправиться.
Добавляйтесь в наш Telegram-канал по ссылке или ищите его вручную в поиске по названию gmradost. Там мы публикуем в том числе и то, что не попадает в новостную ленту. Также подписывайтесь на нас в Яндекс.Дзене, Twitter и VK. И не забывайте, что у нас появились тёмная тема и лента вместо плиток.
Подписывайтесь на наш Telegram канал, там мы публикуем то, что не попадает в новостную ленту, и следите за нами в сети:
Источник: gamemag.ru