Dennis_Chikin 3 665 Опубликовано 24 Апреля 2014 Поделиться Опубликовано 24 Апреля 2014 (изменено) "Что у нее внутри, и как это сделать лучше". Для тех, кто уже разбирается в скриптах, конфигах, текстурах и "других страшных словах" ©, и имеет желание и время действительно делать их лучше.См. подробности в первом посте.Тема НЕ является ни столом заказов, ни службой техподдержки, ни справочным бюро. Изменено 28 Апреля 2014 пользователем Dennis_Chikin 2 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-840433
dimos 10 Опубликовано 27 Августа 2010 Поделиться Опубликовано 27 Августа 2010 (изменено) Arhara, в прошлой допе не было вызова функции удаления Черномора-зомби при его лечении, хотя сама функция удаления была в архара_диалог. Щас ее (function dell_chernomor_zombi()) тоже не видать. Вызов потерялся или может я чего перемудрил? MAV, чтобы зомби говорили, у них в профиле должен быть прописан диалог. Так как ПЫС не предполагали подобное, то у них в профиле диалоги отсутствуют. Shadowman, да так и есть. Был бы процессор помощнее, проблем было бы поменьше. А насчет переполнения стека: только сам решил зайти на Болото - сразу вылеты типа out of memory с кучей самых разных аргументов. Упирается движок уже в эти 2 гига, без ключа -noprefetch уже не обойтись, а на болоте - строго статика. Изменено 30 Августа 2010 пользователем dimos Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-483795
Shadowman 939 Опубликовано 30 Августа 2010 Поделиться Опубликовано 30 Августа 2010 (изменено) Закомментировал в бинд_сталкер.скрипт арбалет и сразу появились часы и биорадар. Ковырнуть бы этот арбалет на предмет меньшего потребления ресурсов. Может у кого есть какие соображения? dimos, Можно, я выскажусь? Поскольку чуть позже выяснилось, что и некоторые другие действия по разгрузке проца приводят к такому же благотворному результату, лично мне кажется, что дело не в конкретном участке кода/функции/скрипте, а в критической нагрузке на процессор, которую удаётся снять любым из перепробованных тобой способов. Кстати, почти уверен, что переполнение стека и остальные чудеса у Romale имеют похожее объяснение, разве что в его случае перегруз не проца, а игровой памяти (помните про ограничение 2Гб/приложение?). И, например, возможно если в уборщике к примеру прописать более жесткие параметры уборки и систематические вылеты с разными логами (заметьте, с разными!) сами собой пройдут. Могу, конечно, ошибаться, но стоит попробовать что-нибудь удалить, не относящееся непосредственно к описанным проблемам - например, каких-нибудь крыс на других локах - чисто для эксперимента. dimos, прикол еще в том, что ключ -noprefetch работает только до 1.0005. Ну и кстати, на патче 1.0005 проблем с памятью поменьше. В прошлую допу прошел болота на полной динамике без единого вылета (2 дня, по нескольку часов играл, "семерка", патч 1.0006). В этой допе не дошел еще до болота... Monnoroch, я знаю. И даже подозреваю, почему именно на новом АТП, к примеру, жалобы на вылеты с переполнением стека чаще всего. Как я понимаю, там опять же из-за лавинообразной обработки колбеков разного типа (хит, смерть) система или железо не справляется, стек вовремя не освобождается и это приводит к его переполнению. Но сути высказывания это не меняет - игра захлёбывается и результатом является вылет с матюком на стек. Изменено 31 Августа 2010 пользователем Shadowman Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-485532
Monnoroch 6 Опубликовано 31 Августа 2010 Поделиться Опубликовано 31 Августа 2010 (изменено) Shadowman, немного не так,память и стек - вещи разные. стек он нехило меньше. вылет по память и вылет по стеку имеют разные логи. Изменено 31 Августа 2010 пользователем Monnoroch Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-486715
Monnoroch 6 Опубликовано 4 Сентября 2010 Поделиться Опубликовано 4 Сентября 2010 Shadowman, Есть еще любители писать функции с кучей аргументов.С кодом-то интерпритатор разберется,а вот аргументы никак иначе кроме как через стек не передашь - а оптимизировать тоже не получится (ха-ха,оптимизировать место в стеке,забавно...),посему много аргументов у функций это из рук вон плохо. Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-489005
RayTwitty 571 Опубликовано 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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-489411
sapsan 337 Опубликовано 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 и готово к употреблению. Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-490706
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-491546
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-491587
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-492020
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-493552
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-495729
sapsan 337 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 Shadowman, может спавн и уборку тех бинтов от Сяка убрать. Зачем они ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-495764
Shadowman 939 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 (изменено) sapsan, скажу честно: без понятия. Я как-то мельком на это натыкался - не вникал, зачем. Гдето в скриптах есть ф-ция sak.add_tail() - вот там эта штука зарыта крайт, не должны лежать. Я не горячился. По крайней мере, у меня - так, как я написал (на последней допе). Последняя рука по правкам этого - не моя... Изменено 17 Сентября 2010 пользователем Shadowman Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-495815
Arhara 32 Опубликовано 17 Сентября 2010 Поделиться Опубликовано 17 Сентября 2010 (изменено) Shadowman, это несколько примитивный скриптовый запрет на спавн артов на соответствующих в табле локах путём спавна бинтов (как предмета - видно не было более подходящей модельки тогда) - типа невидимки с последующим перебором (поиском таковых) на локах, а при их отсутствии - спавне. этот перебор и есть лишний... запрет можно сделать наоборот - заспавнив раз и навсегда на локах, запрещённых для спавна чего-либо. Из-за этой функции приходится тупо дописывать спавн этих бинтов на новые локи, иначе - вылет. Изменено 17 Сентября 2010 пользователем Arhara Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-496005
Dennis_Chikin 3 665 Опубликовано 18 Сентября 2010 Поделиться Опубликовано 18 Сентября 2010 (изменено) Shadowman, ящики действительно дают подтормаживание, особенно на новых локах. Я выкладывал логи, где видно: почему так. Аналогично - трупы, пока не убраны. Кроме того, избыток хлама = лишние, ненужные операции как в amk_offline_alife, так в wather_act. Как и неписи-коллекционеры. Впрочем, по хламу и коллекционерам скоро уже все будет. Upd: ящики - да, все, что можно разбить. Возможно (не проверял) - вообще все перемещаемое. Трупы - штук 5 на локацю - погоды не делают, а уборщик вроде справляется. Вот когда они оставались и копились, скажем, на тех же на Агро/Янтаре, и туда же набегали живые - было уже заметно. Вообще суть засады примерно такая: потестили локу - вроде все хорошо - оставили возможность появления на ней свежего мяса, пока уборщик не почистил ранее настрелянных тушек - у кого-то внезапно начались странности типа тормозов/вылетов. Или, скажем, сделать квест с отстрелом пары десятков каких-нибудь крыс, а после смерти последней добавить в онлайн еще десяток чего-нибудь живого из расчета на то, что тушки ресурсов больше не жрут - это тоже будет плохой идеей. Изменено 19 Сентября 2010 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-496057
Shadowman 939 Опубликовано 18 Сентября 2010 Поделиться Опубликовано 18 Сентября 2010 (изменено) примитивный скриптовый запрет на спавн артов Arhara, странный какой-то способ... надо будет посмотреть, как это по-человечески реализовать. Dennis_Chikin, про трупы разговора вроде не было... к тому же, не забывай, что есть таблица исключений: кого не убирать (неправильно только одно - это значит не убирать никогда). По сути, вечно-трупиков не так уж и много... Да и с кого тогда тайники брать? Только распитием водки тогда. Вечно-трупики, по идее, можно убирать после каких-либо событий (получения поршней, например). Но это если кто-то возьмётся за исследование - кто у нас в исключениях по уборке, зачем мы их оставляем и когда их можно безболезненно убирать. Соответствующий код, который позволит пользоваться таблицей исключений вида "секция" -> "поршень" (вместо существующей "секция") написать несложно. А ящики - это какие? Деревянные, те, что ножичком можно разбить? Изменено 18 Сентября 2010 пользователем Shadowman Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-496137
deadmoroz 0 Опубликовано 20 Сентября 2010 Поделиться Опубликовано 20 Сентября 2010 (изменено) В последнее время участились жалобы на вылеты из-за текстур,которые не может обработать Direct3D. Возможной (хотя и не единственной) причиной таких вылетов является то, что создатели многочисленных модов, вохдящих в солянку не сильно заморачиваются с соблюдением требований движка на параметры текстур. Например для текстур оружия и бампов к ним правильным является формат DXT5 с мип-мапами, а для прицельных сеток DXT5 без мип-мапов. Если заглянуть в текстуры оружия в солянке, то можно увидеть поразительное разнообразие форматов. Узнать правильный формат можно, посмотрев аналогичные текстуры в оригинальных ресурсах игры. Размеры текстур также частенько не соответствуют стандарту для файлов DDS. (Длина сторон текстуры в пикселах должна быть степенью числа 2). Просьба к создателям солянки обращать внимание на подобные "мелочи". P.S. Фотошоп поддерживает пакетную обработку файлов. Изменено 20 Сентября 2010 пользователем deadmoroz Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-497228
Shadowman 939 Опубликовано 20 Сентября 2010 Поделиться Опубликовано 20 Сентября 2010 deadmoroz, кроме оружейных, есть ведь еще и другие текстуры... Вобщем, «Огласите, пожалуйста, весь список» © Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-497317
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 Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-497337
Malandrinus 615 Опубликовано 21 Сентября 2010 Поделиться Опубликовано 21 Сентября 2010 deadmoroz, особенно нервно движок реагирует на текстуры в формате 32bit-A8R8G8B8 непакованные текстуры - это жестоко. Неудивительно, что начинает лагать и глючить - системе попросту не хватает памяти. Вообще, ни в движке ни в DirectX нет запрета на текстуры со стороной, не равной степени двойки. Это просто оптимальный размер для обработки. Нет также жёсткой привязки к формату DXT5. Это опять же просто наиболее приемлемый формат для большинства случаев. Разницы с DXT3 почти никакой нет. Иногда можно сократить размер текстур, используя DXT1. В этом случае слой прозрачности будет однобитный, т.е. просто маска. Вполне кстати подходит для большинства текстур худа. При этом двукратная выгода по размеру. Навести порядок с мипмапами надо однозначно. Для текстур худа мипмапы - просто ненужная трата памяти и диска. Отсутствие их-же в текстурах для "обшкуривания" объектов приведёт к диким тормозам с одной стороны, и к довольно мерзенькой отрисовке удалённых объектов с другой. Такая рябь появляется и как будто переливаться начинает. Помнится, было такое дело в солянке для ЧН. Народ жаловался на дикие тормоза. При этом владельцы топовых мегакарточек ни на что не жаловались =) Вопрос решился полной перепаковкой всего набора текстур. Ссылка на комментарий https://www.amk-team.ru/forum/topic/8830-narodnaya-2010-razrabotka/page/17/#findComment-497377
Рекомендуемые сообщения