Представление о проекте SphereWeb

  • Автор темы Автор темы Logan22
  • Дата начала Дата начала

Logan22

Гений мысли
Проверенный
Сообщения
1 638
Розыгрыши
0
Решения
3
Репутация
1 747
Реакции
1 482
Баллы
1 808
Доброго времени суток.
Хочу представить новый и бесплатный веб-движок (CMS / UCP) с богатым набором возможностей и отрытым исходным кодом для управления JAVA серверами.
Вероятно, моя работа это лучшее веб решение что есть, из числа бесплатных и платного (за исключением (визуально, не пользовался) - wizardcp).
Разработка не прекращена, она продолжается постоянно практически каждый день.

Прежде чем я опишу в подробностях возможности, помните, что я делал как лучше мне, мне - как игроку Lineage ][ .

Теперь возможности ЛК и нюансы.
Две возможности регистрации.
1. Без предварительной регистрации в ЛК, в этом случае, с регистрацией игрового аккаунта, зарегистрируется и профиль ЛК.
2. Регистрация из своего профиля в ЛК.

Быстрая и простая модальная панель регистрации, где у пользователя есть возможность не скрывать свой пароль от себя же, это удобно, если у пользователя много аккаунтов и он часто путешествует по серверам.
Иногда сложно придумать логин и пароль, по этому есть автогенерация логин и пароля.


Отображается зарегистрированные аккаунты так.
Как видите пароль, который не был скрыт, доступен для просмотра.
Его можно будет скрыть в любое время.
Ранее скрытый пароль сделать просматриваемым - запрещено.

Статистику (оно же и рейтинг) я сделал достаточно богатую.
PvP / PK / Кланы / Конкретный Клан / Замки / Герои / Время игры персонажей / Заблокированные / По классам / Просмотр информации персонажей.


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


Возможность разрешить/запретить доступ к просмотру данных персонажа посторонним пользователям.

Самый неопределенный для меня раздел, я так и не решил как сделать лучше, проще и удобнее, и делал уже несколько вариантов. Пока остановился на таком.

Панель для пожертвования выглядит так.
На сайте своя валюта Донат Бонусы или Донат Очки (как Вам угодно), за пожертвование пользователь получает их, и может в разделе "Магазин" купить что-то за них.
Пользователь нажимает купить, вписывает ник своего персонажа и предмет отправляется персонажу, донат бонусы списываются.

Это раздел, где пользователь может создать публичную тему, описать проблему, прикрепить 3 (5) изображений, ввести переписку с администратором, добавлять сообщения.
В тикет не могут писать посторонние пользователи, только администратор и автор тикета.

Пользователь может распространить личную ссылку на регистрацию, и за привлеченного пользователя получать Донат Бонус.
По умолчанию, для того чтоб пользователю засчиталось привлечения игрока, игрок должен соответствовать ряду требований, по умолчанию это 3 час. игры, 80 уровень, 1 PvP, 1 PK - изменяется в конфиге.

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


Администратор может создавать страницы двух типов, обычные страницы и новостные.
Администратор может включать/отключать возможность комментирования страницы пользователями.
Так и выбирать язык новости. Новости для русского языка, не будет выводиться тем у кого включен англ. язык, для них выводится англ. новости/страницы.

Давно хотели себе, чтоб чат из игры выводился на сайте в реал тайме?
Я решил что это очень интересно. И сделал.

По умолчанию на сайте выводится только чат GLOBAL / TRADE / обычный чат.
Чат пати, клан и прочие, выводятся только в админке, возможен поиск по сообщениям/игроку.

Следите за разделом, позже будет информация как это сделать.

С общими представлениями хватит, перейдем поверхностно к техническим аспектам.
Вы можете создавать неограниченное кол-во языковых пакетов.
Языковой пакет находится и имеет название ru.php или en.php , вы можете дополнить, просто создав новый файл с названием языка по стандарту ISO 639-1 и сделать в нем свой перевод.
Я не знаю сколько в будущем будет языковых пакетов, по этому заблаговременно сделал в конфе возможность выбирать какие языковые пакеты использовать.

Появилась такая вещь как коллекции, это PHP класс, который просто возвращает строку SQL запроса, в них общий стандарт запросов к каждой сборке. На данный момент, Вам нужно знать что тут (\src\component\base\source) реализуются запросы к БД. На данный момент там реализована работа со сборками L2jEternity, L2jOpen, L2jFirstTeam (267, 268, 271, 273), L2jLucera3 (746), L2jMobiusClassic (338, 362, 388, 414, 418).

После установки, вам может понадобится зарегистрировать свой сервер.
Кол-во серверов, которые могут работать с SphereWeb неограниченно.
В админке Сервер->Настройки->Добавить и заполняем все данные.
Тут стоит отметить, что после выбора версии игры, появится выше упомянутая коллекция запроса исходя из протокола версии игры.

После выбора хроник, будет возможна выборка коллекций.

...

Думаю с этим всё ясно, всё другое имеет однозначное описание.

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

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

Если мы хотим пользователя наградить определенным бонусным предметом, который пользователь отправит себе на персонажа, условно за розыгрыш или за голосование, красивые глазки...
Тогда мы записываем в таблицу bonus данные о подарке.

После этого, у пользователя появится новый значок сверху

При нажатии появится панель с бонусами.

При нажатии, предложит отправить на персонажа (это обязательно должен быть один из персонажей аккаунтов пользователя)

в файле можно отключить (false) или включить (true) определенные опции.

Эта информация про ту страницу, которую пользователь видит, когда заходит на Ваш сайт:
По умолчанию, шаблон используется только на главной страницы, больше нет страниц где будет использоваться Ваш шаблон.
Шаблоны можно сильно кастомизировать.
Создав в шаблоне файл route.php и указывать какие страницы роутера Вам нужны и какой html шаблон должен открываться.
<?php
$pages = [
'/download' => 'download.html',
'/about' => 'about.html',
];
В данном случае, при посещении страницы example.com/download будет открыта download.html страница.
Таким образом, шаблон абсолютно не привязывается к зарезервированным роутерам движка.
Аналогично обстоят дела и с языком, Вы можете в шаблоне определить свои языки и свой перевод создав в нем файл lang.php
<?php
return [
'ru' => [
'home' => 'Главная',
'important_announcements' => 'ВАЖНЫЕ ОБЪЯВЛЕНИЯ',
'project_streamers' => 'Стримеры проекта',
],
'en' => [
'home' => 'home',
'important_announcements' => 'IMPORTANT ANNOUNCEMENTS',
'project_streamers' => 'Project streamers',
],
];
Синтексис в шаблонах ->

За одно и упомяну, можно добавить в шаблон файл readme.json с описанием автора, скриншота шаблона, время создания, контактных данных разработчика шаблона.
Тогда у админа, при выборе шаблона будет информация.

Я дал Вам поверхностное описание, теперь я хочу рассказать о минусах, которые есть.

Так как кода написано там много, со временем образовался код, который не используется и никак не доходят руки удалить его, рефакторинговать.
Ещё к минусам я отношу - верблюжьим и змеиным регистром написан код.
Много где отсутствует комментарии / в некоторых местах (если ещё осталось) комментарии "прыгнули" в другие места, не над функцией (спасибо phpStorm).
Много есть кода, который можно улучшить, переписать более лаконично.
Мне не нравится, как я использую модули, без однозначного определения, просто обращаясь через неймспейс модуля.
Встречаются баги: без этого никуда, к тому же я часто что-то дорабатываю/делаю, но к счастью, я их моментально фиксю, как только получаю информацию.
Час от часу встречаются в шаблонах текст, без перевода на разные языки. Поправим.
Много где верстку нужно улучшить, доработать, поправить и сделать более красивее.

Необходимо PHP 8.2 , если Вы решите установить ниже, то работать не будет, так как я по мере устаревания переписываю старый код используя последние сахар новых версий.


Разработка бесплатная, публикуется на моем гитхаб
Вы можете изменять код под себя, или дорабатывать под себя, фиксить.
Почему бесплатно? - изначально я не планировал делать CMS/ЛК/UCP... а мне нужно было сделать просто веб-интерфейс для лаунчера, но я увлекся и продолжил делать.

Если у Вас есть возможность, установите через git .
Если нет, перейдите по ссылке и загрузите

Архив распакуйте, и перейдите на главную страницу сайта, если всё сработало, у вас откроется установщик, следуйте инструкции.
Если на этапе установки, произошел сбой, перестало грузится и т.д. отпишите мне в телеграмм, чтоб я ознакомился с проблемой и решил её.

Будет больше и подробнее как пользоваться... я описал тему на лету, не готовился. Следите за разделом, скоро будет больше информации.

Есть в планах сделать взаимосвязь с телеграммом.
Есть в планах сделать розыгрыши с выдачей призов, к примеру в виде бонус-кода, где пользователь введет код и получит рандомный приз.
Сделать лаунчер в ЛК, он готов, работает, но требуется доработки нюансов.
Появятся уведомления, к примеру кто-то написал в тикете, чтоб админу приходила информация об этом.

.... Я буду всегда рад Вашим идеям, а ещё лучше помощи , одному сложно, и делается оч долго.


Список новых доработок: Представление о проекте SphereWeb
 
Последнее редактирование:
Можно подробнее развить эту тему? Как тут работает лаунчер и обновление клиента?
На видео видно работу, но там без техниеских подробностей
 
Все технические подробности на гитхабе) техничнее и подробнее некуда)
 
