Пилим свой сервер lineage2 не на java

  • Автор темы Автор темы whiteo
  • Дата начала Дата начала
Кому не похуй на опенсорсный древнючий кусок говна, который отжил свое? Вы всю сферу л2 дева меряете по самому легаси, которое можно придумать? У вас не укладывается в голове, что могут быть не только на L2j сервера? Что кто-то может пилить что-то ВНЕ публичной сферы? С вами спорить ваще бестолковая затея. Это как об стенку горох. У вас три основных контраргумента на ЛЮБЫЕ аргументы: 1) Это пиздежь! Я ЭТОГО НЕ ВИДЕЛ - ЗНАЧИТ ЭТОГО НЕ СУЩЕСТВУЕТ! 2) Это бесполезная хуета! Я ЭТОГО НЕ ДЕЛАЮ - ЗНАЧИТ ОНО НЕ НУЖНО! 3) Вот разработчики L2j(которым уже давным давно ПОХУЙ АБСОЛЮТНО на этот эмуль, мб кроме Zoey76) такого не сделали, а я вот в своем эмуляторе сделал, в отличии от этих мудаков! Значит, ВСЕ L2 эмуляторе(ОСОБЕНО НА ЯВЕ) - ПОЛНОЕ ГОВНО!1 САМАЯ ЯВА ТОЖЕ ГОВНО!1 ВСЕ КТО МОЖЕТ ПРОЧИТАТЬ ЭТИ 4 БУКВЫ JAVA - ОСКВЕРНЕНЫ И ТОЖЕ ГОВНО!1


Как же я угараю с таких "разработчиков")


Портировать NASC для нормальной работы тысяч уникальных механик? [А по щам?] НУЖНО! ФАНТАЗЕРЫ ПУСТЬ ДЕЛАЮТ!
Портировать геодвиг для нормальной работы? [А по щам?] НУЖНО! Ебану Theta* на ЯЧЕЙКИ в хотпас цикла итераций A*, а то моему процу СЛИШКОМ ЛЕГКО! Тета оптимизация же так необходима на однородной сетке))
Портировать эффекты для нормальной работы скиллов? [А по щам?] НУЖНО! СДЕЛАЮ ЕЩЕ 500 ТЕСТОВ!

Зачем, куда, почему? Зато в КАЖДОЙ с**а ТЕМЕ где хоть какой-то разговор заходит за механики, есть предъява от вас, что ВОТ! СМОТРИТЕ КАК АХУЕННО Я СДЕЛАЛ В ОТЛИЧИИ ОТ ЯВА ХУЕСОСОВ!

На онлайне тестили? - Нет! Я НЕ ДЕЛАЮ ДЛЯ ОНЛАЙНА, НО ЯВА ГОВНО!
ИИ все работают по офу? - НЕТ! Я НЕ ДЕЛАЮ ПО ОФУ! ОФ НЕ АВТОРИТЕТ, НО ЯВА ГОВНО!
Квесты все работают? - НЕТ! Я НЕ ДЕЛАЮ КВЕСТЫ! ВИДЕЛ МОЮ ПРОКСИ? PS: ЯВА ГОВНО!
Что вообще работает? - СУРСЫ ВИДИШЬ?! ОТКРОЙ ДА ПОСМОТРИ! PS: ЯВА ГОВНО! ЗАЕБИСЬ ЧТО У МЕНЯ НЕ ЯВА!
Сколько слов, главное большими буквами! Старался! Вот только прочитал (вы ведь в игноре) так как тема опять появилась и захотелось прочитать что же этакий безрукий мнимый архитектор вдруг вообразил. Мне конечно такие мнения нe нужны но хотелось поправить.

Почему я так резко начал выражаться? Вы же сами меня тролили здесь, вашими неудачными советами, да и глупыми идеями о технологиях (я уже приводил примеры, да и можно прочитать в теме по Lineage2TS, и не только вы!). Я только ведь обратно все говно вам и отдаю. То есть нормального разговора вы не хотели а теперь каким-то макаром себя выдаете за что-то особенное, и даже со слезой правдивое! Идите учитесь программированию что-бы у вас что-то да и получилось. Идите эмулируйте, если у вас только одно на уме что-бы доказать что вам что-то не нравиться. Мне то что, я как продолжал делать так и буду, ну а вы давайте, продожайте заниматься ерундой.

