Jump to content
Korean Random

Kradar

User
  • Posts

    30
  • Joined

  • Last visited

Posts posted by Kradar

  1. На всякий случай отмечу, что game.fini() не подходит т.к. вызывается по факту выхода из игры, который не произойдет, пока сокеты открыты. Поэтому я и хочу отловить ПОПЫТКУ выхода, а не факт выхода.

  2. В итоге, я заменил простенький загрузчик - res_mods\0.9.3\scripts\client\gui\Scaleform\locale\__init__.py на тот, что тут советовали - res_mods\0.9.3\scripts\client\CameraNode.py. Теперь g_windowsManager импортируется без проблем. Всем огромное спасибо!

     

    Однако, было бы здорово, если бы кто-то смог логично объяснить, в чем была причина всего этого безобразия.

  3.  

     

    Запустил WoT, всё гуд.

    А мой вариант у вас какой результат давал?


     

     

    Лог норм:

    Ваш вариант у меня выдал такое:

    /------------------------------------------------------------------------------------------------------------------------\
       BigWorld Release Client (compiled at 15:29:52 Sep  3 2014) starting on Wed Oct 08 00:58:05 2014
       Content Type: content
    
    Checking ./res_mods/0.9.3: mods found
    [NOTE] (scripts/common/fortified_regions.py, 188): fortified_regions.init()
    [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model
    [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole.model
    [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read fractureEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model
    [WARNING] (scripts/common/DestructiblesCache.py, 478): Failed to read touchdownEffect name in content/Environment/env414_Pole/normal/lod0/env414_Pole10.model
    [NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 2 was selected.
    [NOTE] (scripts/client/post_processing/__init__.py, 267): The quality = 3 was selected.
    PostProcessing.Phases.fini()
    
    \------------------------------------------------------------------------------------------------------------------------/
    
    

    Т.е. нету строчки:

     

     

    Load mods: SampleMod

    Почему?

  4.  

     

    А в чем особая надобность именно в __init__.py это делать?

    Это я ради эксперимента упростил мод до одного файла, содержащего одну строчку. А изначально эта проблема была обнаружена вовсе не в__init__.py. А вообще - почему нет? Результат-то везде одинаков.

  5. Ошибка точно не тут.

    А вот не знаю. Провел эксперимент:

    1. Удалил все моды.
    2. Создал файл res_mods\0.9.3\scripts\client\gui\Scaleform\locale\__init__.py с единственной строчкой:
      from gui.WindowsManager import g_windowsManager
    3. Скомпилировал этот файл и запустил WoT.

    Картина та же. Сами попробуйте.

  6. Товарищи, а что не так с g_windowsManager? Как его правильно импортировать?

     

    Я пытаюсь так:

    from gui.WindowsManager import g_windowsManager
    

    Но мне говорят:

    Traceback (most recent call last):
      File "scripts/client/Account.py", line 10, in <module>
      File "scripts/client/ConnectionManager.py", line 9, in <module>
      File "scripts/client/predefined_hosts.py", line 13, in <module>
      File "scripts/client/gui/shared/__init__.py", line 3, in <module>
      File "scripts/client/gui/shared/server_events/EventsCache.py", line 17, in <module>
      File "scripts/client/gui/shared/server_events/modifiers.py", line 15, in <module>
      File "scripts/client/gui/shared/server_events/formatters.py", line 14, in <module>
      File "C:\Path\To\Project\Core\src\Scaleform\locale\__init__.py", line 6, in <module>
        import gui.qwerty
      File "C:\Path\To\Project\Core\src\qwerty\__init__.py", line 7, in <module>
        from gui.WindowsManager import g_windowsManager
      File "scripts/client/gui/WindowsManager.py", line 5, in <module>
      File "scripts/client/BattleReplay.py", line 21, in <module>
    ImportError: cannot import name connectionManager
    

    Кто нибудь с таким сталкивался? Как решали?

  7. Товарищи, я тут уже писал, что если мод открывает сокеты, но не закрывает их, то при попытке пользователя закрыть клиент (в бою или в ангаре, через меню или по Alt-F4 - не важно) он повиснет в процессах.

     

    Вопрос: по какому событию можно отследить попытку пользователя закрыть клиент, чтобы вовремя закрыть сокет?

  8. Там все трудно =)

     

    Ничего там трудного, кроме вашей жажды добраться до исходников.

     

    Пишите тут, нам тоже интересно)

     

    По порядку:

     

    После выхода из игры WoT частенько подвисает в процессах, не оставляя в логе ничего подозрительного.

     

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

     

    Иногда, WoT падает, опять же не оставляя в логе ничего подозрительного. Обычно, это происходит при выходе из боя в ангар.

     

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

     

    Временами, когда Python вызывает какую-то Flash-функцию в GUI ангара, эта функция вызывается дважды. По крайней мере, я делаю такой вывод из лога, в котором вижу повторяющиеся записи. Как правило, это приводит к вылету из WoT, но иногда игра может выдержать 2-3 таких дублирующихся вызова.

     

    Эта странность пропала сама и я не нашел ей объяснения. 

    • Upvote 2
    • Downvote 1
  9.  

     

    Подмазывается, шпион, тс держи с ним ухо востро )))))

    Да я понял уже. Он сегодня доступ к исходникам у меня выпытывал. :)

     

     

     

    Именно так я столкнулся с висением в ОЗУ когда работал с GUI.Text и BoundingBox, я их создавал но не удалял. Как результат из игры выходишь, а процесс висит. 
     

    У меня, скорее всего, открытый сокет мешается. Позже расскажу.

  10. Кстати...

     

    После выхода из игры WoT частенько подвисает в процессах, не оставляя в логе ничего подозрительного.

    Если в этот момент посмотреть на процесс игры через анализ цепочки ожидания в мониторе ресурсов, то там можно увидеть, что...

    Один или несколько потоков WorldOfTanks.exe ожидают завершение сетевого ввода-вывода.

    А через какое-то время в логе появится строчка:

    [WARNING] (scripts/client/account_helpers/CustomFilesCache.py, 33): Method "close" takes too much time 0.18799996376

    ...и процесс завершит работу.

     

    Что бы это могло значить?

  11.  

     

    DebugUtils.LOG_ERROR

    Это ваш логгер или есть что-то стандартное?

     

     

     

    они тут еще с 2011 года тусуются, думаете за столько лет ничего не знают?

    А, эти... Этим просто лень снисходить и кому-то что-то объяснять.

  12. (траи-кетчи) поставь в AS в каждой функции.

    Пробовал. Не ловится туда ничего. Да и по логам было бы видно, если бы были какие-то необработанные исключения. А тут по логам видно только то, что...

     

    когда Python вызывает какую-то Flash-функцию в GUI ангара, эта функция вызывается дважды. По крайней мере, я делаю такой вывод из лога, в котором вижу повторяющиеся записи.

    И вот это волнует меня больше всего. Я решительно не понимаю как и почему это происходит.

     

    сколько раз вопрос задавал все жмут делится инфой

    Думаю, дело в том, что мало у кого она есть. Чем делиться, когда сам толком нифига не понимаешь?

     

    возожно, не убираются при выходе из боя и/или ангара созданные модом объекты, потом повторно создаются, накапливаются в памяти... А может я бред написал.

    Нет, это вполне логичное предположение. Но как его проверить? 

  13. Товарищи, мне на доработку дали один препаршиво написанный мод. Мод весьма сложен - GUI в ангаре и в бою, Python, взаимодействие с серверной частью... т.е. переписать с нуля - не вариант. Нужно было просто пофиксить болячки. Часть я пофиксил, но я решительно не понимаю, что делать с основной проблемой - общей нестабильностью мода. Проявляется она в следующем:

    1. После выхода из игры WoT частенько подвисает в процессах, не оставляя в логе ничего подозрительного.
    2. Иногда, WoT падает, опять же не оставляя в логе ничего подозрительного. Обычно, это происходит при выходе из боя в ангар.
    3. Временами, когда Python вызывает какую-то Flash-функцию в GUI ангара, эта функция вызывается дважды. По крайней мере, я делаю такой вывод из лога, в котором вижу повторяющиеся записи. Как правило, это приводит к вылету из WoT, но иногда игра может выдержать 2-3 таких дублирующихся вызова.

    Вы стакивались с подобным? Как решали? Известны ли какие-то типовые причины возникновения таких ситуаций или типовые решения?

  14. Т.е. вы хотите сказать, что при разработке XVM не используются других методов отладки  - только логи, только хардкор? Что используют раздаботчики WG - никто не знает и не интересуется?

     

    Ребят, кто-то из вас занимался проф. разработкой приложений на базе Flash/Flex/AIR или Python? Вас не напрягает такой скудный инструментарий отладки?

  15. ...python.log - это файл ввода-вывода питона... ...На сегодняшний день я знаю два способа отладки. Непосредственное тестирование мода...... ...Второй - использовать PjOrion... ...для проверки работоспособности отдельных функций. Некоторые функции можно проверять в реплее (некоторые базовые даже в ангаре), некоторые придется проверять в реальном бою. Насчет перезапуска клиента - ну с этим ничего не поделаешь...

    М-да... Грустно. Как-то даже не верится, что с таким инструментарием можно отлаживать что-то серьезное, наподобие XVM.

  16. Товарищи, подскажите наиболее эффективные методы отладки модов. Разработку модов для WoT я изучаю совсем недавно и для меня ситуация с отладкой выглядит совсем печально. Сами судите:

     

    Python:

    • Как подключить к нему отладчик, я не знаю. Это возможно?
    • Эксепшенов нигде не видно.
    • Можно принтить что-то в python.log.

    AS3/2:

    • Как подключить к нему отладчик, я не знаю. Сомневаюсь, что есть способ, но таки спрошу. Это возможно?
    • Эксепшенов нигде не видно.
    • Трейсы не работают.  Или работают? Я их не нашел. Где они?
    • Можно связаться с питоном, чтобы он напринтил что-то в python.log.

    Ко всему этому, еще и после каждой правки нужно перезапускать клиент WoT. Финиш!

     

    Что, все и правда так печально? Или есть возможность организовать процесс отладки более удобным образом?

  17.  

     

    Смотри тут, может, найдёшь (открытый исходный код).

    Это я уже смотрел. Там доступность результата боя проверяется отдельным потоком в бесконечном цикле. Это несколько расходится с моими представлениями о хорошем программировании. Т.ч. я теперь сомневаюсь - автор сделал это по некомпетентности или по-другому это сделать просто невозможно. Этим и вызван мой вопрос.

  18. Как только бой окончился, можно узнать все остальное, включая точный урон всех союзников и противников, ждать при этом в самом бою необязательно.

     

    А вот если вышел из боя (или даже ушел в другой бой), из какого события достать его результаты?

  19.  

     

    Урон отлавливается из маркеров и оттуда же пишется в хитлог. Если враг за пределом видимости, урон не определить

    Я видел код, но не понял до конца и не думал, что оно тупо с маркеров. М-да... :)

     

    Ну, ладно. А по этому вопросу...

     

     

    Допустим игрок вышел из незавершенного боя А в ангар, после чего начал бой Б или остался в ангаре. Через какое-то время бой А кончился, клиент получил его результаты и показал игроку соотв. сообщение. Эти результаты содержат входящий/исходящий урон для каждого участника боя? Как получить эти результаты? Из какого события?
     

    ...что-то сказать можете? Просто хочется получить достоверный исходящий урон для каждого участника боя (или хотя бы свой), не заставляя игрока сидеть в бою до его окончания. Это вообще возможно?

×
×
  • Create New...