На сайт   Количественный респаун - AMK MOD Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Архив - только для чтения
AMK MOD Форум » AMK MOD - Разработка » Популяция в Зоне - spawn » Количественный респаун (Как этого добиться?)
Количественный респаун
Lost_StrangerДата: Среда, 09.05.2007, 16:14 | Сообщение # 1
Группа: Пользователи
Сообщений: 22
Репутация: 0
Статус: Offline
Поставил я недавно amk_mod_0.8.0.1, затем сверху freemob++ и текстурки оружия от Idoe... Играя в таком наборе модов, столкнулся со многочисленным респавном, но не частым, а именно многочисленным. Первый раз это было при первом возвращении с Агропрома на Свалку. Там все бандиты, что группировались у бетонных блоков, двигались сюда со стороны сборища техники (где Бес рулит сталкерами). Респаун был таков, что бандюки выстроились цепочкой, как муравьи. Комп сильно стал тормозить, количество красных меток чужих ПДА на карте достигло 260 штук, но всё же я их всех завалил. Это, конечно, слишком много, но 30-50 было бы достаточно. Та же история повторилась на Армейских складах (респавнились свободовцы), и на Припяти (респавнились монолитовцы)... Весело было так играть, но (!) это было только по одну разу в каждой локации. Отстреляв всех, я там не видел больше ни одного респауна ни одного НПС. Такое ощущение, что закончился лимит их количества. Чем вызван такой эффект я не знаю - анализ файла se_respawn.ltx не показал никаких различий с этим же файлом в других модах. Хотелось бы попросить Вас, модостроители, разъяснить мне что к чему в этом случае, и как регулировать количество НПС при респауне, ну, или на крайний случае сделайте отдельный мод для выбора частоты респауна и количества респаунившивхся НПС. Я не думаю, что они прописывались в all.spawn, потому что не было этого файла в текущей на тот момент папке gamedata.

В других версиях AMK мода этого эффекта не наблюдалось... Это было сделано там специально или случайно? И как можно регулировать это количество респаунищихся?


Истина всегда для нас за горизонтом событий....
 
_And_Дата: Среда, 09.05.2007, 18:14 | Сообщение # 2
Группа: Администраторы
Сообщений: 503
Репутация: 19
Статус: Offline
Мы наоборот сделали уменьшение респавнящихся нпц. Лимита тоже никакого нет. При инсталляции мода вы можете выбирать степень быстроты респавна.

Quote
анализ файла se_respawn.ltx не показал никаких различий с этим же файлом в других модах

Не может быть этого. У нас измененный файл.


AMD Athlon 64 3000+ 1.8Ghz @ 2400, 2GB RAM, NVIDIA 7900gs 512mb
 
Lost_StrangerДата: Четверг, 10.05.2007, 09:29 | Сообщение # 3
Группа: Пользователи
Сообщений: 22
Репутация: 0
Статус: Offline
Вопрос не в степени быстроты, а в количестве НПС. Сражаться с 3-5 НПС не так интересно, как с 30-50, даже на уровне "мастер".... А из животных получаются целые лавины...

По поводу se_respawn.ltx: одно лишь перемещение и изменение аргументов при вызове функции определения временного интервала для респауна серьёзной роли тут не играет. По крайней мере изменения эти незначительны.... Вот если бы менялся экстренный спаун с минимального до максимального количества объектов, то это другое дело, а так как сейчас разницы мало..... К тому же увеличение количества НПС при респауне не идёт без файла xr_gulag.ltx из мода Freemob++....

Вобщем, тут вопрос не столько в конкретном вашем AMK моде, сколько в настройках se_respawn и xr_gulag.ltx......... Вот только эти взаимосвязи для меня смутно представляются, но эффект налицо:

http://img301.imageshack.us/img301/1762/ssalex051007004233l04dahs7.jpg
http://img95.imageshack.us/img95/5053/ssalex051007004915l02gamb2.jpg
http://img95.imageshack.us/img95/3940/ssalex051007005240l01eszy6.jpg
http://img301.imageshack.us/img301/4110/ssalex051007010822l01esra0.jpg


Истина всегда для нас за горизонтом событий....

Сообщение отредактировал Lost_Stranger - Четверг, 10.05.2007, 09:37
 
