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

  • Автор темы Автор темы whiteo
  • Дата начала Дата начала
Сколько слов, главное большими буквами! Старался! Вот только прочитал (вы ведь в игноре) так как тема опять появилась и захотелось прочитать что же этакий безрукий мнимый архитектор вдруг вообразил. Мне конечно такие мнения нe нужны но хотелось поправить.

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

Я как продолжал так и буду поддерживать разработку всего и вся в линейке. На Typescript, на Zig, да на чем угодно. Тут много возможностей. Не нравиться? Фиг вам. Есть мнение? Будете мнительным, это проходит. Ну а когда руки доростут, может даже и что-либо сделаете по теме, да и по качеству. А пока сидите в игноре, я даже подожду.
 


Ой а что это? либа раста в питоне дергается

Биндинги на что в репозитории? На плюсовскую реализацию.

Так а где питон быстрее? Может всё таки алгоритмы и решения на плюсах это решают и в каких то местах выдают результат быстрее чего то.
Ого вот это да, а то что в 1 проекте gradle тоже старый получается? А в другом gradle kts используется, видимо проект новый? А какие репозитории использует gradle? Вот это проблема, я думал архитектурные решения, а тут как собирать проект целая проблема.
Смешная шутка юмора. А я забыл, мы же используем SQLite, вот это да, но при этом не говорим о особенностях и что кроме как для тестов это бд никуда не пригодна, ведь мы не знаем, что на типы данных бд - пофиг, на инкрементальный тип данных бд - пофигу, пиши null в инкрементальный тип, это да по современному. Несуществующий тип данных? Пожалуйста пиши без проблем, а ошибки никто же не делает да. В параллельные запросы к сожалению тоже не можем а без WAL, так вообще всё печально становится. Как же так выходит, я не могу параллельно писать в бд? Получается плохая производительность.
какие цепляться, это интерпретатор, если я сделаю файл кэша для php он так же будет интерпретироваться
Так вы такой же архитектор выходит, весь эмулятор это отражение l2j архитектуры, решений и прямой смотр на это решение. Начитались умных слов и пытаетесь их вставить куда угодно, особенно про docker и не зная как он офигенно работает в фс windows и mac os и как замечательно становится работать с бд в нём, когда одна операция выполняется миллион лет и костыль докера с кастомной фс не решается, но мы молчим об этом и не пишем, что лишь в linux он работает нормально.

А что смотреть, это копия l2j лишь на другом языке, накинутые интерфейсы и в несколько гигабайт папку node_modules?) И для пакета тянуть пакет, ну удачи.
 
Продолжим


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

Ну и пользуйтесь. Люди которые знакомые с передовыми технологиями пользуются и достатчно довольны. Но я так понимаю что и до вас когда-нибудь прогресс дойдет. Я тут посижу, подожду.
Я почему так написал? Вы наверное не догадываетесь. Сама сущьность bytecode это интерпретация. По другому не бывает. Только во различие в том что в других языках все то-же интерпритируется VM и компилиться в найтивный бинарник. У питона как раз это отсутствует. Поэтому нужнo ли цепляться к bytecode? Это просто посредовательная среда. А вот например если взять тот же Basic (тут различные варианты) тот тут как раз будет интерпретированный язык, без bytecode или же компиляции. Разница не правда?
Ну после того что я облазил почти все сборки и начитался кода, я достаточно хорошо понимаю и архитектуру L2J вариантов, как и их технические решения (ну и очепятки или же скорее то что они просто нехотели решать). Тут нужно конечно подробно говорить о примерах, один из которых я уже привел по типу что производительность сервера напрямую зависит от БД (a можно ведь наоборот! но тут увы Ява стоит и обычно разработчики просто не знают как по другому).
Насчет умных слов. Ну, я ведь на самом деле эти все технологии и использую. Наверное много слов там, вот что-то более менее короткое и выбрал вам. Ну что-бы учить можно было легче. Но если серьезно, то у вас я так понимаю негативный опыт с такими технологиями. Это пройдет. Сейчас уж очень много чего перешло как на докер как и на firecracker VM. Увы от такого не уйти. А то что с докером сложнее работать чем напрямую с сервисами, это и так понятно. Это просто другая технология которая решает определенные проблемы. Такое ощущение что на этом форуме собрались люди 2000х и все что они знают так это собирать все в ручную и гордяться этим. Но это как я уже не раз говорил, пройдет.
Прекрасно. Давайте поговорим о моей разработке. У вас я так понимаю мало знаний в различия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. окей ждём когда над серьезными проектами будет работа, видимо это не передовые и не стандарты индустрии.
Так а где решение? Почему фс докера которое сделано для мака/win все равно до сих пор медленное? Зачем мне вручную собирать если есть пайплайны, jenkins который к слову написан на java. Эта технология работает лишь на linux, но не работает нормально на win и mac os, о чём мы молчим.


Но да и то что проблемы актуальны, видимо только у меня или кого то, а то что фс не решает эту проблему до сих пор это другое. Это вы не знакомы с технологией.

Все-таки MMO сервер это достаточно сложная штука
более 1000 тестов
Ого целая более тысяча тестов, ну запускаю обычный проект, от java разработчика, который лишь читает данные с kafka, пишет в 3 таблички и выполняет небольшую бизнес логику, а ММО сервер который покрывает имеет больше тысячи, ну может пару тысяч тестов выходит почти на уровне проекта.


Так это и есть копия и прямой референс на l2j как и их механик, которая отличается накинутое интерфейсом и немного другими механиками - всё.
Вот это отличие, а я видел в l2j хранят в elasticsearch и полностью переписана система логов в него.
Какого опыта? Видимо да мало опыта как с языками и технологиями, куда мне уж говорить об этом. Никогда ни с чем не работал и не использовал/использую.
 
Конечно можно использовать такое. На сегоднешнем этапe это просто не нужно так как ведеться активная разработка. А вот кстати я бы не против добавить например Posgresql. Но для пользователей которые хотять попробовать установить сервер, это будет скорее проблемой которая уже достаточно решена на SQLite. Когда проект будет уже на 90% сделан тогда я согласен, можно будет добавить и дополнительные БД. В коде уже все организованнo и даже сейчас есть опции переключения на другие БД! Это не проблема соовсем. Можно уже взять те же самые файлы от SQLite и оформить их под Posgresql, ну по виду копировать. Потом переключить опцию конфигурации на новый БД движек вместо 'sqlite' на 'postgresql' вот тут . И все. Архитектура сервера это уже позволяет, как и есть интерфейсы для каждой темы (можно сказать таблицы в БД, но это не обязательно так). Тo есть уже это все возможно. Я не против что-бы это даже добавили сейчас!
На маке ведь не используется настоящий докер. Используется VM которая как раз и тормозит из-за того что это большое и громоздкое приложение которое эмулирует другую операционную систему. Как такое решать? Можно например скачать репозиторий и попробовать все запустить с гайдами от сюда и
Я согласен что я не полностью рассказал о тестировании. Серверное тестирование это не юнит тесты как вы привели в пример. Все они тестрируют не код сервера, а функционал который ожидает графический клиент. Как так? В моей разработка каждый тест представляет из себя програмного клиента (или же множество клиентов), которые проверяют цепочку пакетов на корректность, как и определенные данные из таких пакетов.

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

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

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

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