Sidebar

Xash3D: Баги/Недоработки

Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 mittorn: этот механизм был сделан очень и очень давно. Возможно он уже неактуален.
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Размер мессаги передаётся на клиент как 1 байт. Отсюда и ограничение.
Я бы мог передавать два байта, но тогда бы макс. размер был 65 килобайт, а не 512 байт.

Post automatically merged:

Да вот, хотя бы заглянём в ваш хвалёный 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 байт мне неведомо. Может халфа просто не сообщает об ошибке. А может её передают в два приёма.
 
Останнє редагування:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Так этож халфа. Она вообще очень много фигни молча глотает. Это ксаш постоянно орёт про всякое, тем самым порождая иллюзию, что под халфой работало правильно, а под ксашем сломалось. А оно нигде правильно не работало.
 

mittorn

Active member
22.04.10
1 229
22
38
У меня идея есть - дополнить 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 - потом совсем не поймёшь, почему произошёл сбой.
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
проще лог писать по кругу по достижении заданного размера, ну скажем в мегабайт. типа ftell == мегабайт то fseek( 0 )
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
и в логе будет мегабайт got velocity too low
 

Qwertyus

Well-known member
13.08.09
1 474
65
48
  • Xash медаль
У меня была идея, что можно сделать такой специальный квар, который бы отключал повторное появление одинаковых мессаг в логе. Чтобы консоль не печатала в лог и не выводила на экран 2 и более одинаковых сообщений подряд. А то правда достают какие-нибудь сообщения об отсутствии объекта для заскриптованной сцены (монстр убит) или превышении едиктов и т. д. и т. п. Хуже всего, что они ещё и с консолью работать мешают, не дают нормально лог просматривать, результаты автодополнения в том числе.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Qwertyus:
Хорошая идея, но оно поможет только пока такой монстр один. Как только их 2 - от повторов не спастись. А хранить последние N сообщений и сравнивать - сильно понизит производительность.
Я уже замечал что отладочные сообщения при расчёте нод могут 2секундный расчёт превратить в 10минутный. Если добавить такую проверку -даже просто по последнему, может ещё раза в 2 производительность упасть. Что касается дебагфлагов что я предложил - их должно быть возможно изменить после запуска - чтобы можно было заткнуть внезапно вылезшую посреди игры нехватку, например, партиклей
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Я уже замечал что отладочные сообщения при расчёте нод могут 2секундный расчёт превратить в 10минутный
Спам в консоль (неважно в какую), это всегда одна из самых затратнейших операций. Для сервера достаточно установить девелопер в 3.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
Знаю. Но мне часто надо было видеть сообщентя info и ucmd в консоли.
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Вот какое дело. В ксаше есть запрос на мастер-сервер, но он - только для меню. А ведь надо бы еще ввести специальный запрос для клиентского Vgui Browser, чтобы формат сообщения совпадал с net_api_responce_t.
Как это правильно сделать? Можно ли как-то редиректить запрос с мастера на сервера в списке, чтобы они так сказать сами ответили?
Или тут в два приёма? Сперва получаем список ай-пишнегов этих серверов, а потом уже шлём им запросы в формате net_api_responce ?
 

mittorn

Active member
22.04.10
1 229
22
38
Ксаш болезненно относится к переполнением мессаг. В GS если при любом pfnWriteXXX мессага переполнилась, она обнуляется, клиент не ломается, в результате удаётся отделаться небольшим глюком в хужшем случае. В ксаше если это и происходит - то не всегда.
Вот типичный крашлог:
http://pastebin.com/6FNuMYid
Краш в этой строке:
sv.multicast.pData[svgame.msg_size_index] = svgame.msg_realsize;
 
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Upd: отбой, сам разобрался.

Post automatically merged:

2 mittorn: ну не страшно, починим.
 
Останнє редагування:

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
Я пнедыдущий пост сразу не заметил

Post automatically merged:

Краш выше был вызван не переполнением мессаги. Там переполнение где-то в другом месте поломало движковую структуру. Пока не понятно где, возможно amx виноват.
 
Останнє редагування:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Так. Я починил 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 либо виноваты цветные префиксы. Хотя в меню - полный порядок.
Я не могу газобгаться с удаленными серверами, поскольку я даже не в курсе какие там форки. Я в своё время догадался лепить версию ксаша на скриншот, а вот передавать по сети версию форка - не догадался :(
И теперь вас там хрен разберет что творится. Попробуйте собрать какую-то инфу по этому вопросу, а то совсем невозможно.
Потому что я всеръез занялся сетью.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
Там везде цветовые префиксы

Post automatically merged:

Ну и режет явно на пробелах. В форке и SetValueForKey и ParseFile менялись, но не настолько, чтобы проведение на побелах изменилось. Там только переполнения и зацикливания на плохих данных исправлялись.
Я уверен, что дело тут в работе с netapi.
Там видимо берётся второй аргумент после info. А он - инфострока до первого пробела. Надо весь остаток буфера брать.
 
Останнє редагування:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
2 IvanZ9: это infostring, он и должен быть упакован.

2 mittorn: цветовые префиксы вообще не делают погоды.

В форке и SetValueForKey и ParseFile менялись, но не настолько
Вы уже один раз починили парсер wav-чанков, после которого он половину звуков перестал грузить. Теперь мне всё понятно вообщем.

Я уверен, что дело тут в работе с netapi.
netapi который вам достался, умел практичски всё, кроме получения листа с сервера. Вчера я это реализовал и обратил внимание. Если бы везде поголовно был баг, так это одно. Но баг как раз на ваших форках.
 

Game Server

Доноры Красавчики

Користувачі онлайн

Немає користувачів онлайн.