potapДата: Четверг, 10.05.2007, 10:47 | Сообщение # 4
Группа: Модераторы
Сообщений: 249
Репутация: 4
Статус: Offline
Скорее всего, это последствия freemob++. Хождение неписей строем - точно. Как только появляюсь на территории бара все выстраиваются ко мне в очередь - побазарить, арт прикупить или еще какого барахла biggrin . Со временем вроде как проходит - разбредаются. Количество их - скорее всего тоже последствия правки этого же файла - xr_gulag.script. Автор - Ab@dDon - на АГ форуме писал, что у Sanex более гибкий а-лайф, чем у его freemob++. Я ставил freemob++ (т.к. с ним не надо новой игры начинать) когда на Янтарь шел с Дикой территории. Когда возвращался на Дикую - перед туннелем напоролся человек на 15 урок, а на Дикой все было усеяно трупами урок и наемников, по которым прохаживался патруль наемников.

Win XPprof SP1, P4 3.0 Ghz (Prescott, HT), RAM 2 Gb, GigaByte 6600GT 128 Mb AGP (GV-N66T128D)

Сообщение отредактировал potap - Четверг, 10.05.2007, 10:48
 
Lost_StrangerДата: Четверг, 10.05.2007, 12:00 | Сообщение # 5
Группа: Пользователи
Сообщений: 22
Репутация: 0
Статус: Offline
C модом от Sanex не происходит многочисленного респауна.... Только с FreeMob++.... Почему?

Истина всегда для нас за горизонтом событий....
 
potapДата: Четверг, 10.05.2007, 12:32 | Сообщение # 6
Группа: Модераторы
Сообщений: 249
Репутация: 4
Статус: Offline
Quote (Lost_Stranger)
Почему?

Истина где-то в конфигах или скриптах biggrin


Win XPprof SP1, P4 3.0 Ghz (Prescott, HT), RAM 2 Gb, GigaByte 6600GT 128 Mb AGP (GV-N66T128D)
 
Lost_StrangerДата: Четверг, 10.05.2007, 12:45 | Сообщение # 7
Группа: Пользователи
Сообщений: 22
Репутация: 0
Статус: Offline
Эх, знать бы где рыть...... sad Получается, что мод Sanex'a более гибкий, а возможности респауна другие.... Кто мне объяснить что это за таблица такая, и какие у неё методы?:

local n = table.getn( t )

и что такое за объект self?:

self.min_count = r_num(ini, section_name, "min_count", 0)
self.max_count = r_num(ini, section_name, "max_count", -1)


Истина всегда для нас за горизонтом событий....

Сообщение отредактировал Lost_Stranger - Четверг, 10.05.2007, 12:48
 
Lost_StrangerДата: Четверг, 10.05.2007, 13:38 | Сообщение # 8
Группа: Пользователи
Сообщений: 22
Репутация: 0
Статус: Offline
Вот в том то и дело, что правят они одно, а изменяется и другое тоже... Респавн и гулаги, имхо, связаны, поэтому, меняя гулаги, мы меняем их респавн внутри них... Ну, как иначе объяснить респавн 256(!) свободовцев в точке перед мостом у входа на их базу? (ГГ впервые добрался туда, в отношениях они нейтральны). Вряд ли это просто глюк... По крайне мере, как может перемещение НПС влиять на респаун?

Истина всегда для нас за горизонтом событий....

Сообщение отредактировал Lost_Stranger - Четверг, 10.05.2007, 13:39
 
Lost_StrangerДата: Пятница, 11.05.2007, 09:10 | Сообщение # 9
Группа: Пользователи
Сообщений: 22
Репутация: 0
Статус: Offline
Сравнил я файл xr_gulag.script из мода и оригинальную его версию. Вот результат сравнения:

1)

Было в оригинале:

-- добавить объект под гулаг.
-- при добавлении объекта он помечается как офлайновый.
-- вызывается только из se_smart_terrain:register_npc()
function gulag:addObject( obj_id )
self.Object_begin_job[obj_id] = false
self.Object_didnt_begin_job[obj_id] = true

self:object_setup_offline( obj_id )

self.population = self.population + 1
if not self.npc_info[obj_id].exclusive then
self.population_non_exclusive = self.population_non_exclusive + 1
end
end

Стало в моде:

function gulag:addObject( obj_id )
if self:get_stype(obj_id) ~= modules.stype_stalker or self.npc_info[obj_id].se_obj.m_story_id < 65535 then

self.Object_begin_job[obj_id] = false
self.Object_didnt_begin_job[obj_id] = true

self:object_setup_offline( obj_id )

self.population = self.population + 1
if not self.npc_info[obj_id].exclusive then
self.population_non_exclusive = self.population_non_exclusive + 1
end
end
end

Итого - добавлена проверка:

if self:get_stype(obj_id) ~= modules.stype_stalker or self.npc_info[obj_id].se_obj.m_story_id < 65535 then

2)

Было в оригинале:

-- убирает мёртвых.
-- следит, кто прыгнул в офлайн и не сообщил об этом (случается при переходе с уровня на уровень
-- когда биндер смарттерейна убивается до персонажа).
-- следит, дошёл ли персонаж до места работы.
-- изменяет потери в лагере.
-- вызывается из gulag:update() è smart_terrain.on_death()
function gulag:update_objs()
local obj, cl_obj, online

for obj_id, npc_info in pairs( self.npc_info ) do
cl_obj = level.object_by_id( obj_id )
online = cl_obj ~= nil

if self.Object[obj_id] ~= true and not online then
self:object_setup_offline( obj_id )
end

--'obj = cl_obj or npc_info.se_obj
end
end

Стало в моде:

-- когда биндер смарттерейна убивается до персонажа).
-- следит, дошёл ли персонаж до места работы.
-- изменяет потери в лагере.
-- вызывается из gulag:update() è smart_terrain.on_death()
function gulag:update_objs()
local obj, cl_obj, online

for obj_id, npc_info in pairs( self.npc_info ) do
cl_obj = level.object_by_id( obj_id )
online = cl_obj ~= nil
if self.Object[obj_id] ~= true and not online then
self:object_setup_offline( obj_id )
end
-- Modded $FreedMob
if self.Object[obj_id] ~= nil and self.Object[obj_id] ~= true then
if (self:get_stype(obj_id) == modules.stype_mobile or self:get_stype(obj_id) == modules.stype_stalker) and self.Object[obj_id]:story_id() >= 65535 then
if self.unreged[obj_id] ~= true then
self.smrttrn:unregister_npc(self.npc_info[obj_id].se_obj)
self.unreged[obj_id] = true
end
end
end
--'obj = cl_obj or npc_info.se_obj
end
end

Итого – внутрь цикла добавлена трёхуровневая проверка:

if self.Object[obj_id] ~= nil and self.Object[obj_id] ~= true then
if (self:get_stype(obj_id) == modules.stype_mobile or self:get_stype(obj_id) == modules.stype_stalker) and self.Object[obj_id]:story_id() >= 65535 then
if self.unreged[obj_id] ~= true then
self.smrttrn:unregister_npc(self.npc_info[obj_id].se_obj)
self.unreged[obj_id] = true
end
end
end

Добавлено (10.05.2007, 15:52)
---------------------------------------------
3)

Было в оригинале:

-- настроить логику для объекта, который в онлайне.
-- obj=game_object
function gulag:setup_logic( obj, section )
xr_logic.configure_schemes( obj, self.ltx, self.ltx_name, self:get_stype(obj:id()), section, self.name )
local sect = xr_logic.determine_section_to_activate( obj, self.ltx, section, db.actor )

if utils.get_scheme_by_section( section ) == "nil" then
abort( "[smart_terrain %s] section=%s, don't use section 'nil'!", self:name(), sect )
end

xr_logic.activate_by_section( obj, self.ltx, sect, false )
end

Стало в моде:

-- настроить логику для объекта, который в онлайне.
-- obj=game_object
-- $FreedMob
function gulag:setup_logic( obj, section )
if obj:story_id() < 65535 then
--self:get_stype(obj:id()) ~= modules.stype_mobile or
xr_logic.configure_schemes( obj, self.ltx, self.ltx_name, self:get_stype(obj:id()), section, self.name )
local sect = xr_logic.determine_section_to_activate( obj, self.ltx, section, db.actor )

if utils.get_scheme_by_section( section ) == "nil" then
abort( "[smart_terrain %s] section=%s, don't use section 'nil'!", self:name(), sect )
end

xr_logic.activate_by_section( obj, self.ltx, sect, false )
end
end

Итого – добавлена проверка:

if obj:story_id() < 65535 the

Теперь вопрос: Кто-нибудь мне сможет объяснить эти изменения?

Добавлено (11.05.2007, 09:10)
---------------------------------------------
Ау!!! Ну, хоть кто-нить шарит тут в этом деле или в западло объяснить? angry


Истина всегда для нас за горизонтом событий....
 
ДремлющийДата: Суббота, 12.05.2007, 19:15 | Сообщение # 10
Группа: Пользователи
Сообщений: 42
Репутация: 0
Статус: Offline
Хм, а если в подземном коридоке около Агропрома отреспаунятся 256 контроллеров? wacko smile

— Сначала сделать... И потом не думать.
 
Lost_StrangerДата: Понедельник, 14.05.2007, 08:48 | Сообщение # 11
Группа: Пользователи
Сообщений: 22
Репутация: 0
Статус: Offline
Вот результат моих изысканий на выходных: http://slil.ru/24363533

Данный мод полностью не тестировался и не рекомендуется устанавливать
на слабые компы. Внимание!!!! Необходимо начинать новую игру, иначе вылетов не миновать!....
Данный мод предназначен для любителей FPS и представляет собой превращение игры в этакий
тир по локациям. Сюжетное прохождение игры абсолютно не гарантируется, так как все NPC, кроме
сталкеров-одиночек и торговцев, в игре являются злейшими врагами к ГГ и друг к другу, так что
стрелять будут все во всех. Но главное, ради чего создавался мод - это многократное увеличение
количества монстров и людей в Зоне путём изменения респавна и условий работы гулагов: респавн
теперь постоянный (даже при полном заполнении гулага), а сами гулаги не отключаются.
Тестировать много времени не было, но по Кордону можно сказать следующее: поначалу особых
изменений нет (людей немного и сюжет проходим), но с приближением к переходу на Свалку
становиться "жарко"... А что будет на Свалке - смотри скриншоты....
Маленький совет: дайте игре "настояться"... smile То бишь после выхода впервые от Сидоровича
оставьте ГГ в деревне новичков минут на 15 реального времени в покое, а лучше на полчаса...

Тогда и увидите... smile

2Дремлющий:

Вот славная битва будет!!!!! biggrin


Истина всегда для нас за горизонтом событий....
 
Pa3PyXДата: Вторник, 12.06.2007, 11:44 | Сообщение # 12
Группа: Пользователи
Сообщений: 9
Репутация: 0
Статус: Offline
Насколько я понял, максимальное количество всех типов чуваков в симуляции задаётся переменной sim_max_count в se_respawn.script. AMK меняет, во-первых, это, а во-вторых, функцию se_respawn::execute(), где к заданному пресету времени респавна каждого чувака (указывается, как я понимаю, для каждого чувака отдельно) была добавлена константа.

Поэтому, надо полагать, альтернативный способ изменения времени респавна -- это отредактировать сами пресеты времени респавна. Их три -- seldom, medium, и often (переменная idle_spawn_preset), но все три почему-то выставлены по дефолту в 1 час игрового времени (1 минуту до версии 1.02). Если посмотреть по файлам локаций, то там вроде бы сделано всё логично -- простые враги респятся чаще, крутые -- реже. Поэтому если вместо банального добавления константы ко времени респавна поправить сами пресеты (например, выставить often в 1 день, medium в 2 дня, а seldom в 4), то можно настроить более тонко.

Далее, минимальное количество каждой твари задаётся аттрибутом min_count, опять же, как я понимаю, для каждой локации отдельно. Максимальное для локации -- max_count; о глобальном максимуме уже говорилось, он задан скриптом. Если тварей меньше min_count, то по истечении idle_spawn доспавнивается до минимума; если больше min_count, но меньше max_count, то спавн с вероятностью (как рассчитывается -- не знаю).

Кстати, как там с версией 1.0003 -- бандиты на свалке до сих пор респятся перед носом (или, ещё лучше, прямо за спиной), или это пофиксили наконец-то?

И вообще я не против того чтобы в AMK добавить опцию, чтобы вырубить временной/количественный респавн вообще (оставить только событийный -- idle_spawn == -1). ИМХО зачищенные зоны должны оставаться зачищенными.

Сообщение отредактировал Pa3PyX - Вторник, 12.06.2007, 12:00
 
maroderZДата: Суббота, 30.06.2007, 21:40 | Сообщение # 13
Группа: Пользователи
Сообщений: 79
Репутация: 0
Статус: Offline
Quote (Pa3PyX)
ИМХО зачищенные зоны должны оставаться зачищенными.

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

Сообщение отредактировал maroderZ - Суббота, 30.06.2007, 21:40
 
AMK MOD Форум » AMK MOD - Разработка » Популяция в Зоне - spawn » Количественный респаун (Как этого добиться?)
  • Страница 1 из 1
  • 1
Поиск:

AMK MOD (основан с 28.03.07)
Бесплатный конструктор сайтов - uCoz