Лаунчер нигде не опубликован, он альфа версия.
Сделаю краткое описание, чтоб удовлетворить интерес.

Прежде я хочу сказать, какие размышления были перед попыткой реализации лаунчера.
Первое: Мне как игроку не нравится что под каждый сервер нужно иметь свой лаунчер. Как по мне, один лаунчер смог бы обрабатывать любое кол-во серверов и через сайт был бы продуктивным. Чтоб игрок вообще забыл что нужен лаунчер.
Второе: 80% файлов в патчах, это то что скачивал ранее пользователь с других серверов, а мы заставляем снова игрока скачивать файлы, только 20% уникальные файлы.
Третье: Лаунчеры другие не используют максимально возможность конкурентности и параллелизма, в результате время работы возрастает многократно.
На основе этих трех китов я сделал лаунчер.

Теперь как он работает под капотом.
При запуске лаунчера открывается вебсокет, сайт на странице лаунчера пытается соединяется с лаунчером, если не запущен происходит оповещение.
Далее, в зависимости от действий пользователя, лаунчер принимает команды от сайта.
Команд не много, 10-15, к примеру такие как обновление игры, запуск игры или указание папки игры для N версии игры, или пользователь применил настройки к примеру автозапуск лаунчера, получение статуса лаунчера (идет обновление, обновление отменено, идет проверка файлов...).


