Попробую тут объяснить как делаются уровни для режима Invasion в порте Zandronum. На примере будет Doom.
Для создания нам потребуется:
- редактор уровней gzdoom buider (либо udb)
- Сам порт zandronum
- Контент из скултага (новые пушки/монстры/тестуры/уровни) качать тут - skulltag_content-3.0-beta01.pk3
- Slade для создание lump фвйлов либо блокнот (к примеру Notepad++)
- архиватор zip файлов (к примеру 7Zip) либо slade для создания pk3 файлов
- Знать как делаются уровни для дума (можно глянуть тут на ютубе основы - Ютуб Плейлист)
Открываем Gzdoom Builder, идем в конфигурации игр нажав F6 (или в Tools > Game Configurations). В списке выбираем поставив галочку на Zandronum: Doom 2 (Hexen format), в Resources указываем где лежит Doom2.wad, нажимаем ок.
Теперь создаём новый уровень указав конфиг Zandronum: Doom 2 (Hexen format) и добавляем skulltag_content-3.0-beta01.pk3 в список ресурсов через Add resource > From PK3/PK7. Жмем 2 раза ок. Редактор выругается на какие-то ошибки, но это не критично, не обращаем внимания.
Первая волна
Создадим стартовую локацию и вторую которая будет перекрыта закрытой стеной с поднятым сектором до потолка.
Размещаем рядом с собой SSG и патроны к нему. Теперь добавим врага для вторжения. В списке вещей Монстры\Оружие\Патроны\Поверапы расположены в конце списка. У этих есть специальные флаги:
- Start Spawn Number - Количество вещей, порожденных в волне, в которой они появляются.
- Spawn Delay - Задержка в секундах между созданием объектов.
- Round Spawn Delay - Задержка в секундах от начала волны до появления объектов.
- First Appear Wave - Первая волна появления
- Max Spawn - Максимальное количество подбираемых предметов, которые могут быть созданы в этой точке. (только для предметов)
Для первой волны добавим Dark Imp'a с такими значениями: Start Spawn Number - 8, Spawn Delay - 3, First Appear Wave - 1
Это значит что монстр появится в первой волне к количестве 8 штук с 3 сек. между созданием новых импов.
Добавим еще аптечку и патроны:
Вот собственно мы сделали первую волну для вторжения. Можно сохранить уровень и потестить в Zandronum (не забываем добавить skulltag_content-3.0-beta01.pk3 при тесте с уровнем)
Добавляем вторую волну и скрипты
Теперь сделаем так, что-бы опустился сектор который открывает вторую локацию и добавим врагов для второй волны.
Поднятому сектору присваиваем свободный tag - 1
Теперь открываем редактор скриптов F10 и там пишем:
#include "zcommon.acs"
script 1 OPEN
{
While(GetInvasionState() != IS_WAVECOMPLETE || GetInvasionWave() != 1) Delay(35*1);
Floor_LowerToLowest(1,16);
}
Данный скрипт означает что после того как завершится первая волна (появится надпись Wave 1 Complete!) опустится сектор с Тэгом 1 с небольшой скоростью(16). Если поставить IS_COUNTDOWN вместо IS_WAVECOMPLETE, то сектор будет опускаться когда начнется отчет до следующей волны.
Компилируем наш скрипт (обязательно, а то не заработает) и закрываем редактор скриптов.
Добавляем во вторую локацию врагов\оружие\патроны для второй волны
(я к примеру добавил какодемона , миниган и патроны к нему)
Все, вторая волна сделана, сохраняем наш уровень к примеру TestInvasion.wad и закрываем редактор уровней. Теперь добавим максимальное количество волн для уровня ибо щас они бесконечные.
Создадим файл cmpgninf.txt и пишем в нем:
{
mapname = MAP01
gamemode = invasion
wavelimit = 2
}
Сохраняем. В данном файле мы задали максимальное количество волн - 2 для MAP01, после завершения второй волны уровень завершится и начнется следующий указанный в Mapinfo.
С помощью 7zip создаем архив TestInvasion.pk3 в формате zip добавив туда TestInvasion.wad и cmpgninf.txt
Ну или если используем slade то создаем там pk3 архив и добавляем туда вад и txt
Запускаем наш invasion в зандронуме:
Zandronum.exe -iwad doom2.wad -file skulltag_content-3.0-beta01.pk3 TestInvasion.pk3
Добвление новых акторов в Invasion
Если хотим добавить своё оружие либо врагов, либо предметы то для этого используем decorate.
Для новых врагов добавляем туда строчки:
actor MyMonsterSpot : CustomMonsterInvasionSpot 12345
{
//$Arg0 "Start Spawn Number"
//$Arg1 "Spawn Delay"
//$Arg2 "Round Spawn Delay"
//$Arg3 "First Appear Wave"
//$Arg4 "Max Spawn"
dropitem "MyMonster"
}
MyMonsterSpot - название точки появления монстра, называем для редактора уровней
12345 - Номер для редактора уровней
MyMonster - сюда впихиваем название кастомного actor-монстра из декорейта.
Если хотим добавить оружие, патроны или повер-ап то вместо CustomMonsterInvasionSpot ставим CustomPickupInvasionSpot
и в dropitem вставляем нужный актор.
Если хотим к примеру сделать рандомный спаун врагов в одной точке (к примеру появлялся не 1 тип врага а случайный тип из пяти), то добавляем несколько Droptem в актор спауна:
actor RandomMyMonsterSpot : CustomMonsterInvasionSpot 12345
{
//$Arg0 "Start Spawn Number"
//$Arg1 "Spawn Delay"
//$Arg2 "Round Spawn Delay"
//$Arg3 "First Appear Wave"
//$Arg4 "Max Spawn"
dropitem "MyMonsterType1"
dropitem "MyMonsterType2"
dropitem "MyMonsterType3"
dropitem "MyMonsterType4"
dropitem "MyMonsterType5"
}
Собственно все. Если что, вот уровень из примера: http://kenonserver.narod.ru/fortutorial/Invasion/TestInvasion.pk3
|