Перейти к публикации

Рекомендованные сообщения

Опубликовано:

Парсер умеет делать две вещи:

1) конвертировать текстовый лог миссий в файл в формате JSON. Эта часть близка к полному завершению, возможно какие-то записи некорректно парсит, но в целом все записи конвертирует.

2) обработка лога, очеловечивание записей (вместо идентификатора объекта его имя, и т.п.) и простенький подсчет статистики с созданием файла с результатами миссии, опять же в формате JSON. Эта часть сделана лишь частично, некоторые события не обрабатываются, поэтому удивляться странностям не стоит.

 

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

 

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

Данные для типов объектов (GameObjects.json) взяты по сути из кода командера xedoc'a. Используются для отнесения уничтоженного объекта к какой-нибудь группе.

 

Как пользоваться:

1. Распаковать в куда-нибудь, перед этим убедиться, что стоит .NET 3.5.

2. В командной строке пишем: plog имя_файла, например:

plog C:\logs\missionReport(2015-03-08_03-33-51)[0].txt

3. оно парсит этот файл, если есть missionReport(2015-03-08_03-33-51)[1].txt, то и его, и так до тех пор пока файлы по порядку индекса находятся.

4. в результате получаются два файла: 2015-03-08_03-33-51-log.json - это сконвертированный лог и 2015-03-08_03-33-51.json - а это некоторый суррогат статистики без претензий на достоверность.

 

Во время работы оно может выдавать много-много текста, с руганью, предупреждениями и ошибками. Так и задумано.

 

plog_test.zip

  • Поддерживаю! 14
Опубликовано:

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

Опубликовано:

Уважаемый, taleks, расскажите пожалуйста, за что отвечают события: AType:17,  AType:18, AType:19.

А так же, раскроете вы исходный код? Интересует момент определения сбит ли игрок. 

Опубликовано:

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

Сама конвертация упрощает.

Но на самом деле сильнее упростит, если довольное громоздкие последовательности событий будут преобразованы в понятные события типа "объект уничтожен", "игрок покинул самолет", сейчас это не сделано до конца, а в родном текстовом логе не все события очевидны. Имея это - дальше уже вопрос интепретации, как это понимать и в куда считать.

 

А так же, раскроете вы исходный код? Интересует момент определения сбит ли игрок. 

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

Причешу и будет на битбакете, вероятнее всего.

 

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

Игрок - это самолет + тело в нем (бот). Самолет быть жив, но бот мертв, некоторое время после уничтожения самолета может жить и бот.

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

 

 

 

Уважаемый, taleks, расскажите пожалуйста, за что отвечают события: AType:17,  AType:18, AType:19.

 

17 - по-моему, не используется.

18 - это покидание ботом самолета.

19 - окончание раунда.

  • Поддерживаю! 4
Опубликовано:

Спасибо за ответы.

 

18 - это покидание ботом самолета.

 

Тогда что такое AType:16? 

Опубликовано:

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

 

В своё время уже предлагал.

 

Если носителем всех событий выбрать игрока, то "кто и как" будет формироваться автоматически, вне зависимости от того, когда происходит фиксация событий в базе. Весь вылет можно в одну транзакцию оформить, с автоматическим зачислением всем причастным заслуженного. Причём, в этом случае становится не важно, вышла ли жертва, или атаковавший, например с сервера, или валяется на земле. Как только игрок прерывает вылет, неважно по каким условиям, всё происходившее с ним в вылете автоматически попадает в базу.

 

Так у меня сделано для старичка и уже несколько лет успешно работает. Реализация не сложная, нагрузка на сервер ещё и уменьшается за счёт того, что базу обновляем через транзакции, которые живут в отдельном потоке и выполняются в результате не часто. Чуть растет расход памяти на списки событий связанных с игроком. Но рост копеечный при очевидных плюсах на упрощении всего механизма фиксации событий.  

Опубликовано:

Спасибо, нужная вещь.

 

Тоже столкнулся с такой фигней. Всаживаю в ила пол бк, после чего тот аварийно садится. Игра пишет, игрок сбил ил-2. А в логах нет инфы, что я его сбил. Т.е. это надо вверх по событиям бежать и смотреть, кто этому илу больше всех повреждений нанес ну или кто последний в него попал. К чему эти сложности? Не проще было бы в лог сразу писать, что я его сбил, если игра так решила. Да это дает маневр для разработчика, я могу считать сбитых по другому алгоритму, нежели игра. Но ведь игрок не поймет такой статистики. Если игра пишет одно, а я на сервере статистики другое.

 

