Пишу сервер с 0 на c# - Страница 2 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Игровой клиент

Игровой клиент Есть вопросы по поводу редактирования dat, utx и других файлов клиента, пожалуйста, задавайте их здесь.
Описание темы:Тут буду описывать проблемы\вопросы

Ответ
Опции темы
Непрочитано 04.06.2016, 19:12   #11
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Re: Пишу сервер с 0 на c#

Цитата:
Сообщение от Connie Посмотреть сообщение
Похоже, что кто-то сильно угорел по SAO и Login Horizon, но l2 его не отпускает при этом

По теме же могу сказать, что делать сервер с нуля - нулем всё и поделится. Лучше взять что-то работающее и уже менять на своё усмотрение. Там и людей можно найти в команду. Мне бы, например, было бы интересно поучаствовать в чем-то таком, даже за бесплатно, ради хобби. Так что может и найдешь людей.

Но мой совет - в таких делах всегда нужен не столько тот, кто умеет на java программировать, сколько тот, кто умеет творить чудеса со старым клиентом линейки.
не всегда что то "работающее" работающим является... взять того же старичка l2jserver - проотца всех серверов l2j. Как видел в подписи у одного мембера зоны "то что написано в l2j это порнофильм с дешовыми порно актерами"(смысл такой) - я полностью в этом с ним согласен. Нужно понимать что тогда когда писался l2j - об организации глубокой и продуманной структуре они врятли думали - тем более разработка велась опять же энтузиастами. У кого то был хороших стиль программирования и продумывания алгоритмов, у кого-то не очень. Я не в коем случае их не осуждаю да и кто я такой чтобы это делать, они выполнили свою задачу в полной мере....
Но сетевой движок в один поток на селекторе и nio... давайте почитаем про проблемму 10к соединений и какие подходы с ним справляются... да и вообще сервер в один поток - это перебор сокетов в цикле что на мой все таки взгляд является не правильным подходом... да такой сервер может выдержать большое кол-во подключений, но время отклика увеличивается причем на много...
а у фреймворка есть такая мощная вещь как асинхронные операции (оптимизированный пулл потоков) с помощью которого можно справится с 10000 соединениями...

Добавлено через 1 минуту
Цитата:
Сообщение от Zubastic Посмотреть сообщение
А третий раз будет иначе? Одному человеку нужно иметь железные яйца, чтобы пилить все это соло ибо в противном случае тотальный зашквар.
Я просто теперь, когда уж вкрай за*бет, иду гулять в парк или в бар с друзьями. Потом желание возвращается xDD

Последний раз редактировалось krisadr; 04.06.2016 в 19:14. Причина: Добавлено сообщение
krisadr вне форума Ответить с цитированием
Непрочитано 04.06.2016, 21:45   #12
Аватар для n3k0nation
Antihero

По умолчанию Re: Пишу сервер с 0 на c#

Цитата:
Сообщение от krisadr Посмотреть сообщение
Как видел в подписи у одного мембера зоны "то что написано в l2j это порнофильм с дешовыми порно актерами"(смысл такой)
Призыв меня удался

Цитата:
Сообщение от krisadr Посмотреть сообщение
Но сетевой движок в один поток на селекторе и nio... давайте почитаем про проблемму 10к соединений и какие подходы с ним справляются... да и вообще сервер в один поток - это перебор сокетов в цикле что на мой все таки взгляд является не правильным подходом... да такой сервер может выдержать большое кол-во подключений, но время отклика увеличивается причем на много...
Лирика: как раз таки с проблемой 10к справляются с помощью селекторов, только, обычно, нескольких, которые работают параллельно, но уж никак не созданием по треду на каждого клиента. И работает селектор далеко не так, как представлено

В то время, когда это все писалось, еще не было NIO2.0 (async network), был выбор: писать на cpp для каждой платформы свою библиотеку (poll/epoll для линуксов и WSA для вин; про бздю вообще молчу), которую потом еще придется поддерживать, или же писать все на первом NIO.
До выхода J7 (в котором появился NIO2.0), особого смысла от нескольких RW Selector-воркеров не было, т.к. нативный поток полинга оставался одним. С вводом NIO2.0 JVM научилась их масштабировать (даже если не использовать async), поэтому, именно, после релиза J7, имело смысл что-то и как-то делать, но не раньше.

Цитата:
Сообщение от krisadr Посмотреть сообщение
а у фреймворка есть такая мощная вещь как асинхронные операции (оптимизированный пулл потоков) с помощью которого можно справится с 10000 соединениями...
Конечно же, до выхода J7 существовал Netty, Grizzly и другие, но их использование... Хм... Об одном только Netty я могу много рассказать, особенно, про замечательный баг 100% CPU Use, который у них лежит на багтрекере уже лет десять, в состоянии Open.
В общем и грубо говоря: они предназначены для веб-серверов, но уж никак не для гейм лоад сети.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 04.06.2016, 22:53   #13
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Re: Пишу сервер с 0 на c#

Цитата:
Сообщение от n3k0nation Посмотреть сообщение
Лирика: как раз таки с проблемой 10к справляются с помощью селекторов, только, обычно, нескольких, которые работают параллельно, но уж никак не созданием по треду на каждого клиента. И работает селектор далеко не так, как представлено
.
ну мне в принципе не важно как он там на самом деле работает... смысл такой что в l2j один поток обрабатывает все подключения... без всякого распараллеливания.

Из вики:
Свернуть ↑Развернуть ↓

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

Добавлено через 2 минуты
Цитата:
Сообщение от n3k0nation Посмотреть сообщение
Призыв меня удался


В то время, когда это все писалось, еще не было NIO2.0 (async network), был выбор: писать на cpp для каждой платформы свою библиотеку (poll/epoll для линуксов и WSA для вин; про бздю вообще молчу), которую потом еще придется поддерживать, или же писать все на первом NIO.
До выхода J7 (в котором появился NIO2.0), особого смысла от нескольких RW Selector-воркеров не было, т.к. нативный поток полинга оставался одним. С вводом NIO2.0 JVM научилась их масштабировать (даже если не использовать async), поэтому, именно, после релиза J7, имело смысл что-то и как-то делать, но не раньше.


Конечно же, до выхода J7 существовал Netty, Grizzly и другие, но их использование... Хм... Об одном только Netty я могу много рассказать, особенно, про замечательный баг 100% CPU Use, который у них лежит на багтрекере уже лет десять, в состоянии Open.
В общем и грубо говоря: они предназначены для веб-серверов, но уж никак не для гейм лоад сети.
То было одно время, сейчас другое, почему бы не использовать новые доступные технологии)

Последний раз редактировалось krisadr; 04.06.2016 в 22:55. Причина: Добавлено сообщение
krisadr вне форума Ответить с цитированием
Непрочитано 05.06.2016, 00:09   #14
Аватар для n3k0nation
Antihero

По умолчанию Re: Пишу сервер с 0 на c#

Цитата:
Сообщение от krisadr Посмотреть сообщение
ну мне в принципе не важно как он там на самом деле работает... смысл такой что в l2j один поток обрабатывает все подключения... без всякого распараллеливания.

Из вики:
Свернуть ↑Развернуть ↓
Суждение по nginx:
Свернуть ↑Развернуть ↓
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.

Последний раз редактировалось n3k0nation; 05.06.2016 в 01:24.
n3k0nation вне форума Ответить с цитированием
Непрочитано 05.06.2016, 13:31   #15
Аватар для FaintSmile
Пользователь

По умолчанию Re: Пишу сервер с 0 на c#

Цитата:
Сообщение от krisadr Посмотреть сообщение
а у фреймворка есть такая мощная вещь как асинхронные операции (оптимизированный пулл потоков) с помощью которого можно справится с 10000 соединениями...
Лично мне не приходилось лицезреть выше 2к онлайна на одном сервере с 2014 года. Такие извращения либо бессмысленны и беспощадны, либо чрезмерно оптимистичны
FaintSmile вне форума Ответить с цитированием
Непрочитано 08.06.2016, 05:37   #16
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Re: Пишу сервер с 0 на c#

Цитата:
Сообщение от Connie Посмотреть сообщение
Лично мне не приходилось лицезреть выше 2к онлайна на одном сервере с 2014 года. Такие извращения либо бессмысленны и беспощадны, либо чрезмерно оптимистичны
Ну я бы не назвал это прямо таки извращением.
Вот наконец то закончил с реализацией криптера-декриптера...
приведу примеры Stopwatch. Так вот в сервере на шарпе с асинхронным чтением\записью с момента получение пакета, до момента реакции на него проходит среднем 300к наносек (дешифровка пакетов включена в тест)
(sw.ElapsedTicks * ((1000L * 1000L * 1000L) / Stopwatch.Frequency), если не считать первый запуск пакет ридера(некешируемый). В то время как на selector в java тратилось порядка 1000к наносек (по крайней мере на моем железе.)
Получается чисто теоретически, чтобы одновременно обработать 5к подключений на у c# займет 1,5 сек.
у selector'a на всех l2j - 5 сек. Нельзя конечно слепо верить данным тестом, ведь все познается только в реальных условиях, но все же это придает мне оптимизма к развитию проекта на шарпе
да забыл добавить тесты проводились на DEBUG, а с релизной оптимизацией все будет летать еще быстрее)
krisadr вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 08.06.2016, 15:16   #17
Аватар для FaintSmile
Пользователь

