По вопросам:
1 - ДА. Это именно обобщённая статистика. По названиям полей можно догадаться что они значят. Вот только из совсем непонятных: А_Т0.... - это кол-во убитых самолётов по их типам, G_T0... кол-во убитой наземки по типам, Р_Т0... - кол-во убитых персонажей по типам, R_T0... - кол-во убитых ресурсов по типам.
Единственное отличие в этих строках: для всех, кроме битвы, учитывается кол-во уничтоженных, а для битвы - кол-во потерь.
2 - ДА. Если не вычищать статистику - ResID у игрока, да и у всех, как только он назначен - вечен.
3 - ДА. Ваши обобщённые результаты будут в этой одной строке (потому и так много полей). Однако, ещё "обрезки" достижений есть в информации по игроку и в таблице медалек.
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 шт.
Вернусь к вопросам:
5 - На првый вопрос ответ - ДА, а на этот - НЕТ. ResID в БД битвы содержит ссылку на сводную статистику ВЫЛЕТОВ.
Тут тоже нужно объяснять механику движка статы.
То, что в основной БД-е есть некая строка со сводными результатами - это выяснили.
Теперь БДЫЩ! Точно такая-же табличка ResultInfo есть в каждой БД битв, и поля в ней те-же.
Объясняю зачем она нужна и что в ней храниться.
Основная задача БД битвы - хранить лог битвы, хранить подробный лог каждого вылета в битве и хранить сводную статистику по самолёто-вылетам, персо-вылетам и человеко-вылетам.
Выше я упоминал, что перед тем, как человек появляется в самолёте автоматом "что-то происходит".
А происходит следующее (пишу с привязкой по событиям):
1. Самолёт появился на карте (не важно кем и как созданный)
-создаётся самолёто-вылет, смолёто-вылету сервер присваивает уникальное в пределах битвы имя
-создаётся ResID в БД битвы для хранения результатов самолёто-вылета
2. В самолёте появляется экипаж (не разом, а по одному они появляются, соотв-но для 109-го это событие наступит 1 раз, а для 110-ки уже 2 раза)
-создаётся персо-вылет, перо-вылет "присоединяется" к самолёто-вылету через имя самолёто-вылета и номеру места в самолёте
-создаётся ResID в БД битвы для хранения результатов перо-вылета.
3. Игрок "вселяется" в перса
-создается человеко-вылет
-корректируются данные о самолёто-вылете: даются ссылки, позволяющие идентифицировати "пепелац" и вселившегося игрока
-по количеству мест в самолёте корректируются данные о перо-вылетах: даются ссылки, позволяющие идентифицировати "именованного" персонажа и игрока
-создаётся ResID в БД битвы для человеко-вылета
Показания в общей сводной статистике и сводной статистике вылетов завязаны следующим образом:
-инфа через персо-вылет попадает в самолёто-вылет и в человеко-вылет(если такой был к нему "присоединён")
-инфа от самолёто-вылета попадает в сводку по битве своей стороны и в сквад (если не было человеко-вылета, к примеру, летали чисто боты, или бот-стрелок, в котором не сидела нога человека, сбил кого-то)
-инфа из человеко-вылета попадает в сводку по игрока и сквада
-инфа от сквада передаётся вышестоящему скваду.
Как-то так. В кратце. Для общего понимания вопроса.
Что непонятно - спрашивайте
З.Ы. Как подсказка для поиска в расшифровке полей таблиц. Посмотрите док "про картинки" в аттаче с БД. Из него можно понять что чего значит. В т.ч. и по таблице ResultInfo.
З.Ы.Ы. И коротко на остальные вопросы: да, "вычищать" будем (если) физически БД-у. По стоимости - да, настраивали. Но, тут всегда можно самому перенастроить.
З.Ы.Ы.Ы. Мильён записей в табличке - не есть горе. Причём, ващще. Тут важно что и как ты с ними делаешь.