The Sims 3, Gran Turismo и MUGEN

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » The Sims 3, Gran Turismo и MUGEN » M.U.G.E.N. » M.U.G.E.N. Руководство по созданию персонажа


M.U.G.E.N. Руководство по созданию персонажа

Сообщений 1 страница 5 из 5

1

            Mugen Что это?  Как написано в Википедии это.. - графический 2D движок виртуальных сражений, разработанный компанией Elecbyte, который позволяет игрокам создавать своих персонажей, уровни и другие игровые объекты при помощи интерпретируемых игрой текстовых файлов, графики, и звуков. Для создания музыкального оформления заднего плана, антуража главного меню и т. д. Скачать его можно бесплатно с официального сайта (ссылка была не рабочая, и мы ее удалили).  Движок стал выпускаться с 1999 года.. после чего были выпущены различные версии и обновления Мугена, последнее было выпущено в 2013 году..
Так что, если вы любитель Mortal Kombat или Street Fighter, Killer Instinct или других кровавых драк.. то во всемирной паутине можете поискать различных персонажей и арены, для этого файтинга.
В 2017 году летом, было найдено видео на ютубе, где у парня было собрано в мугене более 12.000 персонажей.

            Многие любопытные игроки, могли заинтересоваться что означают эти буквы с точками, точнее аббревиатура названия движка M.U.G.E.N. Так вот, Elecbyte утверждает, что забыла расшифровку... На одном из зарубежных форумов был ответ от админов форума:"Mostly Useless, Generating Excessive Noise", что в переводе примерно означает- "В основном бесполезное создание чрезмерного шума", правда это или нет, никому не известно, Elecbyte это никак не подтвердило. Однако у Википедии совсем другая информация, по их источникам в файле «readme» из документации к продукту MUGEN написано, что значение такого сокращения отсылает нас ко времени, когда движок предназначался для подражания играм-стрелялкам, а отнюдь не двухмерным сражениям.

В данной теме мы будем писать, что же представляет из себя этот M.U.G.E.N.
Информация предоставлена с официального сайта Elecbyte


          ОБЗОР         

            Если вы обновляете старую версию M.U.G.E.N на новую 1.1, то тут можно почитать как это сделать.

            M.U.G.E.N - это 2D боевой игровой движок, который позволяет создавать коммерческие игры боевого жанра. Почти все можно настроить, от отдельных персонажей до этапов, а также внешний вид игры.

            После загрузки M.U.G.E.N разархивируйте его в новую папку и дважды щелкните mugen.exe для запуска.

            Большинство контента, созданного для M.U.G.E.N, как правило, это отдельные персонажи, этапы или мотивы (скринпаки, лайфбары и т.п.). Сборка игры так же проста, как загрузка содержимого по вашему выбору, попробуйте сами настроить M.U.G.E.N, чтобы узнать об этом.

            M.U.G.E.N предназначен для использования людьми с небольшим или отсутствующим опытом программирования, но с некоторым художественным талантом и терпением, чтобы учиться. Конечно, наличие некоторых знаний программирования даст вам немного поразмыслить. Однако, если вы просто хотите играть с загруженным контентом, все, что вам нужно знать, это как распаковать файлы и редактировать текстовые файлы.

            Вот выбор функций, которые вы можете найти в M.U.G.E.N:

- настройка титульного экрана, экран выбора персонажа, жизнь и значки, звуковые эффекты игры, шрифты и многое другое.
- персонажи могут иметь любое количество звуков и спрайтов любого размера, которое ограничивается памятью вашего компьютера.
- выбирайте несколько разрешений, от 320x240 до Full HD, с разрешением 1920x1080 (только для версии 1.1).
- вырезки из сцен.

            Игровой движок:

- используйте до 7 кнопок для персонажа.
- обычные ходы, специальные ходы, супер-движения (Fatality, Brutality...) и т. д.
- снаряды и спецэффекты (например дым у Смоука из МК).
- перемещение назад и комбо, многочастные ходы и броски.
- то, что может сделать ваш персонаж, определяется языком сценариев (скрипты), и вашим воображением.

            M.U.G.E.N является бесплатным для некоммерческого использования. Если у вас есть другие потребности, просто спросите нас. Вы можете прочитать полный текст лицензии в файле README.txt.


          СОДЕРЖАНИЕ И ФАЙЛЫ         

Список файлов.

Файл или папка:             Назначение:
mugen.exe                        Основной исполняемый файл
chars/                               Каталог, содержащий файлы персонажей
data/mugen.cfg                 Предпочтения и настройки (текстовый файл)
data/select.def                   Конфигурация персонажей и уровней (текстовый файл)
data/ остальные файлы      Файлы мотива (основные файлы)
docs/                                 Документация
font/                                  Каталог, содержащий файлы шрифтов
old_tools/                           Инструменты со старой версии MUGEN
sound/                               Каталог, содержащий музыкальные файлы
stages/                              Каталог, содержащий файлы уровней

Типы основных файлов.

Файлы с этими расширениями можно найти в разных директориях игры M.U.G.E.N.

Расширение файла:     Тип:
air                                 Анимация (текстовый файл)
def                                Файл определения (описания) - имеет различные виды использования в зависимости от имени файла (текстовый файл)
fnt                                 Файл шрифта - старая версия; новые файлы шрифтов представляют собой пару .fnt и .sff
sff                                 Файл спрайтов (Спрайт — это набор изображений, соединенных в одно изображение или в 1 файл).
snd                                Звуковой файл.

Файлы персонажа и арены.

Файлы персонажей расположены в виде подкаталогов в папке chars/. Файлы арен находятся в папке stages/. Файлы могут быть названы по-разному для разных персонажей и арен.

Пример файла:        Значение:
player.air                   Анимация (текстовый файл)
player.cmd                 Команды персонажа и определение движений (текстовый файл)
player.cns                  Состояния (states) и поведение (behavior) персонажа (текстовый файл)
player.def                  Основная информация и имена файлов используемых персонажем (текстовый файл)
player.sff                   Спрайты персонажа
player.snd                  Звуки персонажа
arena.def                   Основная информация арены (текстовый файл)
arena.sff                    Спрайты арены, обычно содержится в той же папке что и основной файл арены.
arena.mp3                 Музыкальный файл, закрепленный за конкретной ареной, содержится в папке sound/

Файлы мотива.

Мотивы расположены в субкатегориях в папке data/.

Файл:                    Значение:
common1.cns          Информация поведения (behavior) общая, для всех персонажей (текстовый файл).
common1.snd          Звуковые эффекты доступные для всех персонажей.
fight.def                  Определяет внешний вид экрана боя, значки, жизни и т.д. (текстовый файл).
fight.sff                   Спрайты, используемые на экране боя.
fight.snd                  Звуки, используемые на экране боя.
fightfx.air                Анимационные данные для эффектов во время боя, например кровь, или искры от ударов. (текстовый файл)
fightfx.sff                Спрайты анимационных данных для эффектов в бою.
select.def                Определяет какие персонажи и арены (уровни) включены в игру.
system.def              Определяет внешний вид системных экранов, таких как экран выбора персонажей, меню, титульный экран, версус-экран и др.
system.sff               Спрайты, используемые в системных экранах.
system.snd              Звуки, используемые в системных экранах.


Примечание: официальный сайт elecbyte уже некоторое время не работает, точнее его некоторые страницы, однако можно скачать с их сайта оригинальный M.U.G.E.N. RC3 EX + Alpha со всеми папками и файлами.


Материал перевел и подготовил Sceletron

Теги: #MUGEN,#MugenTutorial

0

2

          Руководство по созданию персонажа         
Информация предоставлена с официального сайта Elecbyte

