Dennis_Chikin 3 658 Опубликовано 24 Апреля 2014 Поделиться Опубликовано 24 Апреля 2014 (изменено) "Что у нее внутри, и как это сделать лучше". Для тех, кто уже разбирается в скриптах, конфигах, текстурах и "других страшных словах" ©, и имеет желание и время действительно делать их лучше.См. подробности в первом посте.Тема НЕ является ни столом заказов, ни службой техподдержки, ни справочным бюро. Изменено 28 Апреля 2014 пользователем Dennis_Chikin 2 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
dimos 10 Опубликовано 27 Августа 2010 Поделиться Опубликовано 27 Августа 2010 (изменено) Arhara, в прошлой допе не было вызова функции удаления Черномора-зомби при его лечении, хотя сама функция удаления была в архара_диалог. Щас ее (function dell_chernomor_zombi()) тоже не видать. Вызов потерялся или может я чего перемудрил? MAV, чтобы зомби говорили, у них в профиле должен быть прописан диалог. Так как ПЫС не предполагали подобное, то у них в профиле диалоги отсутствуют. Shadowman, да так и есть. Был бы процессор помощнее, проблем было бы поменьше. А насчет переполнения стека: только сам решил зайти на Болото - сразу вылеты типа out of memory с кучей самых разных аргументов. Упирается движок уже в эти 2 гига, без ключа -noprefetch уже не обойтись, а на болоте - строго статика. Изменено 30 Августа 2010 пользователем dimos Цензура ограничивает творчество © by me Ссылка на комментарий
Shadowman 939 Опубликовано 30 Августа 2010 Поделиться Опубликовано 30 Августа 2010 (изменено) Закомментировал в бинд_сталкер.скрипт арбалет и сразу появились часы и биорадар. Ковырнуть бы этот арбалет на предмет меньшего потребления ресурсов. Может у кого есть какие соображения? dimos, Можно, я выскажусь? Поскольку чуть позже выяснилось, что и некоторые другие действия по разгрузке проца приводят к такому же благотворному результату, лично мне кажется, что дело не в конкретном участке кода/функции/скрипте, а в критической нагрузке на процессор, которую удаётся снять любым из перепробованных тобой способов. Кстати, почти уверен, что переполнение стека и остальные чудеса у Romale имеют похожее объяснение, разве что в его случае перегруз не проца, а игровой памяти (помните про ограничение 2Гб/приложение?). И, например, возможно если в уборщике к примеру прописать более жесткие параметры уборки и систематические вылеты с разными логами (заметьте, с разными!) сами собой пройдут. Могу, конечно, ошибаться, но стоит попробовать что-нибудь удалить, не относящееся непосредственно к описанным проблемам - например, каких-нибудь крыс на других локах - чисто для эксперимента. dimos, прикол еще в том, что ключ -noprefetch работает только до 1.0005. Ну и кстати, на патче 1.0005 проблем с памятью поменьше. В прошлую допу прошел болота на полной динамике без единого вылета (2 дня, по нескольку часов играл, "семерка", патч 1.0006). В этой допе не дошел еще до болота... Monnoroch, я знаю. И даже подозреваю, почему именно на новом АТП, к примеру, жалобы на вылеты с переполнением стека чаще всего. Как я понимаю, там опять же из-за лавинообразной обработки колбеков разного типа (хит, смерть) система или железо не справляется, стек вовремя не освобождается и это приводит к его переполнению. Но сути высказывания это не меняет - игра захлёбывается и результатом является вылет с матюком на стек. Изменено 31 Августа 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Monnoroch 6 Опубликовано 31 Августа 2010 Поделиться Опубликовано 31 Августа 2010 (изменено) Shadowman, немного не так,память и стек - вещи разные. стек он нехило меньше. вылет по память и вылет по стеку имеют разные логи. Изменено 31 Августа 2010 пользователем Monnoroch Ссылка на комментарий
Monnoroch 6 Опубликовано 4 Сентября 2010 Поделиться Опубликовано 4 Сентября 2010 Shadowman, Есть еще любители писать функции с кучей аргументов.С кодом-то интерпритатор разберется,а вот аргументы никак иначе кроме как через стек не передашь - а оптимизировать тоже не получится (ха-ха,оптимизировать место в стеке,забавно...),посему много аргументов у функций это из рук вон плохо. Ссылка на комментарий
RayTwitty 506 Опубликовано 5 Сентября 2010 Поделиться Опубликовано 5 Сентября 2010 (изменено) Привет всем. Я тут по вопросу из Autosave мода. Его, как я знаю, доработали для Солянки Shadowman и sapsan. Все работает, все гуд, но есть одна мелочь: Сейвы которые ниже - это чистый Автосейв мод. А которые выше пошли, где сохранение с именем "admi.-xxx" это ваша доработанная версия. В чистой сохранялось "admin - xxx" - это намного лучше и красивей (аля ЗП). И вообщем что хотел спросить: можно ли в доработанной версии вернуть "вид сохранения" как в чистом Автосейве? Вот, чтобы не искали скрипт, даю здесь: function printf(str,...) if not str then str = "((string is nil))" end get_console():execute("load ~#I#:"..string.format(str,...)) end -- -- Sprawdzenie, czy jest gra i czy aktor jest їywy -- function isGameOn() if level.present() and db.actor ~= nil and db.actor:alive() then return true end return false end -- -- Zapis stanu gry (save) -- function savegame(save_name) if save_name == nil then printf("Trying to save a game without any name!") return false end if isGameOn() then local save_param = user_name().."-"..save_name save_param = string.gsub(save_param,"[><|?*/\\:\"%b/n]",".") save_param = string.gsub(save_param,"[%%][c][\[][%a%d%p%s]*[\]]","") save_param = string.gsub(save_param,"Задание выполнено","Выполнено ") if string.len(save_param)>64 then save_param = string.sub(save_param,1,64) end get_console():execute("save "..save_param) end end Смысл переделки был в том, чтобы чуть сократить длину строки и убрать шаблон цвета из строки. Однако как я сейчас уже вижу - в шаблонах есть косяк. Предлагаю такой вариант: local save_param = user_name().."-"..save_name -- если сильно хочется как в ЗП, то вместо "-" пишем " - " save_param = string.gsub(save_param,"%%c\[[%w%s%p]*\]","") -- убираем цвет save_param = string.gsub(save_param,"[^%w _-]+",".") -- последовательность всего, что не буквоцифра и не пробел, и не подчеркивание, и не дефис - заменить на одну точку save_param = string.gsub(save_param,"Задание выполнено","Выполнено ") -- сокращение (можно аналогично добавить "нформаци", "нф-" и другие) О результатах прошу отписаться в это же сообщение. sapsan Изменено 6 Сентября 2010 пользователем sapsan Ссылка на комментарий
sapsan 336 Опубликовано 8 Сентября 2010 Поделиться Опубликовано 8 Сентября 2010 Наработки-разработки: Можно что-угодно куда-угодно спавнить с задержкой во времени. В скрипт new_spawn.script добвлена функция function doSpawn(tblSpawn), которая принимает на вход таблицу такого формата: local tbl = { ["spawn_item"] = {--спавним объекты на карту {sect="ros_killer_respawn_4",pos={-259.963623,-0.000217974,22.387314},lv=6507,gv=1395}, -- спавним обычным способом {sect="ros_killer_respawn_4",pos={0,2,0}}, -- спавним в 2-х метрах над ГГ }, ["spawn_item_in_inv"] = {-- спавним объекты в инвентарь {sect="gold_art", npc_id=0}, -- спавним в рюкзаке у ГГ }, ["spawn_ammo_in_inv"] = {-- спавним патроны в инвентарь {sect="ammo_12x70_buck", npc_id=0, number=20}, -- спавним патроны в рюкзаке у ГГ } } Эту функцию можно вызывать как напрямую, так и посредством таймера (пример из new_spawn.script): function bar_james() local tbl = { ["spawn_item"] = {--спавним объекты на карту {sect="ros_killer_respawn_4",pos={-259.963623,-0.000217974,22.387314},lv=6507,gv=1395}, {sect="ros_killer_respawn_4",pos={-257.169403,-0.000773012,5.0113105},lv=7481,gv=1395}, {sect="ros_killer_respawn_4",pos={-263.326446,-0.00097110867,11.14619922},lv=5620,gv=1395}, {sect="ros_killer_respawn_4",pos={-248.740127,-0.00184855,6.270340919},lv=10240,gv=1396}, } } amk.start_timer("spawn_wait", 2, tbl) end который реализован в amk.script так: func_by_string["spawn_wait"] = function (params_string) local tbl = unpack_array_from_string(params_string) new_spawn.doSpawn(tbl) end Реализация в скрипте sol_sound.script. Разные варианты запуска озвучки: play_sound_on_actor([[characters_voice\human_03\stalker\talk\leave\leave_5]], 0, true, nil) 1. имя звука; 2. таймаут (время задержки); 3. прерывать ли предыдущий звук в своей очереди; 4. имя очереди (если == nil, то никакой очереди по своей сути нет) Подходит для СМС и подобных, которые звучат в голове у ГГ. play_sound_on_actor_shift([[characters_voice\human_03\stalker\talk\leave\leave_5]], 0, true, nil, 1, 1, 0) То же самое, но со здвигом относительно ГГ. Сдвиг статичный и не привязак к взгляду ГГ (не справился я с этой задачей). play_sound_on_npc_by_name([[characters_voice\human_03\stalker\talk\dialog\dialog_1]], 0, true, nil, "esc_zvezdochet") Воспроизведение от непися или просто объекта. Непись определяется по точному имени. Звук следует за неписем. "Правильную" привязку звука к объекту "не осилил". Параметры аналогичны первому варианту + в конце имя непися или объекта. play_sound_on_npc_by_sid([[characters_voice\human_03\stalker\talk\leave\leave_5]], 0, true, nil, 32) --Кузнецов на Кордоне Аналогично предыдущему, но объект находится по его story_id. Можно воспроизводить звук с наложением на предыдущий задавая в третьем параметре false. Значение true прервёт проигрывание звуков как без очереди, так и внутри очереди определённой четвёртым параметром. Для постановки звуков в очередь нужно запускать озвучки (можно разнотипные) с одним и тем же именем очереди, например "SMS". Для запуска другой очереди просто запускается озвучка с другим именем очереди. Это может быть использовано для оформления диалогов или смс звуковыми спецэффектами. Есть возможность полной остановки и очистки определённой очереди с помощью функции queue_clear("SMS"), так и полного прерывания и очистки всех очередей вместе взятых - queue_clear_all(). Уже сейчас используются в диалогах: Из dialogs_arhara.xml <phrase id="1"> <text>zvezdochet_talk_1</text> <action>sol_sound.zvezdochet_talk_1</action> <next>2</next> </phrase> Из sol_sound.script function zvezdochet_talk_1() play_sound_on_npc_by_name([[characters_voice\human_03\stalker\talk\dialog\dialog_1]], 0, true, nil, "esc_zvezdochet") -- или вариант с постановкой в очередь и непрерыванием предыдущего звука в этой очереди: --play_sound_on_npc_by_name([[characters_voice\human_03\stalker\talk\dialog\dialog_1]], 0, false, "dialog", "esc_zvezdochet") -- тут же можно запустить и другие звуки для атмосферы или по сути сюжета, можно прервать очередь, можно прервать другую очередь ну и вообще вытворять что-угодно... -- желательно всё же ограничится только работой со звуком, а другое вызывать из диалога другим екшеном... end В диалогах можно практиковать прерывание очереди диалога, а можно ставить всю озвучку диалога в очередь для 100% прослушивания игроком Для запуска СМС вместо -- Звуковое сопровождение local snd_obj = xr_sound.get_safe_sound_object([[characters_voice\human_03\stalker\talk\leave\leave_66]]) snd_obj:play_no_feedback(db.actor, sound_object.s2d, 0, vector(), 1.0) делать так: -- Звуковое сопровождение sol_sound.play_sound_on_actor([[characters_voice\human_03\stalker\talk\leave\leave_66]], 0, false, "sms") -- имя звука, задержка, не прерывать звучание очереди, имя очереди благодаря чему не будет накладывания звука и сокращается количество кода. Для работы очередей и следования звука за объектом/неписем в апдейт актора нужно добавить: if sol_sound then sol_sound.update() end Код как мог сделал минимально нагружающим систему как в случае активной озвучки, так и в случае простоя. Поэтому и для того, чтобы звук плавно следовал за объектом ставить под временнУю задержку этот вызов не нужно. Например захочет автор запустить у непися монолог и при этом будет его вместе с ГГ катать по локации на авто/вертолёте/ковре-самолёте, а из-за задержек в апдейтере актора звук будет пространственно отставать от объекта/непися. Если кто-то "правильно" переделает "звук от объекта/непися" так, что звук будет движком перемещаться за объектом-хозяином, тогда часть кода из апдейтера будет убрана (останется только работа с очередями) и тогда только можно будет ставить вызов sol_sound.update() под небольшую задержку (не больше, чем пол секунды). Реализация в amk.script. Теперь есть возможность изменять группировку непися с отсрочкой. Пример из new_dialog.script: function ghange_set(npc) amk.start_timer("change_npc_community", 2, {npc:id(), "killer"}) end Вопросы, критику, предложения, доработки - в личку. Ответы и изменения по сути буду размещать здесь же. Все скрипты вместе. Актуально для Соли с патчем от 03.09 и готово к употреблению. Ссылка на комментарий
dimos 10 Опубликовано 9 Сентября 2010 Поделиться Опубликовано 9 Сентября 2010 (изменено) Ковырялся с Бинд_сталкер.скрипт на предмет выявления главного пожирателя ресурсов и увидел, что один только биорадар съедает до 25% fps! По совету Shadowman`a поставил задержку в четверть секунды в апдейт биорадара и, о чудо! fps вернулся к уровню, когда биорадар вообще не используется, при этом без потери функциональности самого биорадара. amk.oau_watchdog=182 if xrs_ai then xrs_ai.actor_update(delta) end if rx_ai then rx_ai.actor_update() end amk.oau_watchdog=181 -- end of addition --добавленное выделено жирным шрифтом if upd_time5 == nil then upd_time5 = time + 250 elseif upd_time5 < time then upd_time5 = time + 250 if biodetector then biodetector.update() end end amk.oau_watchdog=180 Shadowman, ты прав, остальное там кушает ресурсы крайне незначительно. Просто я хотел сделать акцент именно на биорадар. Сколько бы не жрал сейчас, он жрёт меньше, чем до переделки Но попробуй покрутиться на месте - не будет ли заметных рывков на биорадаре ? Если будут - поробуй уменьшать те 250 мс задержки... sapsan Пробовал на 150 мс, тормозов не заметил. А на динамике да, fps примерно одинаков, что с биорадаром, что без него... Изменено 9 Сентября 2010 пользователем dimos Цензура ограничивает творчество © by me Ссылка на комментарий
Shadowman 939 Опубликовано 9 Сентября 2010 Поделиться Опубликовано 9 Сентября 2010 (изменено) ...один только биорадар съедает до 25% fps! dimos, давай уже будем честными до конца: проверили ведь практически всё подозрительное на "пожирание" ресурсов, ведь так? И ничего кроме биорадара вообще фактически твой проц не кушало. Я к тому, что оборот "один только" можно воспринять так, что фпс можно и в два раза поднять, если ещё чего отключить, а ведь это не так V92, ну да, сработал дроп на всё, что было в тайнике. Прикольно Сейв мой у тебя есть (чтоб работал поставь читспавнер из моего поста в народном творчестве) а что интересно такго в читспавнере, что может не давать сейвы грузить? Разве только спавнил квестовиков или еще кого-то из spawn_sections_v92? sapsan про то, как это было написано и работало ранее, лучше не выражаться даже Лично моё мнение - что именно твоя работа по переписке всех напряжных для игры моментов дала возможность Архаре добавить пару-тройку вкусностей. dimos, мы ещё забыли с тобой сказать самое интересное про методику тестирования: чтобы увидеть, что мы с процом делаем, мы же еще и видяху на статику сбрасывыали А то оно конечно да, 25% фпс (85 - 115, кажется?) на статике, но это когда когда видяха влёт справляется. А так - вкатай фул динамику, и что в скриптах ни крути - один фиг, простите Я аж чуть со стула не упал, когда на статике на Phenom II X4 955 (3,2GHz, 4 ядра 6Mb cache) посмотрел фпс: 120-400 (средний - 200-250 ). Это на последней Соли. Там, конечно, только 2 ядра задействованы, но еще учесть, что какие-то процессы подгрызают остальные 2... Изменено 9 Сентября 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
mangust 1 Опубликовано 10 Сентября 2010 Поделиться Опубликовано 10 Сентября 2010 (изменено) Поиграл в Солянку. Новые характеристики артефактов не понравились. Мало того, думаю они ни кому нравятся - но, однозначно, предложи свои - они тоже никому не понравятся. Возникла идея - а почему бы не включить рандом? То есть при начале игры вычисляется свойства артефактов и модификатов, записываем actor-у (с полкилобайта нужно будет - выдюжит?). Справка меняется (просто нет конкретных цифр). Узнать свойства до получения арта нельзя. Если идея интересна, то (думаю) могу реализовать. Можно два варианта - "дикий" - получаем, что попало (почти), и "привычный" - возьмем медузу - радиоактивность от 1-5 и пулестойкость тоже от 1 до 5, ну и т.д. ЗЫ Технической работы очень много нужно будет. На каждый арт нужны глобальные переменные (вид артефакта - уже есть?) и по три (четыре?) бита на свойство, т. е. 2-3 байта на каждый. Все прописать куда-надо. Кажется это несложно, единственное (пока) мне не ясно, как будут показываться (ну и узнаваться) свойства артефакта в инвентаре. Ну и всяко что-нибудь еще вылезет... ЗЫЫ Я (думаю) мог бы легко реализовать таблицу артефакты-свойства, инициализацию, кодирование, запросы (и проч. - чисто программные вещи), а вот внутренности игры я не очень хорошо знаю. Я в этом не ГУРУ, но может не так страшен черт, как его малюют. Возможно не нужно ничего писать актору в нетпакет. Ведь все свойства объектов пишутся в их собственные пакеты. Для работы со свойствами пакетов разных типов объектов есть готовые функции (read_stalker_params(), read_monster_params(), write_stalker_params(), write_monster_params(), get_anomaly_data(), set_anomaly_data(), get_lc_data(), set_lc_data(), get_breakable_data(), set_breakable_data(), get_spawner_data(), set_spawner_data(), get_restrictor_data(), set_restrictor_data(), get_trader_data(), set_trader_data(), get_invbox_data(), set_invbox_data(), get_ammo_params(), set_ammo_data(), get_destroyable_data(), set_destroyable_data(), get_weapon_data(), set_weapon_data()), но вот для артефактов что-то не нашел... Хотя, как минимум, есть возможность сохранять и получать свои данные из какого-либо объекта с помощью gen_custom_data() parse_custom_data(). Однако это будет просто как довесок. Стоит поискать формат данных для артефактов. Возможно есть готовые функции в запакованных скриптах. А может их можно выудить из описания объектов-артефактов... sapsan --- А интересная идея, все-таки. Ну, понял уже, что о конкретике я рано начал говорить. Shadowman, По поводу размножения готовых секций в конфигах - я скрипт вполне могу написать, который хоть по мегабайту будет ltx-ки лепить - и прописывать все куда надо (понятно, что тут надо покумекать - но, вот-это, мне, кажется несложно - сложнее будет разумно продумать разброс фиктивных характеристик, и, естественно, разумно ограничить их число). По нет-пакетам предметов еще не ковырялся, но обязательно посмотрю. --- Shadowman, По поводу поста из Прохождения... Про ID я упомянул, что встречал примеры, как для нахождения чего-либо использовался цикл по всем возможным ID с проверкой - а тот ли это объект, и видел ответы, что по-другому нельзя. Сильно заметного увеличения времени синхронизации при переходах не заметил, но честно скажу не обращал внимания. Попробую с секундомером посидеть. А при превращении трупа непися в зомби после выброса из него все вываливается. Раньше часто на Радаре замечал, ну и сейчас разок на базе Свободы (проснулся после первого разговора с Гавром от выброса - ох, там и много трупов свободовцев оказалось ). Изменено 17 Сентября 2010 пользователем mangust Ссылка на комментарий
Shadowman 939 Опубликовано 13 Сентября 2010 Поделиться Опубликовано 13 Сентября 2010 (изменено) все свойства объектов пишутся в их собственные пакеты... но вот для артефактов что-то не нашел... mangust, sapsan, парни, я конечно тоже не гуру, но, имхо, без ковыряния движка - не получится. Конфиги объектов берутся из *.ltx и никак иначе. Новые свойства обжу присвоить можно, но не те, которые зашиты движком. Например, этим способом можно попробовать добавить арту свойство уменьшения веса рюкзака, к примеру... "Рэндомность" свойств (фиктивную) можно реализовать только размножением готовых секций в конфигах (как у броников с разными апдейтами). Но, сами понимаете, работёнка будет нехилая, даже очень. И дело не в написании самих секций, а в последующей правке всего, где что-то прописано по артам. ЗЫ: Kolmogor, насколько мне известно, занимался подобным вопросом, но вот о результатах я не осведомлён... Я имею ввиду не добавление несвойственный свойств (по типу облегчения веса чем-либо, кроме костюмов), а изменение существующих. Ведь с помощью тех функций есть возможность изменять свойства объектов, для которых они предназначены. При чем от торговцев до разрушаемых объектов. Просто среди тех функций не нашел я ни одной явно предназначенной для артефактов... Думаю, что нужно смотреть кастом поле в пакете артефактов.... sapsan Хмм... не знаю - не пробовал ковырять нетпакеты предметов - может быть... Я как раз и имел в виду, что именно "свойственные свойства" (те, что читаются из конфигов) - врядли удастся перекрыть скриптами. Если же ты прав - это очень круто, между прочим. sapsan, того, что ты понаписал - нет даже в луа_хелп. Откуда инфа вообще (просмотрел весь скриптовый набор в Сталкере ТЧ)? Оно есть в амк.скрипт. Есть и в других (некоторые очевидно копировали чтобы не зависеть от АМК-мода и сделать свой для чистого ТЧ), но не знаю кто что откуда брал и кто есть изначальными авторами. sapsan set_* функций, которые ты привёл, не нашел нигде. Мы вообще про какой АМК говорим? Про 1.4.1? наверное ты искал как "set_anomaly_data()", а не просто "set_anomaly_data" sapsan Изменено 15 Сентября 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Shadowman 939 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 (изменено) Shadowman, а кстати вопрос как специалисту, по поводу "зачем вы их подбираете". Ну, с давних пор, не знаю, прав, нет, но стараюсь (не особо, но так, между делом), освобождаться от "мусора" на локах - таскал "вечные" трупы в аномалии (сейчас, конечно, не сильно потаскаешь), разбивал все ящики подряд, мутантов всех выносил (ну там, где как на АС - накапливались). Ну наивно думал, что все имеют свой ID и всякие for i=0, 65535 (или там от 1?) - скачут по ним тоже. Подбирал все брошенное оружие. Ну сейчас оружие убирается. Но а вот эти бинты, артефакты, выпавшая из зомби мелочь - или это действительно мелочь, на что не надо обращать внимание, или это все тоже убирается? Кроме того раздражает количество всякой эээ... ерунды, которые с течением времени накапливают сталкеры - "найденные" артефакты и собранная с трупов та же мелочь. Так и хочется их грохнуть, а все принадлежащее им "аннигилировать" (где угодно, хоть в ящике, хоть у торговца), но воздерживаюсь, конечно. Это от смутного подозрения, что такое долгое время синхронизации зависит и от этого. Или это реально мизерные доли по сравнению с тем, что дают новые локи. Или это вообще бред? mangust, давай по порядку. Ид=0 - у ГГ, 65535 - земля-матушка 1) Ид действительно находятся в пределах от 0 до 65535 и назначаются всем объектам в игре, либо явно из аллспавн, либо движком автоматически. 2) Если игра не может назначить ид автоматом из-за переполнения (все ид использованы) - следует вылет "not enough ID's". 3) Если делается попытка заспавнить объект с ид, который в игре уже есть - следует вылет "Specified story object is already in the Story registry!". Оружие, трупы - убираются уборщиком. Те бинты - Сяка и его ф-ция сама их ставит и убирает, нечего их трогать. Артефакты, не подобранные ГГ и неписями убираются при выбросе. Все, что есть ненужного запросто можно продать торговцам или аннигилировать, как описано выше. Что такое "выпавшая из зомби мелочь" и почему это выделено тобой отдельно - я не понял. До оббирания живых сталкеров мы пока не дошли - это правда (если не считать утилизатор броников, написанный Сапсаном в уборщик и успешно работающий). Надо будет - дойдём до остального, не проблема. Долгое время синхронизации - плата за оптимизацию быстродействия в реалтайме. FPS ведь важнее, правда? А лишняя сотня объектов игре - это капля в море, так что не тратьте свое игровое время на ерунду. Если у вас горы трупов на дороге у неписей и вы не хотите, чтобы те их обчистили и ходили с набитыми всякой ерундой рюкзаками - обберите их сами и продайте все лишнее. Если же та же гора трупов где-то в безлюдном месте - не парьтесь, уборщик втихаря эту операцию проделает за вас. Например, если вынести "под ноль" ту же базу вояк на агропроме, и нет желания возиться подбирать лут - можете спокойно вернуться на свалку. Гляньте потом в журнал на сообщения уборщика - и всё будет ясно. Если хотите, чтобы в вашей игре был порядок и все быстро работало - оперативно утилизируйте все ненужное, держите в нычках только необходимое и не лазьте шаловливыми ручками в файлы игры, и всё будет чики-поки mangust, И еще по поводу синхронизации - не замечал, что время синхронизации только при первом старте и загрузке сейва существенно длиннее, чем раньше, а последующие переходы между локами - уже побыстрее? Изменено 17 Сентября 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
sapsan 336 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 Shadowman, может спавн и уборку тех бинтов от Сяка убрать. Зачем они ? Ссылка на комментарий
Shadowman 939 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 (изменено) sapsan, скажу честно: без понятия. Я как-то мельком на это натыкался - не вникал, зачем. Гдето в скриптах есть ф-ция sak.add_tail() - вот там эта штука зарыта крайт, не должны лежать. Я не горячился. По крайней мере, у меня - так, как я написал (на последней допе). Последняя рука по правкам этого - не моя... Изменено 17 Сентября 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Arhara 32 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 (изменено) Shadowman, это несколько примитивный скриптовый запрет на спавн артов на соответствующих в табле локах путём спавна бинтов (как предмета - видно не было более подходящей модельки тогда) - типа невидимки с последующим перебором (поиском таковых) на локах, а при их отсутствии - спавне. этот перебор и есть лишний... запрет можно сделать наоборот - заспавнив раз и навсегда на локах, запрещённых для спавна чего-либо. Из-за этой функции приходится тупо дописывать спавн этих бинтов на новые локи, иначе - вылет. Изменено 17 Сентября 2010 пользователем Arhara Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
Dennis_Chikin 3 658 Опубликовано 18 Сентября 2010 Поделиться Опубликовано 18 Сентября 2010 (изменено) Shadowman, ящики действительно дают подтормаживание, особенно на новых локах. Я выкладывал логи, где видно: почему так. Аналогично - трупы, пока не убраны. Кроме того, избыток хлама = лишние, ненужные операции как в amk_offline_alife, так в wather_act. Как и неписи-коллекционеры. Впрочем, по хламу и коллекционерам скоро уже все будет. Upd: ящики - да, все, что можно разбить. Возможно (не проверял) - вообще все перемещаемое. Трупы - штук 5 на локацю - погоды не делают, а уборщик вроде справляется. Вот когда они оставались и копились, скажем, на тех же на Агро/Янтаре, и туда же набегали живые - было уже заметно. Вообще суть засады примерно такая: потестили локу - вроде все хорошо - оставили возможность появления на ней свежего мяса, пока уборщик не почистил ранее настрелянных тушек - у кого-то внезапно начались странности типа тормозов/вылетов. Или, скажем, сделать квест с отстрелом пары десятков каких-нибудь крыс, а после смерти последней добавить в онлайн еще десяток чего-нибудь живого из расчета на то, что тушки ресурсов больше не жрут - это тоже будет плохой идеей. Изменено 19 Сентября 2010 пользователем Dennis_Chikin Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Shadowman 939 Опубликовано 18 Сентября 2010 Поделиться Опубликовано 18 Сентября 2010 (изменено) примитивный скриптовый запрет на спавн артов Arhara, странный какой-то способ... надо будет посмотреть, как это по-человечески реализовать. Dennis_Chikin, про трупы разговора вроде не было... к тому же, не забывай, что есть таблица исключений: кого не убирать (неправильно только одно - это значит не убирать никогда). По сути, вечно-трупиков не так уж и много... Да и с кого тогда тайники брать? Только распитием водки тогда. Вечно-трупики, по идее, можно убирать после каких-либо событий (получения поршней, например). Но это если кто-то возьмётся за исследование - кто у нас в исключениях по уборке, зачем мы их оставляем и когда их можно безболезненно убирать. Соответствующий код, который позволит пользоваться таблицей исключений вида "секция" -> "поршень" (вместо существующей "секция") написать несложно. А ящики - это какие? Деревянные, те, что ножичком можно разбить? Изменено 18 Сентября 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
deadmoroz 0 Опубликовано 20 Сентября 2010 Поделиться Опубликовано 20 Сентября 2010 (изменено) В последнее время участились жалобы на вылеты из-за текстур,которые не может обработать Direct3D. Возможной (хотя и не единственной) причиной таких вылетов является то, что создатели многочисленных модов, вохдящих в солянку не сильно заморачиваются с соблюдением требований движка на параметры текстур. Например для текстур оружия и бампов к ним правильным является формат DXT5 с мип-мапами, а для прицельных сеток DXT5 без мип-мапов. Если заглянуть в текстуры оружия в солянке, то можно увидеть поразительное разнообразие форматов. Узнать правильный формат можно, посмотрев аналогичные текстуры в оригинальных ресурсах игры. Размеры текстур также частенько не соответствуют стандарту для файлов DDS. (Длина сторон текстуры в пикселах должна быть степенью числа 2). Просьба к создателям солянки обращать внимание на подобные "мелочи". P.S. Фотошоп поддерживает пакетную обработку файлов. Изменено 20 Сентября 2010 пользователем deadmoroz Ссылка на комментарий
Shadowman 939 Опубликовано 20 Сентября 2010 Поделиться Опубликовано 20 Сентября 2010 deadmoroz, кроме оружейных, есть ведь еще и другие текстуры... Вобщем, «Огласите, пожалуйста, весь список» © Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
deadmoroz 0 Опубликовано 20 Сентября 2010 Поделиться Опубликовано 20 Сентября 2010 (изменено) В общих чертах: если текстура рассматривается всегда в масштабе 1:1 (меню, худ), то мип-мапы не нужны, если используется для "обтягивания" модели в игре - то нужны. По моим наблюдениям, особенно нервно движок реагирует на текстуры в формате 32bit-A8R8G8B8. Думаю, что все были бы рады помощи в этом деле. Либо прямой, либо инструкции sapsan Я уже работаю в этом направлении. Но есть вопрос, на который скорее всего сможет ответить malandrinus: Поскольку фотошоп всё равно не позволяет сохранять DDS, если стороны текстуры не степень двойки, то как грамотно доработать текстуры нестандартного размера ? (у всех оригинальных текстур стороны стандартные) 1 Отмасштабировать до стандартного (если квадратная) 2 Нарастить чёрным до сандартного. И где располагать изображение - в центре или в углу 3 Допустимо ли растягивать/сжимать изображение (искажая его) Перезалито by Shadowman содержит папки act и death_mod. Ещё текстурки Зеркало Папки 1, artifact, cod4, intro, map, ui, water, zimovie. Изменено 24 Сентября 2010 пользователем deadmoroz Ссылка на комментарий
Malandrinus 615 Опубликовано 21 Сентября 2010 Поделиться Опубликовано 21 Сентября 2010 deadmoroz, особенно нервно движок реагирует на текстуры в формате 32bit-A8R8G8B8 непакованные текстуры - это жестоко. Неудивительно, что начинает лагать и глючить - системе попросту не хватает памяти. Вообще, ни в движке ни в DirectX нет запрета на текстуры со стороной, не равной степени двойки. Это просто оптимальный размер для обработки. Нет также жёсткой привязки к формату DXT5. Это опять же просто наиболее приемлемый формат для большинства случаев. Разницы с DXT3 почти никакой нет. Иногда можно сократить размер текстур, используя DXT1. В этом случае слой прозрачности будет однобитный, т.е. просто маска. Вполне кстати подходит для большинства текстур худа. При этом двукратная выгода по размеру. Навести порядок с мипмапами надо однозначно. Для текстур худа мипмапы - просто ненужная трата памяти и диска. Отсутствие их-же в текстурах для "обшкуривания" объектов приведёт к диким тормозам с одной стороны, и к довольно мерзенькой отрисовке удалённых объектов с другой. Такая рябь появляется и как будто переливаться начинает. Помнится, было такое дело в солянке для ЧН. Народ жаловался на дикие тормоза. При этом владельцы топовых мегакарточек ни на что не жаловались =) Вопрос решился полной перепаковкой всего набора текстур. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Рекомендуемые сообщения