Как это работает на практике глазами конечного пользователя?
Пользователь загружает лаунчер один раз, лаунчер копирует себя <%appdata%/web-launcher> и делает необходимую запись в реестр. С этой секунды, лаунчер можно запускать из браузера по ссылке или через JS код. Что-то очень похожее у телеграмма, телеграмм можно запустить при клике по ссылке.
На страницы лаунчера, пользователь (впервые на сервере) нажимает запустить игру, пользователь получит уведомление что необходимо обновить игру, и если у пользователя нет выбранной папки с версией клиента, попросит указать в модальном окне (выбрать месторасположение).
Далее начнется загрузка N одновременно файлов.
Тут много особенностей и тонкостей, к примеру, у пользователя есть возможность сохранять архивы патчей, для того что если в будущем он будет обновляться и этот файл уже есть у пользователя в архиве, файл загружаться не будет. - Это относится к 2 моей идеи. В результате таким образом, время загрузки сокращается многократно.

Ещё:
Лаунчер НЕ GUI, он не имеет видимой оболочки (за исключением терминала), он невидимый, общение только через браузер.
Патч генерируется через ЛК, нужен только лаунчер чтоб был включен.
Используется самый быстрый алгоритм получения хэш-сумм xxh3 .
Язык написания - Go.

В целом, технически, лаунчер оказался сложнее в написании чем CMS .
 
