Создание/редактирование артефактов
Распишу по пунктам как добавить например к "огненому шару" аномалию Жарка... Открываете файл: gamedata/config/misc/artefacts.ltx И там в самом начале файла такая секция: Код: ;Артефакты, которые при активизации создают аномальные зоны ;формат: {секция_артефакта} = {секция_зоны},Radius,Power [artefact_spawn_zones] af_medusa = zone_mosquito_bald_weak, 2.0, 30.0
Обозначает что артефакт af_medusa при активации создаст аномальную зону zone_mosquito_bald_weak с радиусом 2 метра и мощностью 30 (возможно влияет и на время жизни аномалии) Кончается этот список по идее строчкой: mp_af_electra_flash = zone_witches_galantine, 3, 50.0 и сразу после неё пишете: af_fireball = zone_zharka_static, 3, 30.0 В принципе можно прописать там не статик а zone_zharka_weak незнаю что из них правильнее использовать... статик работает тоже.В той-же папке есть файл zone_zharka, где описаны свойства зон _weak, _average, _strong( слабая, средняя, сильная), а также зона zone_zharka_static. После этого у вас игра станет вылетать с ошибкой про невозможность обнаружить последовательность описывающую анимацию активации аномалии. А это всё там же в начале файла чуть ниже того где вы добавили новый артефакт в список есть такие строчки: Код: [af_activation_gravi] ;---------------------------------------------------------------------------------------------------------------------------------------- ;format: time(sec), sound_name, light_R,G,B, light_range, particle_name, af_animation_name ;---------------------------------------------------------------------------------------------------------------------------------------- starting = 5.0, anomalygravi_idle00, 0.5, 1.0, 1.5, 5.0, "anomaly2artefact_gravi_blast_start", "idle" flying = 2.0, anomalygravi_idle01, 0.8, 1.0, 1.2, 3.0, "anomaly2artefactartefact_gravi", "idle" idle_before_spawning = 5.0, anomalygravi_blowout5, 1.0, 1.0, 1, 0.0, "anomaly2artefact_gravi_blast_finished", "idle" spawning = 1, anomalygravity_entrance, 0.9, 1.1, 1.01, 0.0, "", "idle"
Что как раз и описывает анимацию.. По-хорошему надо написать свою анимацию к жарке но это честно говоря не обязательно... потому что нам сейчас важна не красота а работоспособность.... Так вот... из заголовка "[af_activation_gravi]" берем название последовательности af_activation_gravi и ищем сам артефакт af_fireball (кто уже забыл зачем, мы на него собирались вешать новую активацию) Найдете что-то вроде: Код: [af_fireball]:af_base GroupControlSection = spawn_group $spawn = "artifactszharka fireball" $npc = on ; option for Level Editor ;$prefetch = 3 cform = skeleton class = ARTEFACT
visual = physicsanomalyartefact_fire.ogf description = enc_zone_artifact_af-fireball inv_name = af-fireball
И где-нибудь тут добавляете строчку: artefact_activation_seq = af_activation_gravi И на этом всё. Прописываем в artefacts.ltx в блоке [af_base]:identity_immunities вместо ;slot=10 вот это: slot=1. Насколько я знаю, знак ; зоначает, что строка закомментирована(неактивна) У себя я прописывал slot=1 между строчками inv_name = af-electra-moonlight inv_name_short = inv_weight = 0.05 slot = 1 inv_grid_x = 10 inv_grid_y = 10 для того артефакта, который хочу активировать. В игре берем артефакт в первый слот и активируем.
Сегодня мы на примере научимся созданию новых артефактов. Создадим, например, артефакт под названием "Ромашка".
Статья написана по материалам Hunter Mod.
Создание конфига
Заходим в папку gamedata\config\misc и открываем файл artefacts.ltx. И находим, например, артефакт "Медуза":
Код: [af_medusa]:af_base GroupControlSection = spawn_group $spawn = "artifacts\moscito medusa"
$prefetch = 64 cform = skeleton class = ARTEFACT
visual = physics\anomaly\artefact_blackdrip.ogf description = enc_zone_artifact_af-medusa inv_name = af-medusa inv_name_short = inv_weight = 0.5
inv_grid_x = 9 inv_grid_y = 4
cost = 1000
jump_height = .5
particles = anomaly2\artefact\artefact_gravi
lights_enabled = false
;скорости увеличения (уменьшения) health_restore_speed = 0.0 radiation_restore_speed = 0.0005 satiety_restore_speed = 0.0 power_restore_speed = 0.0 bleeding_restore_speed = 0.0 hit_absorbation_sect = af_medusa_absorbation
artefact_activation_seq = af_activation_bold
[af_medusa_absorbation] burn_immunity = 1.0 ;коэффициенты иммунитета strike_immunity = 1.0 shock_immunity = 1.0 wound_immunity = 1.0 radiation_immunity = 1.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 1.0 fire_wound_immunity = 0.98
В этой секции задаются параметры артефакта, начиная от внешнего вида и заканчивая коэффициентами различных эффектов вроде вывода радиации. Сделаем копию секции, принадлежающей "Медузе", и заменим её название с af_medusa на af_romashka.
Должно выйти примерно вот так:
Код: [af_romashka]:af_base GroupControlSection = spawn_group $spawn = "artifacts\moscito romashka"
$prefetch = 64 cform = skeleton class = ARTEFACT
visual = physics\anomaly\artefact_blackdrip.ogf description = enc_zone_artifact_af-romashka inv_name = af-romashka inv_name_short = inv_weight = 0.5
inv_grid_x = 9 inv_grid_y = 4
cost = 1000
jump_height = .5
particles = anomaly2\artefact\artefact_gravi
lights_enabled = false
;скорости увеличения (уменьшения) health_restore_speed = 0.0 radiation_restore_speed = 0.0005 satiety_restore_speed = 0.0 power_restore_speed = 0.0 bleeding_restore_speed = 0.0 hit_absorbation_sect = af_romashka_absorbation
artefact_activation_seq = af_activation_bold
[af_romashka_absorbation] burn_immunity = 1.0 ;коэффициенты иммунитета strike_immunity = 1.0 shock_immunity = 1.0 wound_immunity = 1.0 radiation_immunity = 1.0 telepatic_immunity = 1.0 chemical_burn_immunity = 1.0 explosion_immunity = 1.0 fire_wound_immunity = 0.98
Назначение некоторых параметров, влияющих на одевшего артефакт: health_restore_speed - прирост к скорости восстановления здоровья radiation_restore_speed - прирост скорость вывода радиации satiety_restore_speed - прирост к голоду power_restore_speed - прирост к выносливости bleeding_restore_speed - прирост к скорости остановки кровотечений
Создание описания и имени артефакта
Заходим в gamedata\config\text\rus и открываем файл string_table_enc_zone.xml. Добавим туда строку с названием артефакта.
Код: <string id="af-romashka"> <text>"Ромашка"</text> </string>
Теперь у артефакта есть имя, но одного его недостаточно. Нужно сделать описание. Поэтому добавим и его.
Код: <string id="enc_zone_artifact_af-romaska"> <text>Очень странный артефакт. Впервые появился в Зоне где-то в 2011 году, но толку от него - ноль. Ученые не обнаружили никакого влияния артефакта на организм носителя.</text> </string>
Все, поздравляю, вы только что создали свой первый артефакт! :)
В этой статье я расскажу как добавить новую модель артефакта в игру, о создании конфигов рассказано в этой статье (Создание нового артефакта)
Для работы нам понадобятся: X-Ray SDK 0.4 Набор плагинов для экспорта моделей в SDK Adobe Photoshop 3ds max 8
Подготовка к моделированию
Прежде чем приступить к моделированию подумаем об особенностях артефакта и нарисуем скетч(эскиз) чтобы не получить черти-что.
Общая концепция
Общая концепция - это основа-основ нашей работы, именно от этого этапа зависит весь предстоящий ход работы, поэтому к нему надо отнестись с максимальной ответственностью. В результате моих творческих мук получилось вот что:
Название: Плазменный Кактус
Характеристики: Радиация -68 Кровотечение +15 Пулестойкость -10 Электрошок +30 Удар +10
Описание: Этот артефакт порождается аномалией «Карусель», представляет из себя наполовину сваренный состав из неизвестных редких растений, одним из которых предположительно является мутировавший вид крапивы, на вид похож на кактус, отчего и получил свое название. Также можно заметить слабую светящуюся оболочку, предположительно плазменной структуры. Артефакт достаточно редкий и дорогой.
Рисуем скетч
Рисовать можно хоть в Фотошопе хоть на газете или школьной тетрадке, значения не имеет. Рисую я плохо, поэтому получилось вот что:
Прошу особо не пинать)))
Моделирование и текстурирование
Идея готова, осталось лишь воплотить ее в жизнь.
Основное моделирование
Итак, запускаем Макс и делаем модельку максимально схожую со скетчем
Для достижение этого результата я использовал модификатор MeshSmooth и Nois, а для корректировки формы FreeForm Deformer
Теперь делаем "иголки" нашего артефакта
Текстурирование
Проецируем текстуру и если надо создаем развертку, у меня получилось так:
Окончательно моделирование
Отмасштабируем все элементы и правильно присоединим "иголки" к основному мешу, для этого я рекомендую использовать скрип Scatter С его помощью можно как-бы "рисовать" одними мешами на другом.
Так же создаем сферу, которая будет являться "плазменной оболочкой"
Назначение шейдеров
Для моего артефакта я использовал следующие параметры: Основной кусок артефакта: model/selflightl, def_shaders/def_vertex, game_material/default_object Иголки: model/model aref, def_shaders/def_vertex, game_material/default_object Плазменная оболочка: model/lightplanes, def_shaders/def_vertex, game_material/default_object
Подготовка к экспорту в Actor Editor
Масштабируем модель до "сталкеровских" размеров, потом применяем модификатор Physique, и присоединяем кость. Далее все просто: переходим в Utilites(На нем нарисован молоточек), more/S.T.A.L.K.E.R. Export и нажимаем Export Skin
Работа в SDK
Устали? А ведь в переди еще не мало работы, возможно это даже самый сложный этап.
Настройки в Actor Editor
После правильного импорта текстур и геометрии должно получиться примерно так:
Невзрачно, да? А ведь после окончания всего процесса будет красиво...надеюсь красиво...
Ладно, вернемся к теме, первым делом проверяем шейдеры, если что-то напортачили в 3ds max то сейчас еще не поздно исправить, далее убираем галку напротив пункта Make Progressive(для чего нужен этот параметр мне не известно), переходим во вкладку Bones и щелкаем на названии кости... Теперь ставим следующие параметры: Bone/Game Material: default_object Mass: на усмотрение Shape/Type: любой предлагаемый параметр в зависимости от формы
Теперь нажимаем кнопку Generate Shape/All , и экспортим модель в ogf...
Создание парктикла артефакта
Запускаем Parcticle Editor, (заранее предупреждаю что делать наш парктикл мы будет на основе уже имеющегося, т.к. в этому уроке не будут рассматриваться азы работы в этой программе SDK, про это уже подробно написано тут )
создаем свою директорию и копируем туда уже имеющиеся парктикл_группы(PG) и принадлежащие к нему парктикл_эффекты, не забываем править пути.
После редактирования всех параметров у меня получилось так:
Чтобы новый парктикл заработал копируем файл parcticles.xr из директории SDK в директорию игры, и прописываем соответствующие параметры в конфиги артефакта.
Заключение
После упорных трудов мы создали с нуля модель артефакта, а добавление его в игру это дело техники.
|