Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   TERA (https://forum.zone-game.info/forumdisplay.php?f=182)
-   -   Шара Исходников эмулятора Tera от Diagod (https://forum.zone-game.info/showthread.php?t=19180)

Ronn-l2f 29.04.2012 09:35

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от Aquanox (Сообщение 183497)
Netty ChannelBuffer в разы превосходит BB. Экстремально простая запись чтение, навигация по буферу. Основа сети тоже на Netty у меня например.

А вот Netty не проникся, а вот нормально написанное нио, отрабатывает прекрасно

DiagoD 29.04.2012 11:58

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от Ronn-l2f (Сообщение 181097)
Ну в итоге полностью с 0 была и переписана, только крипт остался (:

Кстати, ваши колеги мб и говорят, что с 0 вся переписали но на самом деле это же не так, видно это по вашему скрину)))

P.S. Сказано не в упрек)


Цитата:

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


Цитата:

а есть что-то эффективнее ByteBuffer'а? другое дело что в сурсах диагода, крайне неэффективная запись write*S(), что естественно было исправлено + крайне тормознутое НИО в целом, который пришлось тоже переписывать
на счет тормознутое это довольно таки спорный вопрос, на нем сидят все л2 сборки и никто не жалуется, другое дело, что у меня там куча лишнего была, а так же через Ж сделанного)

Ronn-l2f 29.04.2012 12:24

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от DiagoD (Сообщение 183527)
Кстати, ваши колеги мб и говорят, что с 0 вся переписали но на самом деле это же не так, видно это по вашему скрину)))

переписывал я
Цитата:

Сообщение от DiagoD (Сообщение 183527)
на счет тормознутое это довольно таки спорный вопрос, на нем сидят все л2 сборки и никто не жалуется, другое дело, что у меня там куча лишнего была, а так же через Ж сделанного)

при writeDS() конечно создавать промежуточный массив байтов + байтбуфер в который записывать в обратном порядке, а затем его вставлять в основной, это очень эффективно, ок

DiagoD 29.04.2012 12:29

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от Ronn-l2f (Сообщение 183531)
переписывал я

при writeDS() конечно создавать промежуточный массив байтов + байтбуфер в который записывать в обратном порядке, а затем его вставлять в основной, это очень эффективно, ок

вот это я и имел виду когда писал
Цитата:

другое дело, что у меня там куча лишнего была, а так же через Ж сделанного
Само собой, что то было лишнее.

На замену этому:
Цитата:

ByteBuffer siz = ByteBuffer.wrap(new byte[4]).order(ByteOrder.LITTLE_ENDIAN);
siz.clear();
siz.putInt(value);
siz.flip();
getByteBuffer().put(siz);
будет идеальным вариантом

Код:

getByteBuffer().put(Integer.reverse(value));

Ronn-l2f 29.04.2012 12:34

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от DiagoD (Сообщение 183533)
вот это я и имел виду когда писал

а как насчет исполнение клиентских пакетов? или про запись серверных?
твой подход к накапливанию клиентских пакетов перед исполнением и запись по 1 серверному пакету из очереди на клиента за проход, сразу оукалось при более менее частом обмене пакетов
П.С. не знаю что там за великие л2 сборки работают по той же схеме, но у л2ф нио куда шустрее, а у оверворда вообще нетти

kolobrodik 29.04.2012 12:44

Re: Шара Исходников эмулятора Tera от Diagod
 
У Overworld на Netty разве что Telnet сервер и то собран он из примеров на офф. сайте netty.io.
(По крайней мере в шарных исходах)

DiagoD 29.04.2012 12:47

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от Ronn-l2f (Сообщение 183534)
твой подход

Это не мой подход.
Все НИО я взял с л2п и переделал его под Теру, само собой, что напихал свои изжопы там и перевернул некоторые моменты для совместимости.

Добавлено через 2 минуты
Посмотрел овер, что-то не увидел там нети.

Ronn-l2f 29.04.2012 12:52

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от DiagoD (Сообщение 183538)
Это не мой подход.
Все НИО я взял с л2п и переделал его под Теру, само собой, что напихал свои изжопы там и перевернул некоторые моменты для совместимости.

Добавлено через 2 минуты
Посмотрел овер, что-то не увидел там нети.

Ну с овером видно ошибся, что не отменяет выше сказанное.

hex1r0 29.04.2012 15:49

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от Aquanox (Сообщение 183497)
Netty ChannelBuffer в разы превосходит BB. Экстремально простая запись чтение, навигация по буферу. Основа сети тоже на Netty у меня например.

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

Ronn-l2f 29.04.2012 15:55

Re: Шара Исходников эмулятора Tera от Diagod
 
Цитата:

Сообщение от hex1r0 (Сообщение 183566)
из за универсальности Netty там, сначала используется какой то хитрый пул натив буферов, потом из него данные копируются в ченел буфер и только потом ченел буфер передается в хендлер. в итоге куча мусора в памяти и бесконечная работа бедного GC, теоретически G1 может улучшить ситуацию.

А мусорщика грузить лишней едой не есть хорошо, имхо


Текущее время: 04:44. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot