Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Исходники Lindvior
#21
DiagoD Написал:За исключением сказаного про лыжуBig Grin
Там как был дримучий лес, так и остался и я уверен, что и останется)

По сравнению с тем, что было года 2 назад, лыжа ушла далеко вперед. Костыли есть конечно, но лыжа их удачно выправляет. Имхо, уже не такой дремучий лес.
Ответ
#22
Gaikotsu
1. мелкий размер частосоздаваемых классов. помогает "от фризов" из-за gc
2. легкое управление пакетной структурой в 1 месте
3. множество заранее указанных переменных, которые будут жить вместе с игроков, а не неимоверное количество, указанное в частосоздаваемых классах, необходимых в течении 1 мгновения. к томуже при повторном обращении к определенному параметру, серверу не нужно будет "вычислять" их заново.
Цитата:а насчет трат памяти - покажите мне идиота, который будет к примеру для одномоментной рассылки какой-то одинаковой инфы множеству игроков делать для каждого получателя new Packet(...)
рукалицо.
частенько видел использование в цикле игроков, с приминеним на него метода, а в методе отправляется им одинаковый пакет
Ответ
#23
KID Написал:Лучше бы не просыпался:redlol:

класс UserInfoDetails, в нем содержится вся информация необходимая для клиента, все переменные. этот класс создается в конструкторе игрока.
при получении героя или начала рыбалки, обновляются данные в UserInfoDetails, и после чего я делаю sendPacket(new UserInfo(player.uiDetails), а внутри UserInfo
[src=java]protected void writeImpl()
{
PacketWriter.onUserInfo(this, this.uiDetails);
}[/src]

последовательность байтов находится в одном месте, в случае изменения к примеру предметов - изменяется в 1 месте, применяется во всех.

уменьшение размера пакета и хранение последовательности байтов в 1 месте. плюс ко всему используя эти переменные мы избавляем сервер от постоянного расчета тех же самых данных для каждого пакета (которые не поменялись)

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

все бы хорошо но есть одно "но" кстати в текущих сборках оно тоже есть. Называется оно Memory Visibility. Суть проста игрок и диспетчер в отдельных потоках. Пока this.uiDetails меняется, диспетчер может этих изменений не увидеть, а с long и double полями вообще полная жесть...
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Ответ
#24
DiagoD Написал:Этим и занимаюсь, просто расставляю приоритеты так, что бы клиенты получали полезный профит от моей роботы)))

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

Я например, к этому довольно долго шёл. Мой врождённый перфекционизм постоянно отдалял меня от начала написания кода, я всё думал, думал и совершенствовал ещё не написанный код. Благо, что вовремя осознал свои ошибки и познал дзен. :redlol:
Fortuna - non penis, in manus non recipe.
Ответ
#25
hex1r0 Написал:все бы хорошо но есть одно "но" кстати в текущих сборках оно тоже есть. Называется оно Memory Visibility. Суть проста игрок и диспетчер в отдельных потоках. Пока this.uiDetails меняется, диспетчер может этих изменений не увидеть, а с long и double полями вообще полная жесть...

в моем случае я использую подобную систему для пакетов без использования интересов для селектора, напрямую пишу в сокет, вероятностью появления мала. по сути даже несущественна, только коллекции будут требовать более внимательного отношения.
ровно с таким же успехом эта Memory Visibility может возникнуть и в конструкторе пакета
Ответ
#26
KID Написал:в моем случае я использую подобную систему для пакетов без использования интересов для селектора, напрямую пишу в сокет, вероятностью появления мала. по сути даже несущественна, только коллекции будут требовать более внимательного отношения.

только если пакет пишется синхронно с потока игрока – такой проблемы не будет.

KID Написал:ровно с таким же успехом эта Memory Visibility может возникнуть и в конструкторе пакета

нет, для этого есть final поля (чтобы руки не чесались :redlolSmile
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Ответ
#27
KID Написал:в моем случае я использую подобную систему для пакетов без использования интересов для селектора, напрямую пишу в сокет, вероятностью появления мала. по сути даже несущественна, только коллекции будут требовать более внимательного отношения.
ровно с таким же успехом эта Memory Visibility может возникнуть и в конструкторе пакета
только вот имхо вероятность того что к моменту отправки пакета переданный в него объект, из которого будут читаться данные для отправки, уже уничтожен все же будет выше чем в ситуации когда все нужные данные заносятся в промежуточные переменные еще на стадии создания объекта пакета?

ну а об остальном hex1r0 выше написал.

З.Ы. ладно, все равно все эти споры ни к чему не приведут - в любом случае все будут продолжать писать так как им удобней и логичней.
Ответ
#28
hex1r0 Написал:нет, для этого есть final поля (чтобы руки не чесались :redlolSmile

final int a;
final int N..;
final int z;


и пока конструктор назначит f, какой-нибудь там z может быть другим

Gaikotsu Написал:только вот имхо вероятность того что к моменту отправки пакета переданный в него объект, из которого будут читаться данные для отправки, уже уничтожен все же будет выше чем в ситуации когда все нужные данные заносятся в промежуточные переменные еще на стадии создания объекта пакета?

ну а об остальном hex1r0 выше написал.

З.Ы. ладно, все равно все эти споры ни к чему не приведут - в любом случае все будут продолжать писать так как им удобней и логичней.

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

вы не посол сообщества, говорите за себя, "все будут продолжать" - слишком сильное заявление
Ответ
#29
ну, не сильнее вашего, что ваша идея единственно правильная и все должны придерживаться её, чтобы не писать "говнокод" Smile
Ответ
#30
KID Написал:final int a;
final int N..;
final int z;


и пока конструктор назначит f, какой-нибудь там z может быть другим

Тоже верно если много потоков модифицируют 1 обьект, ну как сейчас в л2 или аионе. Это уже совсем другая тема и твой подход ее тоже не решает.
l2jfree | M.O.R.F. | A.P.S. | Aion | GW2 | BnS
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Исходники С1 (декомпиляция) MasterToma 40 17,179 07-01-2021, 08:55 AM
Последний пост: chasey
  Может кто-то знает, где найти исходники Squats 11 3,012 05-21-2021, 03:15 PM
Последний пост: operks
  Шара: исходники сборки l2gw (HF) rage 326 134,976 04-18-2021, 06:26 PM
Последний пост: kpNemo
  Сборка и исходники gw rage с небольшими доработками orchila 0 1,386 08-27-2020, 11:28 PM
Последний пост: orchila
  Ищу исходники карт (в PSD) freelu 4 2,072 02-29-2020, 07:57 PM
Последний пост: JuDi
  Ищу исходники L2NextGen(L2Dream) от 05.10.2009 crystallon 2 2,091 10-01-2018, 09:14 AM
Последний пост: crystallon
  Kamael(GF,HF,Lindvior) клиент на сборке CT0 Vangant monami 1 1,558 03-18-2018, 09:27 PM
Последний пост: lordofdest
  Lindvior и Win 10 -> 40% ЦП Main 18 4,843 02-22-2018, 08:12 PM
Последний пост: smeli
  [share] lin][info 2.3 [Lindvior] Gaikotsu 0 1,825 09-22-2017, 08:40 PM
Последний пост: Gaikotsu
  шара шар исходники interlude highfive Rivskoy 1 2,308 06-01-2017, 08:18 PM
Последний пост: Rivskoy

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)