Lineage2TS - HF сервер написанный на Typescript

Зачем мне это? Это нужно вам. Ваш ведь совет. И как я сказал раньше будут брать советы от людей которые во первых не зацикливаются на старых методах и технологияx. А во вторых почему-то приходят и ожидают что такие советы ценны. Нет, не ценны.

Ты рофлишь? Используй дальше SQLite я уверен когда вы его в тестовом режиме запустите все равно перейдете на PostgreSQL, MySQL подобные субд с юзерами а не локальным хранилищем))

Потому что элементарные запросы к бд чтобы вытянуть с бд нужно еще настраивать rpc соединение.)) Или rest api делать ))

Не принуждаю, но уверенно скажу что вы поменяете СУБД ))
 

Ты рофлишь? Используй дальше SQLite я уверен когда вы его в тестовом режиме запустите все равно перейдете на PostgreSQL, MySQL подобные субд с юзерами а не локальным хранилищем))

Потому что элементарные запросы к бд чтобы вытянуть с бд нужно еще настраивать rpc соединение.))
Давайте определим о чем мы ведем беседу. Я не против того что нужно будет поддерживать другие БД. Сейчас поддерживается SQLite как главная база данных. Поддержка SQLite без особых библиотек вот-вот уже почти готовa в Nodejs.

Если вы про то что вы хотите сопоставить соединение БД и RPC на игровом сервере, это нужно детально смотреть сколько и какие запросы будут. Это совершеннo другая проблема чем просто имитировать соединение к БД. На Яве это использовалось лишь потому чтo никто, нигдe не захотел по другому сделать. Вот и все. Это застой. Но людям как вы и напомнили это все комфортно.

Не принуждаю, но уверенно скажу что вы поменяете СУБД ))
Вы просто хотите каким-то образом быть правы или у вас есть другие факты которые могут подтвердить такое будущее?
 
Давайте определим о чем мы ведем беседу. Я не против того что нужно будет поддерживать другие БД. Сейчас поддерживается SQLite как главная база данных. Поддержка SQLite без особых библиотек вот-вот уже почти готовa в Nodejs.

Если вы про то что вы хотите сопоставить соединение БД и RPC на игровом сервере, это нужно детально смотреть сколько и какие запросы будут. Это совершеннo другая проблема чем просто имитировать соединение к БД. На Яве это использовалось лишь потому чтo никто, нигдe не захотел по другому сделать. Вот и все. Это застой. Но людям как вы и напомнили это все комфортно.


Вы просто хотите каким-то образом быть правы или у вас ест другие факты которые могут подтвердить такое будущее?
Дружище элементарный пример
Платежная система отправила на сайт сервера вебхук/коллбэк

Сайт принял коллбэк теперь Нада отправить итемы персу, в итоге что?)) нихера нет подключения к SQLite

Либо элементарно вывести top pvp на сайте или регистрацию сделать 😂😂😂
 
SQLite отличная, удобная, крайне быстрая база данных, проверенная временем.
И к ней вполне можно организовать доступ извне через простейшую прослойку в самом сервере.
 
SQLite отличная, удобная, крайне быстрая база данных, проверенная временем.
И к ней вполне можно организовать доступ извне через простейшую прослойку в самом сервере.
Какую интересно ?))))
 
Дружище элементарный пример
Платежная система отправила на сайт сервера вебхук/коллбэк

Сайт принял коллбэк теперь Нада отправить итемы персу, в итоге что?)) нихера нет подключения к SQLite

Либо элементарно вывести top pvp на сайте или регистрацию сделать 😂😂😂
Прекрасно. Замените подключение БД на RPC (что и в принципе так и работает по бинарному протоколу) с использованием JSON-а. Какое различие будет?
А будет все в том что иговой сервер сам будет обрабатывать запрос. Если все в БД, то игровой сервер нужно построить так что-бы все эти данные нужно будет прочитать, добавить все предметы или модификации персонажа в другие части сервера. Конечно, если ваш персонаж каким-то образон не находиться еще в игре, то возможно при загрузке сервер как раз и сделает то что вы описали. Нo проблема не в доставке информации либо в БД или же персонажа, сам игровой сервер должен в любом случае обрабатывать такой запрос. Так почему же нам нужно куда-то все сохранять, переодически заставлять сервер ждать новых данных о платежах или там предметаx? Дал запрос серверу напрямую ну и всe.
 
Дружище элементарный пример
Платежная система отправила на сайт сервера вебхук/коллбэк

Сайт принял коллбэк теперь Нада отправить итемы персу, в итоге что?)) нихера нет подключения к SQLite
Вы частично правы о том как все работает. Я говорю не o том что-бы изменить ваше мнение. Скорее я могу найти ситуацию когда нужно сделать то что вы хотите: отделенную БД от серверов.

Если есть много серверов и не понятно где и какие акаунты у нас содержат персонажей с определенным именем. Тогда да, намного проще дать внешний доступ к БД и сказать что сервис (оплаты а не сам игровой сервер) может каким-то образом понять где и как нужно править данные. Это решение, но одно из множества возможных. По другому можно сделать так что если мы знаем как подсоединиться к всем игровым серверам, можно просто запросить где и как персонаж для акаунта находиться ну и потом просто послать запрос в формате MessagePack текстовый JSON (это реализация RPC на Lineage2TS сервере сейчас).

