[Мысли в слух] Реализация реалмов в нашей любимой Lineage2

смысл тебе от 10к онлайна, если они не будут на события меж-серверных участвовать, а только по инстам сидеть будут.
тут речь о том как распределить что бы мобов хватило ) поделить локации на каналы
 

Я просто до сих пор не понимаю - зачем? В чем вообще смысл? Какую это решает проблему?
Главной проблемой я считаю дискомфорт при игре на овербущеных серверах, когда ты заходишь в праймтайм, идешь на спот а там все занято и ты не можешь конкурировать с чуваками которые играют 100+ окон, наверное это главная причина по которой я перестал играть в мою любимую игру...(вариант ухода на дохлые сервера, исключается, солоплей можно и в обливионе устроить)
P.S. Вообще в этой теме я хотел бы поднять вопрос не зачем, почему, etc... а что если?!
Расскажу кратко если делать межсерверные реализации взяв high five.

Как это вижу:
Общий логин сервер.
Общий игровой сервер.
Все данжи которые есть и куда есть телепорт могут перенести на другой сервер и для игрока это будет не заметно по скольку чат и группа будут там же, но со стороны сервера игрок будет уже отдельно со всеми.

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

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

Там уже думайте и решайте как сделать реализацию, но второй вариант проще и лучше где исключает реализацию синхронизаций чатов, пати и прочего. Ведь игрока просто переносит в отдельное место где все на месте.

Образно возьмем пирог, он один но слоев много.
В каждом слое мира в случае l2, свое количество игроков при этом они не видят друг друга и на одном сервере.

Осады можно сделать на отдельной карте где все игроки смогут попасть туда и таким образом будет как бы межсерверная игра, но на одном сервере одновременно.
Логин сервер можно не трогать, можно трогать, можно в него внедрить механизмы балансировщика и тд.
1 инстанс с кучей слоев, тоже решение проблемы, но, в части масштабирования - кейс не очень выгодный + в теории может возникнуть сиутация когда это будет крашится от overhead, в свою очередь реализация гейтвея + N нод, звучит как будто бы лучше.

тут речь о том как распределить что бы мобов хватило ) поделить локации на каналы
именно так
 
в данном случае без большой переделки вижу один сценарий:
Логин сервер оставляем как есть и единственное делаем прокси что обязательно для гс сервера.
Сам гс сервер будет один, но вся карта будет поделена на несколько слоев по онлайну игроков без отдельных данжей на слои, именно вся карта.
Межсерверные осады можно сделать в одном слое с отдельной картой в локации ближе к gm комнате, это левый верхний угол карты.

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

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

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

Вот это все реально сделать, потом другой важный момент выбрать лучший пул подключений, например такие как c3p0, bonecp и другие.

Это решит две проблемы:
Количество мобов на каждый слой будет равным в рамках целой карты включая все данжи и на всех хватит.
Пропадет необходимость изобретать большие костыли с клиентом, ведь исходников нет.
 
в данном случае без большой переделки вижу один сценарий:
Логин сервер оставляем как есть и единственное делаем прокси что обязательно для гс сервера.
Сам гс сервер будет один, но вся карта будет поделена на несколько слоев по онлайну игроков без отдельных данжей на слои, именно вся карта.
Межсерверные осады можно сделать в одном слое с отдельной картой в локации ближе к gm комнате, это левый верхний угол карты.

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

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

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

Вот это все реально сделать, потом другой важный момент выбрать лучший пул подключений, например такие как c3p0, bonecp и другие.

Это решит две проблемы:
Количество мобов на каждый слой будет равным в рамках целой карты включая все данжи и на всех хватит.
Пропадет необходимость изобретать большие костыли с клиентом, ведь исходников нет.
проблема в spawnlist * layerCount
 
проблема в spawnlist * layerCount
В чем собственно проблема? Ну будут у тебя слои, по типу инстансов, или шардов. Можно просто тех же самых мобов там и спаунить. Никто ведь не будет за то что-бы этих мобов как-то распичкать между слоями.... пусть будут как всегда.

Почему раньше делили сервер, это причины от того что не умещалось по мощности на одном сервере все разом.
Сейчас таких проблем нет и при желании можно уместить 10т игроков, но для разделения 5т в одной части и 5т в другой всегда можно перенести их как бы в отдельный мир где все на месте но они не видят друг друга.
К примеру реализация торговой части в гиран харборе или парнас.
Я согласен что можно. Но всетаки будут проблемы с таким огромным количеством игроков (кстати можно поставить несколько таких виртуальных серверов на одной машине а не один). Что-то и где-то затормозилo, и весь сервер теперь будет немного не тот. Легче все разделить на серверы по-меньше. А все функции внe атак, даже чат, можно собрать как отдельные системы на центральном сервере. В принципе что вы и описали, только различие в том что можно назвать игровым сервером в отделении от других функций для игры. Ну и если какой-то шардовый сервер полетит, то можно достаточно быстро его поставить обратно. Системы и планировка (например на контейнерах, можно даже без Kubernetes) это все могут сделать в автоматическом виде.
 