Последнее редактирование:
спасибо за новику
1. обычная рекапча при входе и рега аккаунта, будет гугл капча?
2. есть ли возможность установить Сферу , например из line2/lk.ru и как?
 
1. обычная рекапча при входе и рега аккаунта, будет гугл капча?
Я добавил пару дней назад. Она есть.
В конфиге <src/config/captcha.php> открываем и указываем какую капчу будем использовать, в данном случае google.
И ключи гугл капчи прописываем тут -
<src/component/captcha/google.php>


2. есть ли возможность установить Сферу , например из line2/lk.ru и как?
Я не понял вопрос.
 
Я не понял вопрос.
у меня обычный шаблон html, я не планирую его загружать в папку template
если Сферу установить по дефолту она дает выбор только из своих шаблонов в template, а моя страница в корне уже не видна...
допустим в корне сайта у меня стоит шаблон line2.ru/index.html, а Сферу установить из папки line2.ru/lk
 
Какой в этом смысл? Если вы с легкостью можете адаптировать ваш html по инструкции. Это цельный продукт в котором огромное кол-во функционала и им не пользоваться не имеет смысла.
 
у меня обычный шаблон html, я не планирую его загружать в папку template
Сфера имеет фиксированный адрес месторасположения шаблонов, она заглядывает в директорию <template>.
Все директории в <template> рассматриваются как действующие шаблоны, которые могут быть использованы для демонстрации на главной страницы.
Вам необходимо директорию шаблона разместить в директории <template>.
И воспользоваться следующей инструкцией -> Как переделать шаблон SW в SphereWeb?
 
А ведь можно было вынести в конфиг и ключи к гугл капче. Лазай по всем файлам двигла)
 
Приветствую, я так понял регистрация аккаунта происходит без подтверждения на почте? а то я так и не нашёл где активировать эту функцию.
и ещё вопросик, а то по django не нашёл инфы что мне нужно. так как файлы html, не работает php, как мне сделать include с другого сайта в html шаблон?
 
Да, я с этим не заморачивался ибо мне как игроку не нравится, когда нужно тратить время на подтверждение и особого смысла нет.


{% include "название файла.html" %}
 
Сделал небольшую доработку.
Теперь SphereWeb не обязательно иметь прямое подключение к БД сервера, можно использовать Rest API.


Если кто-то имеет желание протестировать, пишите, мне важно знать работоспособность, чтоб я мог обновить гит с доработкой.
Приложение реализующее REST API я выдам, для Linux / Win платформ.
 
Спасибо за проект, прям интересно. Особый интерес к лаунчеру через WEB - жду больше инфы)
 
Первоначально спасибо и поздравления с вашей безупречной работой. Я хотел бы понять эту систему, так как никогда не использовал её. Она работает только на компьютере, где находится сервер, или её можно установить на хостинг для сайтов?
 
Как угодно, хоть на хостинге отдельно хоть на одной машине с сервером
 
Большое спасибо за информацию. Прошу прощения за недостаточно должное благодарение, у меня просто нет опции "лайк".
 
Добавил по долгим просьбам, добавил префикс и загрузку данных аккунта после регистрации.

Пару слов о префиксе: Он не обязательный для всех игроков, только по желанию, есть возможность из префикса сделать суффикс.



Настройка


Загрузка файла с логином и паролем после регистрации.
Настройка так же в файле

Результат


Может я ещё что-то добавлял фиксил, но я уже не помню
 
Обратите внимание, что данный пользователь заблокирован! Не совершайте с ним никаких сделок! Перейдите в его профиль, чтобы узнать причину блокировки.
Установил. Постестировал на работоспособность, всё работает хорошо

Вопрос автору. Будет ли выводить новости с IPS движка ? а то там только ipb
 
Вопрос автору. Будет ли выводить новости с IPS движка ? а то там только ipb
По поводу ipb - я забыл вырезать его.
Когда-то была поддержка ipb (а может есть), но что-то мне не понравилось и я решил отказаться.
XenForo есть и будет.
С IPS не знаком что это.

В любом случае, любой форум можно добавить. Просто спроса на это почти нет.