Здравствуйте. Вы находитесь на сайте Unreal Level. Данный ресурс посвящен редакторам карт игр серии Unreal, UT и Gears of War. Основная цель сайта , помочь всем желающим освоить любой из редакторов вышеперечисленных серий. Наибольшим приоритетом на этом сайте, обладает редактор UnrealED for Unreal Engine 3 и редактор движка Unreal Engine 3.5, входящий в комплект разработки UDK, поскольку это наиболее актуальная на сегодняшний день технология.
STREAMING
автор: FACH | 5 Января 2010 | Просмотров: 4037
  • Автор:Hourences
  • Оригинал: UE3 STREAMING
  • Перевод: FACH


Теория 

В Streaming нет ничего нового. Его уже давно используют для подгрузки, чтобы уменьшить время загрузки и занимаемый уровнем объем памяти. Однако, в Unreal Engine 3 иной контроль над системой Unreal Streaming.

Streaming - это динамическая загрузка. Например: вместо загрузки всего уровня, офисного здания, например, движок загружает только несколько первых комнат, а по продвижению игрока по локации, подгружает еще. Он динамически загружает и выгружает пройденные или неиспользованные части. Полезно тем, у кого мало оперативной памяти. Загрузка только несколько комнат, проходит гораздо быстрее, чем полная (движок сохранить эти номера в память). 
Недостаток в динамической загрузке - контент может замедлить всю игру, так как движок пытается сделать две вещи одновременно: загрузить материалы и построить уровень. Кроме того, игроки иногда могут видеть подгружающийся контент в комнате, что, очевидно, не очень красиво, когда деревья и ящики появляются из воздуха. 

Streaming - замена зонирования в Unreal Engine. Streaming делает примерно то же, что и зонирование, когда зоны вне поля зрения они будут скрыты или полностью выгружены из памяти.

В Unreal Engine 3 каждая Streaming область в отдельном файле карты. Таким образом, один уровень может состоять из десятков различных файлов карт, которые все загружаются на один главный файл карты, который содержит информацию, что нужно подгрузить, чтобы загрузить другую часть. Такой метод имеет несколько преимуществ:

Одиночная Игра: Если игрок доходит до конца 1-го уровня (например док подводной лодки), появится экран загрузки, затем респаунится в том же доке подводной лодки в 2-м уровне. Со Streaming можно сделать подводную лодку и док отдельными файлами, а не одним файлом. Любые будущие изменения, которые сделаны в комнате, будут сделать один раз, и файл не будет занимать дополнительное дисковое пространство, поскольку он уже существует, а не нужно дублировать его на двух разных картах. 

Небо: весь "SkyBox" может быть отдельным уровенем, его можно потом подгрузить или заменить. Это позволит Вам иметь набор карт неба и уровни будут на них ссылаться. Если небо нужно скорректировать, его можно будет заменить, но делать что лучше, как можно реже. 

Слои: Несколько файлов карт позволит Вам разделять уровень между людьми, поскольку все отдельные файлы, будут собраны в одном. Например, Вы можете иметь визуально карту со всей геометрей и освещением, игровую карту со сценарием и специальными субъектами и со всеми звуками. Таким образом, художник, дизайнер, сценарист и звуковой оператор могут работать на уровне Одновременно.

Скорость: постепенно подгружающийся уровень использует меньше ресурсов ПК, что повышает быстродействие программы. Редактор должен загрузить только один участок, и только этот участок должен быть скомпилирован.


Настройки 

В UE3 разные виды Streaming. В этом туториале основной упор будет на тип Kismetа, поскольку он довольно мощный и его легко контролировать. 

В этом уроке я подгружу сферу на уровень. Первое, что нам нужно, это по крайней мере два различных файла карт, можете загрузить свои или создать новые уровни.. 
Затем откройте Generic-браузер и перейдите к закладке "Level" и в верхнем меню нажмите Level->Import Level и выберите файл. После того как он загрузится вас спросят, какой метод использовать, выберите Kismet.

alt
 


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

Откройте Kismet (только откройте Кизмет главного уровня, а не загружаемого). Щелкните правой кнопкой мыши и добавьте два узла:

New Action -> Level -> Stream Level
New Event -> Level Startup


