При хостинг поддержке Интернет-сообщества VBIOS CS-Mapping.com.ua
Вернуться   CS-Mapping.com.ua > Forum > Разработка игр > Xash3D Engine
Ник
Пароль
Регистрация Правила форума FAQ Пользователи Администрация Календарь Поиск За 24 часа Пометить все разделы прочитанными

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.11.2016, 21:55  #321
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

2 mittorn: этот механизм был сделан очень и очень давно. Возможно он уже неактуален.
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2016, 15:40  #322
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

Насколько актуально ограничение размера мессаги? Где-то испольузется байт?
https://github.com/FWGS/xash3d/issues/201
mittorn вне форума Ответить с цитированием
Старый 14.11.2016, 15:47  #323
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

Размер мессаги передаётся на клиент как 1 байт. Отсюда и ограничение.
Я бы мог передавать два байта, но тогда бы макс. размер был 65 килобайт, а не 512 байт.

Дядя Миша, подумав, добавил 14.11.2016 в 15:51
Да вот, хотя бы заглянём в ваш хвалёный rehlds
Код:
void EXT_FUNC SV_SendUserReg(sizebuf_t *msg)
{
	for (UserMsg *pMsg = sv_gpNewUserMsgs; pMsg; pMsg = pMsg->next)
	{
		MSG_WriteByte(msg, svc_newusermsg);
		MSG_WriteByte(msg, pMsg->iMsg);
		MSG_WriteByte(msg, pMsg->iSize);
		MSG_WriteLong(msg, *(int *)&pMsg->szName[0]);
		MSG_WriteLong(msg, *(int *)&pMsg->szName[4]);
		MSG_WriteLong(msg, *(int *)&pMsg->szName[8]);
		MSG_WriteLong(msg, *(int *)&pMsg->szName[12]);
	}
}
Видите? Тоже байт. Каким чудом туда вдруг влезает строчка на 512 байт мне неведомо. Может халфа просто не сообщает об ошибке. А может её передают в два приёма.

Последний раз редактировалось Дядя Миша, 14.11.2016 в 15:51.
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2016, 16:26  #324
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

Вот и разгадка: ошибка не выозвращается
http://mittorn.the-swank.pp.ua/rehl...5b56f7162580f3f
mittorn вне форума Ответить с цитированием
Старый 14.11.2016, 16:35  #325
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

Так этож халфа. Она вообще очень много фигни молча глотает. Это ксаш постоянно орёт про всякое, тем самым порождая иллюзию, что под халфой работало правильно, а под ксашем сломалось. А оно нигде правильно не работало.
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2016, 16:56  #326
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

У меня идея есть - дополнить developer уровень debug флагами для лога.
То есть сделать в host поле флагов, по которому определять, включен или выключен тот или иной канал лога. Например D_PHYS, D_NET, D_PLATFORM, D_LIMITS, D_PMOVE, D_SVCLIENT, D_ERROR, D_WARN (соответственно указывать в конфиге это как -phys
+net, что к примеру при dev 5 отрубит сообщения о превышении скорости в физике, однако включать ворнинги сети). А -dev будет выстаылять дефолтные значения.

Ибо все такие сообщения мешают держать сервера, разращивая логи до многих гигабайт за неделю и люто затрудняя разбор полётов при сбое. А если отрубить лог в -dev 0 - потом совсем не поймёшь, почему произошёл сбой.
mittorn вне форума Ответить с цитированием
Старый 14.11.2016, 17:13  #327
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

проще лог писать по кругу по достижении заданного размера, ну скажем в мегабайт. типа ftell == мегабайт то fseek( 0 )
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2016, 17:26  #328
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

2 Дядя Миша:
и в логе будет мегабайт got velocity too low
mittorn вне форума Ответить с цитированием
Старый 14.11.2016, 17:50  #329
Qwertyus
Qwertyus
Майор
Регистрация: 13.08.2009
Сообщения: 1,085


По умолчанию

У меня была идея, что можно сделать такой специальный квар, который бы отключал повторное появление одинаковых мессаг в логе. Чтобы консоль не печатала в лог и не выводила на экран 2 и более одинаковых сообщений подряд. А то правда достают какие-нибудь сообщения об отсутствии объекта для заскриптованной сцены (монстр убит) или превышении едиктов и т. д. и т. п. Хуже всего, что они ещё и с консолью работать мешают, не дают нормально лог просматривать, результаты автодополнения в том числе.
Qwertyus вне форума Ответить с цитированием
Старый 14.11.2016, 18:19  #330
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

