Papanda 2430 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Приветствую всех, дорогие друзья! Как начать, чтобы не повторяться и не писать клишейными фразами... Сижу я значит в конфе? обсуждаем новый Updater и по завершению я говорю одному из разработчиков "Валера, пошли на отдельный канал, пару моих идей быстро сделаем". На этом моменте я обычно получал ответ уровня "Сейчас чай заварю и погнали". Но тут ответ был сосем другой. К такому меня жизнь е-глобал не готовил. - У меня еще куча задач, я сейчас не могу. - Чтооооо? - А что ты хотел? ГДшников прибавилось, задач понаставляли. Когда мне их делать? Давай потом. Сижу я, обтекаю, и думаю "понанимали 40 людей в команду и мешаете мне работать". С иронией, конечно, с пониманием важности этого процесса, но звучит то забавно. Секундочку, а ведь не плохое название для поста "Приключения Папанды". Плюс я давно уже хотел что-то написать, но все никак не доходили руки. Да и, честно говоря, я хотел писать не о том, о чем хочется читать. А тут такой подарок судьбы - прикольная фраза. Моя фантазия включилась, литературная волна настроилась и я начал писать. По примеру предыдущих статей - я не знаю, о чем буду писать дальше. Знаю, что название мне понравилось, внутри эмоционально срезонировало и я точно смогу выдать лонгрид. Давайте посмотрим, что из этого получится. Раньше ведь получалось, верно? :) Также хотел напомнить, что это 5-я история из серии "Приключения Папанды". Если вы не читали предыдущие - их можно найти тут: Б*я, зачем вы это делаете? Заложники успеха или Ошибка Выжившего. РетроПерСпектива. Разработка сервера в бункере. 3-й сезон MasterWork-а стал по истине прорывным и судьбоносным открытием. Мы укрепились в сознании игроков, закрепили имя бренда и разработали новые крутые вещи: умения (новые и баланс существующих), Mid Company (не все одинаково хвалили, но как событие оно точно состоялось), Гном Маг и так далее. Почему именно 3-й? Потому что 1-2 раза можно выстрелить на удаче и на стечении обстоятельств, но 3-й - это уже претензия на стабильность. А беря во внимания условия, при которых мы разрабатывали и открывали сервер - это победа над победой. Также стоит отметить, что в рамках этого открытия к нам пришли новые люди в команду. Кто-то потому что потерял работу и искал новое место, кого-то мы привлекли, кто-то по стечению обстоятельств. Это, конечно, создало дополнительную нагрузку, однако основное началось в межсезонье. Во-первых MasterWork Eternal стал неожиданностью. Мы планировали создать сервер, который мог бы объединять игроков, которые хотят играть на протяжении года, вне зависимости от сезона, а сезонные достижения попадали бы туда из года в год. Мы работали над этим, старались. Проще говоря мы верили, что у нас получится, но не ожидали что прям аж так, и так быстро. Во-вторых, летнего межсезонного перерыва для команды фактически не было. Я регулярно пишу, что мы работаем без перерывов как таковых, даже при условии одного открытия в год. Но в связи с продолжительной жизнью MW3 и активной игрой на MWE - мы продолжали работу в том же темпе и сами не заметили, как уже работали над созданием MW4. Помните я писал, что к нам добавились люди? Так вот в конце весны-лета к нам присоединились еще специалисты: Разработчик ядра, гейм дизайнер, редактор карт, создатель эффектов, саппорты, маркетологи, аналитики, художник, дизайнер, Лучи всей командой (об этом скажу отдельно). И это хорошо! Это органический рост. Именно такое развитие у нас идет и только так компании могут действительно развиваться (имеется ввиду разница между ростом планомерным "само с собой, по возможностям" по сравнению с "вливанием инвестиций и наймом сразу большого количества сотрудников"). И что же тут плохого, спросите вы? Чем же тебе мешает 40 людей? А произошло следующее: люди органично добавились, и начали по чуть чуть интегрироваться в рабочие процессы. И именно это и вызвало некоторые сложности: 🎭 Культура и идеология проекта. Новым людям нужно аккуратно и тщательно доносить основные идеи и принципы нашей работы. Добавление скила ШЕ - это не просто строчка кода, это не просто "о, прикольно было бы, если бы мы...". Это ценность, которую мы несем. Это часы, дни и годы, которые мы провели в игре. Это осознание боли игроков конкретного класса и членов их групп, это то, что сможет улучшить игровое восприятие именно так, как мы этого хотим - не агрессивно, интересно, уместно. Мы не хотим давать уберпалки, мы не хотим приравнять все классы друг к другу, однако сделать каждый класс равно интересным в его уникальном геймплее - это то, что и является нашей культурой. Можно легко пойти к независимым разработчикам и приобрести 100 локаций с разными свистоперделками и таким способом расширить кол-во спотов. Можно вынести закена с корабля на порт спот. Но это не наш путь. Вместо этого мы расширяем мост, делаем дополнительный проход через "бар", убираем лишние коробки и добавляем новые препятствия. Это сложнее, это дольше, это правильно и елегантно. Это наш путь. На этом открытии вы сможете также оценить работу по расширению некоторых локаций. Если это то, что вам придется по душе - мы активно продолжим работать в этом направлении. Другими словами мы не создаем новую и неизвестную локацию, мы поработали с уже привычными, что не разорвет привычно-ностальгическое восприятие, но добавит новые стратегические и тактические возможности. 😎 ⚙️ Рабочие процессы. Новым коллегам мало просто интегрировать ценности команды. Нужно конкретно проработать путь от "у меня идея", до "уважаемые игроки, мы с радостью представляем вашему вниманию..". Условно этот путь выглядит так: Захожу в знакомый мне Магазин и вижу, что они переставили ряды и полки, переместили холодильники, добавили островки с товарами. О боже! Это же лабиринт! Гулять, изучать! По дороге домой анализирую то, что увидел. Хммм.. Они переставили ряды так, что теперь появилось свободное место и добавили туда стенд с чипсами... Да это же новый фарм-спот! Т.е. не перестраивая здание, а просто добавляя\меняя "стенки" - они оптимизировали место и создали новый спот. Выходит, что не обязательно кардинально менять локацию\создавать совершенно новую, чтобы добиться эффекта расширения. Интересно. Возможно это можно где-то применить. Прихожу домой и открываю задачу с описанными проблемами, которые мы собрали с форума, личек, стримов, петиций. "Мало спотов для партийной игры на первых этапах". О! Проблема сформулирована, а у меня есть мысли по этому поводу! Открываю клиент, нажимаю World Info, сортирую по уровням локаций, выписываю их. Лечу на каждую и внимательно рассматриваю место внутри и вокруг. Делаю скрин, переношу в Paint Photoshop, возюкаю карандашом, накидываю пару идей и закрываю все программы. Нужно дать этому настояться. На следующий день я нахожу дремлющего в Slack-е геймдизайнера и со словами "а ну пошли покажу чет 🤪" рассказываю ему упрощенную схему того, что описал выше (без истории из магазина, но с набросками в ФШ). Описываю проблему. Накидываю идеи, он отбивает. Потом наоборот. У меня сложилось понимание того, что у нас есть и как её можно решить. Открываю задачник, начинаю описывать. Параллельно снова открываю клиент с локацией и уже более структурно рисую то, что обдумывал и обсуждал. Материалы собраны. Что дальше? Назначаю конфу для брифинга и зову всех, кто может концептуально оценить идею и реализацию. В нашем случае это не всегда Гейм\Левел дизайнеры. У нас все разработчики небезразличны к игре и понимают отличие Перила от Лабы. Обсуждаем, фиксируем результат в задаче (своего рода диз. док) и меняем статус на "📌 готово к работе". Все? Моя работа закончена? Та щаааазззззз. Отправляюсь к проджекту, описываю ценность реализации, эстимейтим сроки, смотрим приоритеты и загрузку (диаграммы Ганта и прочих "кантов"). Проводим еще один брифинг на технической планерке и отдаем задачу в работу. Тут начинается магия. Ядро, скрипты, аи, меши, текстуры и так далее. Ну далее все понятно: делаем, тестируем, правим и в продакшен. Просто же, правда? Да, если ты уже в этой команде это делал. А так нужно со всеми познакомиться, понять особенности каждого разработчика. Дальше за дело берутся тестировщики. Нужно убедиться, точно ли тестировщики поняли задачу, провели ли базовые "манки тесты" и проверили ли "едж кейсы". Визуализация - тоже самое: поставить художнику задачу, понять, нужно ли видео, нужна ли озвучка Сафа и так далее. Все есть - дело за патчноутом. Ну, тут моя личная боль. Пишется он реально сложнее, чем хочется верить. Возможно эта тема для целого отдельного приключения, посмотрим. 📈 Количество разработчиков и задач. Не все поставленные задачи попадают сразу в очередь на реализацию. Более того - не все доходят от идеи до реализации в целом. Нужно точно понимать, что сейчас является приоритетом, ведь все сделать нельзя. А некоторым идеям\задачам мы попросту говорим "нет" и очень важно, чтобы новые участники это понимали, а не думали, что их работу обесценивают. Думать - нужно, штурмовать проблемы\идеи - нужно. Но не все они попадут в игру, потому что мы имеем банальное ограничение в возможностях реализации: как максимум из-за того, что они не вписываются в концепцию МВ, а минимум из-за того, что разработчики не могут сделать все по времени. И вот тут я и раскрою тему названия этого поста. У меня есть любимый разработчик 🥰. Точнее год назад был 😔. Любимый разработчик это тот, к которому я могу прийти "в любой момент" и сделать охуенно. Про что я конкретней? После того, как мною сделаны мои основные задачи по проекту - я люблю заняться около игровыми задачами. Например написать такой текст, создать пасхалки, сделать ивент, скрытый квест и так далее. Подобные задачи делались не как основные задачи с постановками и питчами, а как "моя идея + доверие команды к моей компетенции = созданный контент". А сейчас с этим стало сложнее. Пришло больше ГД, которые ставят важные-основные задачи, а, как результат, мой любимый разработчик справедливо занят их реализацией. Что я тут хочу сказать... ЭТО МОЙ РАЗРАБОТЧИК, НЕ ТРОГАЙТЕ, АДДАЙТЕ БЛЯДЬ, НАЙДИТЕ СЕБЕ ДРУГОГО, @Apache Ant НАЙМИ ИМ ЕЩЕ ОДНОГО, НУ! 😄 По этому новых прикольных вещей, которые наполняют мир, создают атмосферу, разбавляют игру теперь... БУДЕТ! Вы думали я что, просто схаваю это и оставлю вас без приколов и инфоповодов? Нет, я не этот ваш оксиморон! Я говорил выше, что наши разработчики знают игру и понимают, что код, который они пишут - это не просто код. Это конкретные вещи, это ваши умения, которые создают игровой опыт для вас, вашей группы, ваших оппонентов и так далее. Это конкретные предметы, которые вы носите и усиливаете свой класс и многое-многое другое. Это ваши эмоции и игровой опыт. Именно по этому я смог донести до программиста важность реализации и моих задач в том числе. Справедливый вопрос: то есть вместо того, чтобы уменьшить лаги, создать Дракона Серебренного Заката, добавить ивент " Пир Альбатросов" вы делаете пасхалки и удаляете пробелы в текстах между "что бы"? Нет, друзья, это не так. Я подчеркну (и подчеркнул), что основные задачи являются приоритетными. Сначала основа - потом "пасхалки". По этому подобные вещи делаются, фактически, в 2 часа ночи под "пивчик и репчик", атмосферненько. Ну да, программист будет меньше спать. Да, жена перестанет узнавать его в лицо (а только затылок перед монитором). Но такова цена! Цена того процента игроков, которые нашли пасхалки на втором MasterWork-е. И мы, добровольно, готовы её платить (точнее за лайки, поставьте лайки, ну!) Так, о чем это я..? Ах, да, MasterWork - крутой! У нас крутая команда, ценности и идеи, реализация и планы. Давайте о планах еще поговорим. Этот сезон станет тем, где мы значительно больше смотрим и работаем в сторону стабильности, но и не оставим вас без определенных фишек. Давайте разберем несколько примеров, чтобы вы предметно поняли, о чем я говорю. Буквально с открытия первого MasterWork-а мы столкнулись с проблемой производительности игры в целом (клиент и серверная часть). Нагрузки были колоссальными. А все потому, что корейцы не закладывали такой онлайн для своей игры. Значит ли это, что на проектах ранее мы не занимались оптимизацией? Конечно не значит. Занимались и занимались активно. Старички помнят, как 10 лет назад нельзя было играть больше 30 минут, чтобы окно не "критануло". Потом 30 минут превратились в час, час в пять, а сейчас крит - это скорее диковинная дичь, а не реальность. Так вот вся эта оптимизация, которая делалась до первого MW - просто детский лепет. Просто. Детский. Лепет. От "поверхностной оптимизации" мы перешли на глубокий разбор пакетов. От разборов пакетов к переписыванию логики пакетов. А теперь расширение потоков на сервере. Так, стоп. Зачем я это пишу, ведь у нас есть господин Хеопс. Кстати если думали, что я душный - вы измените свое мнение после его комментария, ведь все относительно 😂 Скрытый текст Xeonc "Былинный сказ про оптимизацию" Новые времена требуют новых решений, или как натянуть сову на глобус, или впихнуть невпихуемое. МВ1 был проектом рекордсменом, относительно одновременного онлайна и нагрузок в целом для рынка ПТС серверов, как минимум. Собранный онлайн превысил инженерное ограничение рекомендованное самими корейцами, и достигло цифр, при которых официалы уже ставили лимит на онлайн и включали очереди. В процессе эксплуатации стало понятно почему - архитектура игры и максимум, что можно выжать из железа это неумолимый аргумент, с которым спорить крайне сложно. Превысив рекомендуемый онлайн, сервер сразу сказал свое ФЕ и начал разваливаться на запчасти. Падал сам сервер, падали нпц, лагали телепорты, в масс пвп не было видно половины присутствующих игроков, -100 фпс в Гиране и прочие радости жизни, которые не очень помогали радоваться рекордному онлайну и 1000+ игроков в бигваре. Проблема сложная, с наскоку не решается, поэтому приходилось решать по старинке - сокращение окон, слотов оффтрейдеров, и терпильными пирожками за падения сервера. Но к МВ2 предстояло решить эту проблему принципиально иначе. На летнем тимбилдинге вопрос глубоко разбирался, было очевидно, что на волне хайпа МВ1 - онлайн МВ2 станет еще больше, и игрокам нужно обеспечить комфортную игру. Но как это сделать, и как это проверить до старта? Вопросов много, ответов мало, но делать нужно. Первичный ответ лежал на поверхности, Л2 архитектура - привет из прошлого, и работает только на 8 ядрах, и у нас и так был куплен лучший сервер, в плане тактовой частоты ядер, и при этом на пиковых нагрузках они забиты на 100%. А значит нужно переписывать половину сервера, чтобы обойти это архитектурное ограничение. К началу октября стало понятно - что это настолько огромный пласт работ, что к старту сервера шансов успеть с этим нет совершенно никаких, и нужен план Б. План Б. Раз путь увеличения ресурсов сервера оказался закрыт, мы пошли по пути поиска путей оптимизации использования имеющегося объема ресурсов. В чем основная проблема с производительностью? Скопления игроков в одной локации. Еще большая проблема - когда это активное масс пвп. Проблематичность тут в том, что сервер должен собрать информацию обо всех игроках рядом друг с другом, и разослать данные всем обо всех. Т.е. на лицо экспоненциальная прогрессия нагрузок. Если в локации 2 игрока, то одному игроку нужно сообщить информацию о втором, а второму о первом. А если в локации 2000 игроков? То каждый игрок должен разослать информацию о себе 2000 других игроков, и получить информацию о них. На МВ1 во время масс пвп это наглухо забивало не только вычислительные мощности сервера, но и канал, и лагал весь сервер в лучшем случае. В худшем - просто падал. Окей, а что с этим делать? Для начала расширить пропускную способность сети, благо для этого были возможности, но этого все равно недостаточно, т.к. сервер не будет успевать обрабатывать весь объем информации. Начался трудный процесс поиска, а что же в серверной логике работает не оптимально. Начали с оффлайн трейдеров, оффлайн трейдер для сервера - обычный игрок, который получает информацию обо всех игроках и нпц вокруг себя, но это очевидно не нужно, отключаем это. Далее, после многочасового исследования сниффером стало понятно, что сервер генерирует достаточно большое количество избыточных данных, например при каждом касте скилла, или изменения характеристик персонажа - иногда отправляется по 3-4 тяжелых пакета данных с одинаковым содержимым. Вычистили все эти дубли, + разбили тяжелые пакеты на фрагменты, где при обновлении части данных по персонажу отправляется пакет не со всеми параметрами, а только с той частью, что была изменена. В процессе автоматических тестов мы получили очень многообещающие результаты - фпс вырос под нагрузками примерно в 2 раза, а объем данных сократился в полтора. Следующим шагом было проведено исследование работы алгоритма рассылки информации (broadcasts), где тоже было выявлено узкое место, асинхронность этого процесса была не оптимальна, и использовала имеющиеся 8 ядер не равномерно, и создавались узкие места в производительности. Этот алгоритм выровняли, на ОБТ тесты в Гиране были очень многообещающие, т.к. бегало около тысячи человек, кастовало скиллы, точило вещи, разговаривало, несколько раз по команде Саферо юзали массовые скиллы, и показатели были великолепные относительно предыдущих наблюдений. Но как план битвы рушится с первым пушечным выстрелом, так и у нас старт сервера вскрыл проблемные места в оптимизации, которые на этапе планирования были не предусмотрены, а часть вылезла в совершенно неожиданных местах, где на МВ1 было просто меньше онлайна, или сервер падал раньше, чем эти проблемы возникали. И вот тут хроника реальных проблем, поиск узких мест и их устранение: Сервер стартует, проходит пару часов, и при том что в целом ничего не лагает, начинают кошмарно лагать нпц - открытие диалогов, команды петам и саммонам, с делеем по 5-15 секунд. Проблема новая, неожиданная, и совершенно непонятная. Но тут один из техников заметил, что игроки репортят о проблемах в Соло камалоке, где награды могли рассчитываться по 10 минут, а это очевидное проблемное место. Для теста отключаем соло камалоки вообще, лаги практически прекращаются. Это хорошо, мы на правильном пути, но соло камалоки то нужны, что делать? Самое простое решение - сократить количество одновременных инстансов оказалось не очень эффективным, и скриптер идет смотреть логику происходящего в инстансе. А там полная жопа, там настолько кривая, сложная и нагружающая сервер логика, что я даже не знаю как это описать.... ну вот как закручивать лампочку в 10 человек, когда 1 человек держит лампочку, второй человек крутит первого, третий второго.... десятый девятого. Конечно можно закрутить лампочку и так, но НАХУЯ? Переписывается логика, где все подсчеты упрощаются раз в 20. Но все равно - вечером когда онлайн подбирается к 8к начинаются лаги. Решили тем, что модуль работы с нпц, с базой и саму базу переопределить на 9-16 ядра процессора, чтобы на первых 8 работал только игровой сервер и не было дефицита ресурсов + расширять протоколы взаимодействия между игровыми модулями. На этом лаги нпц были побеждены, это был вечер понедельника и до первых эпиков в среду оставалось еще 2 дня... И вот среда, 17 ноября, 19:40, час X, альфа и омега, строгий судья всех результатов нашей работы. И это полное фиаско. Как только начинаются массовые телепорты игроков в рамках подготовки войны за эпик - "плохо" становится всему серверу, и очень сильно. То что само массовое пвп - это 1000 человек вкатываются друг в друга и становятся в лаг, и любое действие имеет отклик секунд 15, пока оставляем за скобками. Первичная задача - решить глобальные серверные лаги, чтобы пока "биг вар лагает на эпиках", остальные этого не ощущали. Тут стоит ненамного остановится на том, что такое телепорт технически, и почему это вдруг стало проблемой. Телепорт персонажа - это последовательность из двух тяжелых действий, первое - игрок "исчезает" из первой локации, и уведомляет всех вокруг, что его в этой локации больше нет. А потом появиться в новой локации , и уведомить всех вокруг, что игрок появился в этой локации. И так делает за короткий промежуток времени 1000 игроков, помимо того что и на всем остальном сервере игроки тоже куда-то телепортируются менее организовано. Окей, проблему диагностировали, реализовали очередь на телепорт, сделали стресс тест на сервере, пока 400 игроков откликнувшихся на просьбу Саферо летало в Дион\Круму\Ант нест\Глудио все было ок, а вот когда прилетели все в Гиран, где дофига людей - сервер просто лег. Эпиков пришлось отменять и заняться оптимизацией процесса телепортации и подбора оптимальной настройки очереди. Через 2 дня было получено подтверждение эффективности полученного решения, и достигнута ачивка "лаги бигвара - проблемы администрации и бигвара, но остальной сервер может комфортно играть". На десерт остается самая сложная проблема, или "как впихнуть невпихуемое". И дать комфортную игру в условиях, к которой архитектура игры не приспособлена вообще. Суть проблемы в том, с какой скоростью генерируются данные о событиях в масс пвп, их обработка сервером, и отправка результату всем игровым клиентам быстрее, чем появляются новые данные. На первом этапе мы обратили внимание на то, что происходит в кланах при масс пвп. Например, игрок Клана А - убивает игрока клана Б, все игроки клана А получают об этом уведомление, и все игроки клана Б получают об этом уведомление, а еще генерируется событие списания\начисления крп, и таких убийств происходит штук 50 каждую секунду, отключили эти уведомления, следующий раунд эпиков показал, что хоть стало немного полегче, но в ситуации когда качество игры было 0 из 10, а стало 1 из 10 - это и близко неудовлетворительный результат, нужно искать дальше. Следующая точка анализа - количество действий происходящих во время масс пвп, взять хотя бы для примера флешку. Игрок начинает кастовать флешку - все игроки вокруг должны это увидеть, игрок закончил кастовать флешку - идет сбор целей для нее, нанесение урона, отправка данных о том, что получил урон, и так на каждый скилл. Формируется очередь на отправку данных от сервера , и скорость появления новых данных на отправку больше, чем возможность сервера отправлять эти данные в клиент игры = неиграбельные лаги. Следующим этапом была разработка специального режима работы сервера в условиях экстремальной нагрузки, с сокращением обрабатываемой информации так, чтобы было понятно, что происходит на экране с одной стороны, и устранение лагов с другой. Реализовали на сервере аналог "лайт патча", который бы отключал отправку данных о ряде АОЕ скиллов + сократить зону видимости внутри которой игроки видят действия друг друга, отправлять огромное количество данных об изменении ХП не моментально, а пакетно - раз в 666 милисекунд. Следующий раунд эпика , стало получше, но все еще 4 из 10, и результат недостаточен, нужно копать дальше, а на данный момент это уже 2 недели работы и исследований каждый день по 12-15 часов, не считая предстартовых приготовлений. Один из техников уже ловил глюки(цитата из рабочего чата): Я тут смотрю сон, идёт пвп на коре, люди бьют друг другу лица, почему-то в альянсах есть титаны Легио Мортис с одной стороны, с другой Легио Кибернетика. Они в текстурах гномьих Саммонов закидывают АОЕ во вражескую толпу. Потом кто-то релогается на титане, и падает сервер и я просыпаюсь его чинить . Это нормально? Копаем ситуацию дальше, юзаем флешку, в сниффере смотрим какие данные отправляются и принимаются, на одну флешку генерируется 15 пакетов, из которых 4 достаточно тяжелых и связанных с изменением инвентаря(флешка же использует руду). Изменение инвентаря вызывает отсылку статуса изменения персонажа всем вокруг, зачем это происходит? Может изменится статус перегруза и изменение скорости, о чем игроки вокруг должны знать, но отсылается этот пакет каждый раз, а изменение перегруза происходит крайне редко, убираем эту логику, и отправляем пакет только если статус перегруза, а как следствие - скорость персонажа действительно меняется. Ставим обновления на сервер и уже с ними проходят первые осады, где получаем впервые действительно играбельные результаты, а на следующий день получаем подтверждение на эпиках, где проблематичным местом стало 800 человек бьющих одновременно Квину. Еще раунд оптимизаций обмена данными при массовом нанесении урона по нпц - и вот мы тут Как видно на скрине - ядер у нас достаточно, но сервер использует только 8 и они загружены в потолок во время прайма. То что написано выше, было подготовлено и не опубликовано еще 2 года назад, в разгар второго сезона. Прошло почти 2 года, и все 2 года работа продолжалась дальше. К четвертому сезону мы наконец подходим с готовностью реализации не только плана Б, описанного выше, но и плана А, у нас получилось завершить сложнейший этап разработки - расширить количество потоков, в которых сервер может одновременно работать, и серьезным образом расширить вычислительные мощности сервера. Технические термины мало кому о чем говорят, поэтому приведу грубую аналогию, вот есть 8-полосное шоссе где-то в центре мегаполиса, и там всегда пробки, потому что 8 полос это много, но машин тысячи и тысячи, просто расширить количество полос - невозможно, вокруг плотная застройка, некуда расширять, а нужно. Вот примерно такого же уровня задача стояла и у нас, т.к. утыкалась в жесткие ограничения изначальной архитектуры сервера. И все равно не смотря на это, хоть на этапе обсуждения мы и не были уверены, что успеем с реализацией и тестированием этой разработки, мы рекомендовали команде рассмотреть опцию открытия двух серверов, потому что в ходе третьего сезона вскрылись и другие нюансы оригинальной архитектуры, в которые мы уперлись взяв 12к онлайна(что уже 2 раза выше, чем возможности базовой архитектуры сервера), и поэтому были регулярные падения связанные с хардкапом количества предметов, которые одновременно могут быть в памяти игры - 900к предметов, решение этой проблемы заняло приличное количество времени, потому что такие хардкапы, связанные с выделением памяти под массивы крайне и крайне негибки, и затрагивают много всего, и если попытаться в новом сезоне взять уже 18к онлайна, какие еще проблемы могут возникнуть - прогнозировать заранее крайне сложно, и гораздо рациональнее обеспечить качественную игру на двух серверах, т.к. общего онлайна потенциально хватит на два живых наполненных сервера. Так же напомню про фактор, описанный в старых записях - экспоненциальный рост нагрузок, для этого приведем очень грубую математику: Масс пвп 100х100, в котором каждый игрок, допустим, совершает 3 действия в секунду. Это 200*3 = 600 действий в секунду от всех, а еще каждое действие игрока должны увидеть все вокруг, т.е. 600 действий * 200 игроков = 120 тысяч действий в секунду. Возьмем реалии третьего сезона и его средние значения на пиках - масс пвп 400х300х150х150, это 1000 игроков (а бывало и больше), 1000*3 = 3000 действий в секунду, и умножаем это на 1000 игроков - это уже 3 миллиона действий в секунду. Т.е. количество людей увеличилось в 5 раз, а количество обсчетов на сервере в 25 раз. Это приводит к очевидной проблеме, которая является только одной из множества других, даже серьезным линейным увеличением вычислительных мощностей невозможно решать экспоненциальный рост нагрузок, потому что если предположить, что масс пвп вырастет в 2 раза по количеству людей, это уже будет 2000*3*2000, уже 12 миллионов действий в секунду только внутри масс пвп, не считая действий игроков на всём остальном сервере, т.е. людей в 2 раза больше, а нагрузок в 4 раза больше, и это уже может не вывезти ни большее количество процессоров, ни пропускная способность каналов в принципе. И лучше добиться того, чтобы игра для 9-12 тысяч людей была комфортна, чем пытаться впихнуть всех людей в один игровой мир, который ни с какой стороны на это не рассчитан. Оптимизация - процес бесконечный. По этому мы продолжим работать над ней и на протяжении 4-го сезона и после него. Известная любому игроку проблема: хочу взять квест\сменить саб, а инвентарь забит наглухо, а это значит - время выкидывать все на землю, пусть 🕊️ чайки клюют, мне не жалко! В рамках работы над прошлыми открытиями мы уже исправляли этот момент: теперь идет не фиксированная цифра предметов, а % от общего кол-ва расширенных слотов, да и сама цифра минимального необходимого свободного места была увеличена (короче теперь с более забитым инвентарем можно проводить эти действия). Решило ли эту проблему полностью? Нет, не решило. Устраивает ли это нас? Стало лучше, но полностью не устраивает. По этому была поставлена задача о расширение количества слотов в инвентаре (и в банке, кстати, тоже) более того лимита, что есть сейчас. Звучит просто, правда? "Не в мою смену" говорит воображаемый корейский разработчик, который писал эту часть кода. "Идите ка вы на***й" говорит уже наш разработчик, посмотрев, как реализован лимит слотов инвентаря (спойлер: через жопу, а именно статическими массивами). "Нужно делать" говорю я и ставлю задачу, паралельно уклоняясь от матов, летящих в мою сторону. И это будет сделано на MW4. А ирония тут в том, что подобные вещи даже не всегда попадают в патчноут, чтобы не отвлекать вас от изменений, которые влияют на основной геймплей. При этом сделать совершенно новое умение (создать новый эффект, найти анимацию, добавить в скил дату, нарисовать иконку) бывает даже легче, чем "всего навсего" увеличить инвентарь. И подобных задач сотни и тысячи. И все это мы делаем, чтобы вы смогли зайти на сервер и играя не ощущать шероховатость игры, которой недавно выполнилось 20 лет 🥳. Еще одним важным и масштабным изменением на проекте стало долгосрочное партнерское соглашение с командой Lu4-ей и их интеграцией в команду. Сначала я хотел описать, что такое Lu4, но понял, что лучше всего это сделает представитель их команды. Но перед этим я хотел с нашей стороны объяснить, почему мы приняли решение о такой коллаборации и почему именно сейчас. Начну с последнего. На самом деле мы давно пытались общаться и найти точки соприкосновения. Но на тот момент ребятам было это не очень интересно. Думаю, что дело в той репутации проекта, которая была вокруг нас. В первую очередь это было про "сессионные сервера на несколько месяцев". Чтож, это правда, мы действительно были такими, не вижу причин скрывать и оправдываться. Но благодаря концепции MasterWork и вашей поддержке - мы смогли сломать этот стереотип и стать теми, кому доверяют как игроки, так и коллеги. Вы знаете, что я не скуплюсь на благодарности и делаю это искренне. Так вот мы благодарны всем и каждому, кто поверил и поддержал наш проект. Только благодаря вам мы там, где есть сейчас, делать то, что любим и можем радовать вас контентом, на который вы заслуживаете. А вот с решением было относительно просто. Как я написал выше - мы давно приняли стратегическое решение в команде двигаться в рамках этой игры до органичного момента, когда мы, а самое главное вы, будем готовы выходить на официальный рынок с известным и понятным вам продуктом, но без "доказательного пиратства" 🏴☠️. Говоря откровенно, количество концептуальных, технических и визуальных переработок было проделано действительно колоссальное количество, но, в тоже время, нельзя не кривя душой сказать, что мы создали или планируем создавать именно концептуально новую игру. В данный момент мы убеждены в том, что от вас нет запроса в создании новой MMO RPG. Мы видим, что игрокам нравится "та самая линейка", но не устраивает подход других команд (как официальных так и йо-хо-хо-коллег), также, как и застарелые правила. В этом направлении мы с вами и движемся. Так, это блок про Lu4, а я вам про планы проекта какие-то.. Давайте прочитаем комментарии Рудольфа Wreaper, а после вернемся к бизнесу. Скрытый текст Wreaper Итак с чего бы начать? Начну, наверно, с 2014 года. Ситуация была следующая. Мы с кодером решили подумать насчёт разработки игры, связанной с созданием ММОшки совмещающей в себе Lineage II и Minecraft. Грубо говоря, мы начали разрабатывать свой собственный Воксельную базу (элемент объёмного изображения, содержащий значение элемента растра в трёхмерном пространстве. Воксели являются аналогами двумерных пикселей для трёхмерного пространства.), к которому мы хотели прикрутить рендер OGRE. Рендер OGRE требовал к себе подключения различных звуковых компонентов и прочего. Поняв, что OGR - это не очень хорошая система в плане его использования как базиса, хотя на ней была сделана одна очень интересная игрушка, Kenshi. Тем не менее для полномасштабной работы по ММОшке он не подходил. Тогда мы перешли на irrlicht 3D - это уже игровой движок, а не просто рендер. Это именно движок, для которого кодер писал pbr-систему, воксельную систему и тому подобное. К сожалению, тоже не сильно взлетело. Потом мы подумали, что с воксельной системой будет очень много вопросов и собственно говоря, мы не очень понимали как именно делать закладку мира. По этому мы решили сделать что-то попроще на наш взгляд. А так как в тот момент мы очень сильно и плотно увлекались EVE Online - решили поработать над ней и сделать свою игру в несколько другом сеттинге, но похожей. У меня до сих пор в мыслях и на компе лежит лежат заготовки для этой игры. Очень своеобразная штука, максимально своеобразная штука. Она была, скажем так, в разгаре стадии МВП. Но тоже не взлетело. Почему не взлетело? Всё очень просто. Но тут нужно небольшое отступление: Мы с батей, играли вместе в линейку с 2008 года. Я начал в 2004, а он с 2008. Он прекрасно знает всех моих друзей и соклановцев и в дальнейшем он как раз руководил кланом, который мы в 2006 году создали на базе существующей комьюнити, вместе с пати, которая называлась CWO. Кстати CWO - это условно "пати", так это это друзья в реале, которые занимались с самого начала ЛУЧом. Ну и вот на одной из таких вот вечерних попоек (было День Рождения), сидели уже втроём: я и два моих друга кодера. И как раз тогда нынешний кодер сказал о том, что хочет, попробовать декомпилировать всем известную нам любимую игрушку и у него есть некоторый просвет именно с точки зрения клиента. Это было важно, потому что мы не понимали и не знали, как будет заготавливаться сам клиент. То есть не какая-то байда связанная с сервером, потому что серверов было много и это не являлось проблемой. Единственное что нужен был гейм-дизайн определённый, но нас в тот момент это сильно волновало. Нам надо было понять, как и на каких уровнях стыковать клиент с сервером. Так, чтобы это сильно не мешало и не гробило ничего. И вот сидя на кухне, зажигая под абсент мы обсуждали эту историю как не в себя, мы сильно загорелись этим. В итоге мы зависли у меня дня на 3 и все 3 дня херачили создавая базис и пытались понять, на чём его запускать. То есть на irrlicht 3D или на Torsion. Но в один из дней я увидел, что у нас намечается выход полноценной беты Unreal Engine 4. Комьюнити там создавалось очень интересное. И мы, собственно говоря, подались туда, и нам дали движок. С того момента на этом движке и сидим. Зимой 16-го года мы сформировали основу и уже где-то к лету начали в свободное время делать лендскейп. С того момента начались первые и первые видео на Youtube. Тогда было самое первое подключение между сервером и клиентом. Все это было всё очень убого и страшно. Но тем не менее, оно получилось! С того самого момента мы и начали работать полноценно. У нас было дохрена всяких разных очень своеобразных решений, которые были провальными, потому что мы только-только вставали на лыжи, входили в рабочую колею. Например когда у нас был первый предпродакшен, мы накидывали всё, что могли, но пытались связать это как-то с оригинальной частью. И там получилась такая серобуромалиновая херня при тестировании, что очень сложно было понять, как в дальнейшем с этим работать. Потом случился момент при переходе с 20-й на 23-ю версию. В движке есть такая штука как bsp геометрия- это такая архаичная система, но она до сих пор есть и даже в Unreal Engine 5. Это простейшая система создания и контроля геометрии. Эта система очень криво создаёт модельки. И был такой момент, что после перехода на версию 2.23 потеряли около полугода работы. Все из-за багов внутри движка. Вот мы этот баг яростно подсвечивали в Epic Games и на тот момент на этот баг я натравил всю свою группу, которая была и человек 500 проголосовало за то, чтобы этот баг был исправлен. В следующем апдейте его поправили. Однако работа уже была потеряна. Проблема была в том, что при сборе этой bsp геометрия создавалось два набора материалов и то, что у тебя было покрашено в движке отображалось нормально, а при сборке оно выдавала ошибки и отображался только один-единственный материал из этих всех, первый, и он был бесцветный. И исправить это никак нельзя было вообще, в принципе, потому что bsp не подразумевала этого. То есть то, что было сделано до этого - нормально работало. Где-то полгода до версии после версии 4.23, минус версию 4.24 где этот баг не был закрыт и перешли на версию 4.25. Это был ужас, потому что огромное количество косяков в мире осталось связано с этим переходом. Вот это отбросило нас назад на пол года. Первый сервер, на котором мы запускали контроль версий был не очень хорошим. У него слетела подсистема. И на определённом этапе получилось так ,что у нас опять полгода разработки улетело в трубу. Из-за всего этого пришлось переделывать полностью Ant Queen Nest, но зато он получился сильно лучше после его рефакторинга. А была проблема с водой, она и сейчас в общем-то есть. Она просто постоянная, перманентная. А все потому, что движок Unreal очень своеобразный. Если в других движках ты запускаешь с чистого листа, то в движке Unreal ты запускаешь и у тебя сразу всё включено, даже то, что тебе нахер не нужно. С серверными машинами тоже была одна история. У нас хорошие подписчики, и один из них с ником Авренон всегда помогал нам с железом. Как раз он нам тогда просто безвозмездно передал пару РЭКов серверным железом. Один из них был прямо неплохой, несмотря на то что Б\У (12 ядер, 24 потока, 32 Гб оперативы). И вот мы на нём, собственно говоря, висим до сих пор. Разок у него Б\П рванул, да так, что чуть половину хаты кодеру не спалил. Харды умирали, а стояли Золотые Харды - они в те времена стоили космических денег. В такой момент пришлось просить подписчиков помочь с Хардами. То есть у нас сейчас лежит порядка 20-ти Хардов, за что ребятам огромное спасибо. Потом когда работали над сторонними проектами, использовали этот сервер и для них. Были и приколы связанные с разработками. Был момент когда Atik прикручивал ик-трейсинг - то на ноги получился интересный эффект. Персонажи, у которых при стойке ноги в одной точке, начинали бегать как кавалеристы, то есть у них колени в разные стороны, и они такие "ребят! мы ковбои!", смешно выглядело. Жаль видео не записали, мы умирали со смеху 😂 Когда разрабатывали абнормалы было разное. Например, когда ты стреляешь каким-нибудь скиллом с лука, например Берст Шот-ом в Элпи маленького, у тебя там разлетается огромный взрыв в виде ядерного гриба. Потому что размеры были не подкручены и не настроены. Торчащие из попы спецэффекты у персонажей и подобных приколов просто тысячи. Был ещё момент, когда нас Иннова забанила в VK. Это была эпичная переписка. Нам предъявили нарушение авторских прав и все вытекающее из этого. Мы отвечали, что ничего не нарушаем и ведем разработку на движке Unreal Engine 4 и это вообще ни хрена не имеет общего с оригинальным клиентом. VK отвечали, что это тоже самое, что и оригинальный Lineage II, по этому держите вам перемобан На этом моменте наш Кодер ответил им в стиле, что "VK это жалкая пародия на Facebook". Пришел кто-то из их старших модераторов или саппортов, прочел это, ответил "Вот сейчас было обидно за такое сравнение" и разбанил группу. В данном моменты мы на завершающей стадии перед преальфой, будем двигаться дальше и она нам покажет что куда зачем и как. Чего-то большего сказать особо не могу. Все будет видно в ходе разработки. Как обычно - будем держать вас в курсе событий 😉 Если вам понравилась история от Рудольфа Wreaper и вам интересно узнать больше - я уверен, что мы можем его попросить рассказать больше и в деталях про некоторые интересующие моменты, добавим видео, гифок, скринов. Пишите комментарий #большепролу4 и я покажу ребятам активность 😎 Как и обещал - возвращаемся к бизнесу. То, что мы делаем, то что вы видите, обсуждаете, комментируете, хвалите и хулите - это процесс. Процесс построения настоящего бизнеса, со всеми вытекающими из этого тезисами: Бизнес подход. Расчет, планирование, анализ, конференции, задачники, пайп-лайны, юиксы и так далее. Рост команды. Органичное расширение команды, набор разработчиков, распределение и набор джунов, выявление мидлов и синьоров, проджект менеджеры и арт директоры. Но я еще раз использую это слово и подчеркну - ор-га-ни-чно. Мы не надеваем костюмы (прямо сейчас, пока я пишу этот текст, я сижу в футболке Adidas и шортах, купленных в переходе), для того, чтобы делать поточную работу. Мы не страдаем выдумыванием должностей типа "директор по этой, а не той хуйне" и подгоном под них сотрудников. Это все должно произойти само с собой. Если человек сеньйор в реверсе и С++ разработке и это видно сейчас - он им и является и такое к нему и отношение. В его обязанности входит и реверс и разработка ядра (ваш капитан), код ревью и так далее. Легализация. Для того, чтобы работать "в белую" - нужна существенная легальная база, команда юристов и тд. Уже сейчас, для того, чтобы дать доступ игрокам с разных точек мира нами ведется эта работа. На данный момент она делается на аутсорсе сторонними компаниями, а менеджером с нашей стороны выступает не отдельный человек, а группа людей, которые взяли себе дополнительные обязанности и задачи. Когда будет необходимо иметь отдельного - мы найдем его или назначим. Ответственность. "С большой силой приходит большая ответственность" ©Дядя Бен. В нашем случае с большой аудиторией и большими ожиданиями приходит большая ответственность. Когда @Safero на стриме говорит, что мы по 6-8-10 часов можем обсуждать одну функцию\скил - он не врет. Мы очень долго и тщательно обсуждаем изменения, особенно фундаментальные. Если откинуть именно процессы и сказать проще - мы боимся вас подвести и не оправдать ожидания. По этому поверьте: любое изменение это не "раз-два и в продакшен", не "я художник, я так вижу". Мы долго и тщательно их обдумываем и даже при этом можем допустить ошибку. И этот путь мы можем пройти только с вами. - В каком смысле "с нами"? А все очень просто. Именно ваш запрос на подобный продукт сделал MasterWork возможным. Если бы вам это не нужно было - он бы не появился. Если бы мы шли не туда - он бы не стал таким популярным. Но, кроме этого, есть еще один важный элемент: поддержка. Именно ваша поддержка помогает нам двигаться дальше. При построении такой компании - мы, естественно, допускаем ошибки. Некоторые - незначительные, некоторые - смешные, некоторые могут быть серьезней, чем кажутся как вам, так и нам. Нет рецепта создания компании, по которому можно строго двигаться и прийти к успеху. Был бы - все были бы успешными. А курсы успешного успеха от инфоцыган - это другое, вы не понимаете (вы понимаете). - И что, нам хвалить вас за дело и без? Было бы круто, но нет 🙂 Для нас действительно важно получать и работать с вашей критикой. Именно через недовольство и репорты мы получаем полезную информацию, разбираемся с ней и делаем проект лучше. Естественно, что поддержка похвалой тоже сильно нам помогает. Она подсвечивает то, что нам удалось лучше всего и заряжает мотивацией работать дальше. Переоценить ваш вклад в развитие проекта - невозможно. Естественно, что и как конкретно будет выглядеть в релизе - наша работа, но именно из общения с вами мы понимаем, что именно нужно, в чем именно есть проблема. Так что в очередной раз хочу поблагодарить каждого, кто комментирует, заходит на стрим или просто играет. Спасибо вам! Поддержка - дает понимание, что делать завтра, чтобы стать лучше. Но есть еще один немаловажный фактор - это доверие или вера, если хотите. Именно благодаря вашему доверию к нам, к нашей компетенции, к нашим обещаниям мы можем планировать не на месяц-два, а на год и больше вперед. Вера в то, что если произошел сбой, лаг, падение или проблемный момент - он будет решен и позволяет нам планировать большой объем работы на целый год вперед. И не важно, будет ли фикс через час, день, месяц или год. Вы знаете, что он будет, потому что доверяете нам. Подводя некий итог всего сказанного выше... Мы делаем действительно титаническую работу по развитию проекта. Если посмотреть в разрезе 10 лет - мы давно перешли на какой-то недостижимый для фришарда уровень. Да, я хвалю сам себя (и команду), но иногда нужно сказать непопулярные вещи, дабы они были озвучены. И да, некоторые игроки могут нас захейтить за такую самоуверенность и пафос, но это не рекламный пост, это не пост владельца проекта, этот пост не модерируют и не редактируют. Я пишу свое мнение о том, что меня волнует, о том, чем я хочу с вами поделиться. Если я буду захейчен за искренность - так тому и быть. Мы развиваемся и хотим, чтобы весь рынок развивался. Благодаря усилиям всех наших коллег-конкурентов этот рынок живет, а вы можете выбрать тот проект, который вам нравится. И мы за то, чтобы у вас были альтернативы, но, при этом, мы работаем над тем, чтобы быть лучшими среди всех. Наше развитие давно вышло за привычное многим "открытие с флешки" и с каждым годом мы все дальше от этого. Работа с клиентом, текстурами, новыми функциями и интерфейсом. Улучшение баланса, создание новых игровых механик, событий и игрового послевкусия. Расширение ядра сервера, доступ к новым возможностям и улучшению стабильности. Да работа над новым клиентом, черт побери. Это все умещается в несколько предложений, но не умещается в 4 года. Это труд, победы, поражения и обещания вам и себе стать лучшими уже завтра. Что же я хочу сказать в самом конце. Я хочу поблагодарить вас за поддержку и веру в нас и попросить продолжать это делать. Я горд сказать, что у нас лучшая аудитория на всем просторе фришардов. Я хочу поблагодарить команду за тяжелую работу и то, что даже при понимании, что мы еще далеки от конца - вы продолжаете копать в одну сторону со мной. Я хочу попросить @Apache Ant ВЕРНУТЬ МНЕ МОЕГО РАЗРАБОТЧИКА И НЕ ТРОГАТЬ ЕГО БОЛЬШЕ!!! У ВАС И ТАК ЕСТЬ ЕЩЕ 7, ОСТАВЬТЕ МНЕ ОДНОГО! 😄 Надеюсь вам по достоинству оцените нашу работу над новым сезоном MasterWork. Увидимся на ОБТ 16 октября, а после на старте 27 октября, в 20:00. Спасибо всем, с ❤️, Papanda Eleyn, НечтоХрустящее, Galax и 29 других 11 12 1 1 3 2 2 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
PUGOVKAMABOY 84 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 (изменено) Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Изменено 7 октября 2023 пользователем PUGOVKAMABOY Apache Ant, RedEyes, Loyan и 3 других 1 4 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
fabuLous 3985 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. youtube channel Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
csf82 2 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
Megan 50 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
Rulk 88 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Больше приколов - https://t.me/xRULKx Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
Xaritosikc 10 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
Steeya 65 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Apache Ant и Papanda 1 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
UwwU 1 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
MrBaaaaaad 2 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
MadToy 70 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Отдайте Папанде разработчика!!! Papanda и Loyan 1 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
fabuLous 3985 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 07.10.2023 в 22:24, MadToy сказал: Отдайте Папанде разработчика!!! Я ТЯ ЩАС ЗАБАНЮ, МЕНЯЙ СВОЙ ПОСТ БЫСТРЕЕ youtube channel Look I am a Pickle, Papanda, MrBaaaaaad и 2 других 1 1 3 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
enflore 20 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 (изменено) Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Изменено 7 октября 2023 пользователем enflore Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
MadToy 70 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 07.10.2023 в 22:24, fabuLous сказал: Я ТЯ ЩАС ЗАБАНЮ, МЕНЯЙ СВОЙ ПОСТ БЫСТРЕЕ Простите Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов. Look I am a Pickle, Papanda и fabuLous 1 1 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
ZimZimMZFK 19 Опубликовано: 7 октября 2023 Рассказать Опубликовано: 7 октября 2023 Привет, Папанда. Это я, твой единственный подписчик. На протяжении многих лет я создавал иллюзию того, что на твоем проекте играет много людей. Но это был я. Сейчас напишу со всех своих аккаунтов Papanda 1 Цитата Ссылка на сообщение Поделиться на других сайтах More sharing options...
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.