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

Dennis_Chikin

Жители
  • Число публикаций

    6 272
  • Регистрация

  • Последнее посещение

  • Дней в топе

    33
  • AMKoin

    551 [Подарить AMKoin]

Весь контент пользователя Dennis_Chikin

  1. Кэширование - это не предварительное чтение. Это запоминание прочитанного. Поэтому, многократное программное кэширование не может дать лучший результат, чем однократное - только наоборот. То есть, если движок сам запоминает прочитанное - получаются только лишние операции. То есть, в норме мы делаем так: local ini = ini_file( "наш_конфиг" ) local s1, s2, s3, и еще много строчек if ini:section_exist( sect ) then s1 = ini:line_exist( sect, l1 ) and ini:r_string( sect, l1 ) и еще сколько надо end и имеем нужное количество строк из конфига, то с кэшированием получается для каждой операции вызов соответствующей функции, с передачей параметров, поиск предыдущего результата, и если он не найден - проделываются все те же операции, что в первом варианте. Если строка нам требуется 1 раз - получаем проигрыш в n раз. Если у нас файл с 1000 строк, и каждая из строк нужна по одному разу - вот тут мы и получаем те самые 10 секунд на несчастных 70 килобайтах. Вот если мы бы ЗАРАНЕЕ очень быстро прочитали те 1000 строк, да они еще и требовались бы многократно - да, получим выигрыш в сколько-то раз. Проблема в том, что вот как раз с возможностью предварительной загрузкой в сталкере все плохо. Или я что-то не то делаю, или оно не работает. По крайней мере на 1.0006 Попробуйте кто-нибудь на 1.0004 и дайте лог. Устроит сразу после загрузки. В лагере новичков на Кордоне - вполне. Можно в баре. https://dl.dropbox.com/u/27871782/sound_theme.7z
  2. Во-первых, антивирь при тестах на скорость желательно таки выключать. Он тормозит весьма конкретно. Athlon 64 x2 6100/4/500. То есть, винт - новый, да. И вполне, кстати, может быстрее оригинала, все за счет того же чтения конфигов. Не забываем, что кроме сомнительного "кэширования" в соли таки немало других оптимизаций есть. Гм. Попробую сравнить. Даже интересно стало. Да, повторная загрузка без выхода - это не по тому, что win7, а по тому, что графика кэшируется движком. Звуки и, на самом деле, конфиги - тоже. Именно по этому "скриптовое" кэширование ситуацию не улучшает, а ухудшает. Проблема только в том, что прежде чем что-то закэшировать, движок должен это прочитать. Когда мы побегали по локе, и снова загрузили сэйв той же локи - оно в памяти есть. P.S. Да, а вот с предварительно загрузкой звуков что-то не получается. То есть, оно целых 40 секунд что-то делает, но при входе неписей в онлайн результата не наблюдаю. 8( Если следующий непись читает тот же звук, что запиханы в предыдущих - лага нет. Если новый - лаг.
  3. Там ОЧЕНЬ большие накладные расходы на сами вызовы, плюс на повторные вызовы ini_file() Аналогично жрут "универсальные" cfg_get_* от самих ПЫС. Ну, часть тормозов при загрузке еще за счет повторных переборов, но я только что приводил цифры по чтению конфигов: death_manager - 10 секунд, тайники - 4. И с полминуты - на торговлю бандитскими курточками полутора тысяч цветов. Еще не трогал квесты. Правда, на предзагрузке звуков, если я ее сделаю, мы секунд 15 обратно потеряем. UPD: мда. Был излишне оптимистичен. Не 15, а пол минуты минимум. И это не полная предзагрузка, а только наиболее частые. Надо минимум править конфиг, и хотя-бы уникальным персонажам проставлять sidы/имена. Или по картам звуки растаскивать. Внезапно, очень сильно жрут анекдоты и балалайки.
  4. Ну и при чем здесь iniCaching ? Он непостижимым образом заменяет во всем коде все вызовы getIni*() на :r_*()? У меня сейчас загрузка ВСЯ занимает 20-30 секунд. Было - да, полторы минуты. Saruman, мне ЧУ не интересен от слова совсем, а по тому просто отключен. От того же самого слова. В новой соли - исправили.
  5. Воскурил код вместе с конфигом (бедная моя печень !): Мда, похоже, от принудительного кэширования (только его надо ручками делать - sound_prefetch.script какой-то сомнительный) сильно хуже не будет. Там и так куча всякой ереси подгружается, включая объявленя в баре - простым сталкерам (включая наемников, бандитов, монолитовцев и зомбей). Мда, уж. И, кстати, забавно. Переписал скрипт, и добавил вывод в лог времени загрузки. Эффект любопытный крайне: она стала быстрее ! Именно от вывода в лог. P.S. А по-хорошему, надо разгребать \config\misc\script_sound.ltx
  6. А можно подробности "элементарной проверки" по поводу скриптового кэширования чтения конфигов ? Кто поверял, как проверял, каковы результаты ? Аналогично со звуком. Как именно было сделано кэширование всей этой окуджавы, и когда успели ? 3 гигабайта 32-бит приложения тоже удивительны весьма.
  7. Я сейчас посмотрел, ЧТО предлагается кэшировать. Там, блин, одних нейтралов 3 вида, и каждому тщательно напихано по 18 мег одного и того же Окуджавы. И это то, что на глаза попалось. А всего, повторюсь, там гиг. Это "чистой" соли. Тут надо явно не кэшировать, а разгребать эти авгиевы конющни. То есть, буквально, добровольцам просматривать этот гигабайт, искать, где эта окуджава упоминатся, и все сносить. Ну или хотя-бы менять на что-то вменяемое. Не забывая про обработку в СДК. P.S. ага, карфаген...деландум эс. =============== Денис, привет. Если у тебя сложности в редактировании постов, переносе и прочем, пиши что тебе надо в сносках, поправлю. Или в скайпе меня найдёшь всегда. BFG 2BFG: Проблема в том, что даже набирать сообщения в отдельном редакторе - так оно ж их даже вставлять через раз дает. 8( upd: Прошу прощения за флуд, конечно, но... Попробовал вкурить код... В смысле, этой самой загрузки звуков. Мда, с моей печенью мне столько не выпить. А вот той травы я однозначно хочу.
  8. Разбираюсь. Если вспомнить десменеджер, который аж 10 секунд читал 70 килобайт конфигов, и только что переписанный treasure_manager (4 секунды), то... Посмотрим. А закэшировать тот гигабайт всякого, прости господи, шансона - боюсь, оно просто не запустится. P.S. ceterum censeo, ну, все поняли...
  9. Нашел источник "нетекстурных" лагов. xr_motivator (esc_factory_bandit4):net_spawn, alive xr_motivator 1: 218.31875610352 xr_motivator 2: 10.894275665283 xr_motivator 3: 1025343.3125 xr_motivator 4: 4695.3569335938 xr_motivator total: 1030485.3125 ну и т.д. для каждого непися. где 3 - xr_sound.load_sound() ну и далее по тексту: sound_theme.load_sound() Му-а-ха-ха. Это, кстати, уже со "звуковым" фиксом. P.S. ceterum censeo, противоестественный недоинтеллект должен быть отключен.
  10. "или просто там не будет аномалий?" Не будет. Там и еще много где. По собакам - спасибо, достаточно. Мда, таки действительно целый месяц угробил зря. 8( P.S. ceterum censeo, противоестественный интеллект должен быть отключен.
  11. Первый файлик, чтобы воевали. А второй - чтобы Круглов в аномалии не лез. Впрочем, "собаки перебегают через дорогу и нападают на ГГ отбегают довольно далеко" - уже похоже на положительный ответ. То есть, похоже, что я месяц искал у себя ошибку, которая не моя. 8/ P.S. Ceterum censeo, автоцитаты - must die ! И этот редактор с противоестественным псевдоинтеллектом - туда же.
  12. А, да. В 14.08 собаки только с крысами.. Ну, config\creatures\game_relations.ltx поправить: https://dl.dropbox.com/u/27871782/game_relations.ltx P.S. Да, для всех, кто каждый второй пост в теме про квесты посвящает Круглову, влетающему в аномалии, выкладываю в очередной, 18546 раз: https://dl.dropbox.com/u/27871782/%D0%9A%D1%80%D1%83%D0%B3%D0%BB%D0%BE%D0%B2.7z
  13. Требуется помощь зала. Возможно я таки действительно ищу черную кошку в темной комнате при наличии отсутствия упомянутой кошки. Когда начинаем НИ и идем на ферму - то справа видим пенек (не тот, который на холме, а который ближе к ферме, какбы в низинке), за ним - труп сталкера, а дальше имеет место быть разборка собак с тушканами. Тушканов там вроде штук 6, а собак - точно 8. Требуется: хоть на чистой соли, хоть ООП, загрузиться со стартового сэйва, прогуляться вместе со звездочетом до домика Лиса (можно слазить на чердак за патронами), взять водку на ферме, а потом дойти до упомянутого пенька и смотреть разборку собак с тушканами, пока не кончатся либо тушканы, либо собаки (на пеньке они не достают, и вообще не реагируют). Повторить, сколько не надоест. Интересует: ВСЕГДА ли с тушканами разбираются все 8 собак, или какие-то сбегают, и могут достаточно долго где-то шляться. Одного положительного ответа будет достаточно. Вариант "30 раз повторил, и все 8 собак всегда на месте, ни разу дальше, чем на 30 метров не отбегали" - тоже устроит.
  14. Что-то где-то поломал, и не могу понять: где. Всего 400 кило лапши распутал. Монстры, general lair. В норме у них есть ограничение на удаление от определенного им места. То есть, когда побежал за кем-то или от кого-то - то добежал до определенной границы, и вернулся. Сейчас убегают черт знает куда, и где-то шляются. Точно сидят под гулагом, точно при работах. логика: Где на что можно посмотреть, чтобы понять, что в них может быть не так ?
  15. Dennis_Chikin

    Время редактирования постов

    О, посмотрел сейчас на свой пост. Я ЭТОГО не писал. То есть, часть там мое, а часть - явно от автоцитаты, которую я долго пытался удалить, и, судя по результату - безуспешно. И отредактировать, понятно дело, нельзя. Так и будет это творение противоестественного псевдоинтеллекта форума висеть.
  16. Dennis_Chikin

    Время редактирования постов

    В идеале - вообще, группа, у нее есть темы, и в этих темах у группы все права. А возможно ли отдельным пользователям дать возможность редактировать свои посты без ограничений? Сделать подгруппу какую-нибудь типа "Спец". Тогда можно было бы решить проблему, описанную malandrinus. Спецы ведь не всегда "жители", они могут быть и новичками форума, так что по этому показателю делать градацию не получится. А так была бы схема: 30 минут для всех, неограниченное время для спецов и администрации. Только подозреваю, что здесь та же беда, что и с просто кураторами: кому-то надо делать. (А у нас при просто ответе нормально текст не редактируется. Вот только что пытался цитату убрать - облом. Нужно какой-то шаманский совершенно набор действий произвести.)
  17. Да, именно такой. Или реальный пример:dialogs.script: На правильное использование похоже вотэто: class "motivator_binder" ( object_binder ) ... :bind_object(this.motivator_binder(npc)) В смысле ? global name space ? функция в одном модуле, зовем из другого ?
  18. Интересно, насколько неправильно я понимаю, что имея функцию вида function inc_a( a ) return a+1 end обращаться к ней как this.inc_a( a ) - бессмысленно чуть более, чем полностью ?
  19. Dennis_Chikin

    Разговоры о модах

    Ну, раз вдруг здесь решили поговорить за солянку, тоже пару копеек добавлю.
  20. Вот интересно, в bind_physic_object.script в generic_physics_binder:update() все нормально с установкой коллбэков ? В оригинале имеется в виду. Действительно есть такие events, после которых их надо заново выставлять в каждом апдейте ? А сбрасывать их при дестрое не надо ?
  21. Разобрался. Фокус был в том, что :init() дергается сразу же, как объект создан. Или непосредственно прямо в alife():create(), или при возвращении из нее. Соответственно, obj:spawn_ini() возвращало первый раз пустую строку, и только потом уже можно записать customdata.
  22. В amk есть функция amk_mod.spawn_unspawned_respawners() Она крейтит эти самые респавнеры, и пишет им параметры в customdata. Затем они подхватываются, и записанное волшебным образом можно считать из obj:spawn_ini(). Но как сделан этот фокус ? И, кстати, в чем смысл функции se_respawn.reinit_spawner_params(), если на момент ее вызова фокус еще не произошел ?
  23. Вот так проверка на потерю предмета делается: Если был used, перед этим отрабатывет соответствующий коллбэк. Соответственно, over 99% "таймеров" идут нафиг, со всеми проверками/сортировками таблиц в апдейте и всеми упаковками/распаковками таблиц в строку и обратно.
  24. А вот теперь - хит сезона: для начала просто убрал кэширование. Упомянутые 55к ltx прочитались практически мгновенно. Меньше, чем за секунду. Итого, ВСЯ "синхронизация" - 12 секунд. (10 - "кэширование объектов", 10 - "загрузка", 10 - "графика".) Повторная загрузка на той же локе (без выхода из игры) - 10 секунд - "загрузка" + 10 - "синхронизация". Спрашивается, и нафига мы все 4 года мучились ?
×
×
  • Создать...