Перейти к контенту
Zander_driver

OGSE: КБ разработчиков

Рекомендуемые сообщения

"Конструкторское бюро" OGSE.
Все о платформе, разработке, использовании материалов Old Good Stalker Evolution, а также всяческие предложения по дальнейшему развитию.

 

Исходники ogse.dll: https://yadi.sk/d/smv9hMa3gqGf5


Собирать только VS 2005 или VS 2008. В противном случае не взлетит.
Вроде бы внешних зависимостей никаких, необходимые файлы уже включены в проект.

 

Создаете файл с именем level.puddles в папке с нужной локацией. Открываете файл в текстовом редакторе и вносите туда записи вида:



[south_blockpost]
center = -84.61,-34.95,-347.90
max_depth = 0.5
radius = 30

[south_blockpost] - имя. Никакой роли не играет, служит лишь для ориентирования. Должно быть уникальным в пределах одного файла.
center - координаты центра лужи на локации
max_depth - максимальная глубина лужи. Выбирается таким, чтобы актор в самом низком присяде не смог в нее "нырнуть" с головой.
radius - размер лужи.
 
Определение координат для луж несколько заморочено. Связано это с тем, что не в любом месте можно поставить лужу - она может быть лишь в локальном углублении. Для выявления таких углублений предлагаю следующий вариант (именно им пользовался я). Декомпилируете локацию, загружаете в сдк. Удаляете ВСЕ объекты, кроме террейна, далее работаете только с ним. В свойствах террейна увеличиваете его вертикальную координату так, чтобы координатная сетка в сдк была полностью под ним. Затем понемногу "опускайте" террейн обратно. В тех местах, где будет появляться координатная сетка, и будут находиться локальные углубления. Киньте там калаш (или другой объект), узнаете координаты. Для большей заметности помогает сделать сетку "погуще".
Другой способ предложил Deathdoor. Сделайте очень большую плоскость в майке, обтяните заметной текстурой. Потом вставьте ее на локацию в LE под террейн, ну и двигайте потом вверх. Принцип аналогичен вышеописанному - там, где будет проступать плоскость, там локальное углубление.

 

При реализации этих эффектов довольно быстро стало понятно, что далеко не каждый источник света с ними выглядит хорошо. Потому была внедрена система пообъектной настройки фларов и объемного света. Для каждого источника можно включать или выключать эти эффекты отдельно двумя способами:
1) В all.spawn. Найдите секцию лампы, возьмите оттуда light_flags. Объемный свет включается путем выставления в light_flags флага 0x40, флары - флага 0х80. Выключаются эффекты снятием соответствующих флагов. Модифицируете флаг, собираете спавн, начинаете новую игру, наблюдаете появившиеся эффекты. Можно новую игру и не начинать, тогда перепишите нет-пакет лампы скриптом в игре. Для новичков в hex-исчислении: открываете виндовый калькулятор, переключаете в программистский режим, выбираете режим Hex. Выставление флагов производится функцией Or, снятие - функцией Xor.
2) В СДК. Поскольку расставление эффектов является больше дизайнерской задачей, сделал небольшую правку СДК: https://yadi.sk/d/3ZujqzlMgqJ6p. С ней просто запускаете LE, в опциях спавн-объекта лампы появятся флажки Enable Flare и Volumetric.

 

Прежде всего, понадобится утилитка, изготавливающая объемный туман, понимаемый OGSE-модом: https://yadi.sk/d/NXAUhXucgqJfP
Далее:
1) Запилите в 3d редакторе модель тумана и экспортируйте ее в obj. Вот простенькая модель, если кому лень запускать майку: https://yadi.sk/d/jvrU3XDjdSRvw
2) Создайте папку meshes в папке с fvolume_maker;
3) Скиньте модельку туда;
4) Запустите fvolume_maker. Параметры для батника:
-config <string> файл с конфигом объемов. Если не указано - будет fvm_config.ltx
-source <string> файл, куда сохраняем готовые объемы. Если не указано - будет level.fvolumes
-append <true|false> экспериментальная опция, позволяет не переписывать, а дополнять существующий файл *.fvolumes
Про файл конфигов. Он содержит записи вида:
[test]
position = 0.267,2.688, 91.776
rotation = 0.0,0.0,0.0
scale = 1.0,1.0,1.0
 
Все очевидно. Имя секции - имя вашей модельки. Position, rotation - позиция тумана на локации и поворот относительно осей.
Scale - растяжение модельки тумана по осям.
 
5) После окончания работы программы получится файл level.fvolumes. Нужно запихать его в папку с локацией. Для каждой локации такой файл нужен отдельный.
6) Правите конфиг туманов. Это файл config/environment/fog_volumes.ltx. 
Он содержит записи вида:
[test]
color = 1.0,1.0,1.0,1.0
max_density = 0.5
Тут еще очевиднее, чем раньше. Color - цвет тумана, max_density - плотность тумана. 
1 - ничего не видно через 1 метр, 0,5 - ничего не видно через 2 метра, и т.д. Обратная зависимость, короче.
7) Включаете опцию r2_volumetric_fog, загружаете локацию и ищете свой туман на локе.
 
Для удобной настройки есть консольная команда reset_fv. При ее вызове применяются изменения color и max_density.

 

Для создания и редактирования диалогов очень удобно пользоваться редактором диалогов за авторством Mlandrinus: https://yadi.sk/d/qmUaU5VIgqKCh. Кидаете в папку со сталкером, запускаете, дальше все в целом понятно. Конфиги должны быть распакованы.

 

Вид текстур в тепловизоре определяется настройкой material в textures.ltx. Имеется два пресета - для морд/тел/брони и для оружия. По сути, различие между пресетами заключается в том, что оружие при стрельбе греется и это учитывается. Если вы хотите применить для текстуры пресет для тела неписей, поставьте material в пределах 0,6-0,7. В данном случае 0,6 - холодная геометрия, 0,7 - горячая. Для оружия применяйте диапазон 2,85-2,95. Впрочем, в случае оружия лучше ставить всегда минимум (2,85), чтобы нормально выглядел эффект нагрева оружия.
Цвета в тепловизоре также можно настроить. Откройте shaders/r2/ogse_config.h. За цвета отвечают параметры IKV_DEAD_COLOR (цвет холодной геометрии), IKV_LIVE_COLOR (цвет горячей геометрии), IKV_MID3_COLOR, IKV_MID2_COLOR, IKV_MID1_COLOR (промежуточные "опорные" цвета). Все параметры приведены в RGB, подбирайте где-нибудь в пэинте.
Далее можно не читать, если вы не понимаете, для чего в игре параметр material. Если же вы понимаете и негодуете насчет того, что приходится менять ваши любимые настройки текстур ради тепловизора, внимайте.
Интервал значений material для тепловизора также можно изменить. За это отвечают параметры IKV_PRESET_1_MIN, IKV_PRESET_1_MAX (первый пресет) и IKV_PRESET_2_MIN, IKV_PRESET_2_MAX (второй пресет) в том же ogse_config.h. Правило конвертации - в ogse_config.h вносится значение (material + 0.5) / 4. Т.е., если нижний предел для первого пресета у вас 0,8, то IKV_PRESET_1_MIN назначаете равным (0,8+0,5)/4 = 0,325. Выглядит, странно, да, но вот так работает движок. И не без причины.

 

Есть такие консольные команды:
Цветокоррекция: r2_color_grading [0.0, 0.0, 0.0, 0.0]
Известный эффект, "подкрашивает" картинку на экране в выбранный цвет. Поставьте какой-нибудь синий цвет, мигом узнаете ранние Battlefield. Фича мощная, однако, требует некоторых усилий дизайнеров, поскольку цвет должен зависеть от локации и игровой ситуации.
 
Оптимизация отрисовки травы: r2_details_opt [0.0, 0.0, 0.0]
Три параметра, все три - расстояние в игровых метрах. Смысл такой: в игре трава рисуется квадратами 2х2, т.е. в одном "гнезде" четыре куста травы. С этим параметром по достижении первого расстояния перестает рисоваться один куст из четырех, по достижении второго - два куста из четырех, по достижении третьего - три куста из четырех. При тщательной настройке позволяет сберечь фпс без ухудшения картинки.

 

 



  • http://www.amk-team.ru/forum/uploads//ratings/bf.gif × 5
  • http://www.amk-team.ru/forum/uploads//ratings/wrench_orange.png × 3

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Я понимаю что все инструкции будут потом, но можно хотя бы небольшое пояснение по схеме сменных аддонов?  :)

 

 

Да можно конечно. Если систему рассматривать как черный ящик, потроха которого вас не интересуют, то работает так: у нас есть ствол, в его конфиге есть доп. параметры - в какой его превращать при использовании какого именно аддона. Далее есть унаследованные от основного ствола секции его вариантов в разных аддонах, которые отличаются только моделькой, плюс внутри в секциях там указано в какой ствол его превратить при откручивании аддонов. Всё. Для примера откройте конфиг ствола w_m16a1_sk1.ltx, там внутри [wpn_m16a1_sk1] - это как раз ствол-образец, поглядите как он сделан. У него все работает, и секции нужных аддонов все есть, всё что нужно - это тупо модель. На него можно прицепить гранатомет подствольный, можно подствольный дробовик, и пару прицелов - простой и ночной типа. Переключение режимов производится совершенно стандартно. Всё что нужно - это сделать модельки с анимациями. Чтобы упростить сие действо можно сделать просто - можно сделать ОДНУ модель, в которой на доп. костях висят доп. подствольники, прицелы и т.п. Далее для каждого сочетания сделать анимации, в каждой из которых вместо замены модели целиком просто нужные аддоны вешаются на нужные места. И далее в унаследованных аддонных секциях просто нужные анимации подставить. Вот и все дела. И получим ствол, на который можем вешать несколько разных типов аддонов. Если хотите отспавните себе в инвентарь следующие секции:

 

wpn_m16a1_sk1

wpn_addon_sil_556_ar

wpn_addon_scope_susat

wpn_addon_grenade_launcher_m203

fake_wpn_addon_acog

fake_wpn_addon_remington_870mcs

 

И посмотрите что будет. Цеплять вторичные аддоны просто - на нем правой кнопкой и там "прицепить к основному оружию"


  • http://www.amk-team.ru/forum/uploads//ratings/bf.gif × 2
  • http://www.amk-team.ru/forum/uploads//ratings/wrench_orange.png × 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Kondr48   
По движку смотри проект x-ray extensions. Какая документация нужна к шейдерам? Они работают, что ещё надо?

Хм, а как много там есть из графической части?)

189 же последняя вроде ревизия?)

---

И есть ли у кого в планах переносить эту графическую часть на седьмой патч или нету?)

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

, почитай хотя-бы последние страниц десять из закрытой темы на этом форуме, которая в разработках еще была. Никто не собирается переносить графические или еще какие-либо правки из разработчиков огсе на 7 движок, уже тыщу раз говорилось. Не видно что-ли что апдейты каждый день выходят? Попробуй сделать логический вывод ;)

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Чтобы упростить сие действо можно сделать просто - можно сделать ОДНУ модель, в которой на доп. костях висят доп. подствольники, прицелы и т.п. Далее для каждого сочетания сделать анимации, в каждой из которых вместо замены модели целиком просто нужные аддоны вешаются на нужные места.

 

В сталкере у модели же ограничение на 64 кости, из-за этого этот вариант не всегда выйти может. Подствольнику нужно как минимум 3 кости, сам подствольник, "труба" если это М203, и граната, для дробовика тоже 3, плюс прицелы-глушители и кости самого оружия, рук, за 64 может легко перевалить.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Kondr48   

Карлан, вообще то не имелось ввиду сейчас и именно разработчиками ОГСЕ, может найдутся энтузиасты, которые будут переносить эти правки из x-ray extensions, краем уха слышал что они там есть(или будут) но за наводку спасибо) посмотрю)

 

Dyadka_Yar, так все равно схема на подмене секций, ничто не помешает сделать одинаковые модели, которые будут различаться лишь набором аддонов, а там только фантазией/терпением ограничится, либо например, грубо говоря две модели:
с подствольным дробовиком, а костями все прицелы, вторая дробовик - костями все прицелы, либо просто комбинации из простых моделей)

Изменено пользователем Вампир35

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

 

за 64 может легко перевалить

Да ладно! Там запас по костям на все мыслимые аддоны для конкретного ствола. Прицел - это ровно одна дополнительная кость, а чаще всего именно прицелы навешивают табунами. Реально здесь нет никакой проблемы, кроме человеческой. Нам так и не сделал никто такую комбинированную модель. Даже одну для тестов. Даже при том, что я спецом просил не анимировать аддоны, поскольку планировал гасить их не анимациями, а скрыванием костей. Так и не сделал никто и ничего.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@Malandrinus, есть вопрос по поводу одного куска кода:

ogse_car_control.script

local cam_cur_addr = car:get_car_int(nil, 1320)
car:set_memory_float(nil, lim_yaw_min, sum_args(cam_cur_addr, 40))
car:set_memory_float(nil, lim_yaw_max, sum_args(cam_cur_addr, 44))
car:set_memory_float(nil, lim_pitch_min, sum_args(cam_cur_addr, 48))
car:set_memory_float(nil, lim_pitch_max, sum_args(cam_cur_addr, 52))
Собсно, а что делает функция sum_args? Посмотрел в движке - просто суммирует два параметра. Так почему просто не написано cam_cur_addr+40?

 

И вопрос по поводу функции изменения значений в памяти - set_memory_float, в каком объекте эти значения правятся?

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

, функция просто суммирует, как ты верно понял. Нужно это потому, что при арифметических операциях Lua превращает целое число в число с плавающей запятой со всеми вытекающими. Объект - это текущая камера машины. Это отдельный объект, на который идёт указатель из объекта собственно машины.


  • http://www.amk-team.ru/forum/uploads//ratings/bf.gif × 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

при арифметических операциях Lua превращает целое число в число с плавающей запятой со всеми вытекающими

А, вот оно что. Теперь понятно.

 

Объект - это текущая камера машины. Это отдельный объект, на который идёт указатель из объекта собственно машины.

Насколько я понял, речь идет о CCameraBase? Просто желательно иметь точную информацию для FAQ.

 

И ещё небольшой вопрос по поводу глобального метода set_ignore_game_state_update() - он у вас используется в ogse_sleep_mgr.script. Насколько я понял, он связан с апдейтом погоды и применяется в фиксе восстановления солнца. Хотелось бы узнать поподробнее про этот метод, ибо в оригинале (оригинальной игре с библиотеками из ХЕ) наблюдаются проблемы с обновлением погоды между перезагрузкой сейвов, а иногда и зависанием текущего часа. Предполагаю, что как-то связано с этим методом (точнее, с его неприменением).

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
k01jan   
планировал гасить их не анимациями, а скрыванием костей

Это сейчас работает?

 

Нет, только движковые функции сделал, а до скриптовой обвязки дело не дошло, поскольку никто так и не сделал мне модель для тестирования системы. malandrinus

А насколько сложно сделать? Я б попробовал. Хотя бы прицелы - там только кости добавить, анимировать не надо.

P.S.: судя по конфигу эмки схема не Kirag'а а, скорее, Shoker'а? Какие скрипты задействованы?

И как обращаться к изменённому движку?

Изменено пользователем malandrinus

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@k01jan, схему делал Dusty79 много лет назад, а я допиливал с учётом движковых правок, но не меняя общей идеи с конфигами. Модуль ogse_addons.script. Манипуляции с костями худовой модели описаны здесь.


  • http://www.amk-team.ru/forum/uploads//ratings/bf.gif × 1

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Kondr48   

Насколько слышал, если в модель добавлять новые кости, придется все переанимировать)

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

а чего не в вики проекта пишешь?

Слишком много переделывать, хотя, даже не много, а всё. Авторам вики может не понравиться, что я всё ихнее снесу и запихну своё...

 

Так что на счёт вопросов?

Изменено пользователем Shadows

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
k01jan   

придется все переанимировать)

Даже для "неподвижных" (прицел) костей?

Кстати, скелет (оружие, руки) изменён относительно дефолтного. Зачем?

И почему не были добавлены по паре-тройке новых костей для прицелов/магазинов? Раз уж скелет всё равно переделывался?

Изменено пользователем k01jan

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да ладно! Там запас по костям на все мыслимые аддоны для конкретного ствола. Прицел - это ровно одна дополнительная кость, а чаще всего именно прицелы навешивают табунами. Реально здесь нет никакой проблемы, кроме человеческой. Нам так и не сделал никто такую комбинированную модель. Даже одну для тестов. Даже при том, что я спецом просил не анимировать аддоны, поскольку планировал гасить их не анимациями, а скрыванием костей. Так и не сделал никто и ничего.

Хочешь скину? У меня есть такое.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах
Kondr48   

 

k01jan, ну так как там нет неподвижных костей) при перезарядке, например, в пространстве все это смещается)

 

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я наверно что-то не понимаю. Зачем лишние кости? А просто подменой модели не обойтись? Например, ак74. На одной модели псо, на другом же вместо псо - коллиматор. Никаких лишних костей не нужно добавлять.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

@k01jan, не лучше, но делать так намного легче, чем заморачиваться с добавлением костей и переанимированием всей этой новогодней елки.

Поделиться этим сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти

  • Недавно просматривали   0 пользователей

    Ни один зарегистрированный пользователь не просматривает эту страницу.

×