Фрагмент данных старкрафт

Обновлено: 07.07.2024

В прикреплённом файле находится word-версия данной статьи. Она лучше отформатирована и её удобнее читать. Рекомендую воспользоваться именно ею.

В данной статье вы познакомитесь с составом редактора, узнаете какая часть интерфейса за что отвечает и что в целом может, освоите некоторые базовые приёмы работы. Это поможет новичкам заложить основы для дальнейшего самостоятельного изучения редактора. Также, для лучшего понимания всех тонкостей не лишнем будет изучить другие статьи, углублённо исследующие отдельные аспекты процесса создания карты. Более опытным картоделам статья поможет ускорить поиск необходимых инструментов и настроек редактора и, возможно, подскажет некоторые неизвестные им моменты.


StarCraft — серия стратегий в реальном времени, разрабатываемая компанией Blizzard Entertainment. Она схожа с предыдущим хитом Blizzard — Warcraft, но действие игры происходит на космических просторах в фантастическом сеттинге. Первая часть игры была выпущена в 1998 году и была очень успешна. К 2004 году было продано 9.5 миллионов копий игры (4.5 миллиона из них - в Южной Корее), что делает её одной из самых продаваемых игр в истории. StarCraft стала эталоном среди RTS за свою глубину, разнообразие и баланс между расами. Основная история повествует о войне трёх галактических рас: терранов - потомки преступников с Земли, заброшенных далеко в космосе; зергов - отвратительных насекомоподобных существ c коллективным разумом; протоссов - раса религиозных воинов.

Многие видели что для ск2 уже есть карты которые обладают нестандартным интерфейсом, сделанном на диалогах. Но диалоговая система работает только с триггерами, отсюда вытекают некоторые сложности, например, если вы задумали полностью изменить UI, то вам придется построить все абилки на триггерах (или хотя бы их отлавливать)

Собственно это основной минус. Делать кулдаун для триггерных абилок = ад и погибель.
Еще трудно сделать миникарту, рюшечки, типа выделения групп, рожицы чуваков и т. д.

Отдельным минусом идут хоткеи - их делаем отдельно (- к производительности) и желательно в одном триггере. Для всех хоткеев! Это ужас.
(Еще всплывающие подсказки, дада ^^)

И тогда к нам приходит волшебный XML-UI или как говорят еще - лэйауты (sc2 layouts)
Что он позволяет?
С помощью XMLUI можно полностью поменять интерфейс карты, при этом, не городя никаких хитроумных систем для того, что уже создано! Все настройки делаются через дата-едитор.
Грубо говоря, вы можете поставить кнопки абилок в ряд, но при этом триггеры менять не придется! Т.е. все абилки будут также настраиваться из дата-эдитора, их кулдаун, подсказки и т. д., и т. п.
Что дает очень большие возможности по перелопачиванию игрового интерфейса под себя

Часть 1. Теория. Устройство XML/SC2Layout файлов

Q&A XML Batch №13

Что такое UI?
UI = User Interface = Интерфейс.
Нижняя большая панелька, сверху менюшка, справа сверху панелька ресурсов - все вместе - UI
по отдельности - элементы UI

Что за элементы UI?
В ск2 их 2 типа - картинки и фреймы
фрейм - такое окошко, куда могут запихиваться другие окошки-фреймы и где выводиться различная информация.
Весь интерфейс ск2 состоит из них
проще говоря - панелька ресурсов = фрейм
или вот плеер выделил морпеха - снизу показывается его рожица - это фрейм!
он находится во фрейме "нижняя панелька"
которая находится во фрейме "весь интерфейс"

Что за расширение *.SC2Layout?
Это обычный XML файл

А что такое XML?
Предполагается, что вы знаете - если нет, то можно погуглить ;)
Вкратце - это особым образом записанный текстовый файл, по типу эээ, бб кодов на форуме или вики разметки -_-

Как их редактировать?
Обычным блокнотом, после чего сохраняем и заново импортируем в ск2 (не забывая сохраниться после импорта!!)

Подготовка

Весь интерфейс карты хранится в специальных XML файлах, где прописан каждый элемент, а также его положение, привязка, размеры и т. д.
Это файлы с расширением SC2Layout.
Итак, для начала скачаем эти файлы
Положите их на видном месте и пока не трогайте

XML файлы

