en
Feedback
Задняя сторона VimeWorld

Задняя сторона VimeWorld

Open in Telegram

Какие-то ваймовские инсайды от разрабов для разрабов. Канал с новостями: @vimeworldcom

Show more
912
Subscribers
No data24 hours
No data7 days
No data30 days
Posts Archive
Осталось 10 минут

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

Ждем и надеемся что всем понравится! https://youtu.be/d14I_JUhA6w

Забываю постить про изменения, ну ничего страшного, ведь правда? - В Texteria анимация вне зоны видимости не будет ломать свои тайминги, а будет сохранять состояние и проигрываться дальше. - Добавлена новая проверка против ускорения времени системы - Увеличен размер буфера Stencil с 1 до 8 битов (видеокартам так проще) - Исправлена утечка 16мб оперативной памяти - В API теперь добавляется заголовок CORS при ошибочных запросах - Для ресурсов Texteria на клиенте было добавлено новое хранилище, которое само подчищает старые и неиспользуемые ресурсы - На ClashPoint нельзя ломать точку ресурсов, пока находишься внутри нее

За все время существования VimeWorld: - заработано 460,255,540,748 коинов (не учитывая донат) - заработано 54,822,736,928 опыта - выбито 43,300,503,044 коинов из сокровищниц - куплено 3,811,672 мистических сундука на 63,387,036,000 коинов - потрачено 119,032,355,677 коинов на персонализацию - сделано 6,216,098 реконнектов на BW/CP - сыграно 39,399,034 игр в SW - сыграно 14,901,926 игр на BW - выполнено 18,612,004 ежедневных заданий - собрано 81,499,704 золота на Murder Mustery - сделано 976,963 банов - активирован 161,701 промокод

В вебхук guild_disband добавлено имя, тег и уровень гильдии.

Добавлено ограничение на количество "диалогов" лс для предотвращения флуда.

Так как это тоже является задней стороной, то стоит продублировать ролик здесь https://youtu.be/prH2PrDBp6U

Pixel Battle разделен на 3 части: 1. Плагин на лобби 2. Расширение для Core (центрального сервера) 3. Отображение на сайте Плагин в лобби при запуске загружает из Core текущее состояние поля для покраски мира и для каждого подключившегося игрока грузит его статистику. Топ также загружается раз в 20 секунд. Как только игрок закрашивает любой пиксель - таймер задержки и отправляется событие на Core о закраске пикселя. На Core еще раз проверяется таймер задержки для синхронизации и по всем подключенным лобби рассылает событие изменения цвета и добавляет к нему активный тег игрока. Внутри каждого лобби есть очередь изменений, куда записываются все изменения поля за последний тик (события приходят асинхронно) и затем каждый тик все эти события применяются на поле с голограммой тега. Весь этот процесс настолько быстрый, что кажется что изменение произошло сразу в лобби. Хранение состояния и статистики в Core организовано следующим образом: - Информация об игроках (тег, количество закрасок, время следующей закраски) хранится в памяти и раз в 10 минут сохраняется на диск. Никаких хитростей тут нет. - Информация о поле хранится точно так же в памяти и раз в 10 минут сохраняется на диск. Для каждого пикселя хранится цвет, поставивший игрок и тег, под которым он его поставил. Теги для генерации топа в памяти представлены такой структорой: https://paste.xtrafrancyz.net/uXeBcMi.java. Так как топ по тегам должен генерироваться часто и это затратная операция, то сгенерированный топ кешируется на 20 секунд. Все счетчики тегов и пикселей обновляются при обработке события установки пикселя https://paste.xtrafrancyz.net/PRNgvPV.java. Вся эта информация в памяти занимает всего несколько мегабайт, поэтому не нужно придумывать никаких сложных систем. На диск записывается в кастомном бинарном формате со сжатием zlib. Сайт из себя представляет обычную html страничку, meta.json файл с топом и ссылкой на картинку с текущим состоянием поля и тысячи картинок с состоянием поля каждые 15 секунд. Каждые 15 секунд в фоновом режиме (cron) генерируется новая картинка и создается файл meta.json. Скрипт в html страничке просто напросто каждые 30 секунд скачивает meta.json и обновляет картинку на экране. Генерация картинки происходит через внутреннее API на Core и весь этот процесс очень прост: 1. Создается картинка 256х256 2. Проходимся циклом по x и y, где для каждого пикселя: 3. Берем из поля цвет (это мета цемента от 0 до 15) и сопоставляем его с заранее заготовленными RGB цветами 4. Сохраняем картинку в png и отправляем При создании начального рисунка на поле мы наоборот превращаем RGB цвет в картинке в meta цемента и сохраняем.

