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

Показано с 1 по 25 из 69

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

Древовидный режим

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

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

    Доброго времени суток!
    В свете последних событий (по поводу движка БоБа) - не имеет особого смысла "хранить в себе" создаваемые для него наработки.

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

    Хочу сказать большое спасибо всем участникам проекта за работу!

    Краткое описание возможностей сервера статистики можно получить тут: http://www.sukhoi.ru/forum/showthread.php?t=77992

    Для общего понимания:
    Сервер статистики базируется на командере от Small_Bee (http://www.sukhoi.ru/forum/showthread.php?t=76672), и получает от него всю необходимую информацию.
    В качестве СУБД используется SQL Server Express 2008 R2. БД построена таким образом, чтобы обойти большинство ограничений накладываемых версией Express (кроме объёма ОЗУ - использует не более 1Гб).
    На данный момент сервер статистики полностью функционирует - прошёл обкатку на всех серверах репки, как в режиме работы "локально", так и в режиме работы "по сети".
    Для полноценной работы недостаёт вэб морды для вывода информации (информация по вэб-морде см. файл "Про картинки 2.doc" в приложении).


    Для того, чтобы установить сервер статистики необходимо:
    1. Установить командер (ссылку см. выше)

    2. Установить SQL Server

    Инструкция по установке Microsoft SQL Server Express 2008 R2:
    http://www.kontur-extern.ru/support/faq/38/437
    2. Создать каталог, в котором будут храниться базы данных

    3. Скопировать в созданный каталог файлы Serv_DB.bak и Clear_Battle.bak

    4. Подключить базу данных Serv_DB (см. аттач файл Serv_DB.bak)

    Для чего:
    - запустить среду SQL Server Management Studio
    - подключиться к SQL серверу
    - выбрать вкладку "Базы данных"
    - вызвать контекстное меню, выбрать "Восстановить базу данных..."
    - выбрать "С устройства:", указать файл Serv_DB.bak (кнопка "...")
    - в поле "В базу данных:" ввести "Serv_DB"
    - поставить галку "Восстановить"
    - перейти на вкладку "Параметры", проверить/указать расположение БД и её журнала
    - нажать кнопку "ОК"
    - дождать восстановления БД
    - проверить, что БД "Serv_DB" появилась в списке (на вкладке "Базы данных" вызвать "Обновить", либо переподключиться к SQL серверу)

    5. Настроить системную таблицу
    Для чего:
    - нажать кнопку "Создать запрос"
    - выполнить следующий запрос (нажать кнопку "! Выполнить"):
    "USE [master]
    GO
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_PADDING ON
    GO
    CREATE TABLE [dbo].[RepkaStatConfig]([Param_Name] [varchar](255) NULL, [Value] [varchar](255) NULL) ON [PRIMARY]
    GO
    SET ANSI_PADDING OFF
    GO
    INSERT INTO RepkaStatConfig (Param_Name, Value) VALUES ('DB_Path', 'C:\RepkaStat\R1DB')
    GO
    "
    , где C:\RepkaStat\R1DB - расположение файла Clear_Battle.bak

    6. Настроить командер для работы с сервером статистики
    Для чего:
    - запустить командер с ключиком -repka
    Пример: C:\Users\ХХХ\Desktop\rc\CommanderUI.exe -repka
    - в командере перейти в раздел настроек (кнопка с перекрещенными ключами), далее раздел "Игровая статистика", поставить галку "Включить игровую статистику"
    - ввести строку подключения к БД
    Пример для сетевого расположения сервера статистики:
    "Data Source=192.168.0.91,1433\SQLEXPRESS;User ID=ИМЯ ПОЛЬЗОВАТЕЛЯ;Password=ПАРОЛЬ;Initial Catalog=Serv_DB;Asynchronous Processing=true; Connect Timeout=10;"
    Пример для локального расположения сервера статистики:
    "Data Source=(local);Initial Catalog=Serv_DB;Integrated Security=True;Asynchronous Processing=true; Connect Timeout=3;"
    - Нажать кнопку "Тест подключения", получить окно с информацией о попытке подключения к серверу. Если пишет, "Нешмоглая" - читаем снова от п.1
    галка "Включить Вэб сервис" и настройки ниже - отвечают за передачу данных на вэб морду. Подробности их работы лучше спросить у автора.
    - нажать кнопку "Сохранить"
    - перезапустить командер


    ВСЁ! Сервер готов к вливанию!

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

    Нигде у себя не нашёл описания основных хранимых процедур, используемых для вывода информации на вэб морду, поэтому выкладываю здесь.
    Для вывода "готовой" информации из недр БД-ы используются хранимые процедуры (ХП) базы данных (БД) ServDB, которые начинаются с "Show" (33 штуки).
    ShowAllDep - вывод таблицы со всеми самолёто-вылетами (всех, либо только вылетов без участия игрока)
    ShowAllPlayerDep - Показать все вылеты игрока
    ShowBattleEvents - Показать события битвы (от и до)
    ShowBattleEventsRows - Получить кол-во строк в таблице батл эвент.
    ShowBattles - Показать сводку по битвам
    ShowBattlesByTime - Показать сводку по битвам за период времени
    ShowBattlesRows - Получить кол-во битв
    ShowCurBattle - Показать текущую битву
    ShowDepartures - Показать результаты самолётовылетов в битве
    ShowDeparturesRows - Показать кол-во вылетов в битве
    ShowDepCnt - Показать общее кол-во вылетов на разных самулях (всех, либо только вылетов без участия игрока)
    ShowDepCountryCnt - Показать кол-во вылетов на самолётах разных стран (всех, либо только вылетов без участия игрока)
    ShowDepDamages - Получить повреждения полученные в вылете только по агрегатам (с параметром нанесённые в вылете, с разбивкой по получателям)
    ShowDepDetailDamages - Показать детализированные повреждения полученные в вылете (с параметром нанесённые в вылете, с разбивкой по получателям)
    ShowDepEvents - Показать лог вылета (от и до) - Самый подробный лог. В нём есть ВСЕ события (в т.ч. попадание каждой пульки и нанесённый ей урон)
    ShowDepEventsRows - Показать кол-во строк в таблице событий вылета
    ShowDepEventsSec - Показать лог вылета (от и до) с уплотнением по секундам
    ShowDepEventsShort - Показать сжатый лог вылета (д.б.б. основным методом вывода на вэб морду событий вылета)
    ShowDepResult - Показать результат (для вылета, персо-вылета, человеко-вылета)
    ShowDepTypeCnt - Показать кол-во вылетов на разных типах самулей (всех, либо только вылетов без участия игрока)
    ShowDepTypeCountryCnt - Показать кол-во вылетов на самолётах разных стран по типам (всех, либо только вылетов без участия игрока)
    ShowLastGroundDestroy - Показать поледнюю (Х штук) уничтоженную игроком наземку
    ShowLastPlaneDestroy - оказать поледние (Х штук) уничтоженные игроком самолёты
    ShowMedals_IfCnt - Показать количественные показатели выдачи наград
    ShowPersDep - Показать персо-вылеты в битве
    ShowPersDepRows - Показать кол-во строк в таблице персовылетов
    ShowPilotsOnLine - Показать игроков он-лайн с их разбивкой по армиям и кто на чём летит и в ком сидит
    ShowPlayerDep - Показать человеко-вылеты в битве
    ShowPlayerDepCnt - Показать кол-во вылетов на разных типах самулей у игрока
    ShowPlayerDepRows - Показать кол-во строк в таблице человековылетов в битве
    ShowPlayerInfo - Показать информацию по игрокам (с фильтром)
    ShowPlayerMedals - Показать награды игрокa
    ShowResult - Показать результаты (для битвы, перса, игрока, сквада)

    ОГРАНИЧЕНИЯ ВЕРСИИ
    На текущем этапе разработки не реализованы ХП типа Show для вывода подробной информации для сквадов, персов, и "пепелацам" в ангаре (хотя полноценный учёт всех параметров для них ведётся).
    Выложенная версия сервера статистики работает в режиме "догфайт", т.е. не требуется создавать сквад (есть возможность создавать сквады входящие в сквады), заносить в него пилототов, при вылете сначала выбирать самолёт из ангара, сажать в него персонажей и т.д.
    Всё делается автоматом: при заходе НОВОГО игрока на сервер для него автоматически заводится сквад, скваду выделяется 100 бессмертных персонажей и выдаётся один "универсальный" самолёт в ангар. При вылете автоматом выдаётся самолёт из ангара, в него сажается свободный персонаж, в персонажа сажается игрок.

    ИЗВЕСТНЫЕ ПРОБЛЕМЫ
    При получении ранения персонажем в лог вылета армия инициатора ранения передаётся как "ноль" - нужно подправить в командере.
    Крайне редко возникает исключение в событии "СамолётУничтожен", т.к. не поступает никакой информации по вылету - нужно подправить в командере.

    Лог ошибок храниться в файле DB_ErrLog.txt, который автоматом создаётся в папке с ехе файлом командера.

    Если ОЧЕНЬ коротко по этому проекту - то как то так. Ещё раз всем большое спасибо за участие.

    З.Ы. Надеюсь, пригодится, и всё было не в пустую. Хотя, удовлетворение от участия в чём-то нужном (как казалось) для любимого симулятора я получил.

    З.Ы.Ы. Чем смогу - помогу в развитии/исправлению багов/доработке, отвечу на любые вопросы по теме.

    Спасибо за внимание.

    ServDB.7z
    Крайний раз редактировалось Zed4ever; 12.12.2012 в 21:41.
    i7 2600К, 16Gb, GTX660Ti, SSD, Win7-64 full ака SDPG_Zed4ever

Ваши права

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