Манифест: PlayerPort

default_npc

Вершитель
VIP
Старожил I степени
Медаль Благодарности
Хранитель Пера
Оратор
Арбитр
Уважаемый собеседник
Авторитет форума
Опора сообщества
Мыслитель
Наставник
Победитель в номинации 2023
Сообщения
1 982
Розыгрыши
0
Решения
46
Репутация
2 115
Реакции
2 199
Баллы
1 985
Привет. Со кем то из вас мы знакомы, с кем то сотрудничали, а с некоторыми работаем по сей день. Кто меня не знает: Я делаю интерфейсы в Lineage2, занимаюсь клиентами\серверами, интересуюсь всякими странными штуками, а ещё - люблю эту игру.

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

Ниже около 13 тысяч символов, поэтому для общих черт я задам тег-лист, дабы внести ясность и отфильтровать всех, кому это не интересно:
УИ-фреймворки, радио, системы поддержки, http, легаси web, размышления, интерфейсы л2, браузер в клиенте л2, веб бекенд-фронтенд, квилети оф лайф, администрирование


  • Это что такое?

Всё началось с того, что я твёрдо решил изучить возможности клиентов в контексте веб-браузера, который достаточно давно доступен как UI элемент и небольшой набор API. Некоторое время спустя была реализована простейшая петиция (на стандартном Lineage2 petition-UI), которая просто отправляла информацию на ендпоинт, а он в телеграм бота. Забавно же? Вот и я подумал так же.

Со временем я начал думать дальше: "Окей, но почему бы не сделать это чуть-чуть гибче, чуть-чуть модульнее и собрать не просто один маленький незаметный сервис для одного проекта, а стать полноценным модулем для обслуживания множества проектов одновременно?" Сказано - сделано.

PlayerPort - попытка сделать действительно универсальный, модульный и мультисерверный in-game веб-движок.
Это не просто браузер, это - набор мини-приложений и сервисов, что бы сделать проекты ещё более удобными для всех, как администратору, так и игроку.
Единая точка входа
1777852860159.webp

Приветственные страницы, парсеры чего угодно.
1777852866254.webp
1777855855839.webp

Системы репортов
1777852875606.webp
1777852893010.webp
Администратор видит большой набор информации о каждом пользователе - но это не предел.
1777852883442.webp

Или радио
1777852926139.webp
Мини-плеер
1777852930506.webp

Картография проекта с подробной информацией - каждый сервер как на ладони. Населённость, коллизии, кучность в реальном времени (ну или почти).
1777852945307.webp
Система не просто сухо анализирует текущее состояние, со временем она накапливает определённый набор информации о игроке и может построить связь между, на первый взгляд, несвязанными персонажами (даже для игрового сервера).
1777852966557.webp
Дашбоарды
1777852950372.webp 1777852952826.webp 1777852959473.webp


  • Ну рассказывай уже

Это клиентский модуль, позволяющий подключиться к единой, мультисерверной инфраструктуре, которая уже работает и показывает результаты.
  • Фронтенд:
1) Базовый UnrealScript\XML (native engine layer)
2) Новый JavaScript\HTML\CSS (web-view layer)
Если рассматривать это не просто как браузер, а как условное полотно для творчества, мы получаем, если позволите, "фронт в фронте" (гибридный УИ), первый позволяет создать удобный фундамент и безшовную интеграцию в клиент, второй - предоставить бОльше возможностей визуализации.
  • Бекенд:
Pure PHP 8.x, redis (Multi-instanced, Lua-atomic), mysql innoDB (основные данные), postgresql (тяжелая json-логика\аналитика)
Упор на скорость и отзывчивость, даже при условии высокой нагрузки.


Уже, как готовые решения или не очень длинная разработка\доработка под нужды:
  • Собственный легковесный UI фреймворк: Основанный на поведении и методологии оригинального UI lineage2, без внешних библиотек и тяжелых модулей - ванильный js. Является основным движком текущей версии и все скриншоты выше - это исключительно PortUI
  • Парсинг: Социальные сети, сайты, rss, любые доступные веб страницы и вывод информации внутри игрового веб-браузера c оформлением
  • Тикет-система: Внутриигровые репорты игроков, внутриигровая админка, внутриигровая\телеграм нотификатор, API для внешних админок (если нужно вывести в свой веб), отправка в брокеров (пр: kafka), хранение
  • Радио-модуль: Радио-сервис с десятками веб-радиостанций, удобные выбором, обновлениями станций, сохранением и возможностью открыть как большое окно, так и маленький плеер с удобным функционалом для управления воспроизведением
  • Система общения**: Форум для внутриигрового веба, возможность организовать общение игроков прямо в игре, причём всё это может быть межсерверным - к примеру коллаборирующие проекты могут объединиться в кластер с единым внутренним форумом, приветствием и т.п.
  • Модули** анализа чата, поведения, трейдов, почт и т.п.: Упрощение работы администраторов для анализа и отслеживания ботов, РМТ, и пр. - мы можем анализировать поведение, оценивать риски, показывать цепочки связей между персонажами и т.п.
  • Телеграм боты как панацея**: Оповещения для администраторов (централизованный бот) и бот для игроков, с возможностью привязки к серверу для получения системных уведомлений или же уведомлений в стиле "ты умер".
  • Приветственные страницы на PortUI или ванильном html+js+css (legacy), которые вы можете сверстать и разместить сами
  • Любой дизайн, цветовая палитра, подключенные модули - всё максимально гибко от проекта к проекту
  • Внешний web для полноценных браузеров (больше возможностей, дашборды, современных технологии, реализация необходимых задач)
  • Мультиязычность