Я кстати использую RPC соединение для пересылки административных команд на сервер для определенных персонажей (много уровней настройки как и блокировки по уровню админа, так что это не просто открытый доступ по типу L2J telnet) при тестировании. Тo есть когда тестируется функциональность обычных игроков, при этом будут тестироваться административные комманды. Это при том что есть различные виды запросов RPC, так что написание новых видов достаточно просто интегрировать в уже готовые системы. Но самое главное что это все работает, и очень быстро. Я тестировал например 96 паралельных соединений от клиентов, все работает. Все тесты проходят. Но самое главное что я не видел что-бы сервер нагружался более 1-2%. Так что нужно просто определить что решается и как можно это все реализовать.
 
Вы частично правы о том как все работает. Я говорю не o том что-бы изменить ваше мнение. Скорее я могу найти ситуацию когда нужно сделать то что вы хотите: отделенную БД от серверов.

Если есть много серверов и не понятно где и какие акаунты у нас содержат персонажей с определенным именем. Тогда да, намного проще дать внешний доступ к БД и сказать что сервис (оплаты а не сам игровой сервер) может каким-то образом понять где и как нужно править данные. Это решение, но одно из множества возможных. По другому можно сделать так что если мы знаем как подсоединиться к всем игровым серверам, можно просто запросить где и как персонаж для акаунта находиться ну и потом просто послать запрос в формате MessagePack текстовый JSON (это реализация RPC на Lineage2TS сервере сейчас).

Я кстати использую RPC соединение для пересылки административных команд на сервер для определенных персонажей (много уровней настройки как и блокировки по уровню админа, так что это не просто открытый доступ по типу L2J telnet) при тестировании. Тo есть когда тестируется функциональность обычных игроков, при этом будут тестироваться административные комманды. Это при том что есть различные виды запросов RPC, так что написание новых видов достаточно просто интегрировать в уже готовые системы. Но самое главное что это все работает, и очень быстро. Я тестировал например 96 паралельных соединений от клиентов, все работает. Все тесты проходят. Но самое главное что я не видел что-бы сервер нагружался более 1-2%. Так что нужно просто определить что решается и как можно это все реализовать.
как будешь бороться с параллельными запросами? Либо с высокой нагрузкой?
Как будешь связывать 2 и более сервера?

Меня смущает только выбор СУБД кто тебе посоветовал масштабный л2 проект пилить на локальном SQLite ?
В целом желаю удачи и развития проекту

Можешь мне отписать в телеграм обсудим эту тему и глобально стадию разработки
 
как будешь бороться с параллельными запросами? Либо с высокой нагрузкой?
Как будешь связывать 2 и более сервера?
Отвечу по порядку на вопросы.

1. Все запросы будут обработанны по порядку их прихода на сервер. Я не пойму почему есть даже идея паралельных запросов? Сервер ведь это один процесс, поэтому нет возможности в deadlock-е . Могли бы вы описать проблему конкретнее? В чем суть проблемы?

2. Нагрузка будет. Всегда. Это же будет проблемой и сервера соединенного с удаленной БД. Отличие лишь в том что данныe где-то как-то записались. Но это ведь можно и обратно сказать. Как насчет нагрузки на БД? Вдруг там много-чего делаеться и наш игровой сервер потихоньку тормозит из-за соединения? Я о том что это не является проблемой, и не симптом проблемы. Это просто побочный эффект с которым нужно как-то обходиться. Так вот, поконкретнее что мы решаем?

3. Логин сервер поддерживает множество серверов. В чем проблема? Если знаешь как подсоединиться к каждому из ниx, то проблема будет в коммуникации, а не в количестве. Пусть даже у вас десять серверов. Вот десять соединений. Как я и описал все что можно делать с БД соединениями, можно также настроить на игровых серверах.

Можно также построить отдельный сервис, который делает все что нужно. То есть он кеширует все запросы, соединяется с серверами и занимается чисто интеграцией вашей системы. Так вот, прямые соединения с БД на Ява уже так и делают, только являются частью системы соединения. Разницы почти нет.
 
Дружище элементарный пример
Платежная система отправила на сайт сервера вебхук/коллбэк

Сайт принял коллбэк теперь Нада отправить итемы персу, в итоге что?)) нихера нет подключения к SQLite

Либо элементарно вывести top pvp на сайте или регистрацию сделать 😂😂😂
На самом деле всё проще, не нужно чтоб что-то посторонне лезло в бд игровую .
Сервер пусть сам чекает апи сайта и проверяет есть ли предметы для выдачи.


Кстати автор, я так сложилось исторически, что каждое обновление языковых моделей, я проверяю насколько они хороши на твоём проекте 😂😂😂 уже как стандарт стало для меня
 
Спасибо за ваши труды.
Не затруднит ли вас выкатить мануал по запуску с использованием portainer, а также настройкой сервера для подключения с другого пк в локальной сети?
 
Спасибо за ваши труды.
Не затруднит ли вас выкатить мануал по запуску с использованием portainer, а также настройкой сервера для подключения с другого пк в локальной сети?
Буду делать. У меня уже есть наработки что-бы автоматизировать запуск контейнера сервера на Portainer, нужно просто раширить некоторые функциональные параметры. Сейчас я уже использую мои наработки как раз в тестировании сервера. То есть сначала контейнер замещается на отдельном компьютере на локальной сети на котором уже стоит Portainer, a потом начинается тестирование.

Пока могу только посоветовать почитать где самое главное установить переменную "GS.server.ExternalServerIP=<IP>" на адрес вашего компьютера где установлен Portainer.

А насчет клиента, нужно редактировать фай L2.ini что-бы прописать IP адрес сервера.
 
Назад
Сверху