default_npc
Vagabond
Привет. Со кем то из вас мы знакомы, с кем то сотрудничали, а с некоторыми работаем по сей день. Кто меня не знает: Я делаю интерфейсы в Lineage2, занимаюсь клиентами\серверами, интересуюсь всякими странными штуками, а ещё - люблю эту игру.
Некоторое время назад на досуге я занялся своим пет-проектом aka очередной странной штукой, которую я назвал PlayerPort. Тут мы немного пообщаемся на эту тему, нальём много воды, умных слов и терминологии. Важно упомянуть, что это не презентация, а скорее мысли, рассуждения и легкая реклама существования проекта как рыночное предложение.
Ниже около 13 тысяч символов, поэтому для общих черт я задам тег-лист, дабы внести ясность и отфильтровать всех, кому это не интересно:
УИ-фреймворки, радио, системы поддержки, http, легаси web, размышления, интерфейсы л2, браузер в клиенте л2, веб бекенд-фронтенд, квилети оф лайф, администрирование
Всё началось с того, что я твёрдо решил изучить возможности клиентов в контексте веб-браузера, который достаточно давно доступен как UI элемент и небольшой набор API. Некоторое время спустя была реализована простейшая петиция (на стандартном Lineage2 petition-UI), которая просто отправляла информацию на ендпоинт, а он в телеграм бота. Забавно же? Вот и я подумал так же.
Со временем я начал думать дальше: "Окей, но почему бы не сделать это чуть-чуть гибче, чуть-чуть модульнее и собрать не просто один маленький незаметный сервис для одного проекта, а стать полноценным модулем для обслуживания множества проектов одновременно?" Сказано - сделано.
PlayerPort - попытка сделать действительно универсальный, модульный и мультисерверный in-game веб-движок.
Это не просто браузер, это - набор мини-приложений и сервисов, что бы сделать проекты ещё более удобными для всех, как администратору, так и игроку.
Это клиентский модуль, позволяющий подключиться к единой, мультисерверной инфраструктуре, которая уже работает и показывает результаты.
2) Новый JavaScript\HTML\CSS (web-view layer)
Если рассматривать это не просто как браузер, а как условное полотно для творчества, мы получаем, если позволите, "фронт в фронте" (гибридный УИ), первый позволяет создать удобный фундамент и безшовную интеграцию в клиент, второй - предоставить бОльше возможностей визуализации.
Упор на скорость и отзывчивость, даже при условии высокой нагрузки.
Уже, как готовые решения или не очень длинная разработка\доработка под нужды:
*Всё это работает как на древних клиентах (к примеру 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 типа обновлений, "ленивые" и "активные"
Важный нюанс также скрыт в том, что всей сетевой активностью, рендерингом и пр. занимается внешний процесс, а не основной (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 игрока\администратора.
В ближайшее время:
Я давно заметил проблему: Экосистема проектов фрагментирована и раздроблена - сайт, форум, телеграм\дискорд, лк, поддержка и т.п. Другими словами мы всеми силами выталкиваем игрока с игры, с перспективой что он залипнет в браузер, телегу или другое промежуточное звено между игрой, точкой назначения и обратно. Т.е. цели как вы уже поняли просты: Упростить и ускорить. А самое главное - не выгонять игрока с игры, а удерживать его в ней, дав ему всё необходимое прямо внутри клиента.
Основная идея не просто впарить это кому то, а сделать новый шаг для этой игры и нашего комьюнити в целом. Я напомню, что Lineage2 всегда была рынком инноваций, разработок, порой даже вперёд корейского паровоза. Ни одна мморпг в истории не была так востребована. Почему бы не добавить к ней ещё одну штуку, которая сделает нас ещё чуть более уникальными?
Я ищу энтузиастов, проекты, проекты энтузиастов, которые так же как и я увидят в этом нечто новое для нашей игры, заинтересуются и захотят использовать это у себя, развивать и улучшать свою жизнь и жизнь игроков.
В первую очередь это может быть интересно небольшим\средним проектам, а так же моим клиентам с которыми мы сотрудничаем - тем, кому имплементировать текущую систему будет максимально быстро и просто, т.к. все исходники клиентов надежно хранятся на моей стороне.
Это БЕСПЛАТНО.
Хорошо посидели, душевно поговорили. Надеюсь было интересно и вы впитали что-то новое в свои извилины. Как мы выяснили, проект имеет как и плюсы, так и минусы.
Из плюсов: Безусловная доступность проекта в контексте "низших" прослоек серверстроя и новые возможности для "малышей" рынка, у которых нет больших денег и(или) штата разработчиков.
Из минусов: Технические недостатки, аспекты клиент-части (которая lineage2) и само-собой ввиду ограниченного, устаревшего и просто богомерзкого вебкита, периода 2012-2016 года. Ну и конечно же огромное число работы, прежде чем это станет чем то действительно стоящим.
Если кто-то дочитал до сюда - спасибо, что осилили это поток сознания.
Несмотря на все ЗА и ПРОТИВ, проект жизнеспособен и определённо имеет право на существование. Главным препятствием, как это часто бывает в системном администрировании и разработке, остается дефицит времени. Однако мой скромный опыт подтверждает: любая амбициозная цель достижима, если сохранять уверенность в том, что неразрешимых проблем не существует.
Ваши вопросы, негатив и прочее жду в этом треде или по контактам ниже.
До встречи.
Некоторое время назад на досуге я занялся своим пет-проектом aka очередной странной штукой, которую я назвал PlayerPort. Тут мы немного пообщаемся на эту тему, нальём много воды, умных слов и терминологии. Важно упомянуть, что это не презентация, а скорее мысли, рассуждения и легкая реклама существования проекта как рыночное предложение.
Ниже около 13 тысяч символов, поэтому для общих черт я задам тег-лист, дабы внести ясность и отфильтровать всех, кому это не интересно:
УИ-фреймворки, радио, системы поддержки, http, легаси web, размышления, интерфейсы л2, браузер в клиенте л2, веб бекенд-фронтенд, квилети оф лайф, администрирование
- Это что такое?
Всё началось с того, что я твёрдо решил изучить возможности клиентов в контексте веб-браузера, который достаточно давно доступен как UI элемент и небольшой набор API. Некоторое время спустя была реализована простейшая петиция (на стандартном Lineage2 petition-UI), которая просто отправляла информацию на ендпоинт, а он в телеграм бота. Забавно же? Вот и я подумал так же.
Со временем я начал думать дальше: "Окей, но почему бы не сделать это чуть-чуть гибче, чуть-чуть модульнее и собрать не просто один маленький незаметный сервис для одного проекта, а стать полноценным модулем для обслуживания множества проектов одновременно?" Сказано - сделано.
PlayerPort - попытка сделать действительно универсальный, модульный и мультисерверный in-game веб-движок.
Это не просто браузер, это - набор мини-приложений и сервисов, что бы сделать проекты ещё более удобными для всех, как администратору, так и игроку.
Единая точка входа

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

Системы репортов


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

Или радио

Стримы


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

Система не просто сухо анализирует текущее состояние, со временем она накапливает определённый набор информации о игроке и может построить связь между, на первый взгляд, несвязанными персонажами (даже для игрового сервера).

Дашбоарды

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

Системы репортов


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

Или радио

Стримы


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

Система не просто сухо анализирует текущее состояние, со временем она накапливает определённый набор информации о игроке и может построить связь между, на первый взгляд, несвязанными персонажами (даже для игрового сервера).

Дашбоарды
- Ну рассказывай уже
Это клиентский модуль, позволяющий подключиться к единой, мультисерверной инфраструктуре, которая уже работает и показывает результаты.
- Фронтенд:
2) Новый JavaScript\HTML\CSS (web-view layer)
Если рассматривать это не просто как браузер, а как условное полотно для творчества, мы получаем, если позволите, "фронт в фронте" (гибридный УИ), первый позволяет создать удобный фундамент и безшовную интеграцию в клиент, второй - предоставить бОльше возможностей визуализации.
- Бекенд:
Упор на скорость и отзывчивость, даже при условии высокой нагрузки.
Уже, как готовые решения или не очень длинная разработка\доработка под нужды:
- Собственный легковесный UI фреймворк: Основанный на поведении и методологии оригинального UI lineage2, без внешних библиотек и тяжелых модулей - ванильный js. Является основным движком текущей версии и все скриншоты выше - это исключительно PortUI
- Парсинг: Социальные сети, сайты, rss, любые доступные веб страницы и вывод информации внутри игрового веб-браузера c оформлением
- Тикет-система: Внутриигровые репорты игроков, внутриигровая админка, внутриигровая\телеграм нотификатор, API для внешних админок (если нужно вывести в свой веб), отправка в брокеров (пр: kafka), хранение
- Радио-модуль: Радио-сервис с десятками веб-радиостанций, удобные выбором, обновлениями станций, сохранением и возможностью открыть как большое окно, так и маленький плеер с удобным функционалом для управления воспроизведением
- Поддержка стриминговых платформ: Стримеры вашего проекта или любые - прямо в клиенте
- Система общения**: Форум для внутриигрового веба, возможность организовать общение игроков прямо в игре, причём всё это может быть межсерверным - к примеру коллаборирующие проекты могут объединиться в кластер с единым внутренним форумом, приветствием и т.п.
- Модули** анализа чата, поведения, трейдов, почт и т.п.: Упрощение работы администраторов для анализа и отслеживания ботов, РМТ, и пр. - мы можем анализировать поведение, оценивать риски, показывать цепочки связей между персонажами и т.п.
- Телеграм боты как панацея**: Оповещения для администраторов (централизованный бот) и бот для игроков, с возможностью привязки к серверу для получения системных уведомлений или же уведомлений в стиле "ты умер".
- Приветственные страницы на PortUI или ванильном html+js+css (legacy), которые вы можете сверстать и разместить сами
- Любой дизайн, цветовая палитра, подключенные модули - всё максимально гибко от проекта к проекту
- Внешний web для полноценных браузеров (больше возможностей, дашборды, современных технологии, реализация необходимых задач)
- Мультиязычность
**Некоторые упомянутые вещи реализованы абстрактно или поверхностно, без четкого понимания цели и необходимого результата, поэтому требуют корректировки\дополнения\улучшения
- Но подожди
Мы в 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)
- Активные: Обновления, что подписаны на определённые события, к примеру отправка сообщения в чат.
Важный нюанс также скрыт в том, что всей сетевой активностью, рендерингом и пр. занимается внешний процесс, а не основной (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 года. Ну и конечно же огромное число работы, прежде чем это станет чем то действительно стоящим.
- Эпилог
Если кто-то дочитал до сюда - спасибо, что осилили это поток сознания.
Несмотря на все ЗА и ПРОТИВ, проект жизнеспособен и определённо имеет право на существование. Главным препятствием, как это часто бывает в системном администрировании и разработке, остается дефицит времени. Однако мой скромный опыт подтверждает: любая амбициозная цель достижима, если сохранять уверенность в том, что неразрешимых проблем не существует.
Ваши вопросы, негатив и прочее жду в этом треде или по контактам ниже.
До встречи.










