Пришло время разрешить наш давний спор с ~Х~ относительно того, что экономичнее для траффика и более стабильно в работе: эвент или мессадж.
Моя история: много зим тому, на этапе программирования HLWE, я получил консультацию по асечке от того, чьё имя на данном форуме не надлежит произносить в слух, и память о ком подлежит забвению....
Так вот, эвенты были сделаны Вальве впопыхах,механизм их не отлажен, работают не стабильно, периодически пакеты данных не доходят, а координаты передаются не точно.
Ну и, конечно, они громоздкие. Если нужно передать, скажем, индекс энтити и её координату, то нам требуется 7 байт, а эвент пожирает 255.
Но товарищ ~Х~ всячески за эвенты. И он напрочь отметает все вышеприведенные аргументы. И поспорить сложно - все-таки он хороший погромист и написал очень стабильную платформу, а так же над траффиком трясется, как скупой над медным грошиком.
Поэтому и обращаюсь я к вам, к тем, кто скрывается за красивыми аватарками, с такими словами: не надо мне ни денег, ни еды, ни работы, ни подработки, а помогите лишь разрешить этот давний спор!!!
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Вопрос можно задать иначе: что лучше, молоток или отвёртка?
Прежде, чем задаваться такими вопросами, нужно хорошо понять, что такое эвенты и зачем Вальва их добавила в движок? (Впопыхах или нет - я не знаю, но работают они отлично и задачу свою решают на все сто - в частности, с помощью эвентов я снизил трафик хедкрап френзе в 2-3 раза). Выбор между эвентом и мессагой всегда очевиден, точно так же как между молотком и отвёрткой: мало кому придёт в голову забивать в доску шуруп, равно как и стучать отвёрткой по гвоздю. Другой вопрос, что если молодые и неопытные погромизты рассматривают эвенты как часть системы клиентских пушек (что, кстати говоря, недалеко от истины) и юзают их исключительно там, а всякие train pitch adjust считают мелким недоразумением, то опытные - начинают эти эвенты тащить и куда надо, и куда не надо, что приводит к разрухе в головах и путанице в коде.
Цитата:
Ghoul [BB] писал: Если нужно передать, скажем, индекс энтити и её координату, то нам требуется 7 байт, а эвент пожирает 255.
Я долго думал, считал так и эдак, но так и не смог понять, откуда взяты числа 7 и 255? Поясни, пожалуйста, как считал ты.
Цитата:
Ghoul [BB] писал: периодически пакеты данных не доходят, а координаты передаются не точно.
Чтобы евент стопроцентно доходил, надо посылать его с флагом FEV_RELIABLE. Ты же не удивляешься, что мессаги MSG_BROADCAST или MSG_PVS могут не дойти? Так и тут.
Координаты всегда передаются неточно, т.к. посылаются в размере 16 бит. А размер флоата, как известно, чуть побольше.
XaeroX писал: Выбор между эвентом и мессагой всегда очевиден, точно так же как между молотком и отвёрткой: мало кому придёт в голову забивать в доску шуруп, равно как и стучать отвёрткой по гвоздю.
Не совсем очевиден. Мало примеров использования. Вот с помощью мессаг делают всё, что не лень. А с помощью эвентов только пушки, да гибсы с дверьми в DMC.
XaeroX писал: Я долго думал, считал так и эдак, но так и не смог понять, откуда взяты числа 7 и 255? Поясни, пожалуйста, как считал ты.
Ну вот смотри, браток:
насчет мессаги скажу точно, откуда размер:
gmsgTrail = REG_USER_MSG("Trail", 9);
void FX_Trail( Vector origin, int EntIndex, int Type )
{
MESSAGE_BEGIN( MSG_ALL, gmsgTrail );
WRITE_COORD( origin.x );
WRITE_COORD( origin.y );
WRITE_COORD( origin.z );
WRITE_SHORT( EntIndex );
WRITE_BYTE( Type );
MESSAGE_END();
}
Сорри, ошибся, не 7 а 9. Но разница не велика.
Про 255 доказать не могу, но те же несколько лет назад где-то читал.
Но даже приблизительно можно прикинуть размер, исходя из того, что мы знаем структуру эвента и нулевые параметры все равно передаются.
Хм... 26 байт...
Возможно, еще где-то что-то передается в эвенте? Точно помню цифру в 255 байт на эвент....
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
XaeroX писал: А эту глупость, браток, ты тоже не помнишь, где читал?
Я читал, что мессаги передаются как массив данных. Не?
Добавлено 11-10-2015 в 16:36:
Цитата:
XaeroX писал: Четверть килобайта. Ну сам подумай - адекватно ли?
Не адекватно.
а мои подсчеты ближе к реальным размерам?
Добавлено 11-10-2015 в 16:49:
Я ещё слишком юн, и мне предстоит многому научиться, поэтому не суди слишком строго, браток, а лучше расскажи об эвентах всю правду, как на духу.
это позволит развеять мифы вокруг них и, думаю, будет полезно не только мне.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
XaeroX
Ты б лучше про эвенты да про мессаги рассказал подробнее.
А как молоток и отвертку использовать мы и сами знаем - мы ж программисты в конце концов.
Government-Man писал: Ты б лучше про эвенты да про мессаги рассказал подробнее.
На самом деле я бы очень хотел подробно рассказать.
Но сейчас мне не хочется.
В принципе, в сорцах ксаша всё довольно прозрачно.
Может, однажды у меня появится время и я напишу статейку на эту тему.
Вот видишь, браток, нам нужно сейчас. А завтра уже будет поздно.
Несвоевременность - худшая драма....
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
XaeroX писал: Вам 15 лет было по-барабану, как работают эвенты, вы спокойно обходились без них - а тут вдруг срочно понадобилось?
Для меня основное преимущество эвентов - FEV_UPDATE (когда при накоплении одинаковых сообщений в очереди отсылается только самое новое). Для вальвы - перспектива (не сбывшаяся) написания скриптов.
А ещё их может быть чуть ли не 1024 штуки (забыл уже точное число), а мессаг - только 127 или 191 (в 1111 число увеличили... чуть-чуть).
Чем плохи эвенты - фиксированным набором параметров. Но тут иная парадигма - эвент - это "событие", тут не предусмотрена кастомизация. А вот мессагой с сервера всегда было принято передавать цвет, кадр, размер, время, спрайты и прочие атрибуты эффектов. Мне, как человеку, который стремится сделать всё настраиваемым, это ни разу не нравится. Но так оно всегда: выбираешь между тёплым и мягким.
~ X ~ писал: Мне, как человеку, который стремится сделать всё настраиваемым, это ни разу не нравится
А кто настраивать то будет, браток? Я наоборот считаю, что пользователь никуда не полезет и ему абсолютно плевать, как работает. а настраивать будут только те, кто пишет модификации. Я пока таких только двоих могу назвать.
а куча лишних параметров тоько с толку сбивает. Знаю и сталкиваюсь постоянно с этим в твоем коде. Все должно быть жёстко.
__________________
Ты топчешь мир своими ботинками,
Не замечая куда наступаешь,
А время от тебя уходит цветными картинками,
Но ты даже этого не понимаешь.
Компрометирую данные своей учётной записи.
ЛОГИН: Ghoul [BB]
ПАРОЛЬ: paladin_solo
Действительно - миллионы мухтысячи яблочников чувствуют жёсткость у себя в ректуме - и живут же. Нет, мне так не пойдёт. Я хочу чтоб всё было настраиваемо админом сервера - даже цвет луча гаусса.