Я как продолжал так и буду поддерживать разработку всего и вся в линейке. На Typescript, на Zig, да на чем угодно. Тут много возможностей. Не нравиться? Фиг вам. Есть мнение? Будете мнительным, это проходит. Ну а когда руки доростут, может даже и что-либо сделаете по теме, да и по качеству. А пока сидите в игноре, я даже подожду.
 
Вы не отходите от темы. Причем здесь ненависть или компилятор. Вы же сами высказывались o плюсах и скорости, ну и что на ней написанно. Зачем мутить воду. Если вы видите весь програмный спектр языков через C++, то зачем обратно все заворачивать либо под чувства либо компиляторы. Это и так ясно что есть код, его компилируют и он работает. При чем здесь вообще плюсы как что-то особенное или супер значимое. Они есть и точка.
1770743249453.webp
1770743310449.webp
Ой а что это? либа раста в питоне дергается
1770743336287.webp
Биндинги на что в репозитории? На плюсовскую реализацию.
1770743433342.webp
Так а где питон быстрее? Может всё таки алгоритмы и решения на плюсах это решают и в каких то местах выдают результат быстрее чего то.
Я пинаю L2J не за то что он такой. А за то что Ява разработчики уже много лет, более десяти, не могут ничего нового починить и внести. Начиная с maven, который уже очен устарел.
Ого вот это да, а то что в 1 проекте gradle тоже старый получается? А в другом gradle kts используется, видимо проект новый? А какие репозитории использует gradle? Вот это проблема, я думал архитектурные решения, а тут как собирать проект целая проблема.
И то что L2J производительность на прямую зависит от соединения с БД как то вообще никого из разработчиков не волнует. И это и есть признак отсталости, можно сказать недо-понятия самой Явы.
Смешная шутка юмора. А я забыл, мы же используем SQLite, вот это да, но при этом не говорим о особенностях и что кроме как для тестов это бд никуда не пригодна, ведь мы не знаем, что на типы данных бд - пофиг, на инкрементальный тип данных бд - пофигу, пиши null в инкрементальный тип, это да по современному. Несуществующий тип данных? Пожалуйста пиши без проблем, а ошибки никто же не делает да. В параллельные запросы к сожалению тоже не можем а без WAL, так вообще всё печально становится. Как же так выходит, я не могу параллельно писать в бд? Получается плохая производительность.
Вы о чем. Я ведь как раз и говорил что у него есть bytecode. С этого и начиналось. А теперь цепляться за слова interpreted охота? Ну давайте, это еще одно мнение...
какие цепляться, это интерпретатор, если я сделаю файл кэша для php он так же будет интерпретироваться
А о том что уж очень много мнимых архитекторов здесь развилось и они просто либо не понимают новые технологии, либо не принимают их как что-то новое (да и просто не могут свое что-то делать, а только повторять по типу эмуляторa L2j).
Так вы такой же архитектор выходит, весь эмулятор это отражение l2j архитектуры, решений и прямой смотр на это решение. Начитались умных слов и пытаетесь их вставить куда угодно, особенно про docker и не зная как он офигенно работает в фс windows и mac os и как замечательно становится работать с бд в нём, когда одна операция выполняется миллион лет и костыль докера с кастомной фс не решается, но мы молчим об этом и не пишем, что лишь в linux он работает нормально.

Ну и хочеться отметить что в моем проекте код открыт. Можно посмотреть как все работает. И насколько хорошо. Толькo вот люди с хотелками, да и мнимые архитекторы просто не могут код читать. Они просто выше такого. Ну а рассуждать это просто. Да и особенно в теме где все отмеченно под "Флейм".
А что смотреть, это копия l2j лишь на другом языке, накинутые интерфейсы и в несколько гигабайт папку node_modules?) И для пакета тянуть пакет, ну удачи.
 
Продолжим :)

Посмотреть вложение 93541
Посмотреть вложение 93542
Ой а что это? либа раста в питоне дергается
Посмотреть вложение 93543
Биндинги на что в репозитории? На плюсовскую реализацию.
Посмотреть вложение 93544
Так а где питон быстрее? Может всё таки алгоритмы и решения на плюсах это решают и в каких то местах выдают результат быстрее чего то.

Вы о чем? Я вроде не о питоне здесь говорю. Но у всех бывает. Главное что-бы прошло!

Смешная шутка юмора. А я забыл, мы же используем SQLite, вот это да, но при этом не говорим о особенностях и что кроме как для тестов это бд никуда не пригодна, ведь мы не знаем, что на типы данных бд - пофиг, на инкрементальный тип данных бд - пофигу, пиши null в инкрементальный тип, это да по современному. Несуществующий тип данных? Пожалуйста пиши без проблем, а ошибки никто же не делает да. В параллельные запросы к сожалению тоже не можем а без WAL, так вообще всё печально становится. Как же так выходит, я не могу параллельно писать в бд? Получается плохая производительность.
Ну и пользуйтесь. Люди которые знакомые с передовыми технологиями пользуются и достатчно довольны. Но я так понимаю что и до вас когда-нибудь прогресс дойдет. Я тут посижу, подожду.
какие цепляться, это интерпретатор, если я сделаю файл кэша для php он так же будет интерпретироваться
Я почему так написал? Вы наверное не догадываетесь. Сама сущьность bytecode это интерпретация. По другому не бывает. Только во различие в том что в других языках все то-же интерпритируется VM и компилиться в найтивный бинарник. У питона как раз это отсутствует. Поэтому нужнo ли цепляться к bytecode? Это просто посредовательная среда. А вот например если взять тот же Basic (тут различные варианты) тот тут как раз будет интерпретированный язык, без bytecode или же компиляции. Разница не правда?
Так вы такой же архитектор выходит, весь эмулятор это отражение l2j архитектуры, решений и прямой смотр на это решение. Начитались умных слов и пытаетесь их вставить куда угодно, особенно про docker и не зная как он офигенно работает в фс windows и mac os и как замечательно становится работать с бд в нём, когда одна операция выполняется миллион лет и костыль докера с кастомной фс не решается, но мы молчим об этом и не пишем, что лишь в linux он работает нормально.
Ну после того что я облазил почти все сборки и начитался кода, я достаточно хорошо понимаю и архитектуру L2J вариантов, как и их технические решения (ну и очепятки или же скорее то что они просто нехотели решать). Тут нужно конечно подробно говорить о примерах, один из которых я уже привел по типу что производительность сервера напрямую зависит от БД (a можно ведь наоборот! но тут увы Ява стоит и обычно разработчики просто не знают как по другому).
Насчет умных слов. Ну, я ведь на самом деле эти все технологии и использую. Наверное много слов там, вот что-то более менее короткое и выбрал вам. Ну что-бы учить можно было легче. Но если серьезно, то у вас я так понимаю негативный опыт с такими технологиями. Это пройдет. Сейчас уж очень много чего перешло как на докер как и на firecracker VM. Увы от такого не уйти. А то что с докером сложнее работать чем напрямую с сервисами, это и так понятно. Это просто другая технология которая решает определенные проблемы. Такое ощущение что на этом форуме собрались люди 2000х и все что они знают так это собирать все в ручную и гордяться этим. Но это как я уже не раз говорил, пройдет.
А что смотреть, это копия l2j лишь на другом языке, накинутые интерфейсы и в несколько гигабайт папку node_modules?) И для пакета тянуть пакет, ну удачи.
Прекрасно. Давайте поговорим о моей разработке. У вас я так понимаю мало знаний в различияx самих сборок о L2J. Но давайте попытаемся отличить:
- работает все на Nodejs используя в большинстве своем пропарсенные данные от L2OFF (часть как например скиллы от L2J xml) парсеры тут
- используется SQLite как для базы данных, так и датапака и гео-пака (формат данных другой, около от 44% L2J геодаты, не сжатый, а просто улучшенный)
- есть три сервера, Login, Game и Proxy, написанные на Typescript
- есть дополнительные проекты для cli (это маштабная утилита для датапака, гео-пака как и вспомогательных програм для разработки например HTML синхронизации с сервером), тестирования серверов как и GUI
- есть образы Login/Game сервер для докера, как и Proxy
- есть готовые для скачивания 7z архивы для логин и игрового сервера
- все перечисленные работают как на windows х64, так и linux x64/arm64
- серверное тестирование помогает проекту гарантировать стабильность разработки при внесении новых фич; проверяются многие системы сервера как с одним игроком, так и множеством; более 1000 тестов проверяют работоспособность сервера каждый раз новый код выпускается на публичном репозитории; что в будущем действительно сократит как срок испытания сервера на ОБТ/ЗБТ так и саму себестоимость тестирования людми (тут у нас роботы вместо тупо-тыкающихся тушек)
- множество новых команд для администрации как игрового сервера, так и логин сервера
- удаленное администрирование серверов использует CommandLink что есть простое соединение по сокету и использование данных по формату MessagePack; тут много настроек как обезопасить либо лимитировать подсоединения (оно же и используется как при серверном тестировании, так и при утилитах cli что-бы например показать данные о вашем персонаже вне сервера)
- все сервера (Login, Game, Proxy) имеют возможность отсылать логи на удаленную OpenTelemetry платформу по типу DataDog или для своего хостинга OpenObserve

И это чисто технические различия. Typescript всетаки не Java (я так думаю что вы уже опредились с таким выводом), так что и код, как и сама архитектура просто не может быть подобной с Явой, где используыется свой движок пакетов (mmocore), как и свой движек загрузки всех скриптов (динамическая загрузка .java файлов), как и различные ThreadPool . У Nodejs все по другому, но это не значит что сервер однопоточный (тут есть нюансы как в потоках на IO, так и самой логики сервера где уже используется один поток, но есть уже эксперементальный код который подключает дополнительные потоки для поиска пути). Да и вы уже сами видели что баги есть другие как с передвижением персонажа (это уже улучшено, но не оптимизированно).

Я понимаю что из-за вашего опыта вы возможно смотрите на вещи очень просто, тут все похоже, возможно и тут все так же. Но различия, особенно по технической части есть. А то что не все работает, так это ужe говорит о том что сам проект нуждаеться в людях которые могут внести свой вклад. Все-таки MMO сервер это достаточно сложная штука и делать все одному человеку занимает много времени. Нo по сравнению с другими серверами, не вариантами или же копиями L2J, моя разработка уже играбельнa. И будет только улучшаться со временем.
 
Ну и пользуйтесь. Люди которые знакомые с передовыми технологиями пользуются и достатчно довольны. Но я так понимаю что и до вас когда-нибудь прогресс дойдет. Я тут посижу, подожду.
Они с нами в одной комнате? Я думал современные люди используют PostgreSQL, Oracle, Clickhouse, ScyllaDB. окей ждём когда над серьезными проектами будет работа, видимо это не передовые и не стандарты индустрии.
Насчет умных слов. Ну, я ведь на самом деле эти все технологии и использую. Наверное много слов там, вот что-то более менее короткое и выбрал вам. Ну что-бы учить можно было легче. Но если серьезно, то у вас я так понимаю негативный опыт с такими технологиями. Это пройдет. Сейчас уж очень много чего перешло как на докер как и на firecracker VM. Увы от такого не уйти. А то что с докером сложнее работать чем напрямую с сервисами, это и так понятно. Это просто другая технология которая решает определенные проблемы. Такое ощущение что на этом форуме собрались люди 2000х и все что они знают так это собирать все в ручную и гордяться этим. Но это как я уже не раз говорил, пройдет.
Так а где решение? Почему фс докера которое сделано для мака/win все равно до сих пор медленное? Зачем мне вручную собирать если есть пайплайны, jenkins который к слову написан на java. Эта технология работает лишь на linux, но не работает нормально на win и mac os, о чём мы молчим.
1770748551826.webp
1770748565350.webp
Но да и то что проблемы актуальны, видимо только у меня или кого то, а то что фс не решает эту проблему до сих пор это другое. Это вы не знакомы с технологией.

Все-таки MMO сервер это достаточно сложная штука
более 1000 тестов
Ого целая более тысяча тестов, ну запускаю обычный проект, от java разработчика, который лишь читает данные с kafka, пишет в 3 таблички и выполняет небольшую бизнес логику, а ММО сервер который покрывает имеет больше тысячи, ну может пару тысяч тестов выходит почти на уровне проекта.
1770749172952.webp
1770749183999.webp
Так это и есть копия и прямой референс на l2j как и их механик, которая отличается накинутое интерфейсом и немного другими механиками - всё.
- все сервера (Login, Game, Proxy) имеют возможность отсылать логи на удаленную OpenTelemetry платформу по типу DataDog или для своего хостинга OpenObserve
Вот это отличие, а я видел в l2j хранят в elasticsearch и полностью переписана система логов в него.
Я понимаю что из-за вашего опыта вы возможно смотрите на вещи очень просто, тут все похоже, возможно и тут все так же.
Какого опыта? Видимо да мало опыта как с языками и технологиями, куда мне уж говорить об этом. Никогда ни с чем не работал и не использовал/использую.
 
Они с нами в одной комнате? Я думал современные люди используют PostgreSQL, Oracle, Clickhouse, ScyllaDB. окей ждём когда над серьезными проектами будет работа, видимо это не передовые и не стандарты индустрии.
Конечно можно использовать такое. На сегоднешнем этапe это просто не нужно так как ведеться активная разработка. А вот кстати я бы не против добавить например Posgresql. Но для пользователей которые хотять попробовать установить сервер, это будет скорее проблемой которая уже достаточно решена на SQLite. Когда проект будет уже на 90% сделан тогда я согласен, можно будет добавить и дополнительные БД. В коде уже все организованнo и даже сейчас есть опции переключения на другие БД! Это не проблема соовсем. Можно уже взять те же самые файлы от SQLite и оформить их под Posgresql, ну по виду копировать. Потом переключить опцию конфигурации на новый БД движек вместо 'sqlite' на 'postgresql' вот тут . И все. Архитектура сервера это уже позволяет, как и есть интерфейсы для каждой темы (можно сказать таблицы в БД, но это не обязательно так). Тo есть уже это все возможно. Я не против что-бы это даже добавили сейчас!
Так а где решение? Почему фс докера которое сделано для мака/win все равно до сих пор медленное? Зачем мне вручную собирать если есть пайплайны, jenkins который к слову написан на java. Эта технология работает лишь на linux, но не работает нормально на win и mac os, о чём мы молчим.
Посмотреть вложение 93545
Посмотреть вложение 93546
На маке ведь не используется настоящий докер. Используется VM которая как раз и тормозит из-за того что это большое и громоздкое приложение которое эмулирует другую операционную систему. Как такое решать? Можно например скачать репозиторий и попробовать все запустить с гайдами от сюда и
Ого целая более тысяча тестов, ну запускаю обычный проект, от java разработчика, который лишь читает данные с kafka, пишет в 3 таблички и выполняет небольшую бизнес логику, а ММО сервер который покрывает имеет больше тысячи, ну может пару тысяч тестов выходит почти на уровне проекта.
Посмотреть вложение 93547
Посмотреть вложение 93548
Я согласен что я не полностью рассказал о тестировании. Серверное тестирование это не юнит тесты как вы привели в пример. Все они тестрируют не код сервера, а функционал который ожидает графический клиент. Как так? В моей разработка каждый тест представляет из себя програмного клиента (или же множество клиентов), которые проверяют цепочку пакетов на корректность, как и определенные данные из таких пакетов.

Например можно посмотреть на такие тесты приватной мануфактуры для персонажей рассы dwarf : С начала нам нужно соединиться с логин сервером используя правильный акаунт. Потом перейти на игровой сервер, что и делает нормальный графический клиент. Тут нам нужно создать всех персонажей с определенным классом и уровнем. Потом добавить рецепты и предметы для проверки мануфактуры. Создать приватный шоп мануфактуры и использовать другого игрока для тестирования. A тестирование будет как на видимость другого игрока, того что у него открыта мануфактура определенного типа, имени и рецептов. Потом будет проверка цепочки пакетов для мануфактуры, как и их ошибки. Были ли предметы созданны, изменились ли значения по MP у крафтера, было ли добавленно в инветарь количество адены к крафтеру, ну и в конце концов если крафтер закрыл мануфактуру, были ли обновления на другом игрокe что-бы мануфактуры теперь не было.

Много слов конечно для описания, но сама разница в том что каждый тест это проверка именно пакетов и как эти пакеты от сервера отсылаются, вовремя ли, с обновлениями или без. Это в разы лучше чем юнит тесты, да и позволяет тестировать сервера удаленно, как это и делается во время CI/CD на гитлабе. Сейчас все тестируется 32-мя клиентами паралельно и занимает около 15 минут по времени. Локально я тестировал с 96-ми клиентами против сервера на другом компе на локальной сетке с минимальной загрузкой на игровой сервер.

По сравнению с другими проектами я подобного просто не видел. Возможно конечно что можно использовать тесты для BDD. Но ведь тестирование например REST API и MMO будут намного различны, так как в последней используется сессия/активное подсоединение к серверу с шифрованием пакетов, так и разделение очень многих пакетов во времени. Тут нужно смотреть насколько сложны тесты и что конкретно они тестируют. В моем проекте тестируется именно функционал клиента когда он уже подсоединился к серверу и вошел в игровой мир. Одно это занимает более чем пару секунд, не говоря о создании персонажа, тестировании того что он видит, как и удаленее оного.
Какого опыта? Видимо да мало опыта как с языками и технологиями, куда мне уж говорить об этом. Никогда ни с чем не работал и не использовал/использую.
Прекрасно, посмотрите на мой проект. Я так думаю что вы там найдете что-то новое для себя.
 
Последнее редактирование:
MrThirtyOddSix, я пока что не выкладывал, т.к. там особо нечего смотреть, + гошка не мой основной язык, думаю открою свой гитхаб когда будет что смотреть, сейчас же по факту, то что там есть и базой не назвать
 
kick, а у меня зоопарк, логин на zig, гейм на гошке, раст я планирую чуть позже подключать
 
Почему не rust? И как ранее описано было, не zig как раз unsafe в отличие от раста если не хочется в safe
А нафига Rust? Его уже начали откатывать потихоньку из опен сорса. У него как язык есть проблемы с поддержкой различных процессорных платформ (например это и есть причина отторжения включения в линукс и BSD). A в Zig наоборот, поддержка есть, но его как язык до сих пор пилят, хотя он уже себя зарекомендовал как претендента unsafe C ( у него прямой интероп с кодом C, например хедеры можно напрямую подключать )
 
MrThirtyOddSix, в моем случае, зоопарк оправдан, я делаю это ради метрик
О я в принципе не против. Просто интересно что люди ожидают от того или иного. Мне например зашел Zig. Rust и Golang ну совсем не зашли, хотя я не против того же самого C (25 лет назад на нем писал пока не перешел на Яву).
 
MrThirtyOddSix, я отошел от java в сторону zig и go, пока что до rust еще не дошел, так же писал когда-то на ts и js, ts очень понравился, но нет проектов на нем...

P.S. поговорил с хорошим другом, говорит, пили сервер, я буду тестером и если нужно сверстаю сайт на коленке.
Не то что бы я хочу это дело прям в прод, но сделать что-то в виде альфы, он меня замотивировал...
 
MrThirtyOddSix, я отошел от java в сторону zig и go, пока что до rust еще не дошел, так же писал когда-то на ts и js, ts очень понравился, но нет проектов на нем...

P.S. поговорил с хорошим другом, говорит, пили сервер, я буду тестером и если нужно сверстаю сайт на коленке.
Не то что бы я хочу это дело прям в прод, но сделать что-то в виде альфы, он меня замотивировал...
go перегрет сейчас, поскольку яп новый, и очень много разработчиков ринулись в него. В 2023 году там обитали высокие зарплаты, сейчас на уровне других яп. rust, возможно, со временем станет заменой C++ для новых проектов. Его поддерживает microsoft с 2021 года, внедряя в некоторые сервисы windows. И учитывая поразительную скорость развития нейронных сетей, через лет 10 можно забыть о legacy коде, ведь он будет переписываться нейронками
 
Как он может быть новым если ему 17 лет?
Если вашему авто 17 лет, оно у вас считается новым ?
Тут я имел ввиду не дату, когда он был впервые представлен, а популярность, которая к нему пришла в 2019-2020 годы
 
Назад
Сверху Снизу