Понимание базового устройства Figura

#figura #minecraft #java #modding #4D-skins #article-in-russian

Предыдущая статья в этом гайде: «Добро пожаловать в Figura»

Решимость — это похвально!

Если вы читаете это — значит, вы либо человек с большим количеством свободного времени и огромным желанием заработать себе новую гиперфиксацию в виде разработки Figura-аватаров… либо вы идиот, который проигнорировал в конце предыдущей статьи моё излишне настойчивое предостережение о том, что вы можете потратить невероятно много времени и так и не получить внешний вид своей мечты.

В любом случае — вы здесь, а это значит, что мы продолжаем наше приключение по кроличьей норе в виде мода на Minecraft.

В предыдущих сериях…

В предыдущей статье я рассказывал о том, что такое Figura, кто такие «Аватары», откуда их брать и как их экипировать. В этой же статье мы более фундаментально рассмотрим последний пункт.

При описании порядка действий для экипировки аватара я особо сильно акцентировал внимание на загрузке аватара в облако. В тот момент я не стал обозначать, что значит «загрузить аватар в облако», поскольку эта тема заслуживает отдельного материала… Который вы сейчас и читаете.

Про облака…

Облаком в контексте Figura называют Figura Server Backend (FSB, или бэкенд в простонародье).

Как вы можете помнить, Figura — это мод на Minecraft Java, не имеющий собственной серверной части. Что ж, пришло время признаться: это утверждение не совсем правдиво. Видите ли, внутри самого мода серверной части нет, но тем не менее она существует. И этой самой серверной частью и является Figura Server Backend.

FSB1 можно запустить как отдельную программу на вашем сервере, но чаще всего в этом просто нет необходимости, так как разработчики мода держат официальный бэкенд по адресу figura.moonlight-devs.org. Все пользователи мода при заходе на сервер или в одиночный мир по умолчанию подключаются к официальному бэкенду. Тем не менее стоит упомянуть, что вы можете развернуть свой бэкенд и ввести его адрес в настройках Figura:

IP-адрес FSB в настройках Figura

В этом гайде мы будем работать только с официальным FSB и не будем рассматривать развёртывание неофициальных бэкендов Figura и подключение к ним.

Зачем вообще нужен FSB?

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

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

Иными словами, что-бы какой-то мод мог передавать свои данные между игроками, этот самый перечень нужно модифицировать — причём не только на стороне клиента, но и на стороне сервера.

Цепочка передачи данных с сервером в качестве посредника

Figura такой подход к передаче данных не использует, потому что в противном случае мод не работал бы на серверах без установленной серверной части Figura. Для решения этой проблемы и был придуман FSB1. Данные о Figura-аватарах с Minecraft-сервером не взаимодействуют вообще: посредником между игроками выступает FSB1, стабильность и состояние которого никак не зависит от сервера, на котором вы играете.

Цепочка передачи данных с FSB в качестве посредника

Quid pro quo2

Естественно, не всё так просто. Особенность такого подхода можно сравнить с монетой: у неё тоже две стороны. Из-за того, что все аватары проходят через FSB1 и хранятся там же, на сервер бэкенда Figura приходится колоссальная нагрузка. Ведь теперь не двадцать игроков обращаются к своему Minecraft-серверу, а ТЫСЯЧИ пользователей обращаются к одному лишь FSB1. К тому же, как я упоминал ранее, FSB1 также выступает в роли хранилища аватаров всех игроков, использующих Figura, для чего нужно МНОГО места.

Чтобы FSB1 не падал под натиском натуральных DDOS-атак, разработчики ограничили ресурсы, выделяемые на одного игрока. Чуть позже мы рассмотрим их все, а сейчас мы остановимся на самом ощутимом из них…

102.4kb

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

Самой объёмной частью вашего аватара можно считать звуковые файлы: звук крайне плохо поддаётся сжатию, и всего 3 секунды любой мелодии могут весить далеко за две-три сотни килобайт. На втором месте по занимаемому объёму зачастую идут текстуры. Сжатию они поддаются в разы лучше звука, но тем не менее сделать персонажа с 4К-текстурами у вас вряд ли получится.

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

Заключение

Работать с FSB1 и его ограничениями порой непросто. Тем не менее каждый год сообщество мода умудряется сделать то, что раньше казалось просто не мыслимым. Это говорит о том, что все эти лимиты, какими бы жёсткими они не казались, всё же не так уж и страшны. Надеюсь, данная статья помогла вам разобраться в фундаментальном устройстве Figura. Cпасибо за внимание.

Следующая статья в этом гайде: «Ваш первый аватар»

  1. FSB — Figura Server Backend. Также известен в данном контексте как бэкенд и облако. ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8

  2. Quid pro quo — «Что-то за что-то» в переводе с латыни. ↩

  3. Технически аватары должны весить меньше чем 102.4 килобайта. Такая погрешность связана с тем, что в одном килобайте не тысяча, а 1024 байта (100 * 1024 = 102400 байт, или 102.4kb). Такую прибавку в 2.4 килобайта часто не упоминают, так как «100kb» писать проще. ↩