Перейти к публикации
  • Машина времени (обработчик резервных копий)


    Electr0
    • Сделано

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

    • Добавить задание стройке на снятие трех типов дампов предметов стройки: на конце раунда, на смене карты по голосованию, по расписанию каждые 5 минут (макс кол-во копий 12, при превышении этого числа удалять первую копию в стеке копий)
    • Добавить в хранилище предметов на вторую страницу меню пункт "Машина времени", в котором будет возможность сохранить предметы игрока из копии. В этом пункте будет представлен список резервных копий отсортированный по типам:

               1. Последний конец раунда.

               2. Последняя смена карты

    • При открытии резервной копии, отображать список слотов и кол-во предметов в каждом из них. По нажатию на слоты в резервной копии где есть предметы, при ответе на вопрос: вы уверены, что хотите сохранить предметы из слота <номер> в резервной копии в слот <номер>? выполнять сохранение предметов из резервной копии в базу данных напрямую.

     

    Необходимые ограничения:

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

     

    Надо учитывать:

    • Метод сохранения из копии должен понимать что если карту сменили и текущая отличается от той что в копии то он должен сохранять именно в слоты на карте из копии.
    • Надо учитывать что копии по расписанию надо как-то защитить от краша / рестарта сервера, таким образом эти копии нужно хранить в каком-то другом формате. И похоже данного вида копий в первой версии не будет, но в первой будет понимание системой что типов копий три: конец раунда, за неск. сек до смены карты, по расписанию

    Отзывы пользователей

    Рекомендованные комментарии

    Прототип 1:

    • Написал функцию создания оптимизированных дампов (похожую структуру сохранения свойств имеет последняя версия системы отката повтора стройки) предметов игроков с быстрым доступом к кол-ву предметов игрока, предыдущие глобальные унификации сильно сократили код создания полного снимка свойств предмета.

     

    Ссылка на комментарий
    Поделиться на других сайтах

    Прототип 2:

    • Исправлена некорректная работа дампера предметов на карте, теперь все работает согласно задуманной структуры сохранения дампа.
    • Добавлен вызов дампера на конце раунда, у него успешно получилось сохранить данные о предметах игроков на момент конца раунда, значит возможно продолжать дальше.
    Ссылка на комментарий
    Поделиться на других сайтах

    Прототип 3:

    • Движок сохранения унифицирован под использование импорта из снимков предметов вместо информации предметов на карте в том же цикле без единого повтора стека запросов сохранения иначе потом будет путаница с повторением изменений в одном месте и забывчивостью продублировать в другом.
    • Убран запрос к API ламп в сохранении в базу данных т.к. это уже делается в сборе данных о предмете.
    • Добавлена команда sm_fs_replace_slot_data_from_snapshot <слот> <тип снимка> позволяющая перезаписать указанный в нее слот данными из снимка. 
    • Проведена отладка и запуск первых импортов из снимков в базу данных.

    20170114024111_1.jpg

     

    20170114023010_1.jpg

    Ссылка на комментарий
    Поделиться на других сайтах

    Прототип 4: Допиливание основного костяка системы и доступного функционала.

     

    Степень готовности: 100%

     

    Сделано:

    • Добавлена возможность загрузки предметов из снимков созданных на текущей карте
    • Добавлена защита от нулевых снимков при попытке запустить импорт данных из них
    • Добавлена серверная команда для создания снимка для того чтобы плагин голосования мог подать запрос на снимок предметов на карте до старта смены карты.
    • В плагин голосований добавлен запрос на создание снимка конца карты.
    • Добавлена команда: sm_fs_replace_slot_from_snapshot_include_unsaved <слот> <тип снимка> позволяющая перезаписать указанный в нее слот данными из снимка включая не сохраненные предметы в снимке в указанный слот.
    • Добавлена команда: sm_fs_load_snapshot <слот> <тип снимка> позволяющая загрузить содержимое снимка с предметами из указанного слота.
    • Добавлена команда: sm_fs_load_snapshot_include_unsaved <слот> <тип снимка> позволяющая загрузить содержимое снимка с предметами из указанного слота включая не сохраненные предметы.
    • Добавлена поддержка снимков конца карты.
    • Добавлен учет того какая карта была на момент снятия снимка.
    • Добавлена документация по новым командам.
    • Добавлена очистка всех прочих снимков во время создания нового если в нем будет хоть один предмет игроков.

     

    Нужно учитывать:

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

     

    Для бескомпромиссной надежности архитектуры:

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

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

    Ссылка на комментарий
    Поделиться на других сайтах

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

     

    Прототип 5: 

     

    Степень готовности: 100%

     

    Готово:

    • Cделано меню
    • Сделаны диалоги подтверждения

     

    20170123010254_1.jpg

    20170123010256_1.jpg

    Ссылка на комментарий
    Поделиться на других сайтах

    прототип 6:

    • Исправлена проблема невозможности загрузить предметы из снимка если они все были не сохранены.
    • Добавлена защита от неограниченной загрузки предметов из снимка если эти предметы не были привязаны к слоту.
    Ссылка на комментарий
    Поделиться на других сайтах



    Присоединяйтесь к обсуждению

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

    Гость
    Добавить комментарий...

    ×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

      Разрешено не более 75 эмодзи.

    ×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

    ×   Ваш предыдущий контент был восстановлен.   Очистить редактор

    ×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


  • Обозначения статусов

    В обработке = Мы работаем над вашим отзывом.

    Будет сделано = Ваша идея добавлена к плану будущих изменений.

    Тестируется = Изменения внесены, но требуют тестирования.

    Сделано = Ваша идея реализована!

    Отклонено = Отзыв некорректный, бред, либо уже реализовано. Если у вас есть дополнительная информация напишите комментарий и мы снова откроем этот вопрос.

×
×
  • Создать...