???
Математика на уровне МГУ

Страница 3 из 3 ПерваяПервая 123
Показано с 51 по 69 из 69

Тема: Сервер статистики для БзБ. Может, пригодится кому.

  1. #51

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Цитата Сообщение от SlavikSG Посмотреть сообщение
    А что-то нет у меня таких "вкусных" хранимых процедур. Может поэтому я и задал свои пять вопросов?
    Ой мама родная! У меня сейчас всего 10 гигов свободного места осталось (комп и винт старенькие). А что же будет, за несколько лет? Статистика ИЛ-2 у меня как-то четыре года жила и накапливалась. Там просто копейки набегали. Статистика, она на то и статистика... И в теории она должна накапливаться бесконечно долго. И процедура ClearAll вообще никогда не должна применяться. Сдается мне, решением этого дела мог бы стать полный отказ от создания каждый раз новой базы, под каждую новую битву. Но переделать это сейчас, скорее всего, уже невероятно сложно. Потому "сохранение сводки за историю битв", рано или поздно, может стать довольно насущным вопросом.
    Изначально стояла задача собирать как можно более подробную статистику. На самом деле, решение вести стату по каждому сражению в отдельной базе - отличное решение. Предыдущая версия базы (с одной базой) буквально через неделю-другую распухала до невероятных размеров с соответствующими последствиями по производительности - счет записей в отдельных таблицах переваливал за миллион.

  2. #52
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...ShowResult она называется...
    Ага. Ясно.

    Чёт, чем дальше, тем меньше начинаю врубаться...
    Посмотрел я на процедуру ShowResult. Это всего лишь простейший запрос с выборкой по ResID из таблицы dbo.ResultInfo. В результате видим всего одну строку на, почти, 140 полей! По полям я даже уже не спрашиваю. Наверное, замучаешься расписывать. Просто такой вопрос:
    1. Эта строка должна показывать что-то обобщенное? То, что я наубивал и налетал на сервере за все время и по всем битвам? И будет показывать то, что налетаю и наубиваю еще в будущем? Верно?
    и еще вопросы...
    2. Сейчас у меня ResID равен трем. Это пожизненно? Типа, мой крест? ))
    3. То есть, все результаты, наколоченные и налетанные мною будут сливаться в одну единственную строку этой таблицы под ID равную трем? Верно я понимаю?
    4. И такой вопрос... Сейчас таблица dbo.ResultInfo содержит в себе 1022 записи. Если мне принадлежит лишь одна запись в этой таблице, то кому тогда принадлежат остальные 1019 записей? Сервак запущен вчера вечером и до сих пор пашет. В основном, в холостом режиме. Побывало на нем только 10 человек. Кому же тогда принадлежат другие ResID? Конечно, можно было бы подумать, что каждый выстрел зенитки, каждый выстрел бота на сервере будет создавать, инициировать, свою личную запись, со своим личным ID, в этой таблице. Но неужели это так?!
    5. Если на первый вопрос можно ответить утвердительно, то значит расшифровку этой моей одной единственной строчки из таблицы dbo.ResultInfo, под ID равную трем, нужно будет искать в таблицах битв? Так я понимаю?

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...ShowBestPlayer - опять я ошибся...
    Ага. Ждем...

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...Обязательно приделаю ХП "DelWorkDB", которая будет вычищать указанную БД битвы + вычищать из Serv_DB...
    Собственно, пока не горит. ShowBestPlayer намного важнее.
    ...небольшое уточнение. Базы битв нужно не вычищать, а удалять. Физически! Чтобы их не было на сервере SQL. Так вами планируется?..

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...ObjTypeScore - "стоимость" объекта, в зависимости от его класса и типа (ягер и бонбер, пилот и наблюдатель стоят по разному, шлюпка и линкор тоже - вот тут это и настраивается)...
    А кто-то это уже настроил? Очень бы хотелось эту настройку. Сам я точно никогда не смогу адекватно и правильно назначить очки за тот или иной объект в БзБ. Или так настрою, что потом камнями закидают.

    Большое спасибо за ваши ответы!
    Честно, не часто встретишь столь подробное освещение вопросов на форумах.

    --- Добавлено ---

    Цитата Сообщение от Small_Bee Посмотреть сообщение
    ...счет записей в отдельных таблицах переваливал за миллион.
    Может не стоит уж так подробно расписывать каждое событие в таблицы? Хотя, решение с "Битво-базами" снимает вопрос. Тут вы правы. Теперь бы еще сливать периодически общую инфу из этих "Битво-баз" в главную базу, а сами "Битво-базы" убивать, и было отлично.

    Да. Представляю себе запрос по миллиону записей!!! Любой комп сдохнет. А пользователь фиг дождется результата вычислений по своей статистике.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  3. #53
    гдетатамзагаризонтам... Аватар для Zed4ever
    Регистрация
    29.08.2006
    Адрес
    НН
    Возраст
    42
    Сообщений
    227

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    По вопросам:
    Цитата Сообщение от SlavikSG Посмотреть сообщение
    1. Эта строка должна показывать что-то обобщенное? То, что я наубивал и налетал на сервере за все время и по всем битвам? И будет показывать то, что налетаю и наубиваю еще в будущем? Верно?
    1 - ДА. Это именно обобщённая статистика. По названиям полей можно догадаться что они значят. Вот только из совсем непонятных: А_Т0.... - это кол-во убитых самолётов по их типам, G_T0... кол-во убитой наземки по типам, Р_Т0... - кол-во убитых персонажей по типам, R_T0... - кол-во убитых ресурсов по типам.
    Единственное отличие в этих строках: для всех, кроме битвы, учитывается кол-во уничтоженных, а для битвы - кол-во потерь.
    Цитата Сообщение от SlavikSG Посмотреть сообщение
    2. Сейчас у меня ResID равен трем. Это пожизненно? Типа, мой крест? ))
    2 - ДА. Если не вычищать статистику - ResID у игрока, да и у всех, как только он назначен - вечен.
    Цитата Сообщение от SlavikSG Посмотреть сообщение
    3. То есть, все результаты, наколоченные и налетанные мною будут сливаться в одну единственную строку этой таблицы под ID равную трем? Верно я понимаю?
    3 - ДА. Ваши обобщённые результаты будут в этой одной строке (потому и так много полей). Однако, ещё "обрезки" достижений есть в информации по игроку и в таблице медалек.
    Цитата Сообщение от SlavikSG Посмотреть сообщение
    4. И такой вопрос... Сейчас таблица dbo.ResultInfo содержит в себе 1022 записи. Если мне принадлежит лишь одна запись в этой таблице, то кому тогда принадлежат остальные 1019 записей? Сервак запущен вчера вечером и до сих пор пашет. В основном, в холостом режиме. Побывало на нем только 10 человек. Кому же тогда принадлежат другие ResID? Конечно, можно было бы подумать, что каждый выстрел зенитки, каждый выстрел бота на сервере будет создавать, инициировать, свою личную запись, со своим личным ID, в этой таблице. Но неужели это так?!
    4 - Тут вопрос интересный, и достаточно глубоко затрагивает механику сбора статы.
    Приступим c разъяснениями по порядку.
    Что имеем: нужно собрать сводную статистику для следующих независимых объектов:
    -Результаты для стороны (красная/синяя),тут нужно собирать сколько налетали игроки, сколько боты, сколько очков заработали игроки и сколько боты, сколько потерь понесла сторона и т.д. и т.п.
    -Результаты для игрока, сколько налетал, уничтожил.... бла-бла-бла.
    ВАЖНО! В итоге - строка сводной статистики одинакова для всех, с некоторой разницей в смысловой нагрузке отдельных полей (уничтожено/потеряно).
    -Результаты для персонажей (это боты - экипаж. Ну, типа, как в WoT экипаж танка с разбиением по специализации и нации)
    -Результаты для сквадов

    Теперь рассказываю как это реализовано:
    Самые первые два ResID выдаются для первой битвы для красной и синей стороны (См ResID_Red и ResID_Blue в табличке BattleInfo - можно через ХП ShowBattles)
    Следующий ResID получает первый игрок вошедший на сервер.
    Кстати, поздравляю! Если ввести медаль за ResID = 3 "ПервыйНах". Вы кандидат
    (ну, 3 ResID из тыщщи есть, а там совсем чуть-чуть осталось )

    Теперь отвлекусь от ResID и поясню на общие вопросы механики статы: стат сразу делалась таким образом, чтобы можно было вести учёт по сквадам и по ботам-экипажам (персонажам). И, чтобы персонажи могли прокачиваться улучшать навыки и ващще имели некую "уникальность". Тут было 2 пути: 1-й перс смертный, и, после смерти, о нём остаётся "вечная память" в виде строки с ResID; 2-й перс безсмертный, и привязывается к игроку/скваду, ну, и с возможностью "трансферов персоков м-ду клубами".
    За основной был взят 2-й вариант учёта и распространения персов. 1-й вариант, в принципе, реализован тоже, но его не удобно использовать, т.к. имеем гипотетическую возможность "вечного роста" основной БД-ы по результатам умервщления персов и нарождению новых. Поэтому, признак того, шо перс "уже один раз не жив" есть, но он не очень используется. Для хардкорных серверов - вэлкам 1-й вариант, но мы за ооочень долгую стабильную работу не отвечаем.
    Также, изначально, были заложены следующие ограничения/обязанности:
    Игрок ДОЛЖЕН входить в сквад. В сквад может входить сквад. Сквад должен быть укомплектован экипажами (боты-человечки, персонажЫ, которые, или персы сокращенно). Сквад должен быть укомплектован техникой. Игрок может взять технику только своего сквада и насаждать в ней экипажем только своего сквада. Игрок может занять место (вернее - вселиться в голову) члена экипажа только своего сквада.

    Отсюда, механика игры сводится к следующему, если всё "делать правильно" (не пугайтесь только, никто сейчас так не делает):
    1. Заходит игрок на сайт сервера и регистрирует сквад.
    2. Создаёт себя как игрока и записывает себя в свой сквад командиром. Далее, он может приглашать в сквад сквады и игроков.
    3. Скваду выдаётся (покупается ) определённое кол-во членов экипажа и кол-во техники
    ----Пополнение техники и экипажа + прокачка экипажа - тут отдельная тема, и она пока особо не реализовывалась, заложены только возможности.
    4. Далее, игрок может создать самолёто-вылет (т.е. полетать, ну, как обычно кнопка "Создать"). Для этого выбирается техника и в технику сажается экипаж из доступного скваду.
    5. Теперь игрок "вселяется в голову" любого члена экипажа. (Но может и не вселяться, а, к примеру, отправить ботов на разведку/бомбёжку и т.д.)

    Понимание того, что без "нормального" сайта и "хардкорного сообщества" этот механизьм не будет работать, заставило нас сделать механизм для "догфайт-версии" статы, с условием максимального сохранения функционала на будущее (тут выложена именно "догфайт-версия" статы).

    Как работает механизм "догфайт" статы:
    Если игрок ПЕРВЫЙ раз заходит на сервер, для него АВТОМАТОМ заводится учётка, далее для него автоматом создаётся сквад и игрок заносится в этот сквад. После, в сквад зачисляются 100 членов экипажа (персонажей) и ещё один "пепелац".
    Когда игрок создаёт самолёт и начинает "смотреть глазами члена экипажа" в БД-е создаётся самолёто-вылет, который заселяется "именованными" персонажами из сквада игрока, которые не находятся в полёте (именно для этого их 100, чтобы постоянно кто-то находился "на земле"), и пепелац привязывается к текущему самолёту.

    Такой механизм (и его догфайт-версия тоже) позволяет награждать и наказывать игрока независимо от того когда наступило "конечное" событие. Т.е. если ты пострелял в кого-то, сам сел и ушёл с сервера - награда найдёт героя. Не надо час кружить и ждать "когда он цдохнет". Если ты, гад такой, вышел из самолёта, или сервера под огнём супостата - тоже не переживай. Усё учтётся по заслугам, даже если твоя тушка упадёт через час
    Зачем и почему сделано именно так - можно долго объяснять ещё. На пока порции этого блюда хватит, а то я и так отвлёкся от основной темы.
    А о чём я ващще? А, да... А, нет. Ща проверю. Во! Объясняю откуда 1к ResID.

    Теперь, имея в голове представление что да как работает, опять считаем ResID:
    1,2,3 - было. 4-й достанется скваду первого игрока, 5-105 - именованным персам первого игрока. (Это, есс-но, если в течение первой битвы на сервер заходили игроки).

    А теперь считаем "итого": каждый новый игрок будет добавлять 103 строки в табличке ResID основной БД-ы, каждая новая битва - 2 шт.

    Вернусь к вопросам:
    Цитата Сообщение от SlavikSG Посмотреть сообщение
    5. Если на первый вопрос можно ответить утвердительно, то значит расшифровку этой моей одной единственной строчки из таблицы dbo.ResultInfo, под ID равную трем, нужно будет искать в таблицах битв? Так я понимаю?
    5 - На првый вопрос ответ - ДА, а на этот - НЕТ. ResID в БД битвы содержит ссылку на сводную статистику ВЫЛЕТОВ.

    Тут тоже нужно объяснять механику движка статы.
    То, что в основной БД-е есть некая строка со сводными результатами - это выяснили.
    Теперь БДЫЩ! Точно такая-же табличка ResultInfo есть в каждой БД битв, и поля в ней те-же.
    Объясняю зачем она нужна и что в ней храниться.

    Основная задача БД битвы - хранить лог битвы, хранить подробный лог каждого вылета в битве и хранить сводную статистику по самолёто-вылетам, персо-вылетам и человеко-вылетам.

    Выше я упоминал, что перед тем, как человек появляется в самолёте автоматом "что-то происходит".
    А происходит следующее (пишу с привязкой по событиям):
    1. Самолёт появился на карте (не важно кем и как созданный)
    -создаётся самолёто-вылет, смолёто-вылету сервер присваивает уникальное в пределах битвы имя
    -создаётся ResID в БД битвы для хранения результатов самолёто-вылета
    2. В самолёте появляется экипаж (не разом, а по одному они появляются, соотв-но для 109-го это событие наступит 1 раз, а для 110-ки уже 2 раза)
    -создаётся персо-вылет, перо-вылет "присоединяется" к самолёто-вылету через имя самолёто-вылета и номеру места в самолёте
    -создаётся ResID в БД битвы для хранения результатов перо-вылета.
    3. Игрок "вселяется" в перса
    -создается человеко-вылет
    -корректируются данные о самолёто-вылете: даются ссылки, позволяющие идентифицировати "пепелац" и вселившегося игрока
    -по количеству мест в самолёте корректируются данные о перо-вылетах: даются ссылки, позволяющие идентифицировати "именованного" персонажа и игрока
    -создаётся ResID в БД битвы для человеко-вылета

    Показания в общей сводной статистике и сводной статистике вылетов завязаны следующим образом:
    -инфа через персо-вылет попадает в самолёто-вылет и в человеко-вылет(если такой был к нему "присоединён")
    -инфа от самолёто-вылета попадает в сводку по битве своей стороны и в сквад (если не было человеко-вылета, к примеру, летали чисто боты, или бот-стрелок, в котором не сидела нога человека, сбил кого-то)
    -инфа из человеко-вылета попадает в сводку по игрока и сквада
    -инфа от сквада передаётся вышестоящему скваду.

    Как-то так. В кратце. Для общего понимания вопроса.
    Что непонятно - спрашивайте

    З.Ы. Как подсказка для поиска в расшифровке полей таблиц. Посмотрите док "про картинки" в аттаче с БД. Из него можно понять что чего значит. В т.ч. и по таблице ResultInfo.

    З.Ы.Ы. И коротко на остальные вопросы: да, "вычищать" будем (если) физически БД-у. По стоимости - да, настраивали. Но, тут всегда можно самому перенастроить.

    З.Ы.Ы.Ы. Мильён записей в табличке - не есть горе. Причём, ващще. Тут важно что и как ты с ними делаешь.
    Крайний раз редактировалось Zed4ever; 29.01.2013 в 23:31. Причина: очепятки
    i7 2600К, 16Gb, GTX660Ti, SSD, Win7-64 full ака SDPG_Zed4ever

  4. #54
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Это не тихий ужас. Это называется "Туши фонарь и выноси мебель". Не думал, что все так невероятно сложно окажется.

    Я вообще, мало что понял. Но сдается мне, этот мануал, а это именно МАНУАЛ, будет необычайно полезен, еще кому-то. А себе лично хотелось бы из всего этого взять лишь крохи. Лишь небольшую начальную инфу для простенькой статистики. Для мизерной, но понятной таблички с данными по конкретному вирпилу.

    На все ответить просто не успеваю. Пока коснусь лишь самого злободневного...

    Файл "Про картинки 2.doc" мне ничего не прояснил. И посему, хочется или не хочется, а поля из таблицы ResultInfo нужно все же расписать. Я сейчас на работе, поэтому многие поля, которые можно было бы легко проверить, я проверить сейчас не смогу.

    Итак, погнали!
    Поля с нулем, я вообще игнорирую. Видимо они для ботов или еще бог знает для чего из вашего сложного мануала:

    ID - это ResID вирпила. Самое важно поле. По нему будем делать выборку с условием.

    StartTime - Момент, когда я создал свой последний самолет и очутился в нем. Инфа ненужная. Или это время, когда я впервые появился на сервере? Но вроде не сходится у меня дата.
    EndTime - Типа, когда я перестал летать или бросил свой последний самолет. Сейчас у меня стоит 1900-01-01 00:00:00.000. Значит ноль. С этим непонятки. Инфа ненужная.
    FlyTime - Стоит ноль. Значит инфа ненужная.
    FlyTime_PI - Хотелось бы видеть в этом поле общее количество часов налета. Но вижу там странное время/дату. 1908-05-15 00:50:56.000 Не восемь же лет я летал?! Что значит, вообще, это значение в моем личном случае?

    DepCnt_PI - равно 31. Количество всех моих вылетов во всех битвах
    Dep_F_PI - равно 18. Скорее всего, значение, когда полет закончился удачной посадкой.
    Dep_B_PI - равно 13. Это, наверное, когда я грохнулся об землю.

    PersDepCnt_PI - равно 31. То же, что и DepCnt_PI, вот только не ясно, что важнее для статистики. В каком поле я сам, а не "персоно-бот"?
    PersDep_F_PI - равно 18. Тот же вопрос...
    PersDep_B_PI - равно 13. Тот же вопрос...

    Deaths - равно 2. Количество смертей.
    Deaths - равно 23. Количество смертей. Не понял, в каком случае, это касается того, что именно я помер в кабине самолета. Неужели 23 раза? Тогда не сходится с количеством удачных/неудачный посадок

    Wounds - равно 0. Количество ранений бота.
    Wounds - равно 3. Количество моих ранений.

    Crashes - равно 0. Количество падений бота
    Crashes - равно 4. Количество моих падений. Типа, когда я грохнулся всерьез и со смертью меня и самолета.

    Defeat - равно 0. Не понял...
    Defeat - равно 26. Не понял. Меня поразили 26 раз или я что-то поразил 26 раз?

    Jumps - Ну, с этими полями все ясно. Сколько раз я, сколько раз бот прыгали с парашютом и сколько раз было неудачных прыжков у меня и у моего бота.

    Sinks - равно 0. Не понял...
    Sinks_PI - равно 0. Не понял...

    Captured - равно 0. Сколько раз бота захватили в плен.
    Captured - равно 5. Сколько раз меня захватили в плен.

    Escaped - равно 0.
    Escaped_PI - равно 0. Сколько раз я сбежал из плена?! Гггг! Это как понимать?!

    PKills - равно 2. Сколько убил ботов в самолете.
    PKills_PI - равно 2. Сколько убил живых пилотов в самолете.

    AKills - равно 5.
    AKills_PI - равно5. Сколько подбил самолетов в воздухе?

    AGKills - равно 5.
    AGKills_PI - равно5. Сколько подбил самолетов на земле? Странно, что равно тому же, что и в воздухе? Совпадение? Или я не совсем не понял.

    GKills - равно 18.
    GKills_PI - равно 18. Сколько подбил наземной техники?

    GGKills - равно 18.
    GGKills_PI - равно 18. Не понял что это. Сколько потопил кораблей?

    RKills - равно 0.
    RKills_PI - равно 0. Не понял что это.

    FPKills - равно 0.
    FPKills_PI - равно 0. Не понял что это.

    FAKills - равно 0.
    FAKills_PI - равно 0. Не понял что это.

    FAGrKills - равно 0.
    FAGrKills_PI - равно 0. Не понял что это.

    FGKills - равно 0.
    FGKills_PI - равно 0. Не понял что это.

    FGGrKills - равно 0.
    FGGrKills_PI - равно 0. Не понял что это.

    FRKills - равно 0.
    FRKills_PI - равно 0. Не понял что это.

    Score_PI - равно 2816,666 Общее количество заработанных очков.
    Score_Fighter_PI - равно 666,666 Типа, сколько я заработал, как истребитель, пуляя по самолетам? Верно?
    Score_Assault_PI - равно 2050 Типа, сколько я заработал, как штурмовик, пуляя по наземным целям? Верно?
    Score_Bomber_PI - равно 100 Тут не ясно. Бомбер это тот, кто сбросил бомбу или тот, кто сбросил бомбу с бомбера? Я и Мессера кидал бомбы. Но похоже, это тут не считается.

    Score_Trans - Не понял.
    Score_Rang - Не понял.
    Score_Save - Не понял.

    Пока все. Пора домой.

    Назревший вопрос:
    Я удаляю битвы. Живьем из базы. Таблицу dbo.BattleInfo очищаю. Завожу свервак. Новая битва с базой создается, но называется она уже Work_DB_4, а не Work_DB_1. Где-то нужно еще после удаления битв, обнулять счетчик. Где это делать? А то сейчас, на стадии изучения статистики, образуется просто прорва пустых, ненужных битво-баз. Но при этом уже есть и настоящие реальные данные в таблице dbo.ResultInfo. Поэтому функцию ClearALL применять очень бы не хотелось.

    Вопросов по полям будет еще много. Сейчас я просто не успел...
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  5. #55
    гдетатамзагаризонтам... Аватар для Zed4ever
    Регистрация
    29.08.2006
    Адрес
    НН
    Возраст
    42
    Сообщений
    227

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Звиняюсь что пропал.
    Забежал на пару минут.
    Подскажу чуть конкретнее по значению полей результатов и их соответствию в файле "про картинки".

    Это "хвост" полей таблицы ResultInfo:
    [P_T0] [bigint] NOT NULL,
    [P_T1] [bigint] NOT NULL,
    [P_T2] [bigint] NOT NULL,
    [P_T3] [bigint] NOT NULL,
    [P_T4] [bigint] NOT NULL,
    [P_T5] [bigint] NOT NULL,
    [P_T6] [bigint] NOT NULL,
    [P_T7] [bigint] NOT NULL,
    [P_T8] [bigint] NOT NULL,
    [P_T9] [bigint] NOT NULL,
    [P_T10] [bigint] NOT NULL,
    [P_T11] [bigint] NOT NULL,
    [P_T12] [bigint] NOT NULL,
    [R_T1] [bigint] NOT NULL,
    [R_T2] [bigint] NOT NULL,
    [R_T3] [bigint] NOT NULL,
    [R_T4] [bigint] NOT NULL,
    [R_T5] [bigint] NOT NULL


    Это "хвост" файла "про картинки":
    Всего убито (из человечков) неизвестное тело = 0,
    Pilot = 1, CoPilot = 2, Bombardier = 3, Radioman = 4, Engineer = 5, Observer = 6, Gunner = 7, NoseGunner = 8,
    TopGunner = 9, WaistGunner = 10, VentralGunner = 11, RearGunner = 12
    Всего уничтожено (из ресурсов):
    Тут заложено 5 типов ресурсов, какие – пока не определились, но, наверное, стандартно можно заложить
    1. Топливо
    2. Боеприпасы
    3. Рем\комплекты
    4. Производство
    5. Чел\ресурсы


    Время будет напишу подробнее.
    i7 2600К, 16Gb, GTX660Ti, SSD, Win7-64 full ака SDPG_Zed4ever

  6. #56
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...
    Подскажу чуть конкретнее по значению полей результатов и их соответствию в файле "про картинки".
    ...
    Ага. Покапаюсь. Спасибо!

    А как со вторым моим вопросом? Есть на него ответ?
    Я удаляю битвы. Живьем из базы. Таблицу dbo.BattleInfo очищаю. Завожу свервак. Новая битва с базой создается, но называется она уже Work_DB_4, а не Work_DB_1. Где-то нужно еще после удаления битв, обнулять счетчик. Где это делать? А то сейчас, на стадии изучения статистики, образуется просто прорва пустых, ненужных битво-баз. Но при этом уже есть и настоящие реальные данные в таблице dbo.ResultInfo. Поэтому функцию ClearALL применять очень бы не хотелось...
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  7. #57
    гдетатамзагаризонтам... Аватар для Zed4ever
    Регистрация
    29.08.2006
    Адрес
    НН
    Возраст
    42
    Сообщений
    227

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    По второму вопросу:
    Номер очередной БД-ы битвы берётся из индекса таблички BattleInfo. А индекс этот отмечен как ID строки, соотв-но он САМ увеличивается на 1 при новой вставке.
    Поэтому, для того, чтобы сбросить счётчик баз - нужно делать ClearAll, иначе никак (так сам скуль-сервер работает, я тоже в своё время заморачивался - как сбросить ID в начало. Ничего, кроме как пересоздания таблицы не накопал). БЖСЭ, как говориться.
    По удалению руками "ненужных" БД битв - в принципе, ничего страшного в этом нет. Главное, чтобы не было обращений в этим БД. Да, и при обращении к несуществующей БД-е - тоже ничего страшного не будет: ошибка в лог упадёт, и всё. Вот, только лог ошибок может расползаться до неприличных р-ров.

    Если вычищаете ВСЮ табличку dbo.BattleInfo - можно это делать черех ХП ClearBattleInfo. Тогда индексы БД битв будут начинаться с "1".
    Но тут могет засада получиться (вернее получится) - в табличке учёта вылетов будут неправильные ссылки, т.к. они привязаны к №битвы и №вылета в конкретной битве.

    З.Ы. Мне для анализа - какой р-р БД Serv_DB у Вас сейчас, какой общий р-р БД битв и какой средний р-р одной БД битвы. И сколько по времени идёт одна битва.
    i7 2600К, 16Gb, GTX660Ti, SSD, Win7-64 full ака SDPG_Zed4ever

  8. #58
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...Если вычищаете ВСЮ табличку dbo.BattleInfo - можно это делать черех ХП ClearBattleInfo. Тогда индексы БД битв будут начинаться с "1"...
    Ооо! Это самое оно. Мне больше пока ничего и не нужно. Спасибо!

    Снова разбирался с полями из таблицы ResultInfo. Как вы правильно дали понять, данные начал брать из файла "Про картинки 2.doc". Но начал снизу, как вы показали в примере, и только в этом случае, почти все получилось. Почти!
    Про эти поля не сказано ничего:
    [A_T7]
    [A_T8]
    [A_T9]
    [A_T10]

    Еще вопрос:
    Поясните пожайлуйста по полям подобного вида. Например, кол-во истребительных вылетов:
    [Dep_F]
    [Dep_F_PI]
    [PersDep_F_PI]
    Чем эти поля отличаются друг от друга? Чет я совсем запутался. Где-то "в группе/скваде", где-то "я один". Где-то "бот или персона". В общем, полная каша в голове. И перечитывание мануала из поста номер 53 мне не помогло.

    То же самое с полями:
    [FAKills]
    [FAKills_PI]
    Чем они отличаются? Ну, и там еще много чего подобного есть.

    Вопросов еще много, но не буду спешить. Хочу задать пока только один:
    Каким образом, используя таблицу ResultInfo можно узнать, сколько я всего, за все время существования сервера и статистики, сделал вылетов?
    Сначала я подумал, что это можно легко понять, взяв данные из поля DepCnt_PI, или из схожим с ним поля, но по "бомберскому" типу Dep_B_PI (летал я на Ju-87), или из поля PersDepCnt_PI или опять же, но по "бомберскому" типу из поля PersDep_B_PI. Во всех этих четырех полях мой вылет отображен правильно (летал я на Ju-87) и вроде бы все хорошо. Но как только я перемещаюсь в голову заднего стрелка, так количество моих вылетов сразу увеличивается вдвое. По логике вроде, как все правильно. Типа, сколько летал за пилота, сколько летал за стрелка. Но не нужен мне стрелок!!! Мне нужен только я любимый!!! Сколько раз я лично, без стрелка, поднял вчера вечером свой Ju-87? Знаю, что поднял его (создал его на ВПП) всего три раза. А статистика глаголит, что 6 раз. А выбери я Хенкеля, вообще будет странная цифра? Повторюсь еще раз:
    Как узнать, точное количество моих вылетов на сервере?
    При этом очень даже хотелось бы узнать даже не сколько раз я создал самолет на ВПП, а сколько раз я оторвал шасси своего пепелаца от ВПП. Если это, конечно, вообще возможно узнать правильно.

    Вот такой у меня очень насущный вопрос. Разберусь в нем, может отпадут многие другие вопросы.... Про киллы, мои и стрелка, про утопления мои и стрелка, про прыжки мои и стрелка. В общем, нужно исключить всех "персон", "ботов", все "сквады". "группы", а оставить только одного живого игрока, чтобы вести статистику по обычному мясному Dogfight-серверу. То есть не вести статистику, а правильно ее выбирать из таблицы ResultInfo.

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...З.Ы. Мне для анализа - какой р-р БД Serv_DB у Вас сейчас, какой общий р-р БД битв и какой средний р-р одной БД битвы. И сколько по времени идёт одна битва.
    Про это я не понял. Что такое "р-р"?
    Вообще, сервер еще не работает. Выключен все время. Запускаю лишь иногда, когда появляется время и возможность покопаться со статистикой.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  9. #59
    Старший Офицер Форума Аватар для Charger
    Регистрация
    08.04.2002
    Адрес
    Москва
    Возраст
    57
    Сообщений
    11,713
    Images
    16

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    ИМХО, средний РазмеР
    Мля, идите на дуэльный сервер - там ваши кони, сэры рыцари (c)mamali
    Я дрался с асами WarBirds(c)Varga
    Основная проблема русского витуального сообщества - избыток лыцарелизателей и рыцаререзателей и нехватка наевропуболтоположителей... (с)CoValent
    БоБ прямее руганью не станет. (с) Harh
    Oculos habent non viclebunt.(c) Псалом 134
    Q9650+8GbRAM+560Ti/2Gb i7-4790k+32Gb+2060/6Gb

  10. #60
    гдетатамзагаризонтам... Аватар для Zed4ever
    Регистрация
    29.08.2006
    Адрес
    НН
    Возраст
    42
    Сообщений
    227

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    1. "р-р" - как тут правильно ответили, это я так слово РазмеР написал. Звиняюсь за абррвтуру

    2. [A_T7]...[A_T10] - тут тоже моя "неточность" при отправке на RTFM (рид зыс факин мануал ), ещё раз сорь.
    Это поля для учёта типов сбитых/потерянных самолётов. Но, в итоге, с Тимофеем сошлись на том, чтобы сократить список типов самолётов до "6": Fighter = 1, Bomber = 2, Sturm = 3, Scout = 4, Transport = 5, Rescue = 6. Тут дело в том, что если брать тип напрямую из игры, то их получается "мильён" (истр, истр-бомбер, тяжелый истр,....), ГОРАЗДО больше 10. А, в итоге, поля [A_T7]...[A_T10] остались как рудимент. М.б. удалю их, при случае...

    3. [Dep_F], [Dep_F_PI], [PersDep_F_PI] - поясняю в чём разница.
    Для простоты будем брать случай учёта результатов для живого игрока.
    Для начала - что каждое поле значит:
    [Dep_F] - количество истребительных САМОЛЁТО(!)-вылетов.
    [Dep_F_Pl] - количество истребительных самолёто-вылетов под управлением человека
    [PersDep_F] - количество истребительных ПЕРСО(!)-вылетов
    [PersDep_F_PI] - количество истребительных персо-вылетов под управлением человека
    Теперь, на примерах, как они инкрементируются (т.е. к текущему прибавляется один):
    Ситуация "человек решил полетать на 110-ке".
    Создаётся истребительный (для 110 м.б. и другой тип, но, пусть, для примера, будет истребительный) самолёто-вылет под управлением человека ([Dep_F]+1, [Dep_F_Pl]+1. ДА! Для обоих полей! Так сделано.).
    Далее, "разум" человека заселяется в голову перса пилота - создаётся истребительный персо-вылет под управлением человека ([PersDep_F_PI]+1, [PersDep_F+1]).
    Вдруг, человеку приспичило посидеть за стрелком - создаётся ещё один истребительный персо-вылет под управлением человека ([PersDep_F_PI]+1, [PersDep_F+1]).
    Т.е., если летать всё время на 109-м, то кол-во самолёто-вылетов и персо-вылетов для игрока будет одинаковым (т.к. из экипажа только пилот), в случае многоместных самолётов их кол-во МОЖЕТ отличаться, при условии, что человек "прыгает" в самолёте по местам. Тут следует учесть, что если персо-вылет в самолёте уже существует, то он новый не создаётся, т.е. в 110-ке можно 100500 раз прыгать между пилотом и стрелком - персо-вылетов для этого самолёто-вылета будет всё равно ДВА.
    Тут ещё следует уточнить: если речь идёт о статистике игрока - можно (или нужно? - проверю на досуге) использовать поля с припиской "_PI". Хотя, они и не должны отличаться по своим количественным показателям от полей без оной приписки. Как-то так. М.б. сумбурно объяснил.

    3. [FAKills], [FAKills_PI] - это поля для учёта сбитых ЕДИНОЛИЧНО (!) ДРУЖЕСТВЕННЫХ летательных аппаратов (для вычисления предателей ). [FAGrKills] - для учёта сбитых другов в соучастии с кем-то. (соучастник м.б. ворогом).

    4. Сколько всего сделал САМОЛЁТО-вылетов: поле DepCnt_Pl (ну, или DepCnt). Сколько ПЕРСО-вылетов: PersDepCnt_Pl.
    Если, как Вы пишите, при пересадке за стрелка в штуке поля от учёта САМОЛЁТО-вылетов тоже инкрементируются - это баг. Проверю. Должны ОДИН раз увеличиться поля с учётом самолёто-вылетов, и два раза с учётом персо-вылетов.

    5. "При этом очень даже хотелось бы узнать даже не сколько раз я создал самолет на ВПП, а сколько раз я оторвал шасси своего пепелаца от ВПП. Если это, конечно, вообще возможно узнать правильно."
    Вот тут есть ограничение - учитывается именно кол-во созданий вылетов. Т.е. если создать самолёт на полосе, а потом вернуть его в ангар - не будет разницы, в итоге, если взлететь и сесть.
    М.б. "Ч2Н" добавим учёт кол-вы взлётов. Но не уверен... Скорее учёт изменений статуса вылета на "в воздухе", т.к. при появлении самолёта в воздухе событие "взлетел" не наступает, наступает событие "изменился статус: в воздухе". Но, тоже не раньше, чем "Ч2Н" (Занят доводкой вывода на вэб-морду - оно приоритетнее).

    6. "Вот такой у меня очень насущный вопрос. Разберусь в нем...".
    Тут всё довольно просто. Учитывать поля с припиской "_Pl" (где есть и с ним и без) и выкинуть поля начинающиеся с "Pers".


    И ещё - м.б. какнибудь пересечёмся в скапе? Я-б голосом гораздо эффективнее смог-бы объяснить что к чему. И времени на это потратили бы меньше в разы.
    А то за время ответа на "пару" вопросов в кнопы тыкая можно было-б "пару+" голосом рассказать
    i7 2600К, 16Gb, GTX660Ti, SSD, Win7-64 full ака SDPG_Zed4ever

  11. #61
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Все! В голове полная каша.

    Вообще перестал врубаться в поля [Dep_F_Pl] - количество истребительных самолёто-вылетов под управлением человека и [PersDep_F_PI] - количество истребительных персо-вылетов под управлением человека. Какая-то игра слов уже получается.

    И так и не понял, как посчитать количество вылетов Штуки (ну, или там еще чего-то). Получается, что если я сажусь за стрелка при каждом вылете, то количество моих вылетов удваивается. А на одноместном останется равным одному. И как же тогда посчитать, сколько я самолетов создал?!

    Да, Скайп рулит. Как-нибудь вечерком нужно будет потолковать на эту тему. Но и здесь писать нужно. Кому-то ведь это тоже может пригодиться.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  12. #62
    гдетатамзагаризонтам... Аватар для Zed4ever
    Регистрация
    29.08.2006
    Адрес
    НН
    Возраст
    42
    Сообщений
    227

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Нужно почуствовать разницу в САМОЛЁТО-вылете и ПЕРСО-вылете (ну, и в человеко-вылете потом).
    Для примера возмём сцухой суперджэт.

    Самолёто-вылет будет один, а персо-вылетов МНОГО (экипаж+много пассажиров).
    Если этот самолёт создаст человек, то мы будем иметь 1 самолёто-вылет, и, в нагрузку, дополнительно учтём один самолёто-вылет под управлением человека.
    Если человек будет "лазить по головам" во всех персонажах этого пепелаца, то при каждом новом "вселении" будет создаваться персо-вылет под управлением человека.

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

    З.Ы. Сам после старичка не сразу переварил такой подход
    i7 2600К, 16Gb, GTX660Ti, SSD, Win7-64 full ака SDPG_Zed4ever

  13. #63
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Кажется врубился с этими "самолето-персо-вылетами". Но чет не сходится с практикой.

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...
    Самолёто-вылет будет один, а персо-вылетов МНОГО...
    Может и точно со Штукой глюк? У меня в любом случае создает два вылета, как только я влезаю в голову стрелка. То есть все эти четыре поля автоматом получают значение "2":
    DepCnt_PI
    Dep_B_PI
    PersDepCnt_PI
    PersDep_B_PI

    Нужно будет еще на Хенкеле проверить. Даже взлетать не нужно. Достаточно просто полазить по головам стрелков.

    А еще такой небольшой вопрос. Решил сменить аутентификацию к серверу. Если писать так, то не пашет:
    "Data Source=192.168.0.91,1433\SQLEXPRESS;User ID=ИМЯ ПОЛЬЗОВАТЕЛЯ;Password=ПАРОЛЬ;Initial Catalog=Serv_DB;Asynchronous Processing=true; Connect Timeout=10;"
    А если писать так, то пашет:
    "Data Source=192.168.0.91\SQLEXPRESS;User ID=ИМЯ ПОЛЬЗОВАТЕЛЯ;Password=ПАРОЛЬ;Initial Catalog=Serv_DB;Asynchronous Processing=true; Connect Timeout=10;"
    То есть с указанием порта не работает. А без порта работает. Не в курсе, почему такое может быть?
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  14. #64
    гдетатамзагаризонтам... Аватар для Zed4ever
    Регистрация
    29.08.2006
    Адрес
    НН
    Возраст
    42
    Сообщений
    227

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Про порт - Фиревол, наверна
    Правда, локально через указание порта ниразу не пробовал подключаться...
    З.Ы. По многоместным пепелацам - проверю, и, если есть чего править, исправлю.
    i7 2600К, 16Gb, GTX660Ti, SSD, Win7-64 full ака SDPG_Zed4ever

  15. #65
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Да нет, конечно!.. Фаервол тут не при чем. Просто я когда глянул сюда:
    http://blog.wadmin.ru/2012/07/sql-ports/
    мне чуть дурно не стало. Пока я так не смог настроить порты фаервола. Журнал Windows 7 тупит и не хочет записывать события блокировок. Понять бы, по каким портам блокировка идет. Прям хоть ставь другой фаерволл с нормальным журналом событий, чтобы понять, что ему не хватает. А пока проверка подключения к SQL-серверу с помощью Коммандера с удаленного компа в инете работает лишь тогда, когда фаерволл выключен полностью. Но это все ерунда. Дело наживное... Разберемся.

    В общем, пока я в полном расстройстве. Не вижу для себя никакой возможности вытаскивать из таблицы ResultInfo количество вылетов (ну, или создаваемых самолетов). проверял и Хенкель, и 110 и Штуку. Как только садишься за стрелков, сразу все поля прибавляют свое значение. Рекордсмен тут Хенкель. Пробежавшись по стрелкам я получил во всех полях таблицы цифру 8.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  16. #66
    гдетатамзагаризонтам... Аватар для Zed4ever
    Регистрация
    29.08.2006
    Адрес
    НН
    Возраст
    42
    Сообщений
    227

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Принял. Значит это мой "косяк". Исправлю.
    З.Ы. Мне чуть осталось доделать (допроверить/настроить, даже) вывод на вэбморду, и займусь проверкой баг-ов.
    З.Ы.Ы. Если можно сделайте подборку багов/хотелок, чтобы не упустил чего.
    i7 2600К, 16Gb, GTX660Ti, SSD, Win7-64 full ака SDPG_Zed4ever

  17. #67
    Курсант Аватар для SlavikSG
    Регистрация
    26.03.2004
    Адрес
    Новомосковск Тульская обл.
    Возраст
    59
    Сообщений
    441

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Цитата Сообщение от Zed4ever Посмотреть сообщение
    ...З.Ы.Ы. Если можно сделайте подборку багов/хотелок, чтобы не упустил чего.
    Сильно извиняюсь. Просто тупо не хватает времени заниматься всерьез. Поэтому "хотелок" пока только три:
    1. Удаление битв и слив их данных в основную базу.
    2. Разобраться с этим "количеством" создаваемых вылетов.
    3. Не столь важно, но в Коммандере нужно сделать галочку - "Сворачивать в трей при запуске". То есть по желанию пользователя. При освоении и отладке приходится делать просто несметное количество запусков Коммандера. И каждый раз Коммандер нужно вытаскивать из трея вручную.

    И не знаю. Но создание каждый раз, даже для случайного, нового вирпила более ста записей!.. Не слишком ли это? Ведь сколько может зайти игроков на сервер даже не сделав ни одного вылета?! Даже не пхнув мышкой в ту, или иную армию. Пустых записей будет тысячи. Ведь они будут реально тормозить SQL запросы по статистике для других вирпилов. Может можно будет сделать в будущем механизм для удаления таких фантомных пустых записей? Или хотя бы не создавать эти 103 записи, пока игрок фактически не создаст крафт.
    Крайний раз редактировалось SlavikSG; 12.02.2013 в 12:03.
    Нет в русском языке слова дешеГО. Есть слово дешеВО.

  18. #68
    Курсант Аватар для Frezak
    Регистрация
    25.02.2011
    Возраст
    39
    Сообщений
    155

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    =KK=Des
    "Господа, очень хочется знать ведется-ли сейчас какая-то работа над статистикой, если да то хотелось бы иметь возможность доступа к ресурсам и возможно принять какое-то участие в разработке. Если, нет то хотелось бы получить последние исходные файлы и начать докручивать её под свои нужды.
    Почему пишу об этом? Не хотелось бы развивать 2 ветки софта отдельно хочется чтобы это был отдельный софт с конечной поддержкой из одного места."
    Intel QuadCore i5-3570K 3.4GHz (TB up to 4,2 GHz)/Asus P8Z77-V/SSD OCZ Vertex 4 128Gb/Corsair 4096MBx2 1600MHz /MSI N680GTX Lightning 2Gb/Chieftec BPS-650C(650W)/Samsung SyncMaster B2430 1920x1080/Warthog BRD-X "K"/Frezak ruder pedails V3_1m/Freetrack+Sony Eye
    http://il2.kupikolesa.ru

  19. #69

    Re: Сервер статистики для БзБ. Может, пригодится кому.

    Идет работа.
    Стата пережила кардинальный рефакторинг, как база так и логика сбора статы. Теперь она не требует обязательного присутствия коммандера, и может собирать стату даже в оффлайне без лишних телодвижений. Разработка ведется на C# 4.0, UI коммандера - WPF, в качестве родной базы - MSSQL - но можно любую прикручивать, хоть в хтмл сливать прямо (собственно в тестовом режиме так и делает).
    Для вебморды планируется MVC4
    Помощь не помешает в основном для вебморды и версии коммандера, совместимого с новой статой.

Страница 3 из 3 ПерваяПервая 123

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •