Переключение на универсальный идентификатор (UUID) - Потенциальные проблемы плагинов/сервера

  • Автор темы Автор темы fromgate
  • Дата начала Дата начала

fromgate

Старожил
Пользователь
Баллы
173
Имя в Minecraft
fromgate
Возможно не совсем корректно приводить эту информацию здесь, но... в общем-то больше негде.
Как известно, грядущая версия Minecraft 1.8, будет ещё ознаменовано ещё и возможностью менять имена. Некоторое время назад EvilSeph, рассказал свое виденье ситуации. На мой взгляд, в чем-то он усугубляет проблему, но комментарии я тут приводить не будут, а просто переведу (весьма вольно):

Переключение на универсальный идентификатор (UUID) - Потенциальные проблемы плагинов/сервера


Автор: EvilSeph Оригинальная статья

С начала года Mojang уже сделала несколько намёков об их планах переключить аккаунты основанные на имени на использование универсальных уникальных идентификаторов (UUID), что даст возможность игрокам изменять своё имя. Поскольку, в настоящее время, в Minecraft'е всё подвязано на имена (баны, белый список, перечень операторов), плагины также используют имена (пермишены, собственность, приваты и защита), то эти изменения могут нанести урон как серверам так и работоспособности плагинов. На текущий момент времени, известно, что планирует "включить" систему смены имён после выхода Minecraft 1.8, выпуск которого ожидается в мае. Так что времени на подготовку остаётся не так уж и много.

Что такое a UUID?
Универсальный уникальный идентификатор (Universally Unique IDentifier) это достаточно длинный набор чисел в шестнадцатиричном представлении, применяемые в программировании для однозначной идентификации чего-либо. В Minecraft'е планируется использовать UUID для идентификации учетных записей игроков, которая будет связана с аккаунтом Mojang. Например, у Ночта UUID вот такой: "069a79f4-44e9-4726-a5be-fca90e38aaf5".

Возможные проблемы на сервере
До переключения на использования UUID имена игроков использовались практически везде где только можно в самом Майнкрафте (баны, белый список и т.д.) так и в плагинах использовались имена для хранения информации о пермишенах, приватах и т.д. Когда Mojang предоставит пользователям процедуру смены имени (а это будет, как уже говорилось, уже после 1.8) уже нельзя будет считать имя игрока чем-то незыблимым и хранить информацию опираясь на неё. Естественно для Майнкрафта, уже было объявлено, при апдейте будет учтены встроенные баны, белый список и т.д., однако для плагины необходимо будет переделать для использования UUID в целях определения пользователя.

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

Собственно, основной риск заключается в том, что сервер, который будет неготов к использованию UUID, получит возможные риски оффлайн-сервера. Учитывая, что имя игрока перестало быть постоянным, появляется вероятность того, что в какой-то момент времени кто-то сможет выбрать себе имя администратора и получить соответствующий доступ и возможности.

К сведению разработчиков плагинов
29 марта 2014 г. мы уже работаем в соответствии с планом миграции на UUID (см. коммиты: Bukkit commit, CraftBukkit commit), я решил использовать возможность Java на указание устаревшего кода в качестве инструмента для привлечения внимания разработчиков, чтобы быть уверенным, что все разработчики так или иначе узнают о возможных проблемах связанных с переходом на UUID. Эта мера идёт в дополнении к этой статье. Информацию приведенную здесь, не так-то просто было получить, в основном она собрана из множества твитов разработчиков Minecraft. Результатом мы имеем нечто, названное планом миграции, который в общем-то основна на догадках и предположения, которые могут оказаться далеки от истины в тот момент, когда система заработает.

Итак, основные моменты, важные разработчикам:

  • Имя не будет однозначным уникальным идентификатором игрока.
  • Всё что касается определению игрока по имени отмечено как устаревшее, но они все работают, хотя возможно часть из "устаревших" методов в будущщем будет удалена. Подробнее читайте, ниже в Плане Миграцuи.
  • Любые данные, которые сохраняются для пользователя, должны опираться на UUID.
  • С версии Minecraft 1.7, a UUID игрока может быть получен методом Player.getUniqueId();
  • Метод Server.getOfflinePlayer(UUID) является, временным, неэффективны (по сути - хаком), котроый предоставлен для того, чтобы Вы могли реализовать свой собственный "план миграции"
  • Вам потребуется библиотека Mojang’s AccountsClient или evilmidget38's UUIDFetcher (рекомедуем) для конвертации имён в UUID. Вопрос о том, будет ли в баккит встроено собственное подобное решение пока открыт.