(я надеюсь все поняли, что этот код описывает просто окошко с кнопкой внутри)
Этот же код в другом варианте:

И применяются такие штуки для записи данных. Т.е. весь интерфейс ск2карты - это набор таких вот таблиц.
Еще пример - допустим мы хотим отобразить в xml виде небольшой лес, с деревьями и пеньками. Вот как это будет выглядеть:

SC2Layout файлы

Как уже говорилось - это тупо xml
В этом разделе все еще теория, ни один пример из него не будет работать у вас в карте =)
Итак - делаем безымянное тупое окошко с привязкой к нижнему правому краю дисплея

Непонятные слова:
Frame - Весь UI состоит из Окошек (Frame), который могут находится друг в друге
type / name - тип и имя окошка, в идеале мы их пока что не трогаем и оставляем какие есть
Очень важно понять что весь интерфейс состоит из бесчисленных фреймов, которые находятся друг в дружке!

Anchor - это "якорь" окошка. Например, миникарту можно прицепить этим "якорем" к правой верхней стороне монитора (или другого окошка), чтобы она там висела и радовала нас своим необычным местоположением
Для якоря очень важны параметры:
side - Сторона на которой находится якорь бывает Top, Left, Right, Bottom - сверху, слева, справа, снизу
Представьте, что у вас есть квадратик, одну сторону которого нужно намазать клеем. side указывает эту сторону.
relative - тут стоит $parent - что обозначает - Клеится к окошку_в_котором_я_нахожусь. Подробнее - чуть ниже.
pos - Min, Max, Mid - Величина к которой прикрепляется якорь. side='Left' pos='Min' - это левый край, side='Top' pos='Mid' - это верх нашего окошка будет по центру relative-окошка
offset - отступ, в пикселях.

Представьте себе такой код, который описывает форум.
В ФОРУМЕ есть один ТОПИК в котором сразу виден один ПОСТ и один КОММЕНТ к нему

К какому окошку будет крепиться фрейм "КОММЕНТ" и в каком положении?

Итак, смотрим - фрейм "Коммент" у нас во фрейме Топик, значит $parent будет Топик
Вычисляем:
Берем Нижний(Bottom) край Коммента и прикрепляем к Нижнему(Max) краю Топика
Потом берем Левый(Left) край Коммента и прикрепляем к Левому (Min) краю Топика
(Если в комменте поменять 2 якорь на
<Anchor side="Right" relative="$parent" pos="Min" offset="0"/>)
то он будет крепиться справа от Топика и будет как нашлепка такая

Вот примерная структура обычного SC2Layout файла

Итак, что тут написано?
Вначале идёт стандартная надпись о том, что это вообще-то xml файл
Дальше идет тег <Desc> - очень важный тег, все sc2layout файлы "заключаются" в него
Дальше - фрейм GameUI - Игровой Интерфейс, по сути такой мегаобщий фрейм.
Но! И он привязан к Мега Божественному Общему Фрейму.
об этом нам говорит строчка - <Anchor relative="$parent"/>
Все фреймы должны иметь якорь, иначе они просто не будут показываться на экране.
Дальше идет коммент - <! UI Container - for all ui elements above the world > - для всех UI элементов в мире, близзы поставили, чтобы не запутаться самим ^^
И идет таки как раз еще один глобальный фрейм - UIContainer
Он, как вы, надеюсь, догадались, находится во фрейме GameUI и привязан к нему
Следующие 3 строчки повторяется та же история для нижней панельки
и вот, наконец - <Frame type="PausePanel" name="PausePanel" template="PausePanel/PausePanelTemplate">
фрейм панели паузы. (если кто не знает – теперь, когда жмешь паузу, появляется такое окошко сверху меню где написано кто запаузил)
собственно остальные внутренности этой панели описаны в файле - PausePanelTemplate.sc2layout, но в них пока лезть не надо

Сейчас самое время чуть передохнуть и усвоить все эти знания, а также открыть скачанный архивчик с sc2layout файлами и, например, просмотреть GameUI.SC2layout
Это будет наш основной файл, и именно там мы будем все менять.

Часть 2. Практика. Курочим интерфейс карты

Заповеди

  1. Если поменять местами фреймы в SC2Layout файле - старкрафт 2 вылетит!
  2. Если поменять тип фрейма в SC2Layout файле - старкрафт 2 вылетит!
  3. Если удалить фрейм в SC2Layout файле - старкрафт 2 вылетит!