ОБУЧЕНИЕ 1 - Начало работы: спрайты

            Введение

            Если вы хотите сделать персонажа для MUGEN, вам необходимо хорошо понимать каждый компонент в работе с персонажем. Потому что, если перепрыгивать со страницы на страницу в технической документации, то это может привести к путанице, мы написали учебник, чтобы помочь вам начать работу. Чтобы больше понимать, чаще обращайтесь к документации. Вы можете споткнуться или застрять в чем-то, прежде чем вы создадите свой первый характер, но как и все остальное, когда вы освоите базовые основы, потом становится легче и быстрее добиться прогресса.

            В обучении 1 вы узнаете, как сделать палитру для вашего персонажа, и как собрать спрайты персонажа. Кроме того, вы увидите, как сделать простую анимацию действий. В обучении 2, вы увидите, как определить ограничивающие поля для ваших анимаций, и в обучениях 3 и 4 мы характеризуем простую атаку. Для этого урока, вам понадобятся программы для редактирования изображений, такие как GIMP, Photoshop, или PaintShop Pro.

            Мы предполагаем, что вы, по крайней мере знаете хотя бы базовые знания текстовых редакторов, в редакторах графики, в игровых концепциях, и хорошо ориентируетесь в командных подсказках. Если вы не знакомы со всем этим, мы рекомендуем вам прочитать некоторые обучающие материалы или книги по ознакомлению с веб-программами. Если у вас есть опыт работы в языках программирования, то вам будет гораздо проще понять наши документы. Ладно, теперь давайте начнем.


            Урок 1. Создание палитры

            Все спрайты, принадлежащие к характеру должны быть 256-цветными PNG файлами. Каждый спрайт должен иметь ту же 256-цветовую палитру для того, чтобы они могли корректно отображаются в игре. Если у вас есть опыт работы с Photoshop, следующая часть будет простой для вас. Мы предполагаем, что вы начинаете с истинно-цветное изображение (так называемый RGB в Photoshop). При преобразовании спрайтов в 256 цветов (также известный как индексированные цвета), большинство программ сделает краску палитры желательным образом, и они будут делать это по-разному для каждого спрайта. Здесь мы рассмотрим, как сделать стандартную палитру, и как ее применить к каждому спрайту..
            В Фотошопе, перейдите Image->Mode->Indexed Color (Изображение->Режим->Индексированные цвета...).
Примечание автора: рекомендуется использовать фотошоп не ниже Photoshop CS2.

            Появится окно. В этом окне установите палитру Exact (Точно). Если вы используете Photoshop 5 или выше, не нажимайте на ОК. Для более ранних версий Photoshop, нажмите кнопку ОК, а затем преобразовать в RGB (Image-> Mode-> RGB Color [Изображение->Режим->RGB]), затем нажмите на Image-> Mode-> Indexed Color (Изображение->Режим->Индексированные цвета) снова.

            Теперь выберите Custom (Заказная) палитра, нажмите колесиком вниз чтобы открыть окно Color Table (Таблица цветов). Следующим шагом, чтобы убедиться, цвет фона вашего спрайта имеет индекс цветопередачи 0 (мы называем это "цвет 0"). В M.U.G.E.N, цвет 0 цвет маскировки. Это означает, что все части спрайта, которые имеет цвет 0 не будут обращены.

            Индекс цвета 0 всегда должен быть цветовым фоном. Фактический цвет (значение не индекса) до вас.

            В редакторе таблицы цветов Photoshop, установите верхний левый цвет (это цвет индекса 0 в Photoshop), чтобы выбрать задний цвет фона для спрайта. Вы должны убедиться, что цвет 0 не повторяет никакой другой цвет в палитре, в противном случае Photoshop не установит цветовые индексы правильно. Чтобы сделать это, вы можете взять старый цвет 0 цвет и поставить его там, где используется фоновый цвет. (поменять местами два цвета).
Примечание автора: индексы цветов в таблице цветов, должны быть равны 0, должен получится ярко-салатовый цвет.

            Примечание: Если вы используете версию MUGEN до 1.0, то предпочтительный формат файла, используйте PCX вместо PNG. В Photoshop, PCX файлы имеют нижний правый цвет, индекса 0. с файлами в формате PNG, это верхний левый цвет.

            Нажмите на кнопку Save (Сохранить), чтобы сохранить эту палитру (мы назовем этот файл Player.act для этого урока). Теперь нажмите OK, чтобы применить палитру на это изображение, и сохраните файл как файл PNG.

            Следующий шаг состоит в преобразовании всех остальных изображений для этой палитры, которые вы только что создали (Player.act). Для этого вы можете использовать следующий метод:

            а) Откройте первое изображение, а затем нажмите на Image->Mode->Indexed Color (Изображение -> Режим -> Индексированные цвета).
            б) Выберите созданную палитру из списка и нажмите на Load (Загрузить), и выберите файл палитры которую вы только что сделали (Player.act). Нажмите ОК, пока не вернетесь в главное окно.
            в) Теперь сохраните это в виде файла PNG (PCX), и повторите процедуру для остальных ваших изображений.

            Дизайн палитры очень важен на ранней стадии, прежде чем начнете делать спрайты. Хотя MUGEN позволяет использовать до 255 цветов для каждого спрайта, персонаж с хорошо продуманной палитрой не обязательно может использовать все имеющиеся цвета. Работа с ограниченным количеством цветов уменьшает не только размер файлов PNG, но и делает легче создать альтернативные палитры позже (различные цветовые схемы). Пиксели спрайта можно делать вручную и это гораздо легче, но только с небольшим набором цветов (от 16 до 32), это может стать утомительным, если у вас большой набор палитры для работы. С другой стороны, предварительно оказанные спрайты могут выглядеть лучше с более широким диапазоном цветов, за счет небольшой дополнительной работы. Имейте эти моменты в виду при проектировании палитры вашего персонажа.


          Урок 2. Как начать создавать персонажа?

          Перейдите в папку Chars/ и создайте новую папку для вашего персонажа. Давайте назовем наш характер "Player", для примера (замените "Player" на то название, которым вы хотели бы сами назвать своего персонажа). В этом случае, создайте папку с именем вашего персонажа.


          Урок 3. Что нужно для создания характера?

          В папке с персонажем (в нашем примере это Chars/Player) должны быть следующие файлы различных расширений:

player.AIR
player.CMD
player.CNS
player.DEF
player.SFF
player.SND

Что означает каждый из этих файлов, можно прочитать в Обзоре, который находится в шапке темы.
В этом уроке, вы будете делать player.SFF, файл спрайтов.


          Урок 4. Как создать все эти файлы?

          Вы можете сделать их все с нуля... Или, можете взять их с нашего примера Kung Fu Man (KFM). Каталог персонажа KFM находится в папке Chars/kfm/, или в kfm720, и его рабочие файлы находятся в папке /kfm/.


          Урок 5. ОК, я взял файлы у KFM. И что теперь?

          Первое, что нужно сделать, это скопировать и переименовать файлы, необходимые для вашего персонажа. Предполагая, что имя папки вашего игрока называется "Player", то эти файлы необходимо скопировать:

chars/kfm/kfm.air -> chars/player/player.air
chars/kfm/kfm.cns -> chars/player/player.cns
chars/kfm/kfm.cmd -> chars/player/player.cmd
chars/kfm/kfm.def -> chars/player/player.def

            Что это за файлы? Эти 4 файлы находятся в текстовом формате, который можно редактировать в любом текстовом редакторе, например, MS-DOS Edit или Windows WordPad, подойдет и обычный блокнот. Вот список каждого из этих файлов, что они делают, и их соответствующие файлы технической документации.

.AIR - Данные анимации. Здесь описывается, как спрайты будут анимированы. (Формат AIR)
.CNS - Constants и states. Это то где вы определяете state-ы вашего персонажа. Это ядро, действий и поведения вашего персонажа (CNS format, Expressions)
.CMD - Команды функции движения. В .cmd определяются команды, которые вызывают перемещение триггеров (trigger), в состоянии атаки. Он работает с файлом .cns чтобы определить, как ваш персонаж реагирует на нажатие клавиш и ввод джойстика. (смотри комментарии в файле kfm.cmd)
.DEF - Файлы и основная информация о персонаже. (смотри комментарии в самом файле kfm.def)

            Чтобы настроить основную информацию вашего персонажа, откройте файл Player.def с помощью текстового редактора. Измените поля соответствующие значения. Например:

; Player information                ; Информация игрока
[Info]
name = "Player"                     ;Имя Персонажа
displayname = "Player"           ;Имя Персонажа на дисплее
versiondate = 09,09,2009        ;Дата создания персонажа (Месяц.День.Год)
mugenversion = 1.1                ;Версия MUGEN для работы характера
author = "My Name"                ;Имя автора персонажа
pal.defaults = 1,2,3,4,5,6,7,8   ;Палитра по умолчанию, в порядке предпочтения (до 9)
                                             ;Нумерация начинается с 1
localcoord = 320,240               ;Локальные координаты пространства, ширина и высота

; Files for the player                ;Файлы для игрока
[Files]
cmd = player.cmd                   ;Набор команд
cns = player.cns                      ;Constants (константы)
st = player.cns                        ;States (состояние)
stcommon = common1.cns      ;Common states (из папки data/ или motif)
sprite = player.sff                   ;Спрайты
anim = player.air                    ;Анимация
sound = player.snd                 ;Звуки персонажа
ai = kfm.ai                             ;AI подсказывает данные (Не используется)

; Arcade mode                       ;Режим аркады
[Arcade]
intro.storyboard =                  ;Вступление персонажа
ending.storyboard =               ;Концовка персонажа


          Продолжение. Создание файла спрайтов

          Теперь давайте сделаем player.sff, файл спрайтов персонажа. Он будет содержать все изображения, используемые вашим персонажа. Файл спрайтов называется .SFF, и программа, которая редактируют это, называется sprmake2 (сокращено от Sprite Maker 2 - это новая версия программы, используемой до версии MUGEN 1.0).

            На данный момент мы остановимся на том, как просто сделать анимацию. Если у вас уже есть спрайты, которые вы хотите использовать, используйте их. Давайте предположим, что готовая анимация, которую вы хотите использовать называется stand00.png - stand03.png в каталоге work/Player/. Теперь, создайте текстовый файл в папке work/Player/ и назовите его Player-sff.def. Вот начало текстового файла, который вы будете использовать (строки комментариев начинаются с точки с запятой).

Код:
[Output]
 ;Имя файла SFF для создания (обязательно).
filename = chars/player/player.sff

[Option]
 ;Оставьте все эти параметры по умолчанию. Не волнуйтесь о том, что они делают.
sprite.compress.5 = lz5
sprite.compress.8 = rle8
sprite.compress.24 = none
sprite.decompressonload = 0
sprite.detectduplicates = 0
sprite.autocrop = 1
pal.detectduplicates = 1
pal.discardduplicates = 1
pal.reverseact = 0
pal.reversepng = 0

[Pal]
 ;Это то, где вы указываете цветовые палитры, которые есть у персонажа.
 ;1,1 карты на цветовой гамме 1; 1,2 цветовая гамма 2, и так далее.
 ;У вас их может быть 6.
1,1, stand00.png

[Option]
 ;Эта опция заставляет все спрайты добавлять и использовать палитру 1,1.
 ;Это помогает обеспечить ваш SFF файл правильным построением.
sprite.usepal = 1,1

[Sprite]
 ;Это где вы указали все ваши спрайты.
 ;Первые две цифры в каждой строке номер группы и изображения.
 ;Это есть пара чисел, которые вы используете, чтобы однозначно идентифицировать каждый спрайт.
 ;Имя файла указывается рядом.
 ;После этого, последние два числа X и Y оси
 ;Вы должны будете изменить номера оси для ваших собственных спрайтов.
0, 0, stand00.png,  18,105
0, 1, stand01.png,  18,104
0, 2, stand02.png,  18,104
0, 3, stand03.png,  18,104
; конец файла

            Номер группы и номер изображения, которые вы вводите для каждого спрайта, используется для доступа к нему в файле .air (анимация). Это просто пара чисел, которые вы связали со спрайтом. Например, вместо ссылки на stand02.pcx, вы будете ссылаться на 0,2.

            Номер группы 0 используется для постоянных кадров. Вы можете проверить файл AIR позже для рекомендуемых номеров других действий анимации. Номер изображения просто определяет, какой образ находится в пределах определенного числа групп. Вы должны получить свои собственные оси Х и У у вашего спрайта. Положения кадров в состоянии стоя ставится, как правило, в самом низу в центре спрайта. В спрайтах для прыжка, ось, как правило находится в положении, в котором ноги персонажа были бы, если б он стоял. Это, как правило, находится в центре под спрайтами. Вы можете проверить спрайты игрока KFM, запустив MUGEN и нажав Ctrl-C во время игры. Это покажет где ограничиваются рамки и оси персонажа. Вот некоторые из примеров (рис. 1):
http://s6.uploads.ru/I0ymv.png

Пояснение от автора: Ось X это начало картинки с правой стороны по диагонали, ось Y это начало картинки снизу по вертикале. Разберем самую первую картинку 18,105. 18 это ось X начиная от крайнего локтя, 105 это ось Y верхушка головы персонажа, а точнее его прически, красная точка это 0 координат по оси X, Y.

            Позиции ваших осей, это очень важно. Если они немного не ровно находятся между спрайтами, вы заметите, что ваши спрайты "дрожат" вокруг. Вы можете сделать большие ошибки, спрайты могут в конечном итоге появляется в совершенно неправильных местах.

            После того как будет готов player.txt, перейдите в каталог, где у вас есть mugen.exe и sprmake2.exe, и т.д., и сделайте player.sff, набрав в командной строке:

sprmake2 work\player\player-sff.def

            Если вы получаете ошибки или player.sff не был правильно сделан, проверьте ваши файлы Player.sff и Player-sff.def на наличие ошибок.


          Урок 6. Я сделал файл SFF. Что дальше?

          Хорошо, теперь у вас есть готовые спрайты в player.sff, пришло время, чтобы оживить свой характер. Для того, чтобы сделать готовую анимацию, вы должны создать действие action для него (действие action блок, текст который описывает одну последовательность спрайтов для отображения). Откройте player.air в текстовом редакторе, и добавьте готовые действия анимации. Если ваш файл player.air является копией kfm.air, вы можете просто отредактировать соответствующую группу действий (действие 0 для готовой анимации).

             Пора сделать player.air. Если вы читали файл AIR, то вы знаете формат для .air который является:
1 число,               2 число,      3 число, 4 число, 5 число      [опции]
Group number, image number, X offset, Y offset, game-ticks, [options]

1 число это номер группы спрайтов
2 число номер картинки входящих в группу спрайтов
3 число движение по оси Х
4 число движение по оси У
5 число - это сколько времени будет длится анимация на экране

            Не волнуйтесь о линиях, которые начинаются с Clsn2 и Clsn2Default сейчас.

; Готовая анимация
[Begin Action 0]; Действие 0 готовой анимации
Clsn2Default: 2
  Clsn2 [0] = -10, 0, 10, -79
  Clsn2 [1] = -4, -92, 6, -79
0,3, 0,0, 7
; Эта строка означает, что использует спрайт (0,3) (т.е. номер группы 0, номер изображения 3.)
; отображает его на 7 (время) game-ticks. 1 game-ticks это 1/60 сек, поэтому 60
; ticks составляет 1 секунду. Группа 0 Изображение 3, этим файлом является stand03.pcx.
0,2, 0,0, 7
0,1, 0,0, 7
0,0, 0,0, 7
0,1, 0,0, 7
0,2, 0,0, 7
; конец файла

            Теперь сохраните этот файл, и вы готовы посмотреть как выглядит ваш персонаж!


          Урок 7. Проверка ваших действий

          Если все файлы находятся в нужном месте, вы можете напрямую загрузить свой характер через MUGEN, набрав в командной строке:

mugen player player

            Это ярлык для Versus Mode. В настоящее время, не волнуйтесь, если вы видите предупреждения в верхней части экрана. Предупреждения являются признаком того, что что-то неверно или отсутствует в вашем характере. В этом случае, у вашего персонажа могут отсутствовать необходимые спрайты или анимационные действия.

            Если вы увидели что спрайт находится слишком высоко, как будто он плавает над землей, то переместите его ось чтоб было ровно. Просто помните, что ось находится на уровне земли, когда герой находится на земле. Кроме того, если ваш персонаж находится слишком далеко вперед, переместите его по правую ось. После того как вы настроили оси для всех спрайтов правильно, ваш персонаж не должен быть раздвижным или ерзать вокруг да около во время анимации.

            Вы случайно нашли № группы спрайта + номер изображения, которого не существует, то ничего не будет обращено. Так что, если вы видите что ваш персонаж мигает, вы должны вернуться и проверить файл .air, чтобы увидеть, если эти номера соответствуют тем, которые используются для создания вашего файла .sff.


          Урок 8. Продолжаем с действиями и спрайтами

          После создания файлов стойки (standing), вы можете перейти к ходьбе (walking), а затем и к прыжкам (jumping). Теперь когда вы знаете основы спрайтов и действий, вы должны продолжить создавать обязательные спрайты из списка spr.html и требуемые действия из зарезервированных номеров действий в документах AIR. Когда все будет готово, все предупреждения в верхней части экрана должны исчезнуть.

          Во 2 части обучения вы сможете определить ограничивающие поля вашего персонажа, чтобы они могли получить удар и ударить других персонажей. Наконец, мы покажем вам, как определить некоторые атаки в .cns.


Материал перевел и подготовил Sceletron

0

3

Информация предоставлена с официального сайта Elecbyte

ОБУЧЕНИЕ 2 - Коллизионные поля

            Введение

            В этой части мы поговорим о том, как определить поля коллизий для анимаций в файле .air вашего персонажа. Документация для файлов .air находится тут.  Будет не плохой идеей, ознакомится с ней, прежде чем продолжать.


            Урок 1. О коллизионных полях

            После того, как вы создали анимацию для персонажа, вы можете использовать AirEditor для определения коллизий. Вот два вида коллизионных полей:
Примечание автора: данная программа является устаревшей, все необходимые функции и настройки есть в программе Fighter Factory.

Clsn1 - attack box - поле атаки (красный цвет)
Clsn2 - hit box - поле попадания (синий цвет)

            Проще говоря, если один из блоков (полей) атаки первого игрока перекрывает любой из полей попаданий второго игрока, значит, игрок 1 поразил игрока 2 (рис. 2):
http://s8.uploads.ru/kOxwp.png


            Урок 2. Используем AirEditor

            AirEditor - инструмент разработчика и может быть найден в папке old_tools/ вашего каталога M.U.G.E.N. Инструкции по использованию AirEditor находятся в редакторе airedit.txt. Когда вы будете готовы, запустите исполняемый файл aireditw.exe
            Перейдите в Файл -> Открыть, и выберите файл sff, который хотите загрузить, а затем сопровождающий air файл. Теперь вы увидите своего персонажа на экране (рис. 3):
http://sg.uploads.ru/sP0rA.gif
Примечание автора: программа не дружит с русским языком.

            Давайте объясним, что вы видите на экране.

- Большое окно, в котором отображается ваш персонаж, называется окном дисплея. В области заголовка отображается текущее действие анимации, на которое вы смотрите, а также номер текущего спрайта.

- В окне «Info» в верхнем левом окне показано:
            * X, Y курсора, который отображается как перекрестье в окне дисплея
            * X, Y положение по оси спрайта относительно верхнего левого угла спрайта. Это номер, введенный вами в файле player-sff.def, используемом для создания SFF
            * Координаты двух противоположных углов поля, которое вы создаете, когда вы перетаскиваете курсор в окне дисплея

- Окно «navigation» (навигации):
            * Отображаемое текущее действие. Вы можете прокручивать действия анимации в вашем файле .air, нажимая кнопки со стрелками с обеих сторон, или вы можете ввести его вручную, нажав на среднюю кнопку
            * Текущий элемент действия, который отображается. Вы можете прокручивать доступные элементы или вводить вручную, точно так же, как и действия
            * Нажмите «Play Anim», чтобы просмотреть анимацию

- Окно «Collision Boxes»:
            * Здесь есть кнопки, позволяющие устанавливать ограничивающие поля для текущего элемента анимации

- Окно «Options»:
            * Кнопка переключения для включения/выключения отображения параметра Clsn1 (поле атаки)
            * Кнопка переключения для включения/выключения отображения параметра Clsn2 (поле возможного нанесенного удара)
            * Кнопка переключения для включения/выключения отображения оси спрайтов

- Широкий серый квадрат в верхней части экрана рядом с меню - это строка состояния, в которой отображается информация, например, последнее действие в меню.

- В нижней части экрана вы увидите строку «Save» сохранить поле. Каждый из них представляет собой слот, в который вы можете сохранить поле. Кнопка очистки «Clear» стирает их все.

            Чтобы определить поля коллизии, просто перетащите указатель мыши над областью, в которой вы хотите создать поле. Оно будет отображаться как яркая зеленая коробка. Просто щелкните мышкой по экрану, чтобы зеленый ящик исчез. Давайте начнем с определения полей для стойки нашего KFM бойца. Сначала мы перетаскиваем блок, чтобы представить его тело (рис. 4).
http://s8.uploads.ru/xs8nB.png

            Нажмите кнопку Save1 в нижней части экрана, чтобы сохранить это поле в памяти. Теперь перетащите второй блок для головы и нажмите Save2, чтобы сохранить это. Обратите внимание, что сохраненные поля отображаются в более темном цвете. Если вы хотите вернуться и исправить один из сохраненных блоков, просто перетащите новый зеленый квадрат.

            Затем вы назначаете набор блоков текущему элементу анимации. Нажмите на соответствующее поле «SET» в меню «Collision Boxes». Повторите процедуру для всех элементов в анимационном действии.

            Когда вы закончите с изменениями, не забудьте сохранить файл .air. Нажмите «File» и выберите «Save».


            Урок 3. Общие советы

            Вы можете быстро загрузить своего персонажа, указав в приглашении имена файлов .sff и .air. Например:
airedit chars/kfm/kfm.sff chars/kfm/kfm.air

            Если у вас много фреймов, использующих один и тот же набор полей, вы можете прокручивать каждый элемент, сохраняя поля в файле .air без очистки их каждый раз. Кроме того, вы можете установить поля по умолчанию «default», чтобы определить набор по умолчанию для каждого кадра в рамках действия. Нажмите «Options» и прочтите AIR для получения дополнительной информации о коллизионных полях по умолчанию (default).

            В обычных случаях старайтесь держать блоки Clsn2 внутри своих блоков Clsn1. Причина этого в том, что становится возможным обмен получения ударов (hits) между игроками. Если у вас есть блок Clsn1 без блока Clsn2, то установка приоритетов при атаках становится бессмысленной, так как атаки будут иметь бесконечный приоритет таким образом.

            Не будьте слишком подробны в своих коллизионных коробках, не устанавливайте их много. Дело не в том, чтобы сделать пиксельное представление персонажа, а в том, чтобы сделать его удобным для игры. Например, поля для вашего персонажа на земле должны иметь  Clsn2, которые занимают пространство между обеими ногами. В этом случае слишком много деталей на самом деле нежелательно.

            Вот на рис.5 показано слишком более детально. Чего делать не желательно.
http://s5.uploads.ru/SCq8y.gif

            На следующем рис. 6 показано как нужно делать. Мало того, это требует меньше усилий для создания, и лучше приближает движение персонажа с течением времени. Кроме того, меньше шансов, что поле Clsn1 от атаки проскочит через пробел.