2 Qwertyus:
Хорошая идея, но оно поможет только пока такой монстр один. Как только их 2 - от повторов не спастись. А хранить последние N сообщений и сравнивать - сильно понизит производительность.
Я уже замечал что отладочные сообщения при расчёте нод могут 2секундный расчёт превратить в 10минутный. Если добавить такую проверку -даже просто по последнему, может ещё раза в 2 производительность упасть. Что касается дебагфлагов что я предложил - их должно быть возможно изменить после запуска - чтобы можно было заткнуть внезапно вылезшую посреди игры нехватку, например, партиклей
mittorn вне форума Ответить с цитированием
Старый 14.11.2016, 19:58  #331
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

[ Цитата ] Я уже замечал что отладочные сообщения при расчёте нод могут 2секундный расчёт превратить в 10минутный
Спам в консоль (неважно в какую), это всегда одна из самых затратнейших операций. Для сервера достаточно установить девелопер в 3.
Дядя Миша вне форума Ответить с цитированием
Старый 14.11.2016, 20:21  #332
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

2 Дядя Миша:
Знаю. Но мне часто надо было видеть сообщентя info и ucmd в консоли.
mittorn вне форума Ответить с цитированием
Старый 15.11.2016, 19:21  #333
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

Вот какое дело. В ксаше есть запрос на мастер-сервер, но он - только для меню. А ведь надо бы еще ввести специальный запрос для клиентского Vgui Browser, чтобы формат сообщения совпадал с net_api_responce_t.
Как это правильно сделать? Можно ли как-то редиректить запрос с мастера на сервера в списке, чтобы они так сказать сами ответили?
Или тут в два приёма? Сперва получаем список ай-пишнегов этих серверов, а потом уже шлём им запросы в формате net_api_responce ?
Дядя Миша вне форума Ответить с цитированием
Старый 15.11.2016, 19:24  #334
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

Ксаш болезненно относится к переполнением мессаг. В GS если при любом pfnWriteXXX мессага переполнилась, она обнуляется, клиент не ломается, в результате удаётся отделаться небольшим глюком в хужшем случае. В ксаше если это и происходит - то не всегда.
Вот типичный крашлог:
http://pastebin.com/6FNuMYid
Краш в этой строке:
sv.multicast.pData[svgame.msg_size_index] = svgame.msg_realsize;
mittorn вне форума Ответить с цитированием
Старый 15.11.2016, 20:55  #335
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

Upd: отбой, сам разобрался.

Дядя Миша, подумав, добавил 15.11.2016 в 20:56
2 mittorn: ну не страшно, починим.

Последний раз редактировалось Дядя Миша, 15.11.2016 в 20:56.
Дядя Миша вне форума Ответить с цитированием
Старый 15.11.2016, 21:06  #336
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

2 Дядя Миша:
Я пнедыдущий пост сразу не заметил

mittorn, подумав, добавил 15.11.2016 в 21:09
Краш выше был вызван не переполнением мессаги. Там переполнение где-то в другом месте поломало движковую структуру. Пока не понятно где, возможно amx виноват.

Последний раз редактировалось mittorn, 15.11.2016 в 21:09.
mittorn вне форума Ответить с цитированием
Старый 15.11.2016, 22:05  #337
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

Так. Я починил vgui browser, он теперь выводит глобальный сервер-лист через NetAPI. Но всплыла другая нехорошая трабла. От некоторых серверов приходит укороченный риквест детализации. Т.е. формат должен быть от тако
Код:
		Info_SetValueForKey( string, "hostname", hostname->string );
		Info_SetValueForKey( string, "gamedir", GI->gamefolder );
		Info_SetValueForKey( string, "current", va( "%i", count ));
		Info_SetValueForKey( string, "max", va( "%i", sv_maxclients->integer ));
		Info_SetValueForKey( string, "map", sv.name );