Затем соедините Level Startup с узлом Load Stream Level и щелкните по нему. В его свойствах в поле LevelName впишите имя файла для загрузки.

STREAMING


Запустите игру, и Вы увидите, что другой уровень теперь виден. 



Продолжение - триггеры и объемы

Для пользователей Unreal Engine 3.0, где отсутствие неба - кошмар на экране, добавьте небо на уровень или с подгрузите с помощью Streaming
Добавьте триггер на Ваш уровень (например, в коридор, ведущий в другую область) и добавьте его в Kismet (Для этого щелкните правой кнопкой мыши на поверхности уровня Add Actor-> Add trigger, откройте Kismet, с выделенным триггером и щелкните правой кнопкой мыши в Kismet New Event Using Trigger_0 -> Touch), а затем подключите его к узлу Load Stream Level. Теперь уровень подгрузится от этого триггера, а чтоб его долго не искать по уровню, уберите галку с Hidden в настройках триггера в разделе Display

STREAMING


Также обратите внимание на функцию bShouldBlockOnLoad. Если поставить галку, то экран будет на паузе или станет черным, пока весь тот файл не будет полностью загружен. Это предотвращает ситуации, где область еще полностью не загружена, когда игрок войдет в нее.

Вы можете также просто выгрузить уровень, если вы подключите триггер или еще что-то к узлу UnLoad Stream Level.

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

В больших уровнях, все что нужно загрузить, выделяем Строительным брашем (красным), потом щелкните правой кнопкой мыши по кнопке Volume -> LevelStreamingVolume

STREAMING


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

Как только Вы все настроили, закройте окно свойств и убедитесь, чтоб объем по прежнему выделен. В браузере Level щелкните ПКМ на нужной подгружаемой части, и подключите к ней объем "Add Streaming Volumes". 

STREAMING


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

Дополнительная информация

Дважды щелкните по уровню во вкладке Level Generic, чтобы сделать его активным уровнем. 

Убедитесь, что все дополнительные уровни сохранены. Сохранение основного уровня не сохраняет другие. 

Довольно трудно сделать Kismet ссылки с одного уровня на другой, но это возможно. Старайтесь делать их как можно больше в течение того же файла.

Если Вы копируете какой-нибудь актор неактивного уровня тогда, дубликат будет автоматически добавлен к Вашему основному уровню. Практический пример: Вы работаете в Уровне B, в то время как Уровень A также загружен. Если Вы выбрали актор Уровня A и сделали его дубликат, он станет актором Уровня B.

Вы можете перемещать акторы, выделив их и нажать ПКМ - "Move selected to current level", для перемещения их на главный уровень.
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь. Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1 написал: Banzai
5 Января 2010 16:30 | ICQ: 316375179 |


Группа: Активист
Регистрация: 14.11.2009
полезная статейка


--------------------
Публикаций: 0 | Комментариев: 7      
#2 написал: ROMAshka
5 Января 2010 17:41 | ICQ: Не Указано |


Группа: Активист
Регистрация: 2.12.2009
статейка?)


--------------------
Публикаций: 0 | Комментариев: 60      
#3 написал: FACH
5 Января 2010 18:31 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
ROMAshka, в чем проблема?


--------------------
Публикаций: 134 | Комментариев: 778      
#4 написал: ROMAshka
5 Января 2010 21:33 | ICQ: Не Указано |


Группа: Активист
Регистрация: 2.12.2009
не в чем сэр!


--------------------
Публикаций: 0 | Комментариев: 60      
#5 написал: FACH
5 Января 2010 21:40 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
lol
После чем - запятая)))


--------------------
Публикаций: 134 | Комментариев: 778      
#6 написал: alexut
5 Января 2010 21:57 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 12.12.2009
blum Я так правда и не понял почему статейка?...


--------------------
Публикаций: 0 | Комментариев: 46      
#7 написал: FACH
5 Января 2010 22:01 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
ну этот материал, по сути своей, очень сильно ужат и там много чего не хвататет


--------------------
Публикаций: 134 | Комментариев: 778      
#8 написал: ROMAshka
6 Января 2010 15:14 | ICQ: Не Указано |


Группа: Активист
Регистрация: 2.12.2009
Я не собирался критиковать материал!)


--------------------
Публикаций: 0 | Комментариев: 60      
#9 написал: Engine_Ed
8 Января 2010 08:50 | ICQ: Не Указано |