Или другая ситуация. Лечу на штуке, стрелок сбивает ЛаГГа. Причем явно сбивает, тот в землю воткнулся. Игра пишет, что я сбил ЛаГГ. В логах же нет инфы, что я его сбил, нет инфы, что турель его сбила и нет инфы, что бот за турелью его сбил.

Опубликовано:

Спасибо за ответы.

 

Тогда что такое AType:16? 

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

 

Обычно, такая последовательность: самолет посажен (6), конец игровой сессии для игрока (4), событие 16. Или убит бот (3), конец игровой сессии для игрока (4), событие 16 После этого событий с этим ботом в логе нет. Полагаю, что это просто деактивация бота, вызванная любой причиной, так её и учитываю. Ничего особого не означает, кроме того что больше этого бота в логе не будет (если он вдруг не будет создан снова с таким же ид позже).

 

 

 

Если носителем всех событий выбрать игрока, то "кто и как" будет формироваться автоматически, вне зависимости от того, когда происходит фиксация событий в базе.

Ну... в имеющихся логах чтобы получить события одного этого игрока приходится сначала помудрить. Отсюда и проистекает сложность.

Опубликовано:

Тоже столкнулся с такой фигней. Всаживаю в ила пол бк, после чего тот аварийно садится. Игра пишет, игрок сбил ил-2. А в логах нет инфы, что я его сбил. Т.е. это надо вверх по событиям бежать и смотреть, кто этому илу больше всех повреждений нанес ну или кто последний в него попал. К чему эти сложности? Не проще было бы в лог сразу писать, что я его сбил, если игра так решила. Да это дает маневр для разработчика, я могу считать сбитых по другому алгоритму, нежели игра. Но ведь игрок не поймет такой статистики. Если игра пишет одно, а я на сервере статистики другое.

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

Опубликовано:

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

 

 

Формат лога РОФа встречал только в вики, но к сожалению ее выпилили до того, как он понадобился ( 

Спасибо за ответ, вроде белых пятен больше не осталось.

Опубликовано:

Формат лога РОФа встречал только в вики, но к сожалению ее выпилили до того, как он понадобился ( 

Спасибо за ответ, вроде белых пятен больше не осталось.

Формат лога РоФ из вики

Опубликовано:

Формат лога РоФ из вики

 

Спасибо. Про вебархив позабыл. Но как оказалось там не густо.

Опубликовано:

Обновление парсера, правился учет сбитых и мелкие косяки там и сям. Результат одиночных миссий теперь показывает не так, как для мультиплеера.

Парсер гарантированно некорректно учитывает туррели (уничтожение турели или уничтожение из турели), остальное несколько ближе к правде.  GUI версия умеет только указывать файл для обработки.

 

Исходный код: https://bitbucket.org/taleks/plog

 

Что в выходном bla-bla-brief.json может быть интересно:

MissionStats - тут лежит сводная статистика по сбитым-убитым за коалицию и страны по отдельности. В этом разделе есть подраздел Frags, т.е. список того, кто сбил кого (только игроки) исходя из того, как считает парсер.

DeadStats - все уничтоженные объекты. Включая те, которые были уничтожены ботами или померли каким-то иным способом (на поле DeathReason особо не смотреть, оно верно лишь в 80 процентах случаев).

PlayerStats - информация о конкретном игроке, его статистика сбитых и смертей, кроме того краткая статистика по вылетам (чем вылет закончился - сел, сбит, вышел, и т.п.).

 

в bla-bla.json информации больше

MissionFlow - ключевые события миссии (игрок взлетел, сбит и т.п.)

AllPlayers - все игроки со всеми, относящимися к ним событиями.

 

plog_test.zip

  • Поддерживаю! 8
  • 3 года спустя...
Опубликовано:

У меня при попытке использовать парсер выскочило такое сообщение. 

 

423525.jpg.25b710b87a0ce566e0d4539a0f219f18.jpg

 

При попытке запустить через командную строку написало в CMD следующее

 

>plog F:\IL-2 Sturmovik Battle of Moscow\data\logs\txtmissionReport(2019-07-03_00-31-21)[0].txt
"plog" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
 

  • 3 месяца спустя...
Опубликовано:
03.07.2019 в 03:01, [HTS]MadFather сказал:

У меня при попытке использовать парсер выскочило такое сообщение. 

 

423525.jpg.25b710b87a0ce566e0d4539a0f219f18.jpg

 

При попытке запустить через командную строку написало в CMD следующее

 

>plog F:\IL-2 Sturmovik Battle of Moscow\data\logs\txtmissionReport(2019-07-03_00-31-21)[0].txt
"plog" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
 

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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
×
×
  • Создать...