Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Система реплеев игры

Тема в разделе "Разработка плагинов для новичков", создана пользователем CraftCoder, 27 сен 2016.

  1. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr


    @Shevchik ,@fromgate ,@alexandrage , у вас есть какие нибудь идеи по реализации такой штуки?

    Мои размышления: необходимо записывать не события, а непосредственно пакеты идущие от сервера к игрокам, но по идее если перехватывать пакеты идущие к какому-то одному игроку, то на реплее не будет видно действий самого игрока. Таким образом нужно для баккит эмулировать какого-то фейкового игрока, которому он будет пытаться отправить пакеты, но при этом игрок не будет учитывать как реальный игрок, в том числе в Bukkit.getOnlinePlayers() и т.п.
     
  2. Хостинг MineCraft
    <
  3. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Не интересно.
     
  4. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Почему же? Для модерации как раз очень интересно.
     
  5. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Твои модеры состарятся просматривать овер 500 игроков. А с мелким онли и так всех видно.
     
  6. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Ох н*хера. Не представляю сколько на это было потрачено времени, но это что-то прекрасное. Не представляю как это работает, но раз релизнулось на gomme.hd, значит скоро будет и на spigotmc.org.
     
  7. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Причём игрока нужно не просто эмулировать, но ещё и тракер действий для него не должен иметь ограничения по радиусу. (Хотя на само деле это относительно просто делается). А дальше просто записываем все пакеты и повторяем. Единственное что придётся немного попотеть с самой паузой, ибо игрокам надо полёт включать, и сбрасывать ускроение, а потом возвращать при отключении паузы.
     
  8. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    уже полгода прошло, на spigotmc до сих пор ничего нет[DOUBLEPOST=1475037945,1475037735][/DOUBLEPOST]
    Из ProtocolSupport видно, что ты хорошо умеешь инжектить всякое разное в ядро. Я пока не могу понять как сделать, чтобы эмулированный игрок не учитывался как обычный игрок.
     
  9. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    В каком смысле чтобы не учитывался как игрок? Как минимум наследника EntityPlayer придётся добавить в WorldServer и в EntityTracker. Так что где-то он точно вылезет как игрок. Сам баккит тащит всё из PlayerList, так что можно не добавлять игрока туда, но тогда нужно будет эмулировать изначальный заход игрока самому.

    Проще тупо забить и эмулировать настоящего игрока, (Можно даже не через nms, а реально сэмулировать заход игрока), просто писать плагины так чтобы они не учитывали его.
     
    Последнее редактирование: 28 сен 2016
  10. Saharo4ek

    Saharo4ek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    tin
  11. NulledCoder

    NulledCoder Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NulledCoder
    Знаете ребят - напоминает что-то необыкновенное.
    Невероятно крутая затея по поводу этого.

    Только у меня вопрос - это не будет нагружать сервер?
     
  12. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    По идее самая ресурсоемкая часть этой штуки это запись в файл, но по моим подсчетам файлы не будет весить очень много, так что грузить не должно.
     
  13. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Зато весить такой файл станет пару сотен гиг через пару месфцев наверное, если онлайн большой.
     
  14. Saharo4ek

    Saharo4ek Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    tin
    А если очищать их каждую неделю , например.
     
  15. _EnderWorld_

    _EnderWorld_ Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Steve
    Немцы знают как это делать, не только этот сервер сделал.
     
  16. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Получать отправляемые пакеты от сервера, сохранять их. После изменять в пакетах UUID и EntityId записанных entity и посылать пакеты игрокам в радиусе видимости.
    Как вариант, но без понятия насколько трудно реализовать.
     
  17. _EnderWorld_

    _EnderWorld_ Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Steve
    Вот еще нашел другой сервер с подобном фичей.
     
  18. Автор темы
    CraftCoder

    CraftCoder Старожил Пользователь

    Баллы:
    108
    Имя в Minecraft:
    CraftCoderr
    Я посчитал, что 1 часовой бой в игре bedwars будет весить около 50 метров.
     
  19. CoolBoy

    CoolBoy Активный участник Пользователь

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Тогда можно смело отбросить эту идею.
    По 50 мб на 1 час. Средняя катка - 10 мин.
    За целый день на 1 гб намотает точно.
     
  20. Dereku

    Dereku Старожил

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Сжатие, все дела. Потом архивация в tar.gz. Всеми правдами и неправдами можно сократить размер.
     
  21. _EnderWorld_

    _EnderWorld_ Активный участник Пользователь

    Баллы:
    78
    Имя в Minecraft:
    Steve
    Можно сделать если кто-то из модераторов проверил это, или сам игрок. То можно удалить уже саму реплейную игру.
     

Поделиться этой страницей