Группа: Гости
Регистрация: Не Указано
Класс. было очень познавательно
Публикаций: 0 | Комментариев: 0      
#10 написал: ScorpyX
3 Февраля 2010 18:33 | ICQ: 333879808 |


Группа: Активист
Регистрация: 13.08.2009
Отлично


--------------------
Публикаций: 0 | Комментариев: 45      
#11 написал: CRIS
2 Апреля 2010 01:49 | ICQ: Не Указано |


Группа: Гости
Регистрация: Не Указано
а как на UDK это сделать я че-то не уловил??????
Публикаций: 0 | Комментариев: 0      
#12 написал: FACH
2 Апреля 2010 07:13 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
аналогично


--------------------
Публикаций: 134 | Комментариев: 778      
#13 написал: netgoblin
23 Августа 2010 03:54 | ICQ: Не Указано |


Группа: Активист
Регистрация: 27.02.2010
а как расставлять path nodes на картах с учетом стриминга? на каждом уровне отдельно? они свяжутся автоматически?
Публикаций: 0 | Комментариев: 22      
#14 написал: FACH
23 Августа 2010 13:21 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
Вообще там есть компиляция всех уровней вместе, ну что-то в этом роде... Попробуй поместить всю навигационную систему в один уровень скомпилировать.


--------------------
Публикаций: 134 | Комментариев: 778      
#15 написал: lentinant
5 Мая 2012 23:57 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 3.05.2012
Вопрос следующий. Можно ли не стримить определенный уровень, а именно грузить его (с экраном загрузки и все такое), когда игрок, например, активирует триггер, чтобы на новом уровне он появлялся с плеер старта? Так как при стриме очень неудобно то, что другой уровень прогружается на тех же координатах, в которых был в оригинале, и в итоге приходится двигать его относительно начального уровня.
Публикаций: 0 | Комментариев: 4      
#16 написал: netgoblin
6 Мая 2012 04:22 | ICQ: Не Указано |


Группа: Активист
Регистрация: 27.02.2010
lentinant, такое можно реализовать через консольную команду
open <имя карты>

а стрим на то и стрим, чтобы части карты подгружать в реальном времени (типа бесшовный мир). кстати, чтобы не возиться с перемещением подгружаемой карты, можешь начать ее разработку в основной карте. потом просто выдели нужные объекты и в окне уровней (закладка в браузере контента) -> создать уровень из выделенных объектов.
Публикаций: 0 | Комментариев: 22      
#17 написал: Hardcore
7 Мая 2012 13:23 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 19.11.2010
Можно как нить сделать чтоб объекты подгружались по определнному радиусу действия игрока из того же уровня?


--------------------
Публикаций: 0 | Комментариев: 14      
#18 написал: lentinant
8 Мая 2012 03:41 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 3.05.2012
Hardcore, если я не ошибаюсь, это дистанционный стриминг. Статья на UDN
Публикаций: 0 | Комментариев: 4      
#19 написал: Hardcore
8 Мая 2012 21:02 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 19.11.2010
lentinant, типа того, только этот стримит по дистанции уровень, а мне нужно чтобы подгружал объекты текущего уровня!


--------------------
Публикаций: 0 | Комментариев: 14      
#20 написал: FACH
8 Мая 2012 21:47 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
По моему тоже - это как раз то, что тебе и нужно


--------------------
Публикаций: 134 | Комментариев: 778      
#21 написал: dante1741
10 Мая 2012 13:44 | ICQ: Не Указано |


Группа: Посетители
Регистрация: 24.08.2011
как по мне, то в анреале довольно приличная оптимизация... скрытие невидимых обьектов, и т п.
Публикаций: 0 | Комментариев: 9      
#22 написал: FACH
10 Мая 2012 18:02 | ICQ: 562039160 |


Группа: Администраторы
Регистрация: 27.06.2009
Есть лучше)


--------------------
Публикаций: 134 | Комментариев: 778      
Информация
Посетители, находящиеся в группе Гости, не могут оставлять Комментарии в данной новости...






При копировании материалов, активная ссылка на UNREAL-LEVEL.RU обязательна!
© 2008—2012, UNREAL-LEVEL.RU. Все права защищены.