Ну зачем же так. Я за то что SQLite работает и будет работать как основная БД. Если нужно, можно подстроить как Mysql так и Postgresql как варианты. Весь код отделен интерфейсами, так что работы будет не много подстроить в принципе любую SQL БД. Берем код от SQLite и подменяем что нужно (ну там вообще можно ничего не измненять, кроме настроек таблиц при создании). И будет ваше счастье... То же самое с датапаком, все разделено и прописано через конфиг. Просто датапак уже будет сложнее сделать, так как форматы данных нужно парсить (можно например загружать много файлов через потоки, но это так, идея, но я уже так делаю с переработкой гео-даты на восьми потоках; раньше такая операция занимала 20 секунд, сейчас меньше пяти...).Безсмысленно. Он слушает, но не слышит. Пускай "дротит как хотит".
Немного подробнее отвечу. Конечно разница есть если ты как разработчик ждешь загрузки сервера 20, ну 30 секунд даждый раз (это сравение напрямую с Явой, там и подольше дебаг билды идут...). Начинал с загрузки под 30. Сейчас с дебагером стартует меньше десяти. Достаточно сразу перейти в клиент и не ждать долго.но во время работы сервера уже без разницы, зато любой нанятый человек сможет работать над датапаком без установки доп. утилит и знания sql
Не нравится мне конечно идея делать gameserver гейтвеем для бд. Лишняя нагрузка на гс. Если что-то будет торчать наружу(даже если веб морда будет прокси), гс ляжет или деградирует от простого баш скрипта дергающего запросыМожно просто использовать итеграцию через RPC
О каких лазаниях речь? Про реплики речь: что вам придется потратить время для защиты данных, чтобы помимо RAID еще что-то прикрутить - тот же litestream настроить(хотя наверное по времени тут будет схоже с настройкой реплик для мускула). О копированиях тоже я не говорил, а об общем доступе, когда вам понадобится открыть второй сервер и логины/пароли будут общими, но видимо тоже будет через RPC. Кажется такая архитектура не сделала проще работу над л2 серверомА насчет описания лазания по дискам, ну вы в 20 веке?
Так и что же делают?) Я вообще не встречал постов про это и советов про то как работать с бд. Тут есть люди, которые все на AWS перенесли, есть те кто контейнеризовал все, крутит на выкупленной железяке из ДЦ и радуется. Есть конечно и те, кто логи в боевую бд пишет, но эти не пишут тут) А если где и есть куски - то вопросы новичков, которые не в 20 веке, а для которых играться контейнерами будет сильной нагрузкой для старта(хотя может контейнер по рецепту поднять им было бы и проще). Да и опять же спорный вопрос, а нужно ли это, когда нужно 3 инстанса запустить и все. Вас кто-то обидел 20 веком? Откуда такое ЧСВ евангелиста, не понятно. Вы собственно из-за этого и получили такую реакцию в ответ)Здесь же на наших форумаx что люди делают? Копаются ручками, винтики слаживают... не нужны никакие докеры, даже VM-ы, мы все умеем в нашем 20-ом веке! Пора привыкать что технологии есть и получше.
Все чьих технических навыков или желания не хватает для создания редактора? Именно так все далекие от разработки люди начинают свой путь в л2 "администрирование" сервера. Я сомневаюсь, что редактирование таблиц супер удобнее. Если вы не ограничиваетесь клонированием pts, то изменения будут нужны и скорее всего доп. тулинг для удобстваВот скажите кто и как будет сидеть и ковырять XML или там другой файл кроме как HTM ?
В 20 веке люди делают изменение htm в IDE, которое синкается с ремоутом и для этого не нужно ни строчки кода, а сервер с отключенным флагом кеширования просто читает запрашиваемый клиентом файлЯ себе так и сделал что у меня есть утилита (cli часть проекта) где все файловые изменения по HTM файлам мгновенно записываются на датапак сервера, и утилита также разговаривает с сервером что-бы перезагрузить все HTM страницы.
Вы рассуждаете с позиции сервера и простого админа, который сидит и ручками наводит порядок. Нужно просто поставить вопрос о том ЧТО хотите делать и как связываться с сервером. Так вот, как например настроить RPC с сервером? Проект используется через докер. Поетому все что проиходит на БД тоже делается внутри докера. То есть зачем открывать порт на сервере к RPC, не надо это делать. Берем VPN по типу Tailscale и соединяем все сервисы. Ну а если все сервисы у нас уже на докере, то можно сразу запихнуть их в docker swarm. Да, это посложнее чем просто связывать Mysql и сервисы напрямую, но вы все-равно решаете те же самые проблемы, только другим путем:Не нравится мне конечно идея делать gameserver гейтвеем для бд. Лишняя нагрузка на гс. Если что-то будет торчать наружу(даже если веб морда будет прокси), гс ляжет или деградирует от простого баш скрипта дергающего запросы
О каких лазаниях речь? Про реплики речь: что вам придется потратить время для защиты данных, чтобы помимо RAID еще что-то прикрутить - тот же litestream настроить(хотя наверное по времени тут будет схоже с настройкой реплик для мускула). О копированиях тоже я не говорил, а об общем доступе, когда вам понадобится открыть второй сервер и логины/пароли будут общими, но видимо тоже будет через RPC. Кажется такая архитектура не сделала проще работу над л2 сервером
1. Typescript это для того что-бы сервер работал на Nodejs.MrThirtyOddSix, а можно вопросы нуба?
1. почему именно тайпСкрипт был выбран, чем он лучше явы в процессе работы сервера, а не загрузки? (готов ждать ан 20 сек больше)))
2. sqlite быстрее при загрузке, а нужна ли его скорость и дает ли он ее в процессе работы? допустим опустив другие проблемы, даст ли он например прирост по своей задаче макс онлайна допустим с 5к до 10к на сервере(цифры для примера)?
3. на базе чего ведется разработка сервера? это самописный проект, или основывается на каких-то исходниках/декомпиле, который рефакторится в TS?
Построить полноценный игровой сервер. Вы поймите что я не для вас и не для денег это все делаю (у меня их достаточно, и не только их). Проект изначально начал делать что-бы проверить как можно вообще написать все это для Nodejs. Ну и решать интересные задачи при программировании сервера (на работе таких проблем просто не увидишь). Нужно тоже определить, что за удар? Работает сервер? Да. Но я то только один этим занимаюсь, и не один год. Поэтому не обессудьте в том что сервер может не работать на все 100%, даже сравнивая с L2J.Ну и да, а цель проекта какая в итоге? А то мы тут все переживаем за качество и боеготовность держать удар, а оно можа и не надо
Нет я смотрю с позиции системы, где "однопользовательская" бд должна будет обслуживать gs, ls, web. В итоге получится: игроки логинятся, кто-то фармит и предметы пишутся в бд, и где-то сидит Logan22 и показывает 1001 способ дрючить веб для регистрации аккаунта. И тут в ДЦ выключают электричество и отваливается диск)Вы рассуждаете с позиции сервера и простого админа
Да, с позиции классического архитектора (ну там диаграммы, документы, обсуждения и т.д) , то что есть сейчас не очень приятно. Мне это все понятно. Но не волнует (не первую декаду программирую, и делаю архитектуру, обсуждения и т.д). Для меня нужен сервер что-бы его можно было просто обслуживать. Как это сделать? Нужно что-бы человек сделал все-го несколько вещей и сервер работал. Все. Не надо настраивать БД, лазить в конфиги, понимать датапаки, смотреть логи.... Нужно просто взять docker image и запустить его.Нет я смотрю с позиции системы, где "однопользовательская" бд должна будет обслуживать gs, ls, web. В итоге получится: игроки логинятся, кто-то фармит и предметы пишутся в бд, и где-то сидит Logan22 и показывает 1001 способ дрючить веб для регистрации аккаунта. И тут в ДЦ выключают электричество и отваливается диск)
1. Typescript это для того что-бы сервер работал на Nodejs.
Построить полноценный игровой сервер. Вы поймите что я не для вас и не для денег это все делаю
Построить полноценный игровой сервер.
Смею посоветовать вам взять pdb к pts(вроде гомункул хроник) из шары сделать себе декомпили и использовать как справочник. В джава эмуляторах большинство делалось "как чувствую", а не как корейцы задумали. Тут Aristo может краше рассказать)Геодата есть, сейчас работаю над поиском пути для мобов. O том что пока не работает, так это все что связанно с захватом територий (замки, форты и межклановые войны).
1. Во многом от того что я видел и работал, Ява и Nodejs по скорости равны. Но, не равны в много-поточной производности. Что очень важно заметить при сравнении. Оба языка работают изначально на одном потоке. Но, я к чему это все, производиетльность Явы падает если она использует блокировку по потокам к доступу например БД. Чем лучше? Все зависит от того как оптимизировали. Оба языка могут быть очень быстрыми.1. тогда вопрос сохраняется) чем лучше НодЖС лучше явы во время работы ретейл-сервера? честно не знаю, вот интересно услышать.
2. и почему не C++?
3. но первое же предложение не противоречит второму) полноценный рабочий сервер как раз подходит и для других фришек, и для монетизации, если он полноценно и качественно работает )
Сразу как только. Но если по серьезному, не знаю. Тут нужно много тестировать (есть cucumberjs для автоматизации), что можно например уже сделать но это все занимает мое время при написании таких тестов. Дальше нужно проверять что осталось сделать... все мне одномуMrThirtyOddSix, а когда планируется версия, близкая к релизу, в которую уже можно вполне поиграть? ну допустим на 98% готовая, так как понятно, что последние 2% проекта всегда вечно можно пилить )
Стоит напомнить что проект имеет серверную прокси. Например у нас имеется один сервер, который нужно изолировать от прямого доступа. Как это сделать? Ставим прокси сервера (ну например две-три штуки) и прописываем куда эти прокси будут соединятся, то есть к нашему изолированному серверу (тут можно и VPN применять, и связь через докер, это отдельный разговор). Если один прокси упадет, другие будут работать. Но главное что сам игровой сервер будет жить. Прокси работает также с L2J серверами, не только Lineage2TS сервером. И по идее должна работать с L2OFF, там по пакетам разницы нет. Можно например настроить свой клиент на локальный сервер localhost, поставить прокси и прописать IP другого сервера, и все будет работать. Если есть защита на сервере и она работает через L2 протокол, то все должно также работать через прокси (там данные пакетов не переписываются, но переписывается шифрование, так как прокси будет использовать ключи шифрования для сервера при разговоре к серверу, другие ключи при разговоре клиента). Ну и такие прокси могут поддерживать сотни клиентов.если будет ддос может и не задеть игроков.
К сожалению, 99% серверов открываются не из академического интереса, а с целью заработать денег. Поэтому для них такие ситуации, когда внезапно нужно получить максимально низкоуровневый доступ к какому-то процессу, становятся частью ежедневной рутины и байтоебство выходит на совершенно другой уровень. Особенно это касается крупных проектов, на 3-4к онлайна. В л2, с ростом онлайна, нагрузка растет экспоненциально и некоторые особо нагруженные функции оптимизируют очень плотно, вплоть до ручных правок байткода или выноса в натив.Все это важно, но не стоит времени и кропотливости, кроме уж очень особенных ситуаций.
Ну кроме L2j-way(который является ничем иным, как «сделаем как угодно, но по другому, а то копирасты снова сожрут наш репозиторий») есть еще много других способов работы с датапаком. Лично я, например, искренне не понимаю, зачем переделывать работу, которую уже давно сделали корейцы, поэтому мой проект работает полностью нативно с датапаком ПТС, храня reed-only экземпляр в zip архиве, а все изменения вносятся in memory либо в виде *.patch дифов(единичные ситуации когда нужно исправить баги или опечатки корейцев), либо альтернативными расширениями, которые или реплейсят, или дополняют оригинальные данные(При этом, достаточно изменения одной строчки в конфиге, чтобы загрузился чистый корейский датапак и получился почти оригинальный х1 ПТс ХФ на выходе).Да, SQLite быстрее для загрузки, так ка датапак представляет один файл. Но много есть данных в формате JSON, которые де-сериализируются при загрузке. Все данные как на Яве загружаются в память. Но разница в том что процесс загрузки быстрее чем чтение десяток тысяч XML и HTM фаийлов. Кстати, датапак собирается из обычных файлов CSV, XML и HML, есть этап где это все собирается и генерируется (например генерация точек спаунов или же генерация различных форм тоже из точек). Некоторые команды от админа используют техтовый поиск например для нпц или же игровых вещей, поэтому SQLite тоже помогает.
Нет конечно. Проект про написание сервера L2 HighFive. Не эмулятор к эмулятору. Не надо зацикливаться на L2J, там код и данные только как пример.В вашем случае, как я понимаю, вы пишите не эмулятор Lineage 2, а эмулятор L2j.
Отвечу более детально. Не я окрываю сервер. Я понимаю что хочется рассказать, но зачем? По мне вы просто фантазируете.К сожалению, 99% серверов открываются не из академического интереса, а с целью заработать денег. Поэтому для них такие ситуации, когда внезапно нужно получить максимально низкоуровневый доступ к какому-то процессу, становятся частью ежедневной рутины и байтоебство выходит на совершенно другой уровень. Особенно это касается крупных проектов, на 3-4к онлайна. В л2, с ростом онлайна, нагрузка растет экспоненциально и некоторые особо нагруженные функции оптимизируют очень плотно, вплоть до ручных правок байткода или выноса в натив.
Не понимайте, меня это устраивает. Но со временем поймете, я уже тут написал почему и как. Зачем мне это все говирите? Фантазируете опять?Ну кроме L2j-way(который является ничем иным, как «сделаем как угодно, но по другому, а то копирасты снова сожрут наш репозиторий») есть еще много других способов работы с датапаком. Лично я, например, искренне не понимаю, зачем переделывать работу, которую уже давно сделали корейцы, поэтому мой проект работает полностью нативно с датапаком ПТС, храня reed-only экземпляр в zip архиве, а все изменения вносятся in memory либо в виде *.patch дифов(единичные ситуации когда нужно исправить баги или опечатки корейцев), либо альтернативными расширениями, которые или реплейсят, или дополняют оригинальные данные(При этом, достаточно изменения одной строчки в конфиге, чтобы загрузился чистый корейский датапак и получился почти оригинальный х1 ПТс ХФ на выходе).
Никто зa эталон ничего не брал. Не нужно путать идеи начала проекта с тем что делается. Я уже описал что структура как данных так и сервера достаточно отличется от Явы. Nodejs не Ява, я так думаю вы это понимаете. А то что такая разница может быть совсем большой не приходила вам в голову? Посмотрите код и потом сравнивайте с тем что есть на Яве.Так что, упомянутая вами лыжа, это далеко не эталон, и к сожалению уже даже не представитель, современного поколения эмуляторов L2. Она архитектурно и технологически соответствует 2011-2014 годам, но все еще являясь лучшим из открытых и свободных движков.
Засим отклаиваюсь.Отвечу более детально. Не я окрываю сервер. Я понимаю что хочется рассказать, но зачем? По мне вы просто фантазируете.
Не понимайте, меня это устраивает. Но со временем поймете, я уже тут написал почему и как. Зачем мне это все говирите? Фантазируете опять?
Никто зa эталон ничего не брал. Не нужно путать идеи начала проекта с тем что делается. Я уже описал что структура как данных так и сервера достаточно отличется от Явы. Nodejs не Ява, я так думаю вы это понимаете. А то что такая разница может быть совсем большой не приходила вам в голову? Посмотрите код и потом сравнивайте с тем что есть на Яве.
Засим отклаиваюсь.
Зачем? Я не понимаю абсолютно ничего в JS или TS. Ты возможно мог заметить, что я не критиковал или разбирал код ТСа, а только его ответы. Просто я не привык иметь свое мнение в том, в чем не разбираюсь.может глянуть всетаки его код? вроде открытый...
А есть какой-то рейтинг исходного кода, где оценивают кто и что написал? Я думал коммерческое приложение пишется исходя из бизнес-требованийУ них топовые исходники, которые они пилят годами. Даже если вдруг зайдут сюда, твою сборку точно не возьмут.
Не было посыла куда-то переходить. Человек выложил в комьюнити свое приложение и странно, что его воспринимают в штыкиДалее вторые. Почти как первые, только денег поменьше. Они сидят на Eternal (или своих допиленных годами исходниках с шары) и переходить никуда не собираются.
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?