Все заявки на возврат вещей оформляются в этом разделе, и по данным правилам. Кто не будет соблюдать правила будет забанен на форуме.

Dota 2 UI

Тема в разделе "Гайды для потенциальных Редакторов", создана пользователем aaa4xu, 13 май 2012.

  1. aaa4xu

    aaa4xu Администратор Команда форума

    Регистрация:
    12 май 2012
    Сообщения:
    139
    Симпатии:
    31
    Думаю мододелы уже заметили, что UI Dota2 создан не на привычном для Source движка VGUI, а на Scaleform.
    Смысл технологии состоит в том, что движок воспроизводит Flash внутри себя, "общаясь" с ним через некий API.
    С точки зрения файлов, технология представляет собой зашифрованные (сжатые?) .swf файлы с расширением .gfx. В случае Dota2 они находятся в директории resourceflash3 В этой же папке хранятся текстуры в формате .dds, которые используются в этих Flash файлах.

    Декомпиляция .gfx файлов
    Софт для работы
    • Hex редактор (например: Free Hex Editor Neo). Требуется для изменения заголовка .gfx файла, чтобы его можно было распаковать
    • Sothink SWF Decompiler. Разбирает .swf файл на составляющие (Фреймы, ActionScript, Спрайты и т.д.) и позволяет их отууда экспортировать
    • Dota 2 Slasher. Позволяет вшивать новые .gfx файлы в архивы Dota 2

    Алгоритм
    • Переходим в директорию resourceflash3 и выбираем интересующий нас .gfx файл
    • Копируем его в удобную для нас папку
    • Открываем в HEX редакторе. Первые 3 байта меняем на CWS (именно большими). Сохраняем. Закрываем файл в редакторе
    • Переименовываем имя_файла.gfx в имя_файла.swf
    • Открываем имя_файла.swf в Sothink SWF Decompiler. В списке справа выбираем интересующие нас ресурсы, ставим около них галочки, экспортируем

    Компиляция .gfx файлов
    Сорри за то, что долго не оформлял мануал по запаковке, но на это были свои причины. Во-первых учеба в универе стремится к сессии, а значит и напрягают все сильнее. Во-вторых нужно было однозначно выяснить, что из того, что я использовал вначале действительно нужно, а что можно отсечь. В третьих нужно было обновить Dota2Slasher, т.к. в случае в UI намного удобнее работать с файлом в папке, а не перепаковывать vpk файл каждый раз.
    Софт для работы
    Алгоритм
    Вообще, алгоритм получается достаточно объемный, но легко автоматизируемый. Возможно, чуть позже я выложу свои .bat файлы для автоматизации.

    Для начала, требуется понять, как все работает. GFX файлы - скомпилированные через GFXExport .swf файлы. В теории для подготовки .swf файла нам нужен только Adobe Flash, одноко, из-за того, что Action Script редактор там просто ужасный, придётся извращатся: графику придется готовить в Adobe Flash и экспортировать в .swc, а скриптовую часть писать в Flash Develop. Описывать работу с графикой я сейчас не буду - так как сам еще мало что понимаю. Могу конечно вывести "квадратик", а вот навесить на его уже какоенибудь событие - уже это я пока не могу.

    Простейший алгоритм я сейчас продемонстрирую на примере замены top_bar (верхняя панель меню) для открытия внутриигрового магазина. В данном примеры мы не будем использовать никакой графики, а значит нам Adobe Flash не потребуется.

    В первую очередь запускаем Flash Develop и создаем там AS3 проект. Обратите внимание на Имя пакета, в данном случае оно должно иметь значение top_bar_fla.
    Окно создания проекта (развернуть)

    В окне навигации по проекту нажимаем правой кнопкой мыши на top_bar_fla и выбираем Add > New Class
    Окно навигации по проекту (развернуть)

    Заполняем окно в соответствии со скриншотом
    Создание нового класса (развернуть)

    Нажимаем на новый файл в окне вавигации правой кнопкой мыши и выбираем Set Document Class
    Заменяем код файла на следующий:
    Код (развернуть)
    Код:
    package top_bar_fla
    {
    	import flash.display.MovieClip;
    	import flash.utils.setInterval;
    	
    	dynamic public class MainTimeline extends MovieClip
    	{
    		public var gameAPI:Object;
    		
    		public function onLoaded() {
    			this.gameAPI.OnReady();
    			var api = this.gameAPI;
    			
    			setInterval(function() {
    				api.DashboardSwitchToSection(7);
    			}, 5000);
    		}
    	}
    }

    Сохраняем. Теперь компилируем код в .swf нажатием на кнопку F8 или на панели инструментов
    Show Spoiler


    Теперь в Мои документы > FlashDevelop Projects > Имя проекта > bin лежит .swf файл (не expressInstall.swf!). Копириуем его в папку с GFXExport. Теперь перетаскиваем .swf файл на файл #compile. В папке появится .gfx файл. Осталось только внедрить его в игру. Предлогают удалить оригинальный файл из игровых архивов и положить наш файл в папку с игрой. Запускаем Dota2Slasher:
    Код:
    Dota2Slasher.exe -r "resourceflash3top_bar.gfx" 
    Теперь копируем наш .gfx файл (и если нужно переименовываем) в dotaresourceflash3top_bar.gfx

    Запускаем игру. Признаком того, что вы все сделали правильно (ну кроме того, что игра не упадет при запуске) будет отсутствие верхней панели. Если файл назван правильно и лежит в нужной директории в течении 5 секунд вы узрите следующую картину:
    Dota 2 (развернуть)

    На этом все. Если будут появлятся интересные материалы по Dota 2 UI буду отписываться. Всем удачи! Отписывайтесь о своих результатах и проблемах, обязательно отвечу.
     
    SuperFlick и Jet_Shark нравится это.
  2. finargot

    finargot Администратор Команда форума

    Регистрация:
    12 янв 2012
    Сообщения:
    1.417
    Симпатии:
    363
    По-моему в команде модмейкеров будет пополнение :)
     
    SuperFlick нравится это.
  3. Jet_Shark

    Jet_Shark ΑΩ

    Регистрация:
    3 май 2012
    Сообщения:
    419
    Симпатии:
    126
    По-моему в команде модмейкеров будет пополнение :)


    Думаю, скорее всего...
    Автору спс, надо конечно всё проверять и делать наброски, данный гайд, должен иметь наработки и UI образцы готовые.
    Тему перенёс в подраздел "Гайды для потенциальных Редакторов"
     
    SuperFlick нравится это.
  4. aaa4xu

    aaa4xu Администратор Команда форума

    Регистрация:
    12 май 2012
    Сообщения:
    139
    Симпатии:
    31
    Пока показывать нечего. Сейчас просто пытаюсь найти способ запустить "левую" gfx внутри игры. Будут успехи - будут и образцы. На данный момент в теме - все что мне известно + некоторые пометки о том, что уже опробовано.
     
  5. SuperFlick

    SuperFlick Courier

    Регистрация:
    28 мар 2012
    Сообщения:
    48
    Симпатии:
    37
    Нормуль. такие темы будут делать раздел модификаций актуальным и после появления магазина=)
     
  6. aaa4xu

    aaa4xu Администратор Команда форума

    Регистрация:
    12 май 2012
    Сообщения:
    139
    Симпатии:
    31
    Всем Scaleform, посоны :lostneprowaet:
    Ближайшие пару часов оформлю шапку по внедрению своих swf в игру
     
    Jet_Shark нравится это.
  7. aaa4xu

    aaa4xu Администратор Команда форума

    Регистрация:
    12 май 2012
    Сообщения:
    139
    Симпатии:
    31
    Оформил в шапке мануал по компиляции .gfx и внедрении их в игру. Возможно позже дополню описанием каждого из доступных сейчас .gfx файлов (функционал, gameAPI, скриншоты, если есть чтото интерестное). Но файлов много, а я один...
     

Поделиться этой страницей