SED3.5 - Учимся делать спауны врагов


Всем привет!

В этой статье я обьясню, как делать и настраивать спауны монстров.
В SED3 спаун делался почти так же как и в SED1, благо там были и тачфилды, и триггеры. В SED3.5 роль тачфилдов выполняет обьект Detector Area, а триггеры вообще вырезали, оставив обьект Script. Ну, мне, честно, скрипты кажутся куда более удобными, чем триггеры. 

Собственно, сами спауны делаются так:
1. Вытаскиваем на карту обьект Legged Character (лежит в папке Characters).
Я для примера взял безголового ракетчика.
(Puppet params - Rocketman.ep, character behavior - Rocketman.cb)

2. Ищем строку Spawner, щелкаем по стрелочке, выбираем New > CSpawnerProperties.
Мы создали спаунер ракетчиков, осталось лишь его настроить.

3. Настраиваем спаунер - параметры Total number, Number in group и прочее, они вам должны быть знакомы по SED1. Также, в SED3 можно настроить зону, где будут спауниться враги. Для этого щелкаем по Spawn formation, выбираем, к примеру, Rect formation (Прямоугольник), настраиваем зону. 

В результате получаем нечто вроде этого


4. Наш спаун готов! Теперь, чтобы его активировать, нам понадобится Script. Ставим его на карту из списка обьектов (Entity list), скрипт лежит в папке Logic. 


5. Щелкните по этому оранжевому кубику дважды, слева откроется пустое окно, где пишется сам скрипт. 
Скрипты пишутся на языке Lua.

6. Спаун осуществляется так: вводится переменная, которой присваивается обьект CSpawnerEntity, и ей посылается метод SpawnSimple() (Кроме SpawnSimple(), есть другие варианты). Чтобы присвоить нашей переменной обьект CSpawnerEntity, выделите его в редакторе и, удерживая ctrl+alt+shift, перетащите на переменную. Она должна подсветиться зеленым. Теперь, поставив после нее оператор ":", выпадет список доступных методов 

Методы спауна:
 SpawnSimple() - простой спаунер, будет спаунить врагов пока не иссякнет их  количество. 
 SpawnSimpleNow() - то же, что и SpawnSimple(), но игнорирует ожидание перед  первым спауном (Initial delay) 
 SpawnGroup() - спаунит врагов группами.
 SpawnMaintainGroup() - спаунит до заполнения группы.
 SpawnOne() - спаунит только одного врага
В итоге у вас должно получиться, к примеру,
 enemy:SpawnSimple()
Запустите уровень (клавиша T), и полюбуйтесь на результат.

Теперь усложним спаун, добавив какое-либо условие, и добавив еще парочку спаунеров (каких угодно, я поставил еще гнааров впереди и клиров по краям)

Нарпимер, поставим на карту DetectorArea. Вытаскиваем его из папки Tools, настраиваем. 
Получаем примерно вот что:

Теперь, в нашем скрипте допишем ожидание активации этого поля (под активацией подразумевается проход игрока через него). Обьявим новые переменные, для новых спаунеров (gnaar и kleer) и DetectorArea(detector). 
Дописываем в скрипте:
 Wait(Event(detector.Activated)) 
  gnaar:SpawnMaintainGroup() 
  Wait(Delay(1)) 
  kleer:SpawnGroup()

Функция Wait приостанавливает выполнение скрипта до выполнения
каких-либо условий. В первом случае это ожидание события (функция Event()) активации детектора (detector.Activated). Оператор "." служит в скриптах для проверки событий. Во втором случае условие - функция Delay(1), т.е. ожидание.

Итак, теперь при проходе через наш DetectorArea активируется спаунер гнааров, и, спустя секунду, спаунер клиров.
В качестве условия можно выбрать также и подбор предмета.
К примеру, поставим на карту Devastator (поставив и настроив Generic Item),
обьявим в скрипте переменную devastator, присвоив ей эту пушку. 
Допишем в скрипт
 Wait(Event(devastator.Picked))
И после этого активируем еще какой-нибудь спаунер, к примеру, как на этом скрине:


Примечание: если взять предмет до того как выполнится функция Wait(Delay(1)), функция Wait(Event(devastator.Picked)) выполняться не будет 

