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

Редактирование движка X-Ray


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

А кто-нибудь пытался пофиксить 2 проблемы в игре:

- Неписи открывают огонь по цель ДО того как прицелились (т.е пули летят в землю, в забор и т.п пока они не развернутся куда надо).

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

 

Возможно можно пофиксить некоторые из этих проблем скриптовыми коллбеками?

 

Заранее спасибо.

Ссылка на комментарий

 

 

Вот меня лично подводит память, я не всегда делаю комментарии, а потом не помню, где и что правил
Для таких случаев и созданы VCS :)
  • Полезно 1
Ссылка на комментарий

 

 

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

Сторож дядя Вася, в овощном магазине, действительно может сходить за угол, посмотреть - а шо и где грюкнуло... А в Зоне, где за углом может оказаться топтун или кровосос или дядя в "Скате" с Валом в руках - вполне нормально, что неписи от каждого шороха переходят в денжер и с оружием на изготовку ищут возможную опасность.

А насчет более тонкой настройки денжеров - обсуждалось уже не раз в ковырялках, и надо просто не лениться прописывать разумные параметры в зависимости от назначенных неписям работ и сюжетной необходимости.

  • Согласен 3
Ссылка на комментарий

Всем привет. Подскажите хотел убрать полноэкранные заставки из ОГСЕ, пропатчил последними правками https://github.com/KD87/xray-extensions, Включил для работы нужные правки для ОГСЕ но игра вылетает с ошибкой

##called from function 'void __cdecl xrDebug::my_fatal(const char *,int,const char *,const char *,...)' in file '_main.cpp' on line 65

--stack traceback:
[string "log1('--' .. debug.traceback())"]:1: in main chunk
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
E:\stalker\sources\trunk\xr_3da\xrRender_R1\Blender_default_aref.cpp
CBlender_default_aref::Compile
Not enought textures for shader, base tex: %s
prop\prop_bed1a
! Cannot find saved game ~~~ called from cpp
* Log file has been saved successfully!
stack trace:


[error][ 183] : Невозможно создать файл, так как он уже существует.


 

 

 Чем еще отличается exe. от ОГСЕ  от пропатченного? Как убрать полноэкранные заставки, что бы работал ОГСЕ?

Изменено пользователем MADMAX666
  • Согласен 2
Ссылка на комментарий

Чего-то я сильно пригрузился. В чем секрет такой адовой тормознутости CUIInventoryCellItem? Драг-дроп конечно тоже далек от идеала, но вот этот класс жрет в ~8 раз больше драг-дропа. Можно конечно заняться оптимизацией того кода, который его использует, но это совершенно неправильно. У меня лист из ~200 итемов грузится ~0.4-0.5 секунды, это вообще трындец, этот класс у одного итема съедает ~1.6 миллисекунды, т.е. это около 70% всего времени, хотя там класс как грабли, со временем конечно разберусь, не сложно, но может кто уже знает.

Изменено пользователем Карлан
  • Согласен 1
Ссылка на комментарий

@Карлан, я вообще переношу инв на частично списочную систему как в arma III ). Уже кое-что намечается, хотя работы предстоит ещё много,но могу сказать точно - работает такой инв гораздо быстрее родного, причину вы сами назвали)

 

для тех кому интересно как работает дрэгдроп на видео - под списком находится невидимая сетка, внутри которой создаётся DragItem и уже дальше взаимодействует с инвентарём). Вообще меня тоже код ячеек сильно напрягает, особенно если очень часто обращаться к этому классу - вылеты в игре обеспечены. Одна из причин - тяжёлый код поиска и заполнения свободных ячеек.

Изменено пользователем mortan
  • Спасибо 1
  • Нравится 3
Ссылка на комментарий

@mortan, спасибо, занятно, но я все-же сторонник ванильного ТЧ интерфейса, поэтому бултыхаюсь в том, что есть, все безусловно нужно делать с чистого листа, но это очень много работы, я просто не вывезу по времени. При твоем подходе сеточная система в принципе не нужна, я бы просто к списку привинтил драг-дроп, но честно говоря сама идея мне не нравится, не люблю вот эти все листания взад-вперед, селекции и прочее. Поэтому и в торговле и везде я стараюсь рисовать полный список, хотя это и сильно бьет по оптимизации, а уже в самом интерфейсе, если требуется, давать игроку понять почему сейчас он с этим предметом не может взаимодействовать так как ему захотелось.

 

Если поговорить немного о моих опытах, то я делал на листах интерфейсы, там разумеется никаких тормозов нет, на формирование листа у меня уходило ~20 микросекунд, это в десятки тысяч раз(!) меньше, чем тот интерфейс, который сейчас у меня есть. То есть нужно как-то это все пересматривать, если не в сторону полной, то хотя бы в сторону частичной оптимизации, но мы с тобой на разных платформах, поэтому я просто исходя из ванильного дизайна не могу реализовать все в одном окне (тут я не о конфиге, конфиги как-раз можно свести, но не нужно, там и так не разобраться). А на ЗП и на ЧН там все в принципе проще, и если в ТЧ приходится каждое окно верстать с нуля, то в том же ЗП ты просто берешь их шаблон с этим драг-дропом актора и туда навешиваешь еще всего что нужно и готово. Причем что в ТЧ еще приходится по всяким дочерним окнам изворачиваться, что в ЧН/ЗП сделано обычным хинтом. В ТЧ я тоже написал нормальный хинт, и в принципе если заняться, то можно часть дизайна просто "захинтовать", но мне эта идея не очень нравится, вот эти вот все мерзкие всплывающие описания и т.п. Я веду к тому, что UI кодер на ТЧ, сохраняя оригинальный стиль, тратит времени столько же сколько на ЗП, но помноженное на количество окон + разработка каждого дочернего окна по своему стилю, на самом деле это ужасно, на ЗП работа с интерфейсами идет куда быстрее.

  • Спасибо 1