По умолчанию Re: Пишу сервер с 0 на c#

Цитата:
Сообщение от krisadr Посмотреть сообщение
Ну я бы не назвал это прямо таки извращением.
Вот наконец то закончил с реализацией криптера-декриптера...
приведу примеры Stopwatch. Так вот в сервере на шарпе с асинхронным чтением\записью с момента получение пакета, до момента реакции на него проходит среднем 300к наносек (дешифровка пакетов включена в тест)
(sw.ElapsedTicks * ((1000L * 1000L * 1000L) / Stopwatch.Frequency), если не считать первый запуск пакет ридера(некешируемый). В то время как на selector в java тратилось порядка 1000к наносек (по крайней мере на моем железе.)
Получается чисто теоретически, чтобы одновременно обработать 5к подключений на у c# займет 1,5 сек.
у selector'a на всех l2j - 5 сек. Нельзя конечно слепо верить данным тестом, ведь все познается только в реальных условиях, но все же это придает мне оптимизма к развитию проекта на шарпе
да забыл добавить тесты проводились на DEBUG, а с релизной оптимизацией все будет летать еще быстрее)
Это круто, что у Вас получается делать то, что нравится.

Такие разговоры навевают на меня воспоминания о том, как кое-кто делал L2 на UE3.

Добавлю немного пессимизма - подумайте о том, что Вам нужно будет написать не только ядро сервера, но и все эффекты скиллов, AI мобов и квесты туда же.
FaintSmile вне форума Ответить с цитированием
Непрочитано 08.06.2016, 19:05   #18
Аватар для krisadr
Пользователь

Автор темы (Топик Стартер) Re: Пишу сервер с 0 на c#

Цитата:
Сообщение от Connie Посмотреть сообщение
Это круто, что у Вас получается делать то, что нравится.

Такие разговоры навевают на меня воспоминания о том, как кое-кто делал L2 на UE3.

Добавлю немного пессимизма - подумайте о том, что Вам нужно будет написать не только ядро сервера, но и все эффекты скиллов, AI мобов и квесты туда же.
не все сразу) тут нужно делать не спеша и постепенно... торопится мне пока что некуда. Я все таки считаю что сервер написать куда проще чем клиент, а про 3d анимацию, модели, текстуры я вообще молчу... а так хоть есть шанс написать что то свое и работающее так как ты считаешь нужным)) ибо колоссальная работа над клиентом сделана до тебя, к тому же пакетная чать тоже распилена до зубчика - бери не хочу.... по мне так это единственный возможный вариант одному сделать что то стоящие.
Честно говоря меня не сколько логика скиллов или АИ мобов пугает, сколько реализация геодаты, и поиска пути... в геодате я точно поплыву потому что там тупо байты, тут я не силен, что далеко ходить - для того чтобы понять как шифруется\дешифруется трафик и реализовать, у меня ушло часов 5 почти непрерывного шаманства... вроде все сделал как нужно и на тебе при дешифровке чексумма не сходилась... оказывается я с самого начала забыл про обратную последовательность байтов в трафике l2... пришлось переделывать. Вообщем пока что побегаем без геодаты и поиска пути... у меня уже дикие мысли возникают о ручной реализации геодаты и системы вейпоинтов xDD, а может мне просто нужно пойти поспать и завтра придумаю более оптимальный вариант.
krisadr вне форума Ответить с цитированием
Непрочитано 09.06.2016, 01:52   #19
Заинтересовавшийся

По умолчанию Re: Пишу сервер с 0 на c#

Где 2009 , где 2016. Линейка умирает не по дням а по часам. Нет той аудитории, которая была даже в 2013.
iFailed вне форума Ответить с цитированием
Непрочитано 09.06.2016, 01:53   #20
Аватар для JavaMan

По умолчанию Re: Пишу сервер с 0 на c#

krisadr, https://github.com/Elfocrash/L2dotNET - тут ребята тоже пишут сервер л2 с нуля на шарпе, может будет интересно глянуть.
PS тему не читал, но осуждаю за шарп, а за предоставление результата бенчмарков без кода самих бенчмарков вообще тихо ненавижу.
JavaMan вне форума Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создал сервер но друзья не могут зайти на мой сервер lineage 2 Erlan Lineage II 8 31.12.2013 02:43
Пишу эмулятор L2L Hakazator Курилка / Yak floor 7 01.09.2012 13:27
Пишу эмулятор L2D. Hakazator Курилка / Yak floor 37 01.09.2012 13:07
Пишу евент (Буду просби помощи писать сюда) La2Riviera Работа со скриптами 8 01.04.2012 18:37
Гейм сервер не видет логин сервер. Scopa Lineage II 6 29.06.2009 19:55


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 06:13. Часовой пояс GMT +3.

Вверх