Существует аналог функции Wait() - функция On(), которая не приостанавливает выполнение скрипта, а выполняет блок кода после On() только когда выполнится условие

Т.е. в нашем случае, с помощью функции On() переписать эту часть скрипта надо так:

 On(Event(devastator.Picked)),
   function()
   scorp:SpawnMaintainGroup() 
   end,

На этом все. Удачи!



Комментарии   

№ 18  |  16.12.2012  |  0  
у меня нету SpawnSimple()...
Ответ Цитата

№ 13  |  21.12.2011  |  0  
У меня только один вопрос где, его скачать?
Ответ Цитата

№ 14  |  22.12.2011  |  0  
В библиотеке жми на "Все игры", в меню выбери "Инструменты", редактор где то там
Ответ Цитата

№ 15  |  22.12.2011  |  -1  
У меня No-Steam пиратка
Ответ Цитата

№ 16  |  22.12.2011  |  -1  
И в Cracked Steam не удается скачать (Сервера заняты)
Ответ Цитата

№ 17  |  22.12.2011  |  +2  
Ну так и на что ты надеялся с пираткой?..
SED3, насколько я знаю, как-то можно стянуть на пиратку через Стим... поплясав с бубном...
Ответ Цитата

№ 12  |  19.12.2011  |  +2  
+5 Статья класс! :D Разобрался, все получилось!! СПАСИБО! :D
Ответ Цитата

№ 11  |  17.12.2011  |  0  
Небольшая неточность, обнаружил только сейчас. Функция On() должна запускаться внутри конструкции RunHandled(), т.е., например
Code

RunHandled(
      On(Event(object.event)),
      --что-нибудь
      end,
)

Но в этом случае надо дополнительно усложнить скрипт. Для простых спаунов, не свзяывайтесь с RunHandled().
Ответ Цитата

№ 10  |  15.12.2011  |  0  
Спасибо тебе !
Ответ Цитата

№ 9  |  12.12.2011  |  0  
Поучусь делать врагов в SED3.0
Ответ Цитата

№ 8  |  12.12.2011  |  0  
однако тяжело!
МОЛОДЕЦ!!
Ответ Цитата

№ 7  |  11.12.2011  |  0  
Отлично! Cool
Ответ Цитата

№ 6  |  11.12.2011  |  0  
спасибо, Artifica1 очень помогаешь с serious sam 3 editor :)
Ответ Цитата

№ 5  |  10.12.2011  |  0  
Ничего говорить не стану - просто + :)
Ответ Цитата

Страницы: 1-10 11-13

Оставьте комментарий

Мини-профиль

Гость

Вы в группе: Гости
Ваш IP: 54.158.212.93

Информация

Прочее

Категории раздела

Croteam [3]
Материалы по студии разработчика игр CroTeam.
Интервью с разработчиками [9]
Интервью с разработчиками, а также их издателями.
Serious Sam 1 [10]
Статьи о Serious Sam 1
Serious Sam 2 [6]
Статьи о Serious Sam 2
Serious Sam HD [5]
Статьи о HD-серии, ремейков классических версий Сэма.
Serious Sam 3: BFE [9]
Статьи о Serious Sam 3: BFE
Уроки по Serious Editor 1 [55]
Уроки по Serious Editor 2 [2]
Самое серьёзное редактирование, на русском!
Уроки по Serious Editor 3 [33]
Уроки по работе с редактором.
Serious Engine [6]
Описание возможностей всех движков компании Croteam
Разное [26]
Всё что не подошло не под одну из вышеупомянутых категорий.
Serious Sam: Revolution [1]
Материалы по SS: Revolution, серьёзном обновлении классических Крутых Сэмов.
Serious Sam 1.05/1.07 SDK [10]
SDK - набор исходников для Serious Sam: The Second Encounter 1.05/1.07.

Голосование

Какой ваш любимый уровень в Serious Sam 3: BFE?
1. Страж времени
2. Лето в Каире
3. Последний человек на Земле
4. Затерянные храмы Нубии
5. Мощь подземного царства
6. Мрачная невеста
7. Немые загадки
8. Открывая Солнце
9. Свинцовая туча
10. Сломанные крылья
11. В паутину
12. Без укрытия

Статистика



На сайте: 4
Гостей: 4
Пользователей: 0