Интересно ли вам будет узнать подробности реализации Pixel Battle? Как работает сайт и как во всех лобби игра работает одновременно?

Карта горячих точек на поле Pixel Battle за первый день
Карта горячих точек на поле Pixel Battle за первый день

Благодаря Pixel Battle, в Texteria была найден баг - если элемент в мире был вне зоны видимости, то он не удалялся после окон
Благодаря Pixel Battle, в Texteria была найден баг - если элемент в мире был вне зоны видимости, то он не удалялся после окончания времени жизни. Удаление происходило только когда он снова попадал в зону видимости. На визуал это никак не влияло, но когда число элементов доходило до десятков тысяч, то фпс уже начинал проседать. Элементы текстерии в мире это в основном голограммы с именем тега на Pixel Battle.

Смешная ситуация сегодня утром была, кто-то пытался сделать DDoS атаку на Pixel Battle, но не учел что на сайте у нас нет нич
Смешная ситуация сегодня утром была, кто-то пытался сделать DDoS атаку на Pixel Battle, но не учел что на сайте у нас нет ничего, кроме маленькой html странички.

Завтра на Pixel Battle уже нельзя будет перекрашивать точки в такой же цвет, это поможет держаться в топе создателям артов.

Почему бы не рассказать о том какие у нас есть самопальные внутренние сервисы и для чего они служат: - Core (Java) - наш центральный сервис на MiniGames, который отвечает за загрузку всей информации в игре, за лс, за баны, муты, репорты, очереди, отслеживание запущенных игр, игроков онлайн, стримов, гильдий, друзей, пати и другие вещи в онлайне. - Api (Java) - логично, отвечает за api.vimeworld.ru. - SkinService (Java) - генерирует всевозможные аватарки из скинов игроков skin.vimeworld.ru. - SessionServer (Go) - отвечает за авторизацию в лаунчере и в игре sessionserver.vimeworld.ru. - VimeCDN (Java) - хранит и отдает все файлы для лаунчера (клиент игры, обновления лаунчера, наш вариант Java с античитом) cdn.vimeworld.ru. - golish (Go) - сокращатель ссылок для vime.one. - BungeeBalancer (Go, был на Java) - помогает балансировать нагрузку между BungeeCord, при подключении к серверу он говорит клиенту к какому именно BungeeCord подключаться, чтобы на всех был одинаковый онлайн. - bwp (Go) - позволяет выполнять http запросы в фоновом режиме, на нем работает Webhook API, разнообразные запросы к Cloudflare для очистки кеша и прочее. - Acamar (Java) - собирает текущий онлайн с наших серверов для вывода на сайте и в лаунчере. - throttler (Go) - занимается ограничением на количество авторизаций, восстановление пароля, и для других действий. - go2fa (Go) - отвечает за двухэтапную аутентификацию, она вынесена в отдельный сервис для большей безопасности. - uatu (Go) - собирает статистику по нашим сервисам, потом по ней строятся разные графики. - vk-group-graphs (Go) - собирает статистику сообщений группы (технической поддержки). - matches-db (Go) - хранилище для истории матчей. - go-baas (Go) - распределенный сервис для проверки и генерации паролей bcrypt. - map-config-parser (Go) - собирает информацию обо всех картах на MiniGames и предоставляет эту информацию для API, фильтров игр, приватных игр.

Готовится наш теперь ежегодный ивент на день рождения - Pixel Battle, можно начинать придумывать арты и собирать людей. https
Готовится наш теперь ежегодный ивент на день рождения - Pixel Battle, можно начинать придумывать арты и собирать людей. https://vime.one/pb В этот раз вместо шерсти для цветных блоков будет использоваться сухой бетон, он ярче и красивее.

На клиенте было значительно оптимизировано потребление памяти. В итоге FPS увеличился, а частота и количество фризов уменьшил
На клиенте было значительно оптимизировано потребление памяти. В итоге FPS увеличился, а частота и количество фризов уменьшилось.

Повторно показываем вам видосик с одной из наших будущих карт.

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

В API из метода /online/staff была убрана текущая игра модератора, а также в методах session у модераторов будет показываться только статус онлайн, без текущей игры.