Правила сайта FAQ Мини-чат
Для добавления необходима авторизация!
08.12.2016, Четверг, 01:07


Страница 1 из 11
Форум » S.T.A.L.K.E.R. - Моддинг » Разбираем S.T.A.L.K.E.R. » Уроки моддинга » Создание движущихся аномалий в ТЧ
Создание движущихся аномалий в ТЧ
Сообщение #1
Создание движущихся аномалий в ТЧ


Задумал я как то сделать движущуюся аномалию. Прямо как в ЗП. Поиск информации в интернете ничего не дал, единственная заметка на сталкерине про движущиеся аномалии оказалось не тем, что было нужно, немного информации по формату .anm нашлось на АМК форуме. Решил покопаться, попробовать и как ни странно - получилось. Дабы не томить ожидание, привожу видео с получившимся результатом.

ЗЫ: В видео аномалии сделаны в ОП, но все то же самое можно повторить на чистой версии игры.



На самом деле, ПЫС-ы позаботились о нас и оставили нам класс аномалий - Z_TORRID, который как раз и отвечает за движущиеся аномалии.
Яркий пример - аномалия в Х-18. Был конечно вариант сделать как с аномалией на Кордоне (великая и могучая электра в тоннеле), но он мне не подходил, плавности это не прибавляло, зато конфиг раздувало до неимоверных размеров.

Итак, от слова переходим к делу:

1) Создаем конфиг нашей аномалии:


Следует обратить внимание на строки от idle_particles до idle_big_particles. Это партиклы аномалии, т.е то, как она будет выглядеть. Сделав несколько конфигов и поменяв эти самые партиклы, тип наносимого хита, звуки - можно иметь у себя в арсенале летающую жарку/электру/холодец...да и вообще, все что угодно (здравствуй фантазия).

2) Путь для аномалии:
Самое интересное - по аналогии как и с вейпоинтами для НПС, только немного по другому.
Пути аномалии зашиты в файл с расширением .anm. Есть несколько способов его сделать:
а) Использовать инструмент "Камера" в СДК (У меня это не получилось, промучившись с установкой версии 0.4 (ТЧ) - не обнаружил там этого инструмента, хотя поголовно везде пишут что он там есть. Установив версию 0.6 (ЗП) так и не смог разобраться, честно пытался пару часов, так и бросил.)
б) Использовать старенькую утилиту 2009 года - anm2ltx (ссылка будет в конце поста). Хоть и старенькая, но вполне себе рабочая. Поначалу может и покажется все сложным, но уверяю, это не сложнее чем игра в тетрис. Через 15 минут у меня уже был заветный файлик, а еще через 2 минуты я любовался на бегающую аномалию в игре.

Итак, качаем утилиту.
(Рекомендую отключить антивирус, по крайней мере у меня аваст ругался на троян и постоянно норовил убрать файл утилиты в хранилище.)

Скачали, распаковали в диск С (для вашего удобства батники настроены и не надо в них лезть и менять пути до файла). Откроем папку с утилитой, внутри файл anm2ltx.exe и 2 батника - "Декомпиляция" и "Компиляция" соответственно. Создаем в этой же папке новый текстовый файл (название должно быть new_anm, причина та же самая, не нужно копаться в батниках), меняем ему расширение на .ltx и открываем (я использовал Notepad++).

Создали, открыли и пишем в него:


По порядку, что есть что:
[ccm] - некий заголовок, с которого начинается файл. Не знаю что это такое, да и нет желания знать.
name= - имя, я оставляю пустым (да и ПЫС-ы сделали также с путями жарки в Х-18).
frame_start=0 - начальная строка в файле, всегда 0.
frame_end=738 - финальная строка в файле. У меня было 738.

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

fps=30.000000 - кол-во ФПС, остается неизменным.
[envelope0] - 1 секция, которая отвечает за движение по координате Х.
Содержимое секции:


Разберем ее содержимое:
keys=24 - кол-во ключей в данной секции. Считаем с 0!
k0_value=293.459 - координата Х.
k0_time=0.000000 - время, которое потребуется для прохождения от этого ключа до следующего. Начинаем с 0. Т.е в нулевом ключе пишем всегда 0.
В следующем ключе увеличиваем на энное кол-во. Я увеличивал на полторы секунды, иначе получатся провалы при движении (аномалия как бы исчезнет при прохождении от точки до точки).

Остальные параметры не трогаем и переписываем так, как указаны выше. Их предназначение мне неведомо, брались из путей жарки в Х-18.

[envelope1] - 2 секция, которая отвечает за движение по координате Y.
Ее содержимое идентично секции [envelope0], за исключением того, что в значении k0_value=293.459 будет записываться координата Y.

[envelope2] - 3 секция, которая отвечает за движение по координате Z. В значение k0_value=293.459 будет записываться координата Z.

Пара важных моментов:
- Координаты в разных секциях должны совпадать по ключам.
Т.е имея координаты 1, 0, -1 и записывая их , координата 1 пойдет в нулевой ключ секции [envelope0], координата 0 пойдет в нулевой ключ секции [envelope1], ну и координата -1 пойдет в секцию [envelope2].
Далее, 1 пойдет в первый ключ секции [envelope0], 0 пойдет в первый ключ секции [envelope1], -1 пойдет в первый ключ секции [envelope2] и так далее.
Если до сих пор непонятно, покажу так:

Координату разбиваем на 3 части - X,Y,Z. Затем пишем каждую часть в свою секцию, с соблюдением номеров ключей. Главное не перепутать и не записать X в нулевой ключ, а Y в 7 ключ. Получится несовпадение и в игре аномалия побежит не так, как надо.
- Время в секциях должно совпадать с временем в других секциях. Т.е если в 7 ключе одной секции у вас 3 секунды, то и в другой секции в 7 ключе должно быть 3 секунды.
- Кол-во ключей в секциях должно быть равным.

Итак, когда у нас все записано, обязательно в конце файла оставлена пустая строка, сохраняем файл и щелкаем на батник "Компиляция". Перед нами появляется файл new_anm.anm, берем его, переименовываем если надо и кидаем в папку с игрой.

3) Непосредственно сам спавн аномалии:

Открываем алл спавн и вставляем туда секцию:


section_name = zone_fireball - наша секция из шага номер 1.
name = zat_fireball_1 - произвольное.
motion_name = camera_effects\new_anom\zat_fireball_1.anm - путь до файла с путями.

По каким координатам аномалия будет заспавнена - не важно. Важно то, на какой локации. Аномалия на Кордоне, не должна иметь место спавна на Свалке. Т.к левел и гейм вертексы не учитываются при движении, а только координаты, получим белиберду.

Скорее всего из-за особенностей ТЧ, бегающие аномалии, не бегают или бегают очень медленно если рядом нет ГГ. Скорей всего связано с экономией ресурсов движка. На видео ниже это хорошо видно, при приближении аномалия бегает как надо, при отдалении почти замирает.

Ссылка на anm2ltx - http://rghost.ru/48664004

Ну и в заключение, помимо видео выше, где демонстрировались восстановленные аномалии из ЗП, другое видео с бегающей электрой на Затоне:

Уважение: 477
Награды: 88
Облучение: 0%
Сообщение #2
volazar, Володя привет. Решил создать такую аномалию, но где-то что-то не так. При запаковке выдает лог:

Вроде все сделал как надо... В zones.ltx инклуд конфига аномалии проставил.

Сообщение отредактировал butrikA - Среда, 18.09.2013, 14:48


Уважение: 25
Награды: 2
Облучение: 0%
Сообщение #3
butrikA, привет. Запаковка all.spawn не идет? Т.к у тебя аномалия наследует секцию, которая не прописана в acdc.pl (программа не может ей сопоставить нужный игровой класс), то ошибка и будет.
Открой acdc.pl, найди там например такую строку:
Код
zone_mosquito_bald   => 'se_zone_anom',

И после нее пропиши следующее:
Код
zone_fireball    => 'cse_alife_torrid_zone',

Сохраняй и пакуй.

Уважение: 477
Награды: 88
Облучение: 0%
Сообщение #4
volazar, Володя, нубский вопрос: в какой файл в acdc необходимо прописать? Я прописал в файл sections.ini, все одно таже ошибка. :'(

Уважение: 25
Награды: 2
Облучение: 0%
Сообщение #5
butrikA, прописывать нужно именно в файл acdc.pl. Там ближе к середине массива увидишь кучу строк с прописанным всё и вся, что используется в игре. Прописывай строки как указал Володя, иначе прога тупо не понимает что ты от нее хочешь, ведь у нее "в памяти" нет сочиненных тобой новинок. Только после этого компиляция пройдет. А далее будут ли вылеты или нет - зависит от правильности прописки в файлах игры.



Такой как есть
Уважение: 285
Награды: 48
Сообщение #6
Друзья, привет. Возникло пару вопросов по аномалии:
1. Что это за параметры: frame_start=0 - frame_end=738, на что они влияют и как вычеслить последнее число?
2. По времени k0_time=0.000000 - если увеличивать на полторы секунды, то следующая точка пути k1_time должна быть 1.500000, а следующая за ней - 3.000000, правильно я понимаю?
Моя аномалия двигается нормально, но при переходе с последней точки на первую зависает на время, примерно минуту реального времени, а потом опять в путь. Почему зависает не пойму.

Уважение: 25
Награды: 2
Облучение: 0%
Сообщение #7
Цитата (butrikA)
Что это за параметры: frame_start=0 - frame_end=738, на что они влияют и как вычеслить последнее число?

Пиши стандартные, за что отвечают честно говоря не знаю.

Что то затупил :) Ты про параметры в anm файле? Первое всегда начинается с нуля, второе значение равно кол-ву строк в файле (плюс 1 пустая строка в самом конце, которая также учитывается).

Цитата (butrikA)
то следующая точка пути k1_time должна быть 1.500000, а следующая за ней - 3.000000, правильно я понимаю?

Все верно. Нули можно опустить.

По завису - выложи свой файлик с путями, посмотрим.
ЗЫ: И проверь значения, про которые ты спрашивал в 1 вопросе.

Уважение: 477
Награды: 88
Облучение: 0%
Форум » S.T.A.L.K.E.R. - Моддинг » Разбираем S.T.A.L.K.E.R. » Уроки моддинга » Создание движущихся аномалий в ТЧ
Страница 1 из 11
Поиск: