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

[SoC] Ковыряемся в файлах


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

1 час назад, Zander_driver сказал:

Но, что при этом отвалится в логике НПС? Любопытный вопрос, на который у меня нет ответа. Но памятуя о том, что в коде обслуживающем действия НПС, обращения к АИ-сетке встречаются на каждом шагу, подозреваю что будут проблемы.

Тоже не знаю. Убирал флаги перехода в оффлайн у БТР, сбрасывал какие-то флаги у физ. объектов - проблем не было. НПС спавнить в воздухе в голову не приходило.

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

@Zander_driver, у OGSR системные требования, как я понял, выше :(

 

ТЧ 1.0004 даже на старом железе без тормозов работает.

 

@Kirgudu, @Zander_driver, несколько раз перечитал readme_m_netpk, и если правильно понял, то менять статус объекта (или npc) online / offline не нужно?

 

Отталкиваюсь от части:

Цитата
При спавне нового игрового объекта:
	 изменения вступят в силу, как только мы выйдем из текущей скриптовой работы и управление вернется движку - он создаст объект и начнет записывать в него параметры.

...

Для уже существующих объектов в игре:
	 требуется после задания изменений свойст объекта, перевести объект в оффлайн и обратно в онлайн, что модулем делается автоматически.
	 Изменения вступят в силу в момент выхода объекта в онлайн.

 

 

или я не правильно понял эту часть?

  • Сочувствую 1
Ссылка на комментарий
Только что, div сказал:

у OGSR системные требования, как я понял, выше

Конечно выше. Особенно, если речь о последних публичных версиях движка с вырезанными рендерами R2/R3.

Но ведь есть ЩПЫКи постарше и посговорчивее с системой. А адаптация старых и того проще.

Здесь могла быть ваша реклама.

Ссылка на комментарий
7 часов назад, Kirgudu сказал:

Для NPC - скорее se_stalker.script

 

у меня загвоздка еще с примером из readme, с перемещением trader_ventilyator_0000, как указано в test_abstract()

 

Не совсем понял, как применить пункты 1), 2) и 3) из раздела "Как получить возможность менять абстрактную часть пакетов?"

или trader_ventilyator к этому не имеет отношения? Если да, то я совсем не понимаю, почему после вызова test_abstract() не происходит перемещение вентилятора... :to_take_umbrage:

Ссылка на комментарий
1 час назад, div сказал:

у OGSR системные требования, как я понял, выше

А установить-запустить, пробовал?

Они хоть и выше, но на железе десятилетней давности (причем изначально не особо мощном даже 10 лет назад) - все нормально работало, хоть и не на максималках.

  • Согласен 1

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
6 минут назад, Zander_driver сказал:

А установить-запустить, пробовал?

 

пробовал два раза, у меня перезагрузка системного сразу после запуска... Списал это на старое железо, позже, как разберусь с m_netpk, посмотрю по совету @mole venomous другие версии. Сейчас ищу проблему, почему даже тестовый пример из m_netpk у меня не работает...

  • Полезно 1
Ссылка на комментарий
Только что, div сказал:

другие версии

До версии 2.1.386 включительно ещё есть рендеры на выбор. Более новые уже только Dx11 и, соответственно, минимальные требования по железу выше.

  • Нравится 1
  • Полезно 1

Здесь могла быть ваша реклама.

Ссылка на комментарий
Только что, div сказал:

у меня перезагрузка системного сразу после запуска...

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

1) Может быть ЦП в перегрев уходит - проверь температуру проца при запуске, и если это оно, то надо кулер получше и/или термопасту обновить.

2) Может быть под нагрузкой не вывозит блок питания. Если с температурами ЦП все нормально, то это оно, и его надо менять на более хороший.

Кулер и Блок питания денег конечно стоят, но мне кажется это не такой уж страшно дорогой апгрейд, и его можно осилить.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

И ключевое здесь: работало, ровно до тех самых пор (а это было уже давненько), пока разработчиков не понесло в ультимативные красивости.

4 минуты назад, mole venomous сказал:

включительно ещё есть рендеры на выбор

Беда только в том, что в каждом последующем билде, помимо прочего, исправлялись и внутренние ошибки и недоработки движка. И разобрать по diff-ам сейчас что, где и когда правилось - та ещё задачка.
Ох, уж эти адепты ЩПЫКа.

  • Согласен 1
  • Полезно 1
Ссылка на комментарий
1 минуту назад, Купер сказал:

работало, ровно до тех самых пор (а это было уже давненько), пока разработчиков не понесло в ультимативные красивости

Ну, при желании можно же и старый OGSR откопать.

@div а какое железо если не секрет? Мне кажется, OGSR таки должен быть к железу в том числе старому, достаточно демократичен. О таких проблемах на нем первый раз слышу.

ЗЫ. У меня если что, старый OGSR-Original где-то на старом ПК должен валяться... хотя вряд ли это кому-то понадобится.

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver, блок питания с запасом, кулер по тестам тоже держит температуру, скорее всего дело в процессоре, который старенький и еще видеокарты нет, так что отдувается за всех... Планировал обновить сборку, но с ситуацией на железо в предыдущее года желание отпало :(


Скажите, пожалуйста, в чем может быть причина, что после вызова test_abstract(), код которого приведен в readme:

Скрытый текст


function test_abstract()
	--/ Переносим вентилятор из каморки Сидоровича на тумбочку в подвальчике деревни новичков (на Кордоне)
	local sobj = alife():object("trader_ventilyator_0000") --/ находим в игре серверный объект вентилятора
	if sobj then --/ нашли?
		local pk = get_netpk(sobj,0) --/ или m_netpk.net_cse_abstract(sobj)
		if pk:isOk() then
			local vPos = vector():set(-212.8,-22.28,-127.20) --/ координаты 'на тумбочке в подвальчике'
			local vDir = vector():set(0,3.14,0) --/ направление: 'лопастями от стены'
			--/ var-1: установка колбэка с таблицей
			local status = pk:setCallback( { position = vPos, direction = vDir } )
			--[[ --/ var-2: установка колбэка с функцией
			local status = pk:setCallback( function(data)
				data.position  = vPos --/ change property 'position' in 'cse_abstract'
				data.direction = vDir --/ change property 'direction' in 'cse_abstract'
			end )
			--]]
		end
	end
end


 

вентилятор не меняет своего положения?

 

 

Ссылка на комментарий
5 минут назад, Купер сказал:

Ох, уж эти адепты ЩПЫКа.

Движок удобен для отладки ЛЮБЫХ вылетов - с этим спорить невозможно.

  • Согласен 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

Ссылка на комментарий
10 минут назад, div сказал:

Intel Pentium G3250, 4 ГБ DDR

Вообще-то, не так уж и плохо. У меня в команде тестеров были ребята с железом послабее, и у них мод на базе OGSR работал.

Хотя это около минимальной для него планки... но запускаться и работать он должен.

 

По нетпакету к сожалению не подскажу. Я эту версию модуля Артоса уже не использовал. Сидел на более ранних-древних, а потом уже на OGSR пересел.

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

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver возможно, если на чистой системе будет работать... У меня почему ТЧ стабильно работает только с патчем 1.0004, хотя пробовал разные по очереди ставить с переустановкой самой ТЧ...

@Zander_driver, @Kirgudu,

 

2 часа назад, Kirgudu сказал:
5 часов назад, Zander_driver сказал:

Но, что при этом отвалится в логике НПС? Любопытный вопрос, на который у меня нет ответа. Но памятуя о том, что в коде обслуживающем действия НПС, обращения к АИ-сетке встречаются на каждом шагу, подозреваю что будут проблемы.

Тоже не знаю. Убирал флаги перехода в оффлайн у БТР, сбрасывал какие-то флаги у физ. объектов - проблем не было. НПС спавнить в воздухе в голову не приходило.

 

У меня не как :(

В se_stalker.script я дописал: if self.cb_netpk then self.cb_netpk(self, packet) end в нужное место...

 

Скрытый текст
function clear_useful_for_ai(sobj)
  local pk = get_netpk(sobj, 1)				-- [m_netpk] прочитать нетпакет
  local data = pk:get()							-- [m_netpk] вывести данные в таблицу
  data.object_flags = bit_xor(data.object_flags, 8)		-- двоичное сравнение и сброс флага "интерактивно" на 0 (позиция 8 или 2^3 справа налево: …1xxx или …0xxx –> …0xxx)
 
  data.object_flags = bit_or(data.object_flags, 8)			-- то же для поднятия флага при любых исходных значениях
  pk:set(data)									-- [m_netpk] записать данные в нетпакет по измененной таблице
end
 
function test_abstract_npc()
  local sobj = alife():create("esc_unik_npc", vector():set(-218.20, -20.2, -145.63), 35362, 47)
 
  clear_useful_for_ai(sobj)
 
  if sobj then --/ нашли?
    local pk = get_netpk(sobj, 0) --/ или m_netpk.net_cse_abstract(sobj)
    if pk:isOk() then
      local vPos = vector():set(-218.20, -20.2 + 10, -145.63)
      local vDir = vector():set(0, 3.14, 0)
      --/ var-1: установка колбэка с таблицей
      local status = pk:setCallback( { position = vPos, direction = vDir } )
    end
  end
end

 

 

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

@div готовый тестовый пример с вентилятором:
https://disk.yandex.ru/d/T2v4KZ0WfBOp4g
Внутри сейвы у Сидоровича и в подвале деревни после переноса (сделаны на Steam версии ТЧ, поэтому скорее всего не загрузятся), скриншоты для визуального подтверждения.

Для лёгкости понимания вставок упаковал 2 папки: оригинальную из Steam-версии и уже с изменениями. WinMerge или аналог покажет разницу между изменёнными файлами.

Не мудрствуя лукаво, повесил запуск телепорта вентилятора на апдейт актора, через 10 секунд после первого апдейта (чтобы успеть сбросить начальный ролик и увидеть телепорт глазами).
Дальше самостоятельно, код писать больше не буду. Имхо, технических сведений вполне достаточно, может просто не хватило внимательности при реализации.

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

@Kirgudu, @Zander_driver, какие еще есть "подводные камни"? Условие 1) и 2) тоже выполнено, код вроде полный...

P. S. @Kirgudu, спасибо Вам за код, изучаю...

28 минут назад, Kirgudu сказал:

Имхо, технических сведений вполне достаточно, может просто не хватило внимательности при реализации.

 

@Kirgudu, да, Вы правы, я se_physic не додумался правильно отредактировать в тот момент, сейчас поправил, работает...

С npc правда пока код не работает, хотя se_stalker.script соответствует требованиям пунктов 1), 2) и 3)

 

1 час назад, div сказал:
  код (Скрыть)

function clear_useful_for_ai(sobj) local pk = get_netpk(sobj, 1) -- [m_netpk] прочитать нетпакет local data = pk:get() -- [m_netpk] вывести данные в таблицу data.object_flags = bit_xor(data.object_flags, 8) -- двоичное сравнение и сброс флага "интерактивно" на 0 (позиция 8 или 2^3 справа налево: …1xxx или …0xxx –> …0xxx) data.object_flags = bit_or(data.object_flags, 8) -- то же для поднятия флага при любых исходных значениях pk:set(data) -- [m_netpk] записать данные в нетпакет по измененной таблице end function test_abstract_npc() local sobj = alife():create("esc_unik_npc", vector():set(-218.20, -20.2, -145.63), 35362, 47) clear_useful_for_ai(sobj) if sobj then --/ нашли? local pk = get_netpk(sobj, 0) --/ или m_netpk.net_cse_abstract(sobj) if pk:isOk() then local vPos = vector():set(-218.20, -20.2 + 10, -145.63) local vDir = vector():set(0, 3.14, 0) --/ var-1: установка колбэка с таблицей local status = pk:setCallback( { position = vPos, direction = vDir } ) end end end

function clear_useful_for_ai(sobj)
  local pk = get_netpk(sobj, 1)				-- [m_netpk] прочитать нетпакет
  local data = pk:get()							-- [m_netpk] вывести данные в таблицу
  data.object_flags = bit_xor(data.object_flags, 8)		-- двоичное сравнение и сброс флага "интерактивно" на 0 (позиция 8 или 2^3 справа налево: …1xxx или …0xxx –> …0xxx)
 
  data.object_flags = bit_or(data.object_flags, 8)			-- то же для поднятия флага при любых исходных значениях
  pk:set(data)									-- [m_netpk] записать данные в нетпакет по измененной таблице
end
 
function test_abstract_npc()
  local sobj = alife():create("esc_unik_npc", vector():set(-218.20, -20.2, -145.63), 35362, 47)
 
  clear_useful_for_ai(sobj)
 
  if sobj then --/ нашли?
    local pk = get_netpk(sobj, 0) --/ или m_netpk.net_cse_abstract(sobj)
    if pk:isOk() then
      local vPos = vector():set(-218.20, -20.2 + 10, -145.63)
      local vDir = vector():set(0, 3.14, 0)
      --/ var-1: установка колбэка с таблицей
      local status = pk:setCallback( { position = vPos, direction = vDir } )
    end
  end
end

 

 

 

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

@div, ну тут одно из двух: либо дьявол в неучтённых мелочах, либо, как мы раньше писали, для NPC это не сработает.
Изучать и экспериментировать.

Ссылка на комментарий
10 минут назад, div сказал:

я наверно не тот флаг снимаю :facepalm:

data.object_flags = bit_and(data.object_flags, bit_not(128)) -- сброс UsedAI_Locations

Полный список флагов можно посмотреть в том же m_netpk в конце файла, где "_G.object_flags = ..." и далее.

  

10 минут назад, div сказал:

так же должно быть?

Или так, наверное. Только что-то одно.

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

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

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

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

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

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

Войти

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

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

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