Импорт файлов

Распаковываем наш архивчик.
Перемещаем файлы над которыми будем работать в отдельную папку (в данной статье это GameUI.sc2layout).

открываем карту, открываем менеджер импорта (F9)
жмем Ctrl+I и указываем папку, где лежат наши файлы
выделяем нужные галочкой (конкретно сейчас лучше добавить только GameUI.SC2Layout), ОК
(Заметьте, что справа высвечивается состояние файла - сейчас оно added)

Выделяем все файлы > Ctrl+M > New Path - UI/Layout/UI
Ctrl+S - Обязательно надо сохранятся сразу после каждого изменения файла
Заменили/добавили - сохранились сразу же, иначе файлы сбросятся до первоначального состояния.

Миникарта

Итакссс, давайте для начала переместим миникарту в верхний левый угол.
Открываем наш GameUI.sc2layout блокнотом
Находим строчку: <Frame type="MinimapPanel" name="MinimapPanel" template="MinimapPanel/MinimapPanelTemplate">

» Что она означает вы уже должны знать. Если не знаете - лучше перечитать теорию до просветления

Фрейм типа MInimapPanel с именем MinimapPanel, все дальнейшее описание которого находится в файле MinimapPanel.SC2Layout

по строчкам:
Миникарта прикреплена левой стороной (side="left") к родительскому фрейму (relative="$parent") к самому левому краю (pos="Min") с отступом 0
Миникарта прикреплена нижней стороной к родительскому фрейму к самому нижнему краю с отступом 0
Миникарта имеет ширину 395
Миникарта имеет высоту 327
Мы собрались переставить ее вверх, поэтому нам нужно поменять эту строчку

Сохраняем файл, импортируем в карту, сохраняем карту, тестируем:

Отлично!
Но теперь некрасиво смотрятся иконки справа от миникарты, давайте поставим их вниз.
Если они переместились вместе с миникартой и о них ничего в *GameUI.SC2Layout* не указано, то тогда открываем файл *MinimapPanel.SC2Layout* и смотрим в нём.
Нас интересует что-нибудь про кнопки.
(Вообще если переделывать интерфейс под карту надо переделать там всё, но я ограничусь кнопками)

<Frame type="Button" name="PingButton" template="MinimapPanel/MinimapButtonTemplate">
Агааа, это кнопка чтобы сделать пинг на миникарте!
Смотрим сюда:
<Anchor side="Right" relative="$parent" pos="Max" offset="-6"/>
<Anchor side="Bottom" relative="$parent" pos="Max" offset="-226"/>
На этом месте лучше самим поэкспериментировать, чтобы добиться такого эффекта:

Касмер Ярсович

Евгений, Например, зайти в данные, скопировать марика, изменить хп энеджи дамаг модель и т.д

Дмитрий Воронков

Касмер Ярсович

Вапросикав мала, так что задам чет
Как сделать телепорт юнита?

Дмитрий Воронков

Касмер Ярсович

Дмитрий Воронков

Артем, действие: Move Unit Instanly выбираешь юнита и выбираешь точку куда он тепнется

Дмитрий Воронков

Артем, Например, когда юнит заходит в область, то triggering unit телепорт в точку 001 например

Касмер Ярсович

Андрей Дмитриев

помогите плиз уже 6 раз скачиваю постоянно такая фигня

Дмитрий Воронков

Александр Шалимов

Всем привет. Возник такой небольшой вопрос: можно ли в редакторе менять название атрибутов единицы?
Сейчас попробую объяснить на примере Гидралиска. Всем известно, что он легкий и органический; в редакторе можно это увидеть, если перейти в его таблице в поле "(Основные свойства) Единица: Атрибуты+" (рис. 1). Теперь скажу, зачем мне менять атрибуты. Blizzard выпустила официальный мод с модельками из WarCraft III. Но при его подключении все атрибуты меняются на ВарКрафтовские (там ведь была другая система защиты); и тот же Гидралиск становится "средняя броня" и "органическая единица" (рис. 2).
Как я понял, меняется только название. Поэтому я бы очень хотел видеть Гидралиска, даже после подключения новой библиотеки, с атрибутами "легк." и "органич.". Подскажите, пожалуйста.

Читайте также: