L2 микросервисы и java8

Chipercu

Выдающийся
Участник
Сообщения
22
Розыгрыши
0
Репутация
106
Реакции
29
Баллы
1 303
Хроники
  1. Chaotic Throne: High Five
Исходники
Присутствуют
Сборка
open-team, jts, ft
Здравствуйте уважаемые разработчики.
Уже давненько слежу за выходом и слыву всяких разных сборок, и почти не встречал сборок на java выше 8 версии (если я не ошибаюсь то в 21 там очень даже неплохие ништячки по многопоточке), так же ни разу не увидел попыток реализации сервера на микросервисах, казалось бы, почему не запилить разные куски этого монолита на разные сервисы к примеру тех же мобов держать на отдельном сервисе. Почему такого не наблюдается и стоит попробовать что то такое реализовать?
 
Здравствуйте уважаемые разработчики.
Уже давненько слежу за выходом и слыву всяких разных сборок, и почти не встречал сборок на java выше 8 версии (если я не ошибаюсь то в 21 там очень даже неплохие ништячки по многопоточке), так же ни разу не увидел попыток реализации сервера на микросервисах, казалось бы, почему не запилить разные куски этого монолита на разные сервисы к примеру тех же мобов держать на отдельном сервисе. Почему такого не наблюдается и стоит попробовать что то такое реализовать?
пили свои идеи на 8 JDK и сливай если не жалко всем будет полезно ( а кто уже будет нагло писать вот сделай - уже как говорится пусть платят ) сейчас наработак с ПВ софта и типо их практически не на что нет свыше ИТ ( да вот только обидка будет инфините дев будет тырить твою наработку и повышать цены на сборку ):D:D:D:D:D
 
Почему такого не наблюдается
может потому что это потребует капитальнейшего переписывания любой из существующих сборок?
ибо все имеющиеся по сути монолитные в плане внутренней взаимосвязи между собой подсистем сервера и максимум что можно разделить на отдельные куски - это часть отвечающую за логин и собственно все остальное.

ну и по сути овчинка выделки не стоит - современное железо вполне нормально вытянет работу сервера с парой тысяч онлайна и смысла распараллеливать его работу на несколько железяк нет.

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

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

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

и на птс по идее ты такое же лагалище словишь, если у тебя все заспавненые нпс будут активничать, а не "спать" пока поблизости никого из игроков нет.
Ну я попробую реализовать такой сервис под мобов, хочется как то избавится хотя бы процентов на 20 от статики, о то весь мир линейки 1 большая статика в которой ничего практически не происходит пока игрок мимо не пройдёт) когда есть онлайн может это не сильно заметно, но при онлайне 20-30 человек мир просто спит
 
  • Ха-ха-ха
Реакции: kick
Начну сразу на спринге, подключу grpc)) эхх главное не плюнуть через неделю))
 
Ну я попробую реализовать такой сервис под мобов, хочется как то избавится хотя бы процентов на 20 от статики, о то весь мир линейки 1 большая статика в которой ничего практически не происходит пока игрок мимо не пройдёт) когда есть онлайн может это не сильно заметно, но при онлайне 20-30 человек мир просто спит
так а смысл держать всегда активными АИ у всех нпс? если поблизости от нпс игроков нет, то и активность этого нпс никто не увидит.
есть конечно исключение - например нпс ходящие по определенным маршрутам и для которых постоянная активность важна, но такие нпс по сути единичны на фоне общего количества спавнов и особой роли в нагрузке не играют (если конечно обработка движения по маршрутам сделана вменяемо).
 
так а смысл держать всегда активными АИ у всех нпс? если поблизости от нпс игроков нет, то и активность этого нпс никто не увидит.
есть конечно исключение - например нпс ходящие по определенным маршрутам и для которых постоянная активность важна, но такие нпс по сути единичны на фоне общего количества спавнов и особой роли в нагрузке не играют (если конечно обработка движения по маршрутам сделана вменяемо).
патамучта, пока ты спиш, мобы качаются!
 
так а смысл держать всегда активными АИ у всех нпс? если поблизости от нпс игроков нет, то и активность этого нпс никто не увидит.
есть конечно исключение - нпс ходящие по определенным маршрутам и для которых постоянная активность важна, но такие нпс по сути единичны на фоне общего количества спавнов и особой роли в нагрузке не играют (если конечно обработка движения по маршрутам сделана вменяемо).
у мобиуса всегда АИ активные :)
 
Здравствуйте уважаемые разработчики.
Уже давненько слежу за выходом и слыву всяких разных сборок, и почти не встречал сборок на java выше 8 версии (если я не ошибаюсь то в 21 там очень даже неплохие ништячки по многопоточке), так же ни разу не увидел попыток реализации сервера на микросервисах, казалось бы, почему не запилить разные куски этого монолита на разные сервисы к примеру тех же мобов держать на отдельном сервисе. Почему такого не наблюдается и стоит попробовать что то такое реализовать?
Скажу сразу, достаточно старая тема, но интересная.

Интересная потому что в огромном большинстве случаев, у разработчиков на Java просто нет опыта работы с игровыми серверами основанными на специализированных микросервисах (не REST API/HTTP или SOAP, gRPC помогает но там другие заморочки). Да и смысла разбивать игровой сервер на микросервисы просто нет. Почему? Ну будет у тебя теперь два или три микросервиса, и будут у тебя ручки и голова теперь очень заняты, так как будет намного сложнее думать и соединять различные поведения целого сервера через цепочку запросов/ответов микросервисов. Нужно понимать зачем тебе нужно построить микросервис, ну типа сервер в целом будет стабильнее, либо больше серверов можно будет постравить на один игровой мир, либо нужна связка с другими серверами, и тд. A так как обычно на серверах играет небольшое количество людей (ну или же ботов), то смысла в разбивке главного сервра на микросервисы просто нет.
 
Здравствуйте уважаемые разработчики.
Уже давненько слежу за выходом и слыву всяких разных сборок, и почти не встречал сборок на java выше 8 версии (если я не ошибаюсь то в 21 там очень даже неплохие ништячки по многопоточке), так же ни разу не увидел попыток реализации сервера на микросервисах, казалось бы, почему не запилить разные куски этого монолита на разные сервисы к примеру тех же мобов держать на отдельном сервисе. Почему такого не наблюдается и стоит попробовать что то такое реализовать?
Если ты хочешь сделать Один сервер онлайном на 1ККК игроков и поддерживать свободных зоны охоты на монстров, первое что придёт на ум корейцам, это создать временные зоны, а во временных зонах будут появляться новые мобы и видны только те игроки, кто в этой временной зоне.
Если предположить, что ты хочешь сделать штук 100К таких временных зон с одними и теми же зонами охотами, чтобы 1ККК игрокам дать пофармить. Это в этом имеет кое какой смысл, чтобы избежать давки игроков, когда тебе на голову в очередь на фарм лезут.

И к тому же COVID-19 заставил многих поддаться в IT-шку (p.s. протекционизм, хлебные места под солнцем), но не все способны технически мыслить,
Код:
Задержки, состояния гонки, синхронность и доступность – это то, с чем сталкивается любой архитектор ПО изо дня в день
 
Ладно, про микросервисы я понял) в планах взять jts и поиграться с виртуальными потоками на 21 jdk)
 
А что будет делать автор когда ему с ноги в NPC сервер L7 влетит на петабайт?)00
Уважаемые плееры, NPC сервер лег, постойте пока пофотографируйте в игре. Ну то есть резко какой-то смысл находится в игре отпал, потому что зачастую это случается на старте, а без NPCов чувакам на сервере что делать)
 
1) Разделение на отдельные серверы в ПТС связано с возрастом линейки. В момент ее выхода довольно тяжело было уместить все необходимые компоненты в лимит максимально адресуемой памяти для одного приложения. Корейцы весьма сильно упоролись в байтоебство, чтобы максимально сжать потребляемую память и снизить операционные расходы на 100+ серверов, а вы их только на ровном месте собираетесь увеличить, причем кратно.
2) Никто не мешает вам и сейчас разделить сервер на компоненты, но при этом не забывайте, что коммуникация в ПТС между тем же NPC и L2Server идет через отдельный протокол поверх TCP. Ява - далеко не C++ по эффективности работы с сокетами и если не ставить Akka или Netty, то при 40000+ активных НПЦ, вашему процессору будет ОЧЕНЬ больно.
3) Виртуальные потоки из 21 явы далеко не панацея. С ними нужно быть очень аккуратным, и реальных сценариев их применения в л2 не очень много. У меня на них только мувинг и запись пакета в сетевой буфер. Все остальное - не имеет практической пользы.
4) Мобы в л2 не могут как-то изменять свое состояние самостоятельно. Т.е вне зависимости от того, будет активный моб стоять на своей локе сутки или неделю, это никак не скажется на его состоянии. Он никуда не уйдет, ни на кого не нападет, не умрет, не сделает что-то необычного. Поэтому, запускать мобов в активном режиме в пустых регионах - не имеет никакого смысла, кроме стрессовой нагрузки.

PS: У меня 23 ява и вот так выглядит сервер со всеми активными регионами(40к+ НПЦ) после 10 часов работы.
1732051459167.png
А вот так, в обычном режиме, когда регионы активируются игроками при заходе. На скрине 0 онлайна и 0 активных регионов.
1732051635746.png
Это я к тому, что и без микросервисов вполне можно добиться быстрой работы и минимального потребления ресурсов.
 
Последнее редактирование:
Назад
Сверху Снизу