http://s6.uploads.ru/xKD0y.gif


Материал перевел и подготовил Sceletron

0

4

Информация предоставлена с официального сайта Elecbyte

ОБУЧЕНИЕ 3 - Простой ход атаки (часть 1)

            Введение

            Теперь, когда вы знакомы со спрайтами и анимациями, пришло время перейти к основной части вашего персонажа, состояний (states). Именно то, что вы делаете, описано в файле .cns. Рекомендуется ознакомится, по крайней мере, с первыми несколькими частями документа CNS, прежде чем продолжать это обучение.


            Урок 1. Переменные игрока

            Начнем с открытия файла .cns вашего игрока в текстовом редакторе (В обучении 1 вы должны были скопировать kfm.cns на player.cns или любое другое имя, которое вы выбрали для своего персонажа). В верхней части файла .cns вы увидите группу [Data]. Здесь начинаются переменные игрока.

            Переменные игрока влияют на множество основных аспектов вашего персонажа. Большинство значений в kfm.cns будут хорошо работать для почти любого другого персонажа, но есть несколько вариантов, которые вам может потребуется изменить. Они отмечены ниже. Имейте в виду, что система координат положительна X для направления вперед (от вашего персонажа), а отрицательный Y - вверх. Все расстояния измеряются в пикселях, а скорости в пикселях/счет (один счет (tick) игры составляет 1/60 секунды).

; В этой группе Data данных нет ничего, что вам нужно изменить
; В обучении. Вы можете оставить эту группу без изменений.
[Data]
life = 1000                         ;Продолжительность жизни.
power = 3000                     ;Энергия.
attack = 100                      ;Сила атаки (еще сильнее).
defence = 100                    ;Оборонительная сила (еще сильнее).
fall.defence_up = 50           ;Процент для увеличения защиты каждый раз, когда игрок падает.
liedown.time = 60               ;Время, за которое игрок ложится, прежде чем встать.
airjuggle = 15                    ;Количество очков комбо, которое персонаж может сделать противнику в воздухе.
sparkno = 2                       ;По умолчанию, анимация искр при ударе для каждого Hitdef.
guard.sparkno = 40            ;По умолчанию, анимация защитных искр для все Hitdef и Projectiles.
KO.echo = 0                       ;Звук эхо при KO, установите 1, чтобы было эхо
volume (звук) = 0              ;Смещение звука (отрицательный параметр делает звук более мягким), макс. 255, мин. -255
IntPersistIndex = 60           ;Переменные с этим индексом и выше не будут иметь значения, сброшенные на 0 между раундами или совпадениями. Существует 60 переменных int, индексированных от 0 до 59 и 40 переменных с плавающей FloatPersistIndex = 40        ;запятой, индексированных от 0 до 39. Если этот параметр опущен, то по умолчанию он равен 60 и 40 для целочисленных и плавающих переменных соответственно, что означает, что ни один из них не является
                                         ;постоянным, т.е. все сбрасываются. Если вы хотите, чтобы ваши переменные сохранялись между совпадениями, вам необходимо переопределить state 5900 из common1.cns.

; В этой группе есть некоторые вещи, которые вы можете изменить.
[Size]
; Следующие два параметра - это масштабные коэффициенты X и Y вашего персонажа
; Спрайты. Вы можете оставить их по 1 на каждый, чтобы ваши спрайты были нормального размера.
xscale = 1                          ;Размер персонажа по горизонтали
yscale = 1                          ;Размер персонажа по вертикале
; Убедитесь, что вы настроили параметры ширины ниже в соответствии с вашим персонажем.
; Они влияют на то, как близко другой персонаж может добраться до вашего. Отрегулируйте эти значения и нажмите Ctrl-C в игре.
; Посмотрите на стойку персонажа
ground.back = 15               ;Ширина задней части персонажа когда он на земле.
ground.front = 16               ;Ширина передней части персонажа когда он на земле.
air.back = 12                      ;Ширина задней части персонажа когда он в воздухе.
air.front = 12                      ;Ширина передней части персонажа когда он в воздухе.
; Это вообще нормально 60. Не делайте это слишком большим или каким-то другим
; У персонажей могут быть проблемы с прыжком.
height = 60                        ;Высота игрока (чтобы оппонент мог перепрыгнуть)
; Вы можете оставить следующие 3 пункта без изменений.
attack.dist = 160                ;Расстояние атаки по умолчанию.
proj.attack.dist = 90           ;Расстояние атаки по умолчанию для снарядов.
proj.doscale = 0                 ;Установите 1 для масштабирования снарядов.
; Вы можете установить их соответственно, если ваш персонаж высокий или короткий.
; В противном случае эти значения по умолчанию должны быть точными.
head.pos = -5, -90             ;Приблизительное положение головы
mid.pos = -5, -60               ;Приблизительное положение талии
; Следующие 2 параметра не нужно изменять.
shadowoffset = 0               ;Количество пикселей для вертикального смещения тени
draw.offset = 0,0               ;Смещение игрока в пикселях (x, y). Рекомендуется 0,0

; Это скорости, используемые в разных общих состояниях, которые имеют все персонажи. Отрегулируйте их в соответствии с вашим персонажем.
[Velocity]
walk.fwd  = 2.4                   ;Идти вперёд
walk.back = -2.2                 ;Идти назад
run.fwd  = 4.6, 0                 ;Бежать вперёд (x, y) (y должно быть 0)
run.back = -4.5, -3.8           ;Рывок назад (x, y)
jump.neu = 0, -8.4              ;Средняя скорость прыжка (x, y)
jump.back = -2.55              ;Скорость прыжка назад (x, y), скорость Y такая же, как и в jump.neu
jump.fwd = 2.5                   ;Скорость прыжка вперёд (x, y), скорость Y такая же, как и в jump.neu
runjump.back = -2.55, -8.1  ;Скорость прыжка с разбега назад
runjump.fwd = 4, -8.1          ;Скорость прыжка с разбега вперёд
airjump.neu = 0, -8.1           ;Средняя скорость (двойного) прыжка в воздухе
airjump.back = -2.55           ;Скорость (двойного) прыжка в воздухе назад, скорость Y такая же, как и в airjump.neu
airjump.fwd = 2.5                ;Скорость (двойного) прыжка в воздухе вперед, скорость Y такая же, как и в airjump.neu
;** для MUGEN 1.0 и выше **
air.gethit.groundrecover = -0.6, -14    ;Скорость для состояния восстановления на землю (x, y)
air.gethit.airrecover.mul = 0.5, 0.2      ;Множитель для скорости воздушного восстановления (x, y)
air.gethit.airrecover.add = 0, -18        ;Смещение скорости для воздушного восстановления (x, y)
air.gethit.airrecover.back = -4            ;Дополнительная x-скорость для удержания назад во время воздушного восстановления
air.gethit.airrecover.fwd = 0               ;Дополнительная x-скорость для удержания вперёд во время воздушного восстановления
air.gethit.airrecover.up = -8               ;Дополнительная y-скорость для удержания вверх во время воздушного восстановления
air.gethit.airrecover.down = 6            ;Дополнительная y-скорость для удержания вниз во время воздушного восстановления