Но приходит в лучшем случае только hostname, а иногда от этого хостнейма отрезается половина имени. Пример:
[ Цитата ] got list
CL_ParseNETInfoMessage 194.67.214.50:27016 \hostname\CS1.6
hostname CS1.6
CL_ParseNETInfoMessage 193.26.217.238:27015 \hostname\PlayNice
hostname PlayNice
CL_ParseNETInfoMessage 193.26.217.238:27016 \hostname\PlayNice
hostname PlayNice
CL_ParseNETInfoMessage 194.67.214.50:27019 \hostname\[CSDM]SENTRY
hostname [CSDM]SENTRY
CL_ParseNETInfoMessage 194.67.214.50:27021 \hostname\[Test]Football\gamedir\cstrike\current\0\max\25\map\de_dust2
hostname [Test]Football
gamedir cstrike
current 0
max 25
map de_dust2
CL_ParseNETInfoMessage 194.87.238.108:27015 \hostname\Opposing
hostname Opposing
CL_ParseNETInfoMessage 87.110.167.224:27017 \hostname\NeonClub
hostname NeonClub
CL_ParseNETInfoMessage 185.5.250.11:27099 \hostname\CS
hostname CS
CL_ParseNETInfoMessage 194.67.214.50:27018 \hostname\CS
hostname CS
CL_ParseNETInfoMessage 87.110.167.224:27016 \hostname\NeonClub
hostname NeonClub
CL_ParseNETInfoMessage 41.107.53.183:17118 \hostname\unnamed\gamedir\cstrike\current\11\max\32\map\fy_snow
hostname unnamed
gamedir cstrike
current 11
max 32
map fy_snow
CL_ParseNETInfoMessage 46.147.193.183:28015 \hostname\FreeSlave
hostname FreeSlave
CL_ParseNETInfoMessage 121.122.97.117:80 \hostname\LOTTEUBEOfficial\gamedir\valve\current\1\max\32\map\monkey_isle3
Я почему-то подозреваю что кто-то вносил изменения в код Info_String либо виноваты цветные префиксы. Хотя в меню - полный порядок.
Я не могу газобгаться с удаленными серверами, поскольку я даже не в курсе какие там форки. Я в своё время догадался лепить версию ксаша на скриншот, а вот передавать по сети версию форка - не догадался
И теперь вас там хрен разберет что творится. Попробуйте собрать какую-то инфу по этому вопросу, а то совсем невозможно.
Потому что я всеръез занялся сетью.
Дядя Миша вне форума Ответить с цитированием
Старый 16.11.2016, 00:29  #338
IvanZ9
IvanZ9
Старший сержант
Регистрация: 27.04.2009
Адрес: Недалеко от Владивостока
Возраст: 25
Сообщения: 367


По умолчанию

Эм, такое ощущение, что проблема с пробелами. Слова-то режутся целыми а не кусками. Ну, так видно из сообщений.
IvanZ9 вне форума Ответить с цитированием
Старый 16.11.2016, 06:35  #339
mittorn
mittorn
Лейтенант
Регистрация: 22.04.2010
Сообщения: 750


По умолчанию

2 Дядя Миша:
Там везде цветовые префиксы

mittorn, подумав, добавил 16.11.2016 в 06:40
Ну и режет явно на пробелах. В форке и SetValueForKey и ParseFile менялись, но не настолько, чтобы проведение на побелах изменилось. Там только переполнения и зацикливания на плохих данных исправлялись.
Я уверен, что дело тут в работе с netapi.
Там видимо берётся второй аргумент после info. А он - инфострока до первого пробела. Надо весь остаток буфера брать.

Последний раз редактировалось mittorn, 16.11.2016 в 06:42.
mittorn вне форума Ответить с цитированием
Старый 16.11.2016, 13:39  #340
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 11,210


По умолчанию

2 IvanZ9: это infostring, он и должен быть упакован.

2 mittorn: цветовые префиксы вообще не делают погоды.
[ Цитата ] В форке и SetValueForKey и ParseFile менялись, но не настолько
Вы уже один раз починили парсер wav-чанков, после которого он половину звуков перестал грузить. Теперь мне всё понятно вообщем.
[ Цитата ] Я уверен, что дело тут в работе с netapi.
netapi который вам достался, умел практичски всё, кроме получения листа с сервера. Вчера я это реализовал и обратил внимание. Если бы везде поголовно был баг, так это одно. Но баг как раз на ваших форках.
Дядя Миша вне форума Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 18:26.


Designed by FT-502, TRUP@C. Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2017 by CS-Mapping.com.ua Community