*Всё это работает как на древних клиентах (к примеру Grand Crusade p110) и вплоть до самых последних клиентов essence\live.
**Некоторые упомянутые вещи реализованы абстрактно или поверхностно, без четкого понимания цели и необходимого результата, поэтому требуют корректировки\дополнения\улучшения



  • Но подожди

Мы в 2026 году, у нас 10 мониторов - мне проще хром открыть, зачем?

Потому что люди ленивы. Допустим: Как связаться с администрацией на большинстве проектов? Требует открыть браузер, зайти на сайт, войти в лк и уже там создать обращение и ждать ответа. Быстро? Да, но не слишком. Удобно? Признаем, что не совсем.

Я же предлагаю быстрее: Прямо в игре нажал кнопку, написал сообщение, система уже знает откуда ты, твой ник, ИД, локацию и всё, что нужно знать, что бы администрация поняла кто ей пишет и откуда. А как только поддержка даст ответ - игрок получит маячок-оповещение в игре или телеграм-нотификаторе, что потребует буквально 1 нажатие, что бы его прочесть.


  • Как это работает?

Система имплементируется в UI игры и общается с удалённым сервером через POST-запросы (Lineage2UI > endpoint > Lineage2WebView), связь происходит как автоматически (авто-апдейт), так и ручные - чаты, почту и некоторые др. действия.

Система минует основной сервер (gameserver) и общается напрямую client<>endpoint(webserver), но может быть соединена с игровым сервером напрямую для опр. задач.
Важно понимать, что из-за обособленности мы основываемся исключительно на том, что знает базовый UI (Lineage2). Это обусловлено тем, что не все владельцы серверов имеют исходники\разработчиков, поэтому в первую очередь важно обеспечить возможности поверх compiled-версий как Lucera или Eternity, а наладить связь с ГС для других проектов это лишь вопрос желания\необходимости, но никак не техническое ограничение.


  • И что, действительно работает?

Да, пиковый онлайн который обрабатывал ендпоинт - 12.464 игроков и не смотря на слабый сетап - показал стабильность без падений, гонки или утечек, "переваривая" все движения игроков (чаты, почты, движение, т.п.)
Основным сервисом-потребителем была тикет-система, совокупно (с нескольких проектов) обработано около 15 тысяч тикетов и 30-35 тысяч ответов в них. Это небольшой результат, но он показывает стабильность системы, стабильность хранимых данных и перспективы развития.


  • А я думаю будет лагать

Здравое замечание, но вначале важно понимать устройство движка: У нас есть всего 2 типа обновлений, "ленивые" и "активные"
  • Ленивые: Раз в N-секунд (не чаще 20-30) клиент выполняет автоматическую отправку данных на эндпоинт (POST)
  • Активные: Обновления, что подписаны на определённые события, к примеру отправка сообщения в чат.
Общая нагрузка от выполнения простейших http-post ничтожна, сетевая нагрузка в сравнении с траффиком клиента - минимальна.

Важный нюанс также скрыт в том, что всей сетевой активностью, рендерингом и пр. занимается внешний процесс, а не основной (l2.exe\l2.bin), что полностью изолирует происходящее в отдельном "котле".
Т.к. мы выяснили, что сетевая активность минимальна, у нас остаётся один вариант - перегрузка старого, ограниченного вебкита тяжелыми JS-скриптами, стилями и пост-обработками. Но это ближе тестированию и выявлению ошибок фронтенда, а не к фундаментальным нерешаемым проблемам.


  • Хочешь сказать всё так безоблачно?

Конечно же нет, не смотря на амбициозность всё не может быть идеально. Наши основные проблемы (не кратко):

1. Клиентская (Lineage 2) UI имплементация: Само по себе то, что это внутри основного интерфейса уже выглядит как проблема и ограничение, требующее более гибкого решения
2. Сепарация нескольких проектов внутри одной авторизации: Существует реализация на беке, но разделение по списку серверов (серверИД из авторизации которые получает клиент) усложняет поддержку для пользователя, при добавлении\удалении прокси-серверов.
3. Валидация сервером, фильтрация спама, ддоса, несанкционированного доступа: Прибито гвоздями, поэтому почти не шатается. Но гвозди - сомнительное решение.
4. Так как на данном этапе сервис не предполагает работы с чувствительными\личными данными: Траффик не шифруется, взаимодействие идёт по http протоколу. Проблема это или нет в контексте существующих модулей - думать вам.
5. PortUI: Опциональный компонентный UI-фреймворк, ванильный JS, никакого grid, никакого flexbox (потому что вебкит просто не умеет). Упор на легкость и скорость. Пока известен как "версия1": Несколько основных контролов, якорьМанагер, ассеты Л2, работает примерно как обычный UI Lineage 2 - те же абсолютные координаты, якорные системы, АПИ контролов, общий АПИ и т.п. Из минусов (?) - изолирован внутри JS


  • И что это будет?

Как я уже упомянул выше, появилась идея создать именно мультисерверный сервис, поэтому я двигаюсь именно в этом направлении.

Моя первичная цель - небольшие\средние проекты, популяризация сервиса и демонстрация его возможностей. Технически это может быть что угодно, вплоть до полной замены некоторых окон в игре на новые веб компоненты, с реализацией на html\js\css.

Если укоротить: Я хочу сделать сервис, который будет частью современного рынка Lineage2, как защиты, лк и другие маленькие кусочки формирующие QoL игрока\администратора.

В ближайшее время:
  • (выполнено) Обновление LuceraFree до версии 2.1 с модулем PlayerPort
  • (ожидание) Активация сервиса внутри LuceraFree v2.1. В базовой версии будет доступен только радиомодуль, при желании - каждый потребитель обновленной версии может запросить под свой проект поддержку отдельной ветки.


  • Ну и что тебе надо-то? В чём идея?

Я давно заметил проблему: Экосистема проектов фрагментирована и раздроблена - сайт, форум, телеграм\дискорд, лк, поддержка и т.п. Другими словами мы всеми силами выталкиваем игрока с игры, с перспективой что он залипнет в браузер, телегу или другое промежуточное звено между игрой, точкой назначения и обратно. Т.е. цели как вы уже поняли просты: Упростить и ускорить. А самое главное - не выгонять игрока с игры, а удерживать его в ней, дав ему всё необходимое прямо внутри клиента.

Основная идея не просто впарить это кому то, а сделать новый шаг для этой игры и нашего комьюнити в целом. Я напомню, что Lineage2 всегда была рынком инноваций, разработок, порой даже вперёд корейского паровоза. Ни одна мморпг в истории не была так востребована. Почему бы не добавить к ней ещё одну штуку, которая сделает нас ещё чуть более уникальными?

Я ищу энтузиастов, проекты, проекты энтузиастов, которые так же как и я увидят в этом нечто новое для нашей игры, заинтересуются и захотят использовать это у себя, развивать и улучшать свою жизнь и жизнь игроков.
В первую очередь это может быть интересно небольшим\средним проектам, а так же моим клиентам с которыми мы сотрудничаем - тем, кому имплементировать текущую систему будет максимально быстро и просто, т.к. все исходники клиентов надежно хранятся на моей стороне.
Это БЕСПЛАТНО.


  • Итоги

Хорошо посидели, душевно поговорили. Надеюсь было интересно и вы впитали что-то новое в свои извилины. Как мы выяснили, проект имеет как и плюсы, так и минусы.

Из плюсов: Безусловная доступность проекта в контексте "низших" прослоек серверстроя и новые возможности для "малышей" рынка, у которых нет больших денег и(или) штата разработчиков.

Из минусов: Технические недостатки, аспекты клиент-части (которая lineage2) и само-собой ввиду ограниченного, устаревшего и просто богомерзкого вебкита, периода 2012-2016 года. Ну и конечно же огромное число работы, прежде чем это станет чем то действительно стоящим.


  • Эпилог

Если кто-то дочитал до сюда - спасибо, что осилили это поток сознания.
Несмотря на все ЗА и ПРОТИВ, проект жизнеспособен и определённо имеет право на существование. Главным препятствием, как это часто бывает в системном администрировании и разработке, остается дефицит времени. Однако мой скромный опыт подтверждает: любая амбициозная цель достижима, если сохранять уверенность в том, что неразрешимых проблем не существует.



Ваши вопросы, негатив и прочее жду в этом треде или по контактам ниже.


До встречи.
 

User

Баллов: -9
Клоун
Не понятно какой смысл, если минусы перекрывают плюсы. Учитывая блокировки, нерабочий тг, прокси и.т.д.

Ты сам пишешь, что игроки ленивые и навешиваешь систему, которая как минимум сугубо мое мнение сложная и не ux Френдли для игроков
 
Ты бы научился нормально интерфейс кодить, а не куски говна кривого писать с ужасным кодом, чтобы лезть куда то ещё. Со своим нейрослопным текстом можешь пойти [А по щам?].
Привет. Со кем то из вас мы знакомы, с кем то сотрудничали, а с некоторыми работаем по сей день. Кто меня не знает: Я делаю интерфейсы в Lineage2, занимаюсь клиентами\серверами, интересуюсь всякими странными штуками, а ещё - люблю эту игру.
Знаем какой рукожоп, где всю твою работу переписывать надо и отовсюду попёрли, с чсв до небес, которому сложно людям отвечать.
Упор на скорость и отзывчивость, даже при условии высокой нагрузки.
Пиздабол
Чистая скорость, а о особенностях работы PHP умолчал почему то? В высоконагруженных системах? А ничего, что каждое выполнение создаёт процесс -> выполняет полностью всё -> закрывает процесс, так работает на каждое соединение, такая природа PHP, но нейрослопному высеру откуда это знать. Высоконагруженный бл**ь, при этом 0 слов про тот же Swoole, RoadRunner, FrankenPHP, которые могли бы хоть как то исправить это поведение, но этого нет, так что там ещё тот ужас.
mysql innoDB (основные данные), postgresql (тяжелая json-логика\аналитика)
Круто наверное крутить 2 бд которые жрут так же ресурсы и выполняют всё, вот это высоконагруженная система, 2 разных системы, мастер системы нету, ну иди по генерируй дальше в чатгпт, клоун.
Вон оно как, субд не предназначенная для аналитики, держит аналитику, браво, clickhouse просто существует.
**Некоторые упомянутые вещи реализованы абстрактно или поверхностно, без четкого понимания цели и необходимого результата, поэтому требуют корректировки\дополнения\улучшения
Всё это накидано llm, как и текст, что в принципе всё сделано без чёткого понимания
Да, пиковый онлайн который обрабатывал ендпоинт - 12.464 игроков и не смотря на слабый сетап - показал стабильность без падений, гонки или утечек, "переваривая" все движения игроков (чаты, почты, движение, т.п.)
Ага, где? С проектов где тебя выкинули? На обосранном иннадриле, где окончательно в загас ушёл и никогда онлайна не было такого?) Или ты друг L2CCCP со сказками и приданиями, с мусором на мобиусе? Гонок чего? Какие условия этих гонок? В однопоточной л2, которая априори не может быть в многопоток?) Или гонки в Need For Speed?
Основным сервисом-потребителем была тикет-система, совокупно (с нескольких проектов) обработано около 15 тысяч тикетов и 30-35 тысяч ответов в них. Это небольшой результат, но он показывает стабильность системы, стабильность хранимых данных и перспективы развития.
Ого на целые 1-4 сущности в 2026 с такими ресурсами, с копейками данными для любой субд, да, что могло пойти не так, вот прям не понятно. Такая сложная операция.
  • Ленивые: Раз в N-секунд (не чаще 20-30) клиент выполняет автоматическую отправку данных на эндпоинт (POST)
  • Активные: Обновления, что подписаны на определённые события, к примеру отправка сообщения в чат.