; Это разные переменные, используемые для движения. Установите соответствующие.
[Movement]
airjump.num = 1           ;Разрешенное количество прыжков в воздухе, некоторые персонажи могут совершать 2 или более прыжков
airjump.height = 35       ;Минимальное расстояние от земли, прежде чем вы сможете прыгать в воздух
yaccel = 0.44                ;Вертикальное ускорение
stand.friction = 0.85      ;Коэффициент трения при стойки (скорость X умножается на каждый счет (tick), используя physics = S)
crouch.friction = 0.82     ;Коэффициент трения при приседании (скорость X умножается на каждый счет (tick), используя physics = C).
;** для MUGEN 1.0 и выше **
stand.friction.threshold = 8                        ;Если скорость игрока падает ниже этого порога, когда он стоит, останавливается его движение.
crouch.friction.threshold = 0.2                    ;Если скорость игрока падает ниже этого порога, когда он приседает, останавливается его движение.
air.gethit.groundlevel = 100                       ;Y-позиция, при которой падающий игрок считается упавшим в землю.
air.gethit.groundrecover.ground.threshold = -80 ;Y-позиция, ниже которой падающий игрок может использовать команду восстановления.
air.gethit.groundrecover.groundlevel = 40   ;Y-положение, при котором игрок при восстановлении на землю находится в состоянии касания земли.
air.gethit.airrecover.threshold = -4              ;Y-скорость, над которой игрок может использовать команду воздушного восстановления.
air.gethit.airrecover.yaccel = 1.4                 ;Вертикальное ускорение для игрока в состоянии воздушного восстановления.
air.gethit.trip.groundlevel = 60                    ;Y-положение, при котором игрок в состоянии после удара касается земли.
down.bounce.offset = 0, 80                        ;Смещение для игрока, отскакивающего от земли (x, y).
down.bounce.yaccel = 1.6                          ;Вертикальное ускорение для игрока, отскакивающего от земли.
down.bounce.groundlevel = 48                   ;Y-положение, при котором игрок, отскакивающий от земли, снова коснется земли.
down.friction.threshold = 0.2                      ;Если скорость игрока падает ниже этого порога, когда он лежит, останавливается его движение.

Когда у вас есть переменные, настроенные по вашему вкусу, можно переходить к простой атаке.


            Урок 2. Подготовка к простой атаке

            Если файл .cns вашего персонажа (мы назовем его player.cns) был скопирован из kfm.cns, тогда ваш персонаж уже имеет все состояния (states) персонажа Kung Fu Man. Что мы собираемся сделать, - изменить постоянный удар KFM, чтобы он работал для вашего персонажа. Не беспокойтесь обо всех других состояниях (states) на данный момент. Вы можете изменить их позже или удалить те, которые вам не нужны.

            Простой легкий удар KFM - имеет номер состояния (state) 200, поэтому мы будем работать со спрайтами с номером группы 200 и одним действием анимации с таким же числом.

            Первый шаг - сделать спрайты и анимацию для атаки. В этом примере предположим, что вы добавили 3 новых спрайта и перестроили файл .sff. В player.air сделайте новое действие 200 анимации. Если ваш файл .air был скопирован из kfm.air, замените старое действие 200 на новое. То, что вы добавили, будет выглядеть примерно так:

;New attack (новая атака)
[Begin Action 200]
200,0, 0,0, 2
200,1, 0,0, 3
200,2, 0,0, 5
200,1, 0,0, 4
200,0, 0,0, 3

            Как вы это делали в обучении 2, определите поля для вашей новой анимации. Для кадра анимации, который будет обрабатывать удар, обязательно определите поле Clsn1 (атака, красный цвет). В общем, было бы неплохо, чтобы ваши поля Clsn2 (удары, синий цвет) закрывали область внутри ваших блоков Clsn1. Причина в том, что если вы пропускаете синие поля внутри красных, ваша атака получает несправедливый приоритет. Кроме того, вы не сможете обмениваться ударами с другим игроком, пытающимся поразить вас в этой области.
Примечание автора: это нужно для того, чтобы персонажи могли одновременно ударить друг друга.

            Вот пример (рис. 7):

http://se.uploads.ru/WH2kZ.gif

            После того, как вы сохраните свои поля столкновений в файле .air, откройте player.cns (или то, что вы назвали файлом .cns с именем вашего персонажа). Найдите группу [Statedef 200] и удалите все из этой строки непосредственно до строки [Statedef 210]. Теперь вы удалили состояние легкого удара игрока KFM.


            Урок 3. Создание состояния (state)

            Теперь давайте разместим ваше собственное состояние атаки. Мы начнем медленно и создадим. Поместите этот блок кода в player.cns:

; Каждое состояние должно начинаться с группы StateDef.
; Прямо сейчас у нас есть один параметр в StateDef и это параметр «anim».
; Это сигнализирует M.U.G.E.N, чтобы изменить действие игрока на анимацию 200 в начале состояния.
; Измените действие игрока на анимацию 200 в начале состояния.
[StateDef 200]
anim = 200

; Следующая группа называется контроллером (controller).
; Помимо Statedef, состояние состоит из одного или нескольких контроллеров.
; Контроллеры - это инструкции о том, что делать в какое время.
; «Что делать» - это «Type» контроллера, а «в какое время» называется «trigger condition».
; В этом случае триггер - «AnimTime = 0». Имеется в виду «когда текущее действие анимации закончилось»
; Тип - «ChangeState» "сменить состояние" со значением «value» равным 0. Таким образом, весь этот контроллер означает
; «вернуться к состоянию 0 (состояние стойки), когда текущее действие анимации закончилось».
[State 200, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0

            В это время вы можете захотеть вернуться и прочитать документацию cns. Изучение формата CNS M.U.G.E.N может показаться немного трудным вначале, поэтому не беспокойтесь, если вы время от времени будете что-то путать. Как и любой другой язык сценариев (скриптов), со временем вы привыкнете к формату CNS, как только чаще будете им пользоваться.

            Хорошо, так что делает этот код блока? Он в основном изменяет игрока на действие анимации 200, ждет, пока действие не закончится, а затем вернет игрока в состояние равному 0, т.е. в нормальное состояние стойки (когда персонаж просто стоит). Попробуйте запустить его и посмотреть. Когда вы стоите, нажмите кнопку x, чтобы перейти в состояние 200.

            Возможно, вы заметили некоторые вещи, когда вы пробовали атаковать. Даже если у вас есть блоки Clsn1, вы не можете попасть в другого игрока! Это потому, что мы еще не определили параметры удара. Сделаем это позже. Пока же мы позаботимся о других проблемах один за другим.

            Первое, что нужно сделать, это не дать игроку ничего сделать, чтобы вырваться из атаки. Чтобы понять, что я имею в виду, нажмите X (атаковать), а затем быстро попробуйте идти или прыгнуть. Это неправильное поведение для атаки, поэтому давайте предотвратим это. Вставьте новую строку «ctrl = 0» в группу StateDef:

[StateDef 200]
anim = 200
ctrl = 0       ;*** Добавьте эту строку ***

[State 200, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0

            Я объясню концепцию так называемого флага управления (control flag). Flag может иметь либо on «вкл» (также называемый True), либо off «выкл» (False) значение (value). Теперь, когда flag управления включен, мы говорим: «у игрока есть контроль». Игрок, который имеет контроль, может сразу начать ходить, прыгать, атаковать и т. д., если вы нажимаете соответствующие кнопки. Если у этого игрока нет контроля, вы не сможете заставить его двигаться или атаковать, пока он не получит контроль.

            Раньше вы могли отменить атаку в любое время, потому что ваш игрок контролировал все это время. Теперь, когда мы добавили строку ctrl = 0 в StateDef, вы больше не можете выходить из атаки. Теперь попробуйте запустить M.U.G.E.N снова вместе с вашим измененным игроком. Вы не можете отменить атаку сейчас, но вы застряли в состоянии ожидания и не можете двигаться! Что же случилось?


            Урок 4. Рассмотрим информацию по отладке (debug info)

            Давайте посмотрим на информацию об отладке в нижней части экрана. Если вы его не видите, нажмите Ctrl-D, чтобы включить его (рис. 8).

http://s8.uploads.ru/dbAIg.png
                                                    меню отладки игрока

            Я объясню, что вы видите за строки по очереди.

- В верхней строке (зависит от game-specific). Не беспокойтесь об информации в этой строке:
            * Frames (кадры) - количество игрового счета (ticks) прошло до сих пор.
            * VRet - 0, если VRetrace включен, 1 если VRetrace выключен (нажмите Ctrl-V для переключения).
            * Speed (скорость) - 0, если ускорение включено, 1, если ускорение выключено (нажмите Ctrl-S для переключения). Если включено, M.U.G.E.N будет работать как можно быстрее.
            * Skip (пропуск) - режим кадров. «A» означает «авто». В противном случае количество кадров будет пропускаться между рисунком экрана.

- Во второй строке:
            * Это имя игрока и идентификационный номер (вы можете увидеть ID номера игроков рядом с их именами, нажав Ctrl-C). Не беспокойтесь о номере в круглых скобках.

- В третьей строке (player-specific):
            * ActionID: Текущий номер действия анимации игрока.
            * Spr: Номер группы и изображения отображаемого спрайта.
            * Elemno: Первое число - текущий элемент выполняемого анимационного действия. Второе число - это общее количество элементов в этом действии.
            * Time: Это общее количество времени (ticks), которые игрок провел в этом действии. Второе число - это длина действия в счете (ticks). Когда первое число равно второму, срабатывает триггер «AnimTime = 0».

- В последней строке (еще больше информации о player-specific):
            * State no: Номер State (состояния), в котором находится игрок.
            * Ctrl: Значение control flag. 0 выключен, 1 включен.
            * Type: Текущий тип состояния (не беспокойтесь об этом пока).
            * MoveType: текущий тип перемещения (не беспокойтесь об этом сейчас).
            * Time: это общее количество времени (ticks), которые игрок провел в своем текущем состоянии.

            Это много информации! Не нужно волноваться. Сейчас мы хотим посмотреть только значение control flag. Ищите его в нижнем ряду после того, как вы сделали атаку. Вы видите, что значение осталось на уровне 0, даже если вы вернулись в состояние ожидания? Нам лучше это исправить.

[StateDef 200]
anim = 200
ctrl = 0

[State 200, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1       ;*** Добавьте эту строку ***

То, что эта линия делает, включает флаг управления "control flag" (ctrl) так же, когда ваш игрок переходит в состояние готовности (стойки). Попробуйте снова запустить M.U.G.E.N. Теперь он больше не застрянет!


            Урок 5. Подробнее об StateDefs

            Есть еще одна проблема. Если вы держите вперед или назад при атаке, вы увидите, как ваш персонаж скользит во время атаки. Давайте добавим некоторые новые параметры в StateDef:

[StateDef 200]
anim = 200
ctrl = 0
type = S       ;*** Добавьте эту строку ***
physics = S    ;*** Добавьте эту строку ***

[State 200, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

            Эти два параметра указывают в M.U.G.E.N, чтобы установить игрока в состояние (type) «стойки» и использовать физику (physics) «стойки» (S - Standing). Когда у вашего персонажа есть физика «стойки» (S), он будет подвержен трению с землей (вы указали параметр «stand.friction = 0.85» в части переменных игрока в этом обучении ранее). Без параметра никакая физическая модель не будет использоваться, поэтому ваш персонаж будет скользить, как будто он был на льду (как вы видели сейчас).

            Если вы попробуете запустить M.U.G.E.N сейчас, ваш персонаж должен быстро замедлиться, если вы атакуете во время ходьбы. Это улучшение, но давайте добавим еще один параметр, чтобы он сразу же переставал двигаться, когда вы атакуете.

[StateDef 200]
anim = 200
ctrl = 0
type = S
physics = S
velset = 0,0    ;*** Добавьте эту строку ***

[State 200, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

            Строка «velset = 0,0» сообщает M.U.G.E.N, чтобы установить скорость вашего персонажа в 0 (как в направлении X, так и в направлении Y), когда он входит в State 200. Если вы попытаетесь запустить M.U.G.E.N сейчас, вы увидите, как ваш персонаж будет стоять твердо, когда вы атакуете, независимо от того, как быстро он двигался раньше.


            Продолжение следует

            Это был действительно урок! Теперь, нам осталось узнать, какое состояние заставляет вашей атаки нанести удар. Перейдем к обучению 4, чтобы узнать, как это сделать.


Материал перевел и подготовил Sceletron

0

5

Информация предоставлена с официального сайта Elecbyte

ОБУЧЕНИЕ 4 - Простой ход атаки (часть 2)

            Введение

            В обучении 3 вы видели, как создать состояние в файле .cns. Здесь вы увидите, как определить параметры атаки с помощью контроллера HitDef. Если ваш персонаж еще не имеет всех необходимых анимаций с нанесением атаки из документации AIR, вы можете протестировать своего персонажа с KFM в качестве противника на данный момент (type «mugen player kfm»).


            Урок 1. Основы управления HitDef

            Контроллер состояния HitDef является последним компонентом для завершения вашего состояния атаки. Вы можете думать об этом как о назначении свойств удара Clsn1 (красный блок) в анимации вашего персонажа. В нем говорится, как блоки попадают в противника.

            Откройте player.cns (или как вы назвали файл .cns с вашим персонажем). Добавьте некоторые вещи в State 200, который вы сделали в обучении 3:

[StateDef 200]
anim = 200
ctrl = 0
type = S
movetype = A    ;*** Добавьте эту строку ***
physics = S
velset = 0,0

;*** Добавьте новый блок ***
[State 200, HitDef]
type = HitDef
trigger1 = Time = 0            ;Активируется в момент = 0 (начало состояния)
attr = S, NA                       ;Атрибуты HitDef (объяснение позже)
damage = 30                     ;Повреждения
;*** Конец нового блока ***

[State 200, 1]
type = ChangeState
trigger1 = AnimTime = 0
value = 0
ctrl = 1

            Строка «movetype = A» в StateDef сообщает MUGEN, что это состояние атаки. Когда у вас нет этой строки, MUGEN автоматически предположит, что это незанятое состояние. Это важно. Если вы забудете эту линию, вы не сможете ударить своего противника.

            Когда контроллер HitDef выполняется, мы говорим: «HitDef был включен» для вашего персонажа. Когда включен HitDef, если какой-либо блок Clsn1 в анимации вашего персонажа соприкасается с любым блоком Clsn2 в анимации вашего оппонента, ваш оппонент получит удар. Если вы нажмете Ctrl-C, чтобы включить отображение блоков столкновений, буква «H» появится в правом нижнем углу вашего персонажа всякий раз, когда у него включен HitDef.

            Параметры в контроллере HitDef вам должны быть уже понятны, за исключением параметра «attr». «Attr» определяет атрибут вашего приема. В нашем случае значение «S, NA» означает, что это «Standing, Normal Attack» (Стойка, Нормальная атака). Вы всегда должны показать MUGENу, какой атрибут у вас есть. В других примерах у вас может быть «C, SA» для «Crouching, Special Attack» (Приседание, Специальная Атака) или «A, HT» для «Aerial, Hyper Throw» (Воздушный, Супер Бросок). Вы можете прочитать все виды «attr» в контроллере HitDef в данном документе описаны состояния, прочтите его для получения подробной информации (есть много других параметров, не беспокойтесь, если вы еще не все поняли). Мы будем давать больше ссылок на документ State контроллеров (sctrls) на протяжении всего этого урока.

            Если вы попытаетесь сыграть за своего персонажа сейчас, вы заметите, что атака ударила по противнику, но на самом деле работает  не правильно. Мы добавим параметры сразу несколько за раз, пока не получим удар, который будет хорошо работать. Отныне наш фрагмент кода будет показывать только контроллер HitDef:

[State 200, HitDef]
type = HitDef
trigger1 = Time = 0
attr = S, NA
damage = 30
pausetime = 12, 12        ;*** Добавьте эту строку ***
hitsound = 5, 0              ;*** Добавьте эту строку ***
guardsound = 6, 0         ;*** Добавьте эту строку ***
sparkxy = 0, -70           ;*** Добавьте эту строку ***

            Попробуйте запустить MUGEN с вашим игроком и с добавленными дополнениями. Вы сразу заметите некоторые вещи. Во-первых, оба игрока ошеломлены в течение короткого времени, когда произойдет удар. Это результат использования параметра «pausetime». Первое значение - это время (ticks), чтобы приостановить вашего персонажа, а второе - время, в течение которого игрок будет ошеломлен. Попробуйте различные значения, такие как «60, 60», «60, 10» и «10, 60», чтобы увидеть эффект.

            Параметры «hitound» и «guardsound» определяют, какие звуки воспроизводятся, когда удар входит в контакт с противником. «Sparkxy» позиционирует искру, которую вы видите, когда попадает удар (вы можете изменить его значение, чтобы оно соответствовало атаке вашего персонажа). Как и для других параметров, которые мы собираемся добавить, вы должны найти эти параметры в документах sctrls для подробного описания. Описания, которые вы видите в этом уроке, очень кратки.

            Вы заметили, что эта атака не может быть защищена?

[State 200, HitDef]
type = HitDef
trigger1 = Time = 0
attr = S, NA
damage = 30
guardflag = MA           ;*** Добавьте эту строку ***
pausetime = 12, 12
hitsound = 5, 0
guardsound = 6, 0
sparkxy = 0, -70

            Параметр «guardflag» определяет, как противник может защититься от атаки вашего персонажа. «MA» означает «Middle + Air» (Средний + Воздух). Это означает, что вы можете защититься от него, сдерживаясь при стойки, приседании или в воздухе. Если вы измените его на «М», то прыгающий противник не сможет его защитить. Если это «HA», это может защитить только стоячий или прыгающий противник.

            Давайте добавим еще несколько параметров.

[State 200, HitDef]
type = HitDef
trigger1 = Time = 0
attr = S, NA
damage = 30
guardflag = MA
pausetime = 12, 12
hitsound = 5, 0
guardsound = 6, 0
sparkxy = 0, -70
ground.type = High                 ;*** Добавьте эту строку ***
ground.slidetime = 10             ;*** Добавьте эту строку ***
ground.hittime  = 12               ;*** Добавьте эту строку ***
ground.velocity = -5               ;*** Добавьте эту строку ***
air.velocity = -2, -3                ;*** Добавьте эту строку ***

            Теперь, когда ваш персонаж попадает, противник получает ошеломление. Теперь это больше похоже на настоящую атаку!

            «Ground.type» определяет, какой тип анимации будет иметь противник, когда он попадает под атаку вашего персонажа. «Ground.slidetime» - это то, как долго противник будет скользить назад после удара, а «ground.hittime» - это время, за которое противник будет находится в состоянии попадания, прежде чем восстановится. «Ground.velocity» и «air.velocity» - это скорости, которые получает оппонент, когда он атакован. Для «ground.velocity» попробуйте числа, подобные этим, чтобы увидеть эффекты: «5», «-20», «-5», «5» и «0, -5».


            Урок 2. Типы анимации HitDef

            Помимо использования «ground.type», вы можете повлиять на анимацию попадания противника, используя «animtype»:

[State 200, HitDef]
type = HitDef
trigger1 = Time = 0
attr = S, NA
damage = 30
guardflag = MA
pausetime = 12, 12
hitsound = 5, 0
guardsound = 6, 0
sparkxy = 0, -70
animtype = Medium                 ;*** Добавьте эту строку ***
ground.type = High
ground.slidetime = 10
ground.hittime  = 12
ground.velocity = -5
air.velocity = -2, -3

            Если «ground.type» «High», разные значения для «animtype» будут влиять на анимацию:
http://s7.uploads.ru/WZk3I.png

            Аналогично и для "ground.type = Low":
http://s8.uploads.ru/b59RN.png


            Урок 3. Падение и Juggling

            Пояснение автора: Juggling дословно переводится как "жонглирование" но в MUGEN-е это понятие можно перевести как: "удержание противника в воздухе ударами".
            Если вы хотите, чтобы ваш противник падал после удара, вы можете использовать параметр «fall».

[State 200, HitDef]
type = HitDef
trigger1 = Time = 0
attr = S, NA
damage = 30
guardflag = MA
pausetime = 12, 12
hitsound = 5, 0
guardsound = 6, 0
sparkxy = 0, -70
animtype = Medium
ground.type = High
ground.slidetime = 10
ground.hittime  = 12
ground.velocity = -1, -7     ;*** Измените эту строку ***
air.velocity = -2, -3
fall = 1                             ;*** Добавьте эту строку ***

            Строка «fall = 1» заставит вашего противника упасть на пол, если его атакует ваш удар. Это довольно просто. Однако вы можете столкнуться с проблемой управления. Если вы стоите на краю арены вместе с вашим противником между вами и углом, вы обнаружите, что ваш персонаж может ударить его, когда он падает. Это называется «жонглирование» (Juggle). Проблема в том, что вы можете "жонглировать" противником снова и снова, пока он не станет убитым (KO'ed). Для решения этой проблемы вы можете добавить в StateDef следующую строку.

[StateDef 200]
anim = 200
ctrl = 0
type = S
movetype = A
physics = S
velset = 0,0
juggle = 5    ;*** Добавьте эту строку ***

            Вот как работает жонглирование. Это работает как система очков, где вы начинаете с 15 пунктов жонглирования (или любого другого значения, которое вы задали для переменной игрока «airjuggle»). Если у вас есть параметр «juggle» в StateDef вашей атаки, каждый раз, когда вы атакуете своего противника этой атакой, ваши жонглирующие очки будут уменьшаться на значение параметра «juggle». Если ваша текущая атака уменьшит ваши очки жонглирования до нуля, то вы не сможет ударить. Система "жонглирования" активируется в тот момент, когда ваш противник попадает в HitDef с «fall = 1».

            Попробуйте сыграть за своего персонажа и попытайтесь "жонглировать" противником. Обратите внимание, что вы можете поразить максимум 3 раза, прежде чем противник упадет на пол. Если вы установите «juggle = 3», вы сможете нанести удар 5 раз, и если вы установите «juggle = 2», вы можете нажать 7 раз и так далее.

            Чтобы увидеть, сколько у вас осталось очков "жонглирования", нажмите Ctrl-C, чтобы включить отображение блоков. Когда вы ударяете соперника, количество жонглирующих очков отображается в конце нижней строки текста (в розовом, начиная с «target») прямо под вашим персонажем.

            Все атаки должны иметь параметр juggle в StateDef. Если вы используете несколько State для одной атаки, вы должны иметь параметр juggle только в первом State StateDef-а. Взгляните на kfm.cns, чтобы узнать, какие типичные значения могут быть.


            Контрольный лист

            Вот некоторые моменты, на которые следует обратить внимание, когда вы создаете новый State атаки:

            В StateDef:

- Правильно ли установлены ваши statetype и physics?
- У вас есть «movetype = A»?
- Вы не забыли установить параметр «Juggle»?
- У вас есть «ctrl = 0»?

            В HitDef:

- Правильно ли установлен параметр «attr»?
- Правильно ли задана позиция spark?
- У вас есть свой параметр «guardflag»?
- Является ли ваш «ground.hittime» правильным номером?


            Что дальше?

            Теперь самое время прочитать остальные параметры HitDef в документах sctrls. Вот краткий список некоторых других параметров, которые вы обычно можете использовать:

- air.type, air.animtype, air.hittime, и т.д.
- hitflag
- priority
- sparkno
- guard.velocity
- fall.recover

            Как только вам станет комфортно создавать простое состояние атаки, пришло время узнать, как заставить персонажа войти в это состояние. Если вы хотите пойти дальше, загляните в kfm.cmd.


Материал перевел и подготовил Sceletron

0


Вы здесь » The Sims 3, Gran Turismo и MUGEN » M.U.G.E.N. » M.U.G.E.N. Руководство по созданию персонажа


Рейтинг форумов | Создать форум бесплатно