Ссылка на комментарий

@mortan, да нет, на самом деле тоже есть свои плюсы, состоят они в том, что ты любое окно можешь брать и работать с ним как тебе нужно не боясь что ты там случайно поломаешь другие, тут меньше времени уходит на тестирование например, но в целом это конечно так себе плюсы. К тому же в ТЧ нет явного разграничения текстурного и текстового статика, возможно с ООП точки зрения это грамотный подход, но он порою весьма не удобен, но структуризация конечно повышается, сам я уже тоже стараюсь разграничивать, так как текстовый статик я утащил из ЗП, если это можно так назвать, так как в ТЧ он тоже собственно говоря есть, а текстурный просто не трогал, и вот здесь получился некий гибрид, когда ты пишешь так как тебе удобно, и выстраиваешь уже себе ассоциацию из типов или из названий. На самом деле конечно тонна нюансов вплоть до рендеринга, каждый это сразу увидит, кто заинтересуется интерфейсами.

Ссылка на комментарий

@Карлан, с самим CUIInventoryCellItem ничего странного нету. а вот в CUICellItem есть подозрение, что очень много времени занимает построение списка чилдов (PushChild/PopChild). У Вас 200 итемов разных, или группируются по каким либо признакам? Ну и зависит, с какого окна это все вызвали - как по мне, просто CUIInventoryWnd работает быстрее, чем CUITradeWnd.

Ссылка на комментарий

правил ли кто-нибудь логику НПС на уровне движка? Я тут колупаю CoC и взял пока что только одну правку для функции поиска противника, интересно было бы как-нибудь доработать всё это без новых скриптов ( ai пак штука интересная, но хочется всё же поменьше скриптов держать в геймдате). Из своих правок была только попытка образумить нпс не кидать гранаты себе под ноги)

  • Нравится 1
Ссылка на комментарий

Можно ли в уже правленый xrGame.dll мода Call of Chernobyl включить правку pda_fix (из X-Ray Extensions, посылка инфопоршня при смене закладок в ПДА) и как это сделать?

Ссылка на комментарий

в инвентаре, если убрать безлимит, при превышении количества вещей получаем вылет и с логом "no place in the room". 

есть в принципе возможность исправить момент вылета таким образом, чтобы при переполнении лишняя вещь просто возвращалась на место и выводилась надпись "места больше нет".

Ссылка на комментарий

@Серый Волк, Если вам интересно моё мнение, то я не вижу смысла делать ограничение на кол-во ячеек - лучше доработать ограничение на переносимый объём. Я с этими ячейками бился несколько месяцев - путных и интересных вариантов для игрока я не вижу. Если делать через движок то запрашиваемое вами делается в пару строк, но работать оно будет только при открытии инвентаря.

Ссылка на комментарий

Можно ли в уже правленый xrGame.dll мода Call of Chernobyl включить правку pda_fix (из X-Ray Extensions, 

посылка инфопоршня при смене закладок в ПДА) и как это сделать?

Call of Chernobyl собирается из достаточно сильно изменных исходников на основе OpenXray.

Вроде как репозиторий с исходниками вот: https://github.com/revolucas/X-Ray_CallOfChernobyl

 

Правку сделать можно, но придется самому найти точку врезки.

Гораздо проще добавить посылку инфопоршня в исходники.

 

А скорее всего можно попросить добавить прямо автора - это одна строка в исходниках.

Изменено пользователем abramcumner
Ссылка на комментарий
то я не вижу смысла делать ограничение на кол-во ячеек - лучше доработать ограничение на переносимый объём

как по мне, то количество ячеек в инвентаре и есть его физический объём.

 

 

но работать оно будет только при открытии инвентаря.

а можно по другому!?

видимо я в обоих случаях чего-то не понимаю, поясните, пожалуйста.

Изменено пользователем Серый Волк
Ссылка на комментарий

@Серый Волк, игра заполняет сетку только при открытии инва, т.е. игра будет знать об лишних итемах только в этом случае. Я от такого решения отказался. Если хотите более совершенную систему,то вам придётся писать новый механизм учёта свободных ячеек, а это не тривиальная задача. У меня была мысля сделать фейковую сетку прямо на худе и заполнять её предметами. Но тут возникает сразу несколько проблем - нужно постоянно апдейтить её наполнение, а это нехило так отжирает ресурсы. Хотя тут есть положительный момент - если сетка невидимая но активна, то ресурсов на её наполнение тратится меньше. Если сможете сделать такое - поделитесь результатами)

Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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