Статья для начинающих создания локаций в сталкере если кому пригодица
Начало.
Для начала попробуем сделать локацию с монстрами. Открываем уровень. Что бы создать саму локацию нужно зайти в object->Commands->Multiple Append в появившемся окне выберите пункт levels, выбераем тестовую локацию mp_atp_test, ставим возле неё галочки и нажимаем "ОК" таким способом мы открыли уровень.
Теперь сделаем AI сетку для этого выделяем весь уровень tools->selection-> select ALL, далее нажимаем AI Map->Commands->Make List From Selected. Поставим один квадратик, он будет красного цвета.
Далее нажемаем Light и расставляем по карте сколько вам нужно, можно поставить одну затем нажимаем Glow, точно так же ставим на карту и настраиваем у Glow текстуру для этого нажимаем правой кнопкой мыши и выбираем строку Propertiles, в окне внизу находим строчку Texture и в ней выбираем текстуру например glow->glow_04, получиться вот так:
Далее мы делаем монстров и ставим ГГ на карту и конешно граф поинт, находим строчку Spawn Element->ai->graph point и ставим несколько поинтов по карте:
Дальше поставим пару монстров Spawn Element->monsters->dogs и расставим собак по карте.
Теперь ставим ГГ на карту: Spawn Element->actor.
Далее, сахраняем локацию для этого в верху нажимаем Propertiles, в окне верху в строчке Level path, вместо level напишем atp_monster, теперь чуть ниже в Quality выбераем Draft-низкое качество, Hiqh-высокое качество и можно зделоть ещо среднее качество, нажимаем Draft, затем Custom, теперь чуть ниже в строчки Jitter samples выбераем Medium, но мы пока обойдёмся Draft`ом поскольку при выборе качества компиляция идёт дольше всё теперь в верху находим строчку File->Save и сохроняем уровень например atp_monster.
Дальше чуть ниже над строкой File находим строчку Compile->Build,
всё пока выходим из LevelEditor и настраиваем config.
Пример:
game_maps_single.ltx [level_maps_single] ... testing_ai //название вашего уровня
game_levels.ltx [levels] ... level190 //номер вашего уровня
[level190] name = testing_ai caption = "testing_ai" offset = 2000.0, 800.0, 1000.0 // положение нового уровня на глобальной карте, X, Y, Z id = 193 //индентифакционный номер, должен быть уникальным
game_graphs.ltx 018 = "testing_ai"
Теперь открываем AI Compiler, указываем папку с SDK(.../level_editor, либо, если он объединен с игрой, путь до нее). Выбираем ваш уровень. Проходим первую стадию черного просчета AI-карты (шаг 1), либо, если вы хотите долго ждать и просчитать укрытия для NPC, то выбираем шаг 2. Далее, строим сетку (граф) и кросс-таблицу уровня (шаг 3), потом граф игры (шаг 4) и наконец фаил .spawn (шаг 5). После всех стадий заходим в gamedata\spawns и переименовываем test.spawn в all.spawn
В конверторе создаём текстовый документ перименовываем в test_level.bat изменяем, и там прописовываем:
converter -level l01_escape -mode le converter -level l02_garbage -mode le converter -level l03_agroprom -mode le converter -level l03u_agr_underground -mode le converter -level l04_darkvalley -mode le converter -level l06_rostok -mode le converter -level l05_bar -mode le converter -level l07_military -mode le converter -level l08_yantar -mode le converter -level l08u_brainlab -mode le converter -level l10_radar -mode le converter -level l10u_bunker -mode le converter -level l11_pripyat -mode le converter -level l12_stancia -mode le converter -level l12_stancia_2 -mode le converter -level l12u_control_monolith -mode le converter -level l12u_sarcofag -mode le converter -level l04u_labx18 -mode le
pause
Теперь сохраняем.
Дальше изменяем в fsconverter.ltx строку: $sdk_root$ = false| false| D:\путь до sdk
Дальше изменяем converter.ini он находится в папке с конвертором там находите строки и меняете путь.
[2947_config]:2945_config $game_data$ = D:\Games\S.T.A.L.K.E.R.Rus\gamedata\ ;путь до папки gamedata игры $game_levels$ = D:\Games\S.T.A.L.K.E.R.Rus\gamedata\levels\ ;путь до папки с уровнями
[test_config]:2947_config $game_data$ = D:\Games\S.T.A.L.K.E.R.Rus\temp\gamedata\ ;путь до временной папки $game_levels$ = D:\Games\S.T.A.L.K.E.R.Rus\temp\test_levels\ ;путь до временной папки
Запускаем: test_level.bat
Создание LOD-текстур для локаций.
Если у вас возникла ошибка при компиляции вроде такой:
ERROR: Validation failed. Invalid scene
Это значит что нет лодов на уровень, их надо делать, в основном это деревья, камни, ну и разные объекты на уровне. Для начала заходим в File->Clear затем заходим, в Objects->Library Editor в появившемся окне находим папку levels и выбираем наш уровень например: кардон, именуется он так: l01_escape и открываем его затем находим с права Preview и ставим галочку теперь важно выбрать качество текстуры, либо высокое качество: Make LOD (High Quality) либо низкое качество: Make LOD (Low Quality) лучше конечно высокое но, ждать приёдёться долго, но если вам надо быстро проверить вашу локацию то выбираем: Make LOD (Low Quality) И так выбрали качество нажимаем затем появляетсяа выбор либо сделать одну лоду, либо выбрать несколько лучше несколько сразу что бы не париться нажимаем: Yes, снова находим папку levels затем выбираем наш уровень и и ставим галочки на те модели которые нужно от XXX_detail до XXX_lod (где XXX это имя локации) part не нужно! затем нажимаем: Ok и ждём пока вес выбранные нами лоды не сделаются.
Сообщение отредактировал digbox - Чт, 10 Сен 2009, 00:17
Данная статья рассматривает основы создания партиклов, без которых работа с ними не обходится в любом случае.
Запускаем Particle Editor и создаем в общей директории свою папку, в ней создаем новый партикл-эффект.
Даем название своему партиклу и находим кнопку Append, в появившемся окне выбираем source - это база для любого партикла. Теперь настроим его. Находим пункт Color -> Alpha, назначаем текстуре прозрачность.
Далее, нужно указать размер текстуры (Size -> Center). Теперь прокручиваем список вверх к пункту Max particles - задаём ограничение в 50 партиклов и спускаемся на строчку ниже к пункту Sprite - ставим напротив него галочку, появится 4 подпункта. Нас пока интересует первый пункт - Texture, выбираем текстуру для своего партикла.
Также, выбираем шейдер. Теперь можно нажать F5 для запуска превью своего партикла.
Далее, есть ещё одна обязательная вещь для нашего эффекта: нажимаем Append и выбираем Kill Old. Эта функция убирает старые партиклы. В настройках указываем время жизни (Age limit).
Если наш партикл задумывается движущимся, нужно также приаттачить ещё один итем - Move, этот итем базируется на параметре Velocity.
Теперь настроим Domain - базовый параметр партикла.
По умолчанию, домен - точка (point), при двойном щелчке на этом пункте, откроется меню, где на выбор будет несколько базовых форм: точка, линия, сфера, конус, цилиндр, диск и т.д.
Я выбрал диск. Снова жмём F5 для просмотра.
Мы получили что то вроде огненного диска, который медленно поднимается вверх. Частота кадров указывается в пункте Source -> Rate (чем больше это значение, тем быстрей обновляются наши партиклы).
Ну теперь можно добавлять ещё разных итемов и смотреть на эффект.
Копируем фаил particles.xr в геймдату игровую из геймдаты редактора, прописываем этот эффект чему-нибудь - и всё.
Создаём HOM, порталы и сектора
Для работы нам понадобится X-Ray SDK.
Для начала, зачем оно нужно:
HOM - расшифровывается как Hierarchical Occlusion Mapping, или маппинг иерархических отсечений. Что это значит: упрощённо говоря, с помощью HOM, можно повысить производительность рендеринга сложных уровней на ~20%.
Как работает HOM: Не вдаваясь в технические подробности, объясню упрощённо: то, что закрыто от игрока Occlusion'ом - процессор не обрабатывает, а видеокарта не рендерит - а значит, система экономит свои ресурсы, производительность при этом, естественно, возрастает.
Секторы и порталы: про них - читаем здесь - разъяснено очень просто и доступно. Могу лишь добавить, что в X-Ray 3D Engine, геометрия уровня в построении секторов не участвует, он использует для этого HOM-объекты.
Вывод: Все эти заморочки позволяют практически двухкратно поднять производительность системы, и благодарные юзеры с не слишком сильными компами (а таких большинство), будут таскать вас на руках за такой шикарный подарок Важные моменты 1. Делать всё это, актуально для действительно сложных и мощных карт, так как не только подымет скорость в итоге, но и позволит напихать в карту, побольше всякой интересной геометрии.
2. Изложенные выше принципы, актуальны не только для сталкера, но и для подавляющего большинства современных игр. Например, лучше всего это всё дело с порталами и секторами продумано на играх на движке Source (Half-Life 2 и т. д.)
Итак, приступаем к креативу!
Допустим, есть у вас карта, на которой надо сделать всё вышеперечисленное. Как это сделать, я объясню на примере старого доброго кубика, сделаем ему HOM, поставим на карту, и создадим порталы с секторами.
Начнём с HOM.
Вот наша карта, на ней кубик, надо для него сделать HOM.
Чтобы сделать HOM, сбрасываем сцену, и идём в Библиотеку статической геометрии, находим там наш кубик. У меня он находится по адресу editor\shadertest_box, вы можете заюзать свой.
Теперь, этот кубик, там же, в библиотеке, экспортим в формат LWO, чтобы стереть все настройки материалов, на базе экспортированного объекта мы и сделаем HOM, и материалы с шейдерами ему ни к чему: обозвал я его shadertest_box_occ, (OCC - значит окклюдер, отсекатель).
Всё, экспортировали. Теперь импортируем его обратно, заходим в настройки объекта, в поле Object Type (тип объекта), меняем его тип со Static на HOM, выходим с настроек и сохраняем изменения. Тут же - видим, вид нашего кубика - изменился, теперь - он стал HOM-объектом.
Теперь - загружаем снова нашу карту, выбираем режим "объекты", в самом низу, жмём кнопку "обновить список", чтобы в нём появился новый объект, и добавляем наш окллюдер на карту, как обыкновенный объект.
Осталось только "подогнать" (двигая, вращая и т. д...) окклюдер под имеющийся кубик как можно точнее.
Всё! HOM-окклюдер для объекта успешно создан. Таким-же образом, можно (и нужно) поступить со всеми объектами на карте, но создавать окклюдеры лучше всего - ещё в 3DSMax, в виде неких "упрощённых муляжей" для создаваемых объектов. Хотя можно и так как я описал выше.
Секторы и порталы необходимо генерировать после того, как сборка карты закончена, все объекты на месте, окклюдеры установлены, и т.д. Короче, перед самой прекомпиляцией. Делаются они очень просто, так как в SDK - возможности по ним весьма убогие, а многие так и вообще "временно отключены". Но создавать их можно.
Итак:
Переходим в режим Секторы и создаём базовые порталы, нажав соответствующую кнопку. Если объектов много, целесообразно "проверить на правильность" одноимённой кнопкой. Сектора созданы.
Переходим в режим "порталы" и "вычисляем все порталы".
Всё. Occlusion Mapping - сделан, сектора созданы, а порталы к ним вычислены. Спасибо за внимание.
Сообщение отредактировал digbox - Пт, 11 Сен 2009, 07:19