MrThirtyOddSix, состояние NPC одно на несколько слоев? В одном слое моб умер в другом тоже?

Собственно о чем я и говорю, масштабировать это решение горизонтально, перебор игроков на одном реалме, автоматический запуск еще одного и/или балансировка (принудительное перемещение игрока на другой более свободный реалм)
 
MrThirtyOddSix, состояние NPC одно на несколько слоев? В одном слое моб умер в другом тоже?

Собственно о чем я и говорю, масштабировать это решение горизонтально, перебор игроков на одном реалме, автоматический запуск еще одного и/или балансировка (принудительное перемещение игрока на другой более свободный реалм)
A зачем это все делать для NPC? Ведь может получиться что на одном слое моба убивают, а нa другом он как-то умерает. Или же игроки из многих слоев могут бить того же моба.... кому это будет интересно?

Можно просто это все оставить сo своими мобами на каждом слое. И думать много теперь не надо.
 
Всем привет, пост рассуждения ради, строго по пузу не пинать!

Все мы знаем что у каждого игрового мира есть предел одновременно подлюченных игроков и если превысить это магическое число то будет дискомфорт для игроков. Предположим что для Lineage2 магическое число равно 3000. Превышая это число игроки будут чувствовать дискомфот, такой как: Лаги (привет Гиран), не хватка зон для охоты и прочие пункты (которые можно натянуть на глобус).

Идея, разделить мир на
несколько реалмов 2, 3, ... при этом инстанс зоны - одни для всех реалмов, ни кто не говорит что на сервере должно быть больше 1 Логова Антараса или ...

При этом игроки не будут знать на каком именно реалме они находятся, игроков это не должно волновать, как это работает под катом.

Во время подключения, мы смотрим количество активных игроков на наших реалмах и отправляем в пакете server_lists именно тот который мы считаем более свободным.

Конечно тут нужно будет реализовать возможность миграции игроков между реалмами, что бы игроки смогли друг другу писать и пати кидать или ...

P.S. На хабре была статья про что-то подобное но там была слегка другая идея...
Играл на каком-то сервере, и там была реализована интересная идея, есть обычный мир л2 с стандартными нпц, у ГК телепортируешься и ты попадаешь в другой мир л2, где в городах мобы и везде другой Спаун НПЦ, и так же через ГК возвращаешься назад. Я думаю эту идею можнр использовать. То есть все игроки на одном сервере, но в тоже время в разных инстанцах, и могут перемещаться, и будут там другие нпц/персы бегать
 

    BladeRunner

    Баллов: 1
    в верном направление мыслите, товарищ... )
ну да, маловато мобов а начальных локах )))
 
Dina, на Хабре, там другая идея
+- тоже самое, другой канал и тд

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

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

Просто вот для примера у себя глянул - у меня на текущем сервере хомки сразу при старте спавнится почти 50к нпс (и это с учетом сессионок - сейчас у меня включена их инициализация сразу при старте серва, а не при первой попытке входа в них). При этом сервер потребляет примерно 3.6 гб оперативки, из которых около 1-1.5 подгребает под себя гео. ну и там на всякое разное пусть еще 0.5-1 гб пусть выделено. Т.е. условно 50к спавнов потребляют 1-1.5 гига, ну пусть даже очень грубо - 2 гига.
С десятком слоев мира это превратится где-то в 20 гиг чисто под спавны - в целом полная фигня по нынешним временам.
Но конечно еще от самой сборки зависит - мне уже приводили пример сборки, которая непонятно на что вобще поджирает более сотни гиг оперативки при своей работе из-за "качественно" написанного кода :)

Ну а так по мне так большей проблемой будет потребление процессорного времени на AI всей этой кучи мобов, но опять же если не злоупотреблять с глобальными AI, а так же гасить своевременно активность мобов в регионах где игроков нет, то это не такая уж большая проблема.
 
Не стал все читать, мало полезного (порваные одеяла, трусы, сопли).
Корейцы давно придумали решение, и познакомили всех с Raid server - который и делает то что в первом топике указано.

И так же Корейцы подумали про такое как:
*А что если, на спот (локу) прийдет 1к (или 100к) персонажей, мобов же не хватит, и тут "AI" сразу же был запилен скрипт/ы*:
Ко-во Персонажей в Агрозоне или в зоне квадрата/квадратов описаных в скрипте (есть несколько видов/типов/условий).
Ко-во убитых мобов в квадратах спавна (что указано в скрипте).
Счетчик который не имеет какого либо отображения, к примеру на 10 000 убийств НПЦ, для активации увеличения ко-ва НПЦ, или же спавна дополнительных/усиленных - К примеру ТОИ в Essence/Eva/Wolf).
Проверка каждый час (или то время что вы установили) на лимит (число) заданное для отрезков/пиков спавна (может быть 1, 2, 3, 4 счетчика, а тут уже привет ХБ из Essence/Eva/Wolf).
Если проверки были пройдены - делает то что указано в скрипте, в плоть до очистки всех спотов/квадратов.

да и много кто имел дело с офф скриптами видел все это в разных хрониках, в +/- таком описании.
 
Bankir, все таки raid server предназначен для других целей.
То что вы говорите, что корейцы придумали, мы не корейцы это раз.
Что и кто нам запрещает придумать что-то еще это два.
Перечитайте первый топик что понять что я затрагиваю не только количество мобов в локе это три.

Gaikotsu, 20гб в озу звучит очень не очень для 1 сервиса/службы
 
Bankir, все таки raid server предназначен для других целей.
То что вы говорите, что корейцы придумали, мы не корейцы это раз.
Что и кто нам запрещает придумать что-то еще это два.
Перечитайте первый топик что понять что я затрагиваю не только количество мобов в локе это три.

Gaikotsu, 20гб в озу звучит очень не очень для 1 сервиса/службы
Хм, т.е. пример Рейд сервера - это вам не пример решения.
Т.е. разделить вход в мир/сервер на разные сервера, это не оно?
 
Bankir, цель raid сервера другая, но при желании можно натянуть на глобус, да
 
Gaikotsu, 20гб в озу звучит очень не очень для 1 сервиса/службы
по нынешним временам это не особо то и проблемно и дорого. память ща стоит копейки - взять сервер хотя бы с 32 или 64 гигами памяти стоит относительно недорого.

хотя не спорю что для 99% запускаемых "мегаадминами" суперпупермега серверов это много да - т.к. зачастую у них сервера запускаются на дешевеньких впсках с минимумом выделенных ресурсов - чисто чтоб хоть как-то запускалось и тянуло хоть какой-то онлайн.
 
по нынешним временам это не особо то и проблемно и дорого. память ща стоит копейки - взять сервер хотя бы с 32 или 64 гигами памяти стоит относительно недорого.

хотя не спорю что для 99% запускаемых "мегаадминами" суперпупермега серверов это много да - т.к. зачастую у них сервера запускаются на дешевеньких впсках с минимумом выделенных ресурсов - чисто чтоб хоть как-то запускалось и тянуло хоть какой-то онлайн.
У меня крутит отдельный сервер на 256 gb оперативки с e5 2678 v3, почему не v4 и тут все просто.
На v4 нельзя сделать unlock в x99 через bios, можно на v3.
Это удобно для чего угодно, хоть с 10 виртуальных машин или докеров для разных сервисов и самое главное в качестве прослойки выступает недорогой впс уже с защитой :pandaredlol:

В целом более правильная концепция действительно сделать в несколько слоев, просто идея сделать как то по другому только и будет идеей на бумаге.

Возможно предстоять будет еще взять более новый клиент essence и опустить до high five хроник или легендарных interlude. :Hot:
 
У меня крутит отдельный сервер на 256 gb оперативки с e5 2678 v3, почему не v4 и тут все просто.
На v4 нельзя сделать unlock в x99 через bios, можно на v3.
Это удобно для чего угодно, хоть с 10 виртуальных машин или докеров для разных сервисов и самое главное в качестве прослойки выступает недорогой впс уже с защитой :pandaredlol:

В целом более правильная концепция действительно сделать в несколько слоев, просто идея сделать как то по другому только и будет идеей на бумаге.

Возможно предстоять будет еще взять более новый клиент essence и опустить до high five хроник или легендарных interlude. :Hot:
П.с. а что там опускать, описания предметов и скилов/диалогов?
 
П.с. а что там опускать, описания предметов и скилов/диалогов?
Это не самое сложное, есть еще карты, функции которых нет на новых хрониках из старых, мобов всех и прочее.
 
Назад
Сверху