Наш Текущий план миграции (справочно):
Minecraft 1.7.5

  • Отметить устаревшими методы использующие имя для определения самого игрока, в целях уведомления разработчиков о грядущем переходе на UUID.
  • Добавить временный хак чтобы позволить реализовать "раннюю" поддержку UUID
    • Это позволит разработчикам планировать апдейт своих плагинов, однако НЕ для использования в релизах.
Minecraft 1.7.6+

  • Выбор игрока по UUID будет самым эффективным методом (будет опирать на данные сохраненные на диске)
  • Выбор игрока по имени, соответственно, станет менее эффективным.
Minecraft 1.8

  • Предупредительные отметки об устаревших методах будут удалены, если они не были удалены ранее в процессе перехода на UUID>
Общая информация:

  • Аккаунт Mojang необходим, если Вы хотите сменить свое имя
  • Имя должны быть уникально, Вы не сможете выбрать имя, которое уже занято
  • Смена имён бесплатна, однако будут установлены какие-то ограничения, чтобы избежать злоупотреблений.
  • Если Вы ещё не переключились на аккаунт Mojang, сделайте это как можно скорее - чтобы избежать риска потерять собственное имя.
  • Возможность изменения имени будет запущена после обновления веб-сервисов приблизительно после выхода Minecraft 1.8
  • Если Вы сменили имя, то Ваше имя будет доступно для "захвата". Это не традиционные "локальные" имена, это глобальная система имён. Неизвестно будет ли какой-то льготный период или защита против отслеживания освободившихся имён
 
Возможно не совсем корректно приводить эту информацию здесь, но... в общем-то больше негде.
Как известно, грядущая версия Minecraft 1.8, будет ещё ознаменовано ещё и возможностью менять имена. Некоторое время назад EvilSeph, рассказал свое виденье ситуации. На мой взгляд, в чем-то он усугубляет проблему, но комментарии я тут приводить не будут, а просто переведу (весьма вольно):
Переключение на универсальный идентификатор (UUID) - Потенциальные проблемы плагинов/сервера

Автор: EvilSeph Оригинальная статья

С начала года Mojang уже сделала несколько намёков об их планах переключить аккаунты основанные на имени на использование универсальных уникальных идентификаторов (UUID), что даст возможность игрокам изменять своё имя. Поскольку, в настоящее время, в Minecraft'е всё подвязано на имена (баны, белый список, перечень операторов), плагины также используют имена (пермишены, собственность, приваты и защита), то эти изменения могут нанести урон как серверам так и работоспособности плагинов. На текущий момент времени, известно, что планирует "включить" систему смены имён после выхода Minecraft 1.8, выпуск которого ожидается в мае. Так что времени на подготовку остаётся не так уж и много.

Что такое a UUID?
Универсальный уникальный идентификатор (Universally Unique IDentifier) это достаточно длинный набор чисел в шестнадцатиричном представлении, применяемые в программировании для однозначной идентификации чего-либо. В Minecraft'е планируется использовать UUID для идентификации учетных записей игроков, которая будет связана с аккаунтом Mojang. Например, у Ночта UUID вот такой: "069a79f4-44e9-4726-a5be-fca90e38aaf5".

Возможные проблемы на сервере
До переключения на использования UUID имена игроков использовались практически везде где только можно в самом Майнкрафте (баны, белый список и т.д.) так и в плагинах использовались имена для хранения информации о пермишенах, приватах и т.д. Когда Mojang предоставит пользователям процедуру смены имени (а это будет, как уже говорилось, уже после 1.8) уже нельзя будет считать имя игрока чем-то незыблимым и хранить информацию опираясь на неё. Естественно для Майнкрафта, уже было объявлено, при апдейте будет учтены встроенные баны, белый список и т.д., однако для плагины необходимо будет переделать для использования UUID в целях определения пользователя.

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

Собственно, основной риск заключается в том, что сервер, который будет неготов к использованию UUID, получит возможные риски оффлайн-сервера. Учитывая, что имя игрока перестало быть постоянным, появляется вероятность того, что в какой-то момент времени кто-то сможет выбрать себе имя администратора и получить соответствующий доступ и возможности.

К сведению разработчиков плагинов
29 марта 2014 г. мы уже работаем в соответствии с планом миграции на UUID (см. коммиты: Bukkit commit, CraftBukkit commit), я решил использовать возможность Java на указание устаревшего кода в качестве инструмента для привлечения внимания разработчиков, чтобы быть уверенным, что все разработчики так или иначе узнают о возможных проблемах связанных с переходом на UUID. Эта мера идёт в дополнении к этой статье. Информацию приведенную здесь, не так-то просто было получить, в основном она собрана из множества твитов разработчиков Minecraft. Результатом мы имеем нечто, названное планом миграции, который в общем-то основна на догадках и предположения, которые могут оказаться далеки от истины в тот момент, когда система заработает.

Итак, основные моменты, важные разработчикам:

  • Имя не будет однозначным уникальным идентификатором игрока.
  • Всё что касается определению игрока по имени отмечено как устаревшее, но они все работают, хотя возможно часть из "устаревших" методов в будущщем будет удалена. Подробнее читайте, ниже в Плане Миграцuи.
  • Любые данные, которые сохраняются для пользователя, должны опираться на UUID.
  • С версии Minecraft 1.7, a UUID игрока может быть получен методом Player.getUniqueId();
  • Метод Server.getOfflinePlayer(UUID) является, временным, неэффективны (по сути - хаком), котроый предоставлен для того, чтобы Вы могли реализовать свой собственный "план миграции"
  • Вам потребуется библиотека Mojang’s AccountsClient или evilmidget38's UUIDFetcher (рекомедуем) для конвертации имён в UUID. Вопрос о том, будет ли в баккит встроено собственное подобное решение пока открыт.
Наш Текущий план миграции (справочно):
Minecraft 1.7.5

  • Отметить устаревшими методы использующие имя для определения самого игрока, в целях уведомления разработчиков о грядущем переходе на UUID.
  • Добавить временный хак чтобы позволить реализовать "раннюю" поддержку UUID
    • Это позволит разработчикам планировать апдейт своих плагинов, однако НЕ для использования в релизах.
Minecraft 1.7.6+

  • Выбор игрока по UUID будет самым эффективным методом (будет опирать на данные сохраненные на диске)
  • Выбор игрока по имени, соответственно, станет менее эффективным.
Minecraft 1.8

  • Предупредительные отметки об устаревших методах будут удалены, если они не были удалены ранее в процессе перехода на UUID>
Общая информация:

  • Аккаунт Mojang необходим, если Вы хотите сменить свое имя
  • Имя должны быть уникально, Вы не сможете выбрать имя, которое уже занято
  • Смена имён бесплатна, однако будут установлены какие-то ограничения, чтобы избежать злоупотреблений.
  • Если Вы ещё не переключились на аккаунт Mojang, сделайте это как можно скорее - чтобы избежать риска потерять собственное имя.
  • Возможность изменения имени будет запущена после обновления веб-сервисов приблизительно после выхода Minecraft 1.8
  • Если Вы сменили имя, то Ваше имя будет доступно для "захвата". Это не традиционные "локальные" имена, это глобальная система имён. Неизвестно будет ли какой-то льготный период или защита против отслеживания освободившихся имён
Проекты с лаунчером это мало затронет.
 
Ну вот, не я один об этом беспокоюсь, но меня интересует ряд других вопросов, на которые пока ответ не могу получить:
1. Пираты -- как им будет выдаваться UUID? Или пиратские клиенты будут работать все на одном UUID? Тогда большая часть систем, работающая на UUID будет не только не эффективна, но и бесполезна.
2. Когда-нибудь CraftBukkit будет следовать за обновлениями? Будет ли выборка сущностей по UUID? Или стоит действительно заняться своим ядром, которое реализует все необходимые функции?
Может есть что-то, что я упустил и есть другие вопросы?
Хотя да, я всё ещё сижу на 1.5 из-за повышенной нестабильности более поздних и отставания версий в функционале от ванильки...
 
Пичальбида. Они еще не написали PluginAPI (или ModAPI), а уже хотят сломать всю систему плагинов.
 
Не могу понять к чему суета?
Ну потрясет и перестанет, делов-то, перейдут игроки и все.
А вот с пиратами интереснее.
Эх еслиб была возможность защитить игру... Убрать пиратов из онлайна
Perfect *o*
 
Проекты с лаунчером это мало затронет.
Это "по-первой". Когда плагины перейдут на UUID, возникнет вопрос их эмуляции.

Ну вот, не я один об этом беспокоюсь, но меня интересует ряд других вопросов, на которые пока ответ не могу получить:
1. Пираты -- как им будет выдаваться UUID? Или пиратские клиенты будут работать все на одном UUID? Тогда большая часть систем, работающая на UUID будет не только не эффективна, но и бесполезна.

Посмотрим, что будет представлять из себя оффлайн-игрок. В принципе, можно уже сейчас попытаться пристально посмотреть на последние пре-релизы 1.7.6. Там уже изменили протокол и UUID будет использоваться.

2. Когда-нибудь CraftBukkit будет следовать за обновлениями? Будет ли выборка сущностей по UUID? Или стоит действительно заняться своим ядром, которое реализует все необходимые функции?
Может есть что-то, что я упустил и есть другие вопросы?
Ну а как следовать оперативно? Если информация черпается в основном из твиттера ;) Как я понял, в этот раз должно быть всё более-менее оперативно. По крайней мере в девбилдах уже что-то касательно UUID добавляется. Я пока ещё не глядел, но раз добавляется, значит что-то будет :)

Пичальбида. Они еще не написали PluginAPI (или ModAPI), а уже хотят сломать всю систему плагинов.
Вы не понимаете, наши плагины — они за плагины не держат. Это так информационный мусор. У них все последние апдейты так или иначе касаются реализации PluginAPI. Вот они сейчас всё и ломают, чтобы потом не приходилось ломать плагины на своем API.
 
Это "по-первой". Когда плагины перейдут на UUID, возникнет вопрос их эмуляции.
Тут всё зависит от того, как сервер будет получать этот UUID. Если через всем известный checkserver, то допилить слегка авторизацию и будет ок.
 
Ну а как следовать оперативно? Если информация черпается в основном из твиттера ;) Как я понял, в этот раз должно быть всё более-менее оперативно. По крайней мере в девбилдах уже что-то касательно UUID добавляется. Я пока ещё не глядел, но раз добавляется, значит что-то будет :)
Я про оперативность добавления стандартных комманд в крюфтбукит, по скорости добавления фич из 1.4.7... А если UUID будет копаться из клиента, то... Будет очень много самых различных казусов...
 
У пиратов UUID либо через регистрацию с получением пароля, либо генерация на основе данных системы/железа. Других вариантов нет. Коллизии при такой длине пренебрежимо маловероятны.
 
У пиратов UUID либо через регистрацию с получением пароля, либо генерация на основе данных системы/железа. Других вариантов нет. Коллизии при такой длине пренебрежимо маловероятны.

Тут другой момент будет. Те кто использовал скины, выбирая имя чужого лицензионного игрока, лишатся этой возможности.
Чёрт, это ж придется CameraObscura переписывать...
 
UUID для пиратов генерятся тупым хэшированием ника при логине на сервер самим сервером.
И между прочим уже достаточно давно, ещё с выхода версии 1.7.2.
UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + this.i.getName()).getBytes(Charsets.UTF_8));

Так что никаких проблем с плагинами у пиратских серверов не будет.
Более того - сконвертировать все данные игрока из ника в UUID будет оооооооооочень легко.
У пиратов UUID либо через регистрацию с получением пароля, либо генерация на основе данных системы/железа. Других вариантов нет. Коллизии при такой длине пренебрежимо маловероятны.
Худший метод который можно только выбрать это чтобы UUID генерился на клиенте, слава богу что моджанги не совсем идиоты.
 
Последнее редактирование:
Не могу понять к чему суета?
Ну потрясет и перестанет, делов-то, перейдут игроки и все.
А вот с пиратами интереснее.
Эх еслиб была возможность защитить игру... Убрать пиратов из онлайна
Perfect *o*
Если запретят пиратам, то онлайн на серверах будет около 100 человек точно(я говорю о серверах с большим онлайном(пиратских)).
 
UUID для пиратов генерятся тупым хэшированием ника при логине на сервер самим сервером.
И между прочим уже достаточно давно, ещё с выхода версии 1.7.2.
UUID uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + this.i.getName()).getBytes(Charsets.UTF_8));

Так что никаких проблем с плагинами у пиратских серверов не будет.
Более того - сконвертировать все данные игрока из ника в UUID будет оооооооооочень легко.

Худший метод который можно только выбрать это чтобы UUID генерился на клиенте, слава богу что моджанги не совсем идиоты.
Значит для пиратских серверов это ничем не грозит?
Я так понял что с выключенным online-mode UUID будет генерироваться на стороне сервера независимо от лицензии игрока. Получается если изменить ник на Моянке и пойти продолжить играть на пиратском сервере то все равно его данные останутся на старом нике...
Если это так, то для 99% славянских серверов будет пофиг на это обновление.
 
Хуже незнания, только томительное ожидание.
Быстрей бы это уже всё доделали, а то переписывать надо, а на что - не совсем понятно.
 
Значит для пиратских серверов это ничем не грозит?
Я так понял что с выключенным online-mode UUID будет генерироваться на стороне сервера независимо от лицензии игрока. Получается если изменить ник на Моянке и пойти продолжить играть на пиратском сервере то все равно его данные останутся на старом нике...
Если это так, то для 99% славянских серверов будет пофиг на это обновление.
Да, оффлайн сервера практически не заметят это обновление. И да независимо от наличия у игроа лицензии айдишники будут генериться на сервере в оффлайн моде.
Единственное в чём может быть проблема так это в том что некоторые плагины могут решить попробовать конвертануть к UUID пытаясь резолвить его с сервера моджнгов не проверяя режим сервера. Но плагинов хрянщих данные не так много (Плагин приватов, плагин прав, плагин экономики, домов, варпов, ну и всё собственно.), поэтому в крайнем случае написать автоконвертер не составит труда.
 
Назад
Верх