Общая нагрузка от выполнения простейших http-post ничтожна, сетевая нагрузка в сравнении с траффиком клиента - минимальна.
:loltt0: :loltt0: :loltt0:Нагрузка на мозг или что? Ну да ничтожна мала на сервер, каждый коннект, как работает ддос l7 не нужно объяснять. Подписаны на что? Какие события? у нас резко появился SSE, gRPC, MQTT over Websocket или Websocket. Ах да, вебсокеты, которые постоянно закрываются на PHP из-за его особенности. Высоконагруженно
Хорошо посидели, душевно поговорили. Надеюсь было интересно и вы впитали что-то новое в свои извилины. Как мы выяснили, проект имеет как и плюсы, так и минусы.
Плюсов нет, одни минусы и прослойка в виде криворукого долбоёба
 
Последнее редактирование:
Не совсем понимаю - зачем в игре весь этот лишний шлак. Это как ты собрался на шашлыки с семьей, но попутно берешь с собой гараж, инструменты, вызываешь коллег с работы что бы осудить рабочее время, чинишь самолет, копаешь котлован.
Если я захожу в игру - она должна быть для игры. Представляю нагрузку 20+ игроков даже если будет. Вообще максимально неудобно пихать все подряд через нейросети. Понимаю, что поиграться на клауде или ГПТ можно, но зачем это пихать в продакшен?
У нас тут пару месяцев один индивид с "НЕО" на аватарке продавал супер идею за 2к, генерируемую в ГПТ - поржали всем комьюнити.
 
Когда я читаю что кто-то хочет сделать защиту для L2 , у меня непроизвольно дрыгается нога.
Но мы люди древние, до сих пор юзаем обычный HF клиент.
 
в 2026 году, админы максимально стараются сделать так, чтобы игрок меньше времени проводил в игре, а делал то что ему хочется, в то же время дефолт в 2026 году, хочет привязать всех к л2)
 
на левый api улетают данные пк (имя учетной записи, путь к папке с игрой)
я условно продвинутый игрок, вижу подобное в network.log и иду рассказывать что сервер в каких то непонятных целях собирает инфу о тебе, приятно будет?
 
Т.е просто насилие над Awesomium? Не понял поинта - он не прятался в клиентах, а был доступен всем и каждому кто хотел. А там дальше любой бекенд и показывай что хочешь.
Какая польза от этого текста - это просто реклама веб морды для сервера?
Новые web-view layer это что? Чем авесомиум плох(если тут отказ от него и своя поделка)? Вроде на нем и так можно отобразить все что в списке. Может авесомиум обновлен до ласт версий(через враппер мб)? Расширена работа с api ingame браузера?
Что мешает людям делать это сейчас без всего этого текста, но со своим бекендом? Не понял в чем тут манифест? По описанию - просто веб сервисы какие-та, а браузер и так есть. А сервисы чаще реально удобнее во втором окне в браузере открыть.
 
Последнее редактирование:
Ого тут негатива
 
И собственно все?
 
Привет. Со кем то из вас мы знакомы, с кем то сотрудничали, а с некоторыми работаем по сей день. Кто меня не знает: Я делаю интерфейсы в Lineage2, занимаюсь клиентами\серверами, интересуюсь всякими странными штуками, а ещё - люблю эту игру.

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

Ниже около 13 тысяч символов, поэтому для общих черт я задам тег-лист, дабы внести ясность и отфильтровать всех, кому это не интересно:
УИ-фреймворки, радио, системы поддержки, http, легаси web, размышления, интерфейсы л2, браузер в клиенте л2, веб бекенд-фронтенд, квилети оф лайф, администрирование


  • Это что такое?

Всё началось с того, что я твёрдо решил изучить возможности клиентов в контексте веб-браузера, который достаточно давно доступен как UI элемент и небольшой набор API. Некоторое время спустя была реализована простейшая петиция (на стандартном Lineage2 petition-UI), которая просто отправляла информацию на ендпоинт, а он в телеграм бота. Забавно же? Вот и я подумал так же.

Со временем я начал думать дальше: "Окей, но почему бы не сделать это чуть-чуть гибче, чуть-чуть модульнее и собрать не просто один маленький незаметный сервис для одного проекта, а стать полноценным модулем для обслуживания множества проектов одновременно?" Сказано - сделано.

PlayerPort - попытка сделать действительно универсальный, модульный и мультисерверный in-game веб-движок.
Это не просто браузер, это - набор мини-приложений и сервисов, что бы сделать проекты ещё более удобными для всех, как администратору, так и игроку.
Единая точка входа
Посмотреть вложение 95251

Приветственные страницы, парсеры чего угодно.
Посмотреть вложение 95252
Посмотреть вложение 95263

Системы репортов
Посмотреть вложение 95253
Посмотреть вложение 95255
Администратор видит большой набор информации о каждом пользователе - но это не предел.
Посмотреть вложение 95254

Или радио
Посмотреть вложение 95256
Мини-плеер
Посмотреть вложение 95257

Картография проекта с подробной информацией - каждый сервер как на ладони. Населённость, коллизии, кучность в реальном времени (ну или почти).
Посмотреть вложение 95258
Система не просто сухо анализирует текущее состояние, со временем она накапливает определённый набор информации о игроке и может построить связь между, на первый взгляд, несвязанными персонажами (даже для игрового сервера).
Посмотреть вложение 95262
Дашбоарды
Посмотреть вложение 95259Посмотреть вложение 95260Посмотреть вложение 95261


  • Ну рассказывай уже

Это клиентский модуль, позволяющий подключиться к единой, мультисерверной инфраструктуре, которая уже работает и показывает результаты.
  • Фронтенд:
1) Базовый UnrealScript\XML (native engine layer)
2) Новый JavaScript\HTML\CSS (web-view layer)
Если рассматривать это не просто как браузер, а как условное полотно для творчества, мы получаем, если позволите, "фронт в фронте" (гибридный УИ), первый позволяет создать удобный фундамент и безшовную интеграцию в клиент, второй - предоставить бОльше возможностей визуализации.
  • Бекенд:
Pure PHP 8.x, redis (Multi-instanced, Lua-atomic), mysql innoDB (основные данные), postgresql (тяжелая json-логика\аналитика)
Упор на скорость и отзывчивость, даже при условии высокой нагрузки.


Уже, как готовые решения или не очень длинная разработка\доработка под нужды:
  • Собственный легковесный UI фреймворк: Основанный на поведении и методологии оригинального UI lineage2, без внешних библиотек и тяжелых модулей - ванильный js. Является основным движком текущей версии и все скриншоты выше - это исключительно PortUI
  • Парсинг: Социальные сети, сайты, rss, любые доступные веб страницы и вывод информации внутри игрового веб-браузера c оформлением
  • Тикет-система: Внутриигровые репорты игроков, внутриигровая админка, внутриигровая\телеграм нотификатор, API для внешних админок (если нужно вывести в свой веб), отправка в брокеров (пр: kafka), хранение
  • Радио-модуль: Радио-сервис с десятками веб-радиостанций, удобные выбором, обновлениями станций, сохранением и возможностью открыть как большое окно, так и маленький плеер с удобным функционалом для управления воспроизведением
  • Система общения**: Форум для внутриигрового веба, возможность организовать общение игроков прямо в игре, причём всё это может быть межсерверным - к примеру коллаборирующие проекты могут объединиться в кластер с единым внутренним форумом, приветствием и т.п.
  • Модули** анализа чата, поведения, трейдов, почт и т.п.: Упрощение работы администраторов для анализа и отслеживания ботов, РМТ, и пр. - мы можем анализировать поведение, оценивать риски, показывать цепочки связей между персонажами и т.п.
  • Телеграм боты как панацея**: Оповещения для администраторов (централизованный бот) и бот для игроков, с возможностью привязки к серверу для получения системных уведомлений или же уведомлений в стиле "ты умер".
  • Приветственные страницы на PortUI или ванильном html+js+css (legacy), которые вы можете сверстать и разместить сами
  • Любой дизайн, цветовая палитра, подключенные модули - всё максимально гибко от проекта к проекту
  • Внешний web для полноценных браузеров (больше возможностей, дашборды, современных технологии, реализация необходимых задач)
  • Мультиязычность
*Всё это работает как на древних клиентах (к примеру Grand Crusade p110) и вплоть до самых последних клиентов essence\live.
**Некоторые упомянутые вещи реализованы абстрактно или поверхностно, без четкого понимания цели и необходимого результата, поэтому требуют корректировки\дополнения\улучшения



  • Но подожди



Потому что люди ленивы. Допустим: Как связаться с администрацией на большинстве проектов? Требует открыть браузер, зайти на сайт, войти в лк и уже там создать обращение и ждать ответа. Быстро? Да, но не слишком. Удобно? Признаем, что не совсем.

Я же предлагаю быстрее: Прямо в игре нажал кнопку, написал сообщение, система уже знает откуда ты, твой ник, ИД, локацию и всё, что нужно знать, что бы администрация поняла кто ей пишет и откуда. А как только поддержка даст ответ - игрок получит маячок-оповещение в игре или телеграм-нотификаторе, что потребует буквально 1 нажатие, что бы его прочесть.


  • Как это работает?

Система имплементируется в UI игры и общается с удалённым сервером через POST-запросы (Lineage2UI > endpoint > Lineage2WebView), связь происходит как автоматически (авто-апдейт), так и ручные - чаты, почту и некоторые др. действия.

Система минует основной сервер (gameserver) и общается напрямую client<>endpoint(webserver), но может быть соединена с игровым сервером напрямую для опр. задач.
Важно понимать, что из-за обособленности мы основываемся исключительно на том, что знает базовый UI (Lineage2). Это обусловлено тем, что не все владельцы серверов имеют исходники\разработчиков, поэтому в первую очередь важно обеспечить возможности поверх compiled-версий как Lucera или Eternity, а наладить связь с ГС для других проектов это лишь вопрос желания\необходимости, но никак не техническое ограничение.


  • И что, действительно работает?

Да, пиковый онлайн который обрабатывал ендпоинт - 12.464 игроков и не смотря на слабый сетап - показал стабильность без падений, гонки или утечек, "переваривая" все движения игроков (чаты, почты, движение, т.п.)
Основным сервисом-потребителем была тикет-система, совокупно (с нескольких проектов) обработано около 15 тысяч тикетов и 30-35 тысяч ответов в них. Это небольшой результат, но он показывает стабильность системы, стабильность хранимых данных и перспективы развития.


  • А я думаю будет лагать

Здравое замечание, но вначале важно понимать устройство движка: У нас есть всего 2 типа обновлений, "ленивые" и "активные"
  • Ленивые: Раз в N-секунд (не чаще 20-30) клиент выполняет автоматическую отправку данных на эндпоинт (POST)
  • Активные: Обновления, что подписаны на определённые события, к примеру отправка сообщения в чат.
Общая нагрузка от выполнения простейших http-post ничтожна, сетевая нагрузка в сравнении с траффиком клиента - минимальна.

Важный нюанс также скрыт в том, что всей сетевой активностью, рендерингом и пр. занимается внешний процесс, а не основной (l2.exe\l2.bin), что полностью изолирует происходящее в отдельном "котле".
Т.к. мы выяснили, что сетевая активность минимальна, у нас остаётся один вариант - перегрузка старого, ограниченного вебкита тяжелыми JS-скриптами, стилями и пост-обработками. Но это ближе тестированию и выявлению ошибок фронтенда, а не к фундаментальным нерешаемым проблемам.


  • Хочешь сказать всё так безоблачно?

Конечно же нет, не смотря на амбициозность всё не может быть идеально. Наши основные проблемы (не кратко):

1. Клиентская (Lineage 2) UI имплементация: Само по себе то, что это внутри основного интерфейса уже выглядит как проблема и ограничение, требующее более гибкого решения
2. Сепарация нескольких проектов внутри одной авторизации: Существует реализация на беке, но разделение по списку серверов (серверИД из авторизации которые получает клиент) усложняет поддержку для пользователя, при добавлении\удалении прокси-серверов.
3. Валидация сервером, фильтрация спама, ддоса, несанкционированного доступа: Прибито гвоздями, поэтому почти не шатается. Но гвозди - сомнительное решение.
4. Так как на данном этапе сервис не предполагает работы с чувствительными\личными данными: Траффик не шифруется, взаимодействие идёт по http протоколу. Проблема это или нет в контексте существующих модулей - думать вам.
5. PortUI: Опциональный компонентный UI-фреймворк, ванильный JS, никакого grid, никакого flexbox (потому что вебкит просто не умеет). Упор на легкость и скорость. Пока известен как "версия1": Несколько основных контролов, якорьМанагер, ассеты Л2, работает примерно как обычный UI Lineage 2 - те же абсолютные координаты, якорные системы, АПИ контролов, общий АПИ и т.п. Из минусов (?) - изолирован внутри JS


  • И что это будет?

Как я уже упомянул выше, появилась идея создать именно мультисерверный сервис, поэтому я двигаюсь именно в этом направлении.

Моя первичная цель - небольшие\средние проекты, популяризация сервиса и демонстрация его возможностей. Технически это может быть что угодно, вплоть до полной замены некоторых окон в игре на новые веб компоненты, с реализацией на html\js\css.

Если укоротить: Я хочу сделать сервис, который будет частью современного рынка Lineage2, как защиты, лк и другие маленькие кусочки формирующие QoL игрока\администратора.

В ближайшее время:
  • (выполнено) Обновление LuceraFree до версии 2.1 с модулем PlayerPort
  • (ожидание) Активация сервиса внутри LuceraFree v2.1. В базовой версии будет доступен только радиомодуль, при желании - каждый потребитель обновленной версии может запросить под свой проект поддержку отдельной ветки.


  • Ну и что тебе надо-то? В чём идея?

Я давно заметил проблему: Экосистема проектов фрагментирована и раздроблена - сайт, форум, телеграм\дискорд, лк, поддержка и т.п. Другими словами мы всеми силами выталкиваем игрока с игры, с перспективой что он залипнет в браузер, телегу или другое промежуточное звено между игрой, точкой назначения и обратно. Т.е. цели как вы уже поняли просты: Упростить и ускорить. А самое главное - не выгонять игрока с игры, а удерживать его в ней, дав ему всё необходимое прямо внутри клиента.

Основная идея не просто впарить это кому то, а сделать новый шаг для этой игры и нашего комьюнити в целом. Я напомню, что Lineage2 всегда была рынком инноваций, разработок, порой даже вперёд корейского паровоза. Ни одна мморпг в истории не была так востребована. Почему бы не добавить к ней ещё одну штуку, которая сделает нас ещё чуть более уникальными?

Я ищу энтузиастов, проекты, проекты энтузиастов, которые так же как и я увидят в этом нечто новое для нашей игры, заинтересуются и захотят использовать это у себя, развивать и улучшать свою жизнь и жизнь игроков.
В первую очередь это может быть интересно небольшим\средним проектам, а так же моим клиентам с которыми мы сотрудничаем - тем, кому имплементировать текущую систему будет максимально быстро и просто, т.к. все исходники клиентов надежно хранятся на моей стороне.
Это БЕСПЛАТНО.


  • Итоги

Хорошо посидели, душевно поговорили. Надеюсь было интересно и вы впитали что-то новое в свои извилины. Как мы выяснили, проект имеет как и плюсы, так и минусы.

Из плюсов: Безусловная доступность проекта в контексте "низших" прослоек серверстроя и новые возможности для "малышей" рынка, у которых нет больших денег и(или) штата разработчиков.

Из минусов: Технические недостатки, аспекты клиент-части (которая lineage2) и само-собой ввиду ограниченного, устаревшего и просто богомерзкого вебкита, периода 2012-2016 года. Ну и конечно же огромное число работы, прежде чем это станет чем то действительно стоящим.


  • Эпилог

Если кто-то дочитал до сюда - спасибо, что осилили это поток сознания.
Несмотря на все ЗА и ПРОТИВ, проект жизнеспособен и определённо имеет право на существование. Главным препятствием, как это часто бывает в системном администрировании и разработке, остается дефицит времени. Однако мой скромный опыт подтверждает: любая амбициозная цель достижима, если сохранять уверенность в том, что неразрешимых проблем не существует.



Ваши вопросы, негатив и прочее жду в этом треде или по контактам ниже.


До встречи.
А чем, а скорее кем ты вдохновлялся, если не секрет ?
Сообщение объединено:
Т.е просто насилие над Awesomium? Не понял поинта - он не прятался в клиентах, а был доступен всем и каждому кто хотел. А там дальше любой бекенд и показывай что хочешь.
Какая польза от этого текста - это просто реклама веб морды для сервера?
Новые web-view layer это что? Чем авесомиум плох(если тут отказ от него и своя поделка)? Вроде на нем и так можно отобразить все что в списке. Может авесомиум обновлен до ласт версий(через враппер мб)? Расширена работа с api ingame браузера?
Что мешает людям делать это сейчас без всего этого текста, но со своим бекендом? Не понял в чем тут манифест? По описанию - просто веб сервисы какие-та, а браузер и так есть. А сервисы чаще реально удобнее во втором окне в браузере открыть.
Awesomiu, если что это форк ultralight , который форк движка хрома, CEF
 
Спасибо всем кто отписал, кто связался в телеграм, а так же тем, кто уже использует новую версию LuceraFree - крайне ценю вклад и советы, которые успел получить за эту неделю.


PlayerPort не стоит на месте, мы развиваем свои возможности, что бы игра стала ещё более дружелюбной и интересной.

Следующее крупное обновление это поддержка стриминговых сервисов (PortStream).
  • Мы знаем все популярные платформы и поддерживаем неограниченное число стримов у вашего проекта - вы можете разместить как своих стримеров, так и использовать просто списки популярных потоков.
  • Выделение важных потоков, отключение всех потоков кроме необходимого
  • Нотификации о запуске важного потока прямо внутри игры.

Удобная плитка выбора, актуальный статус стримера, актуальные превью.
1778386856314.webp

Свой плеер, поддержка любого доступного кач-ва потока
PIP - смотреть можно не только в громоздком окне, но и в маленьком плеере поверх остальных окон
Отсутствие рекламы внутри потока - один из небольших, но приятных плюсов.
1778386877018.webp

Как и другие компоненты системы PlayerPort, PortStream не является исключением в плане скорости и производительности. Мы избегаем любых ресурсоёмких задач как со стороны backend (задержка отдачи) так и со стороны frontend (отрисовка UI), поэтому любое взаимодействие занимает считанные милисекунды и в большинстве задач упирается в ping пользователя.

Как и всегда - открыт к Вам ❤️

Узнать\предложить\высказаться:
 
Я тоже хотел создать генерато интерфейса с помощью Awesomium, но это так и осталось идеей. А у автора, похоже, используется что-то совсем другое.
 
Как и другие компоненты системы PlayerPort, PortStream не является исключением в плане скорости и производительности. Мы избегаем любых ресурсоёмких задач как со стороны backend (задержка отдачи) так и со стороны frontend (отрисовка UI), поэтому любое взаимодействие занимает считанные милисекунды и в большинстве задач упирается в ping пользователя.
1778505038979.webp
Вывод стримов это уже ресурсоёмкая задача долбоёб. В 1 человек и на локалхоста конечно не будет задержек идиот, как и проблем
Как и всегда - открыт к Вам ❤️
Настолько открыт, что кроме рекламы своей хуйни не можешь ничего сделать, лишь выперли со всех проектов и сказками про то якобы для каждого с нуля и индивидуально, а по факту тягать одну и ту же кривую залупу по проектам и можешь.
 
Сайты всёравно будут

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

Тезисно:

-Рефакторинг стилизатора PortUI и имплементация в него нового - от простых ассетов до низкоуровневых возможностей.
-Клиент-часть постепенно становится обособленным веб-приложением, которое использует Lineage2 лишь как оболочку и базу для разработки.
-Комбайн внутри клиента, или как сидеть в php\js\uc\as\c++ одновременно и не сойти с ума




Развернуто:

1) PortUI растёт и распределяет обязанности. Для каждой задачи - своё место:
  • JavaScript: оболочка для создания скелета страницы\модуля\виджетов, базовая стилизация
  • Flash(запеканки): графическая оболочка, расчёты физики (далее для простоты физический движок) переходы, анимации, графика
  • PortNatives: С++ (API) - математика, логирование, взаимодействие с windows, вебсокеты, низкоуровневые задачи



Модель позволяет создавать эффективные "бутерброды", на основе текущего конструктора:
  • JS (layer0): создание кнопки с базовыми стилями\вашего элемента
  • Flash(layer1): кнопка получает анимация\переходы\мерцание\ваши желания
  • Native: кнопка совершает ЛЮБОЕ действие - внутри браузера\игры\windows\шлет пакет серверу\ваши действия
-Разделение графики распределяет нагрузку: это позволяет создать плавные, интерактивные, а самое главное - быстрые UI.
-PortNatives позволяет расширить возможности: это развязывает нам руки и мы можем создавать практически безграничный функционал, от простого оповещения в windows, до VoIP или полноценного VPN прямо в клиенте.
1780851321124.gif


2) PlayerPort:Report становится дружелюбнее.
Больше не нужно использовать ссылки или сторонние сервисы для загрузки изображений - его можно выбрать прямо внутри игры, либо просто скопировать нужную картинку с вашего компьютера. Либо сделать это скриншотером и просто вставить из буфера обмена. А можно и не скриншотером - просто PrntScrn и вставить, поддерживается любой из способов передачи изображений.

1780844765809.gif
Поддержка всех популярных типов изображений

PortNatives обработает даже несжатые\сверхвысокие разрешение 4k\8k\16k за считанные миллисекунды, вместе с этим оптимизировав изображение, снизив конечный вес до х50(!) от изначального. Это прекрасный результат, который позволяет отдавать изображения молниеносно, без задержек, статтеров, шторок и пр.
Автоматическая генерация сверхмаленьких preview\blurred(1-5kb) копий - так загрузка становится ещё более незаметной и плавной.

Примеры оптимизации без потери качества, это позволяет PlayerPort эффективно хранить тысячи изображений, а пользователю - не ждать загрузки, ведь теперь изображение весит всего несколько кб.
1780841472282.webp


3) Редизайн, итеративность и быстрота.
PlayerPort\PortUI больше не использует ассеты LineageII, а переходит на свой базовый набор стилей, элементов, атласов текстур и пр.
Мы лишь сохраняем единообразие цвета, шрифта, стилистики, что бы не выбиваться из целевого UI, но идем своей дорогой на раннем этапе.
1780843438799.gif
1780832519752.webp

Вместе с этим PortUI становится более плавным, тактильным и интерактивным. Элементы не просто существуют и выполняют действия, а реализуют переходы\анимации\эффекты\меняют состояния на базовом уровне либо 1 строчкой кода.
1780796938268.gif
1780797434744.gif

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

Графический движок способен создавать сложные графические переходы и эффекты "на лету", без спрайтов, сложной конфигурации и пр. - полная динамика и ваш полет фантазии.
1780845401177.gif

Физический движок и тяжелые сцены - тысячи элементов, расчет тысяч столкновений каждый кадр? Без проблем (на записи пример: динамическая сцена "разрезания" шариков курсором - 1000 шариков, используется простой метод Стёрмера-Верле + пространственное хеширование, без оптимизации).
Сцена показывает, насколько эффективно может работать компонент даже в перегруженной сцене.
Реализация необходимого - вопрос желания.
1780847657809.gif
zCjudUV.gif

(На записи: поведение искр похожим способом, но тут частицы уже не примитивы, а процедурная генерация - размер, свечение, затухание и т.п., - живые бекграунды, переходы, загрузчики без единого спрайта, лишь часть применения)

Это позволяет вывести создание UI Lineage 2 на новый уровень - теперь можно думать не только о функциональности, но и о красоте, которая ранее была недоступна в ограниченном и слабопроизводительном xmlui\unrealscript, либо доступна, но через кучу дополнительного кода.
Это становится возможным за счёт использования полноценного GPU-рендеринга\аппаратного ускорения, что критически важно для UI.

Вышесказанное выведет разработку клиента но новый уровень и позволит людям с базовым уровнем вебразработки создавать UI любой сложности.
Никакого софта, никаких компиляторов, никаких редакторов - только вы и PortUI, который является обёрткой для всего - от базовых стилей до низкоуровнего взаимодействие за счет C++ API.
Порог вхождения уже на уровне начального понимания вебстака - это главная цель.



4) Остальное

Видео\аудиоплеер доведён до ума.

-Любой медиакомпонент требующий постоянного соединения - предварительно проверяет возможности сети, что бы исключить цикличный таймаут из за высокого качества видео\потока
-Таймаут загрузки медиаконтента теперь определяет PortNatives исходя из реальной обстановки, а не статичная цифра "на авось"
-Разрыв радиопотока исключен - больше не бывает разрывов во время прослушивания (jitter fix)
-Зависание стрим-плеера исключено на стадии запуска - система сначала проверит и в случае ошибки сообщает о невозможности запустить стрим в том или ином регионе, а не пытается пробиться (kick RU-blocking) (не касется re-stream через внутреннюю сеть PlayerPort)
-Стримы научились выдавать честные 1080|1080+\60fps, а не "дрожать" в диапазоне 50-60 FPS
-Видеоплеер синхронизирует честную громкость c Windows, а не цифру ниже реальной громкости на 5-15%
-Видео\аудио плеер получил усилитель звука до 200% (vlc-like)


Логирование
-Все логируются через чистое с++ API в *.log файлы, вместо логирования через JS-обертки.



5) Будущее
На данном этапе я всё ещё занимаюсь оптимизацией UI - моя главная задача сейчас вычистить обертку (PortUI) - создать\подключить все необходимые нативные API, вынести всё что тяжелое в плюсы, убрать дублирование скриптовой части и т.д. и т.п.

Попутно с этим идёт развитие PortCanvas - это прокси для основного интерфейса, которое откроет прямые возможности к созданию окон основанных на PortUI для интерфейса lineage2.
Это значит, что можно будет без проблем создать новое или заменить целое окошко в интерфейса на веб-интерфейс, который сможете сделать лично вы, использовав для вывода те же самые пакеты, что использует ваш сервер и unrealscript - ломать старое не нужно, только сделать новое, а старое всегда остаётся fallback-логикой.

И напоследок, как вы уже знаете (а если не знаете я напомню) - PlayerPort доступен от GrandCrusade до последних (и будущих) протоколов Essence\Live, точкой входа являтся interface.u\interfaceClassic.u - это полностью регулируемый и не скрытый компонент интерфейса игры, который через 1 окошко (на самом деле 2) реализует бездонную яму возможностей веб разработки -

  • Локальные: уи\окошки\информация\т.п.
  • Внешние: Я предлагаю услуги разного характера, такие как аналитика сервера, отслеживание ботов, чёрные списки, поддержка системы репортов под выделенный сервер (хранение-отдача контента)


Если есть вопросы или вы хотите попробовать - контакты для связи:

До встречи через некоторое время🐀
 
И ноль ответов в теме
 
Назад
Сверху Снизу