Пятница, 20.05.2022, 07:32
Главная » Статьи » Прочее » PainEditor

Создание уровня для одиночной игры. Часть 2
Итак, давайте продолжим создание нашего полноценного уровня.

Я добавил немного патронов и два слаба (убедитесь, что в настройках слабов в поле "Closed" стоит "False") во вторую зону, рекомендую сделать также.


Кстати, вы же помните, что в оригинальных уровнях размещены секреты? Так почему бы и не добавить сюда один такой? Зона секрета называется "SecretArea.CBox" и находится она в папке "Gameplay". Масштабируется и размещается этот темплейт точно так же, как и AmbushForPlayer, только настраивать ничего не надо - как только игрок окажется внутри этой зоны, 
так сразу же один секрет будет засчитан. Но ведь в зоне с секретом также и должно что-то быть, не так ли? Так давайте разместим ещё и священный предмет! Священные предметы находятся в папке "Treasures" под названиями: Host1.CItem, Host2.CItem (это золотые кресты), Cup1.CItem и Cup2.CItem (это золотые кубки). Заметьте, что когда священный предмет появится, он сразу же как обычный физический объект упадёт на землю, поэтому будте аккуратны при размещении. Вот так я расположил этот секрет:


Также нужно разместить конец уровня, как и на всех других нормальных уровнях. Этот темплейт называется "EndOfLevel.CItem", а находится он в папке "Gameplay". Настраивается и ведёт он себя также, как и чекпоинт, поэтому при размещении не забудьте в поле "Frozen" поставить на "True" в настройках этого темплейта. Разместите его примерно как здесь:


Заодно поставьте AmbushForPlayer:


И четыре спаунера, настроив каждый на появление Sado солдатов с одним автоматом.


И настраиваем AmbushForPlayer:


Из новых команд тут только есть "OpenAllSlabs" - эта команда открывает все слабы на уровне.

Всё, с геймплеем покончено. Можете сохранять карту и проверять её.

Теперь осталось лишь настроить глобальные настройки уровня. В "Game Objects" в выпадающем списке "_CLevel" нажмите два раза на "FirstLevel". Вы перейдёте к настройкам самого уровня.

Acoustics - Звуки издаваемые при ходьбе
Ambient - Эмбиентовое освещение. Просто цвет освещения.
BloomFX - Здесь можно настроить эффект "Bloom'а". Я обычно ставлю "LuminanceThreshold" на 0.5, а "Multiplier" на 2.
Но рекомендую поиграться немного с этими параметрами и настроить это под себя.
DetailMap - Детеил текстура для всего уровня (детаил текстура - это текстура всяких царапин, трешин и помятостей, которая накладывается на почти все поверхности для наибольшей реалистичности)
DirLight - Направление и цвет "солнца", от настроек этого параметра зависит освещение и направление теней от персонажей. 
FarClipDist - Радиус обрезания видимости, нужно для оптимизации. Если уровень большой и у вас он тормозит - то рекомендую понизить это значение.
Fog - Здесь настраивается туман
Map - Геометрия уровня
Music - Здесь указывается музыка
NormalMap - Путь к текстурам нормалей, необходимо для воды (а для остального и не работает)
Overbright - Рекомендую ставить этот параметр на "True" чтобы настройки блума также повлияли и на геометрию уровня.
Scale - Масштабирование карты. Рекомендуется масштабировать в 3D моделлере во избежание глюков и неадеквата.
SkyDome - Настройки неба
Water - Настройки для всех поверхностей воды

Давайте настроим небо. Поскольку с нуля настраивать его очень долго, то на этот раз давайте просто скопируем его из "Заброшенной фабрики" к нам в уровень. Найдите файл "FirstLevel.CLevel" у себя в папке с игрой (Например, D:\Painkiller\Data\Levels\FirstLevel\FirstLevel.CLevel) и скопируйте туда следующее:

o.SkyDome.Map = "c3l2_factorysky.mpk"
o.SkyDome.Layer1.Tex1 = "c3l2_factorysky"
o.SkyDome.Layer1.Tex_Mask = "_black"
o.SkyDome.Layer1.Tex_LMap = "_gray"
o.SkyDome.Layer1.Tex2 = "_red"
o.SkyDome.Layer3.Tex2PanUSpeed = 0.01
o.SkyDome.Layer3.Tex1 = "_alpha_zero"
o.SkyDome.Layer3.Tex_Mask = "c3l2_factoryskybulbmasker"
o.SkyDome.Layer3.Tex2TileV = 3
o.SkyDome.Layer3.Tex_LMap = "_gray"
o.SkyDome.Layer3.Tex2PanVSpeed = 0.002
o.SkyDome.Layer3.Tex2 = "c3l2_factoryskyclouds2"
o.SkyDome.Layer3.Tex2TileU = 3
o.SkyDome.LowQuality.Map = "skylow.mpk"
o.SkyDome.LowQuality.Tex = "lowquality\\c3l2_factoryskygf2"
o.SkyDome.LowQuality.Angle = 90
o.SkyDome.LowQuality.Height = -2
o.SkyDome.Layer2.Tex1 = "_alpha_zero"
o.SkyDome.Layer2.Tex_Mask = "_bulb_masker"
o.SkyDome.Layer2.Tex_LMap = "_gray"
o.SkyDome.Layer2.Tex2 = "c3l2_factoryskytop"

Также скопируйте туда настройки освещения и тумана. И музыку.

o.Ambient = Color:New(90,96,116,0)
o.Fog.End = 1001
o.Fog.Start = 350
o.Fog.Mode = 2
o.Fog.Color = Color:New(163,111,92,0)
o.DirLight.Color = Color:New(214,140,73,0)
o.DirLight.Dir = Vector:New(-0.22,-0.68,0.73)
o.Music.Battle[1] = "c3l2_factory_fight"
o.Music.Ambient[1] = "C3L2_Factory_Music_01"

Вот так всё это должно выглядеть в итоге: 


Теперь осталось последнее - начальные характеристики и условие для получения Карты Таро.

Всё это находится в папке с уровнем под названием "вашуровень.lua". Просто создайте там такой файл и скопируйте следующее: 

function FirstLevel:OnPlay(first)
    if first then
        --Player.EnabledWeapons = {"PainKiller","Shotgun",nil,nil}
        Player.Ammo = 
        {
            Shotgun  = 0,
            MiniGun  = 0,
            Grenades = 0,
            Stakes   = 0,
            IceBullets = 0,
            Shurikens    = 0,
            Electro      = 0, 
Rifle = 0,
FlameThrower = 0,
            Bolt         = 0,
            HeaterBomb   = 0,
        }
        Player.Health = 100
    end    

end
--==============================


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

Вот теперь ваш уровень полностью готов. На этом с созданием уровня покончено.

Если у вас что-то не получается, то вы можете взглянуть на готовую по этому уроку карту, которую можно скачать по этой ссылке.

Категория: PainEditor | Добавил: Str_Ghost (28.08.2012)
Просмотров: 2882 | Комментарии: 7 | Теги: pain editor, painkiller создание уровней, pained | Рейтинг: 5.0/1
Всего комментариев: 7
7 sokolov1812   (11.02.2014 22:53) [Материал]
Всё, разобрался. Но почему-то при старте уровня у меня 999 НР!!!!!!

6 sokolov1812   (11.02.2014 22:32) [Материал]
А как поиграть на этом уровне????

5 varver2013   (24.07.2013 12:25) [Материал]
Очень класная статья я в васторге :)

3 Evgeniy   (29.08.2012 00:58) [Материал]
Очень интересно было читать :) Приятно написано так сказать...
Вот у меня всегда был один вопрос:в чём разница между действиями OnTouch и ToLaunch?
ToLaunch вроде как моментально производит действие,или что-то другое....

4 Str_Ghost   (29.08.2012 16:23) [Материал]
ToLaunch это та же самая команда что и Launch, но мне проще сразу писать в окне OnTouch т.к. в ToLaunch невозможно использовать команды WaitForCorpses и прочие. Хотя, впрочем, можно через ToLaunch запустить спаунеры, а через OnTouch прописать WaitForCorpses и прочее... В общем - тут уже сами выбирайте, как кому угодно ;)

1 Sviatoslav   (28.08.2012 17:38) [Материал]
Всё очень подробно. :) Небольшое уточнение: команда OpenAllSlabs открывает все двери и уничтожает все AmbushForPlayer (если таковые где-то остались). Команда OpenAllSlabsOnly только открывает двери и больше ничего не делает. :)

2 Str_Ghost   (28.08.2012 18:14) [Материал]
Ух ты, не знал, спасибо :) Потом исправлю

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск
Мини-Профиль
Здравствуйте, гость. Войдите на сайт или зарегистрируйтесь.

E-mail:
Пароль:
ГАМАЗАВР
Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0