Sidebar

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

gfdjr5

[NULL]
25.11.12
562
0
0
mittorn сказав(ла):
2 gfdjr5:
у меня только с необдуманными изменениями отваливается.
Причём обычно не на всех платформах.
А скрытые баги есть. особенно в мультике.
Ну, насчёт мульта понятно, тут и ДМ писал, что по этой части, по ясной причине, работ мало велось
 

mittorn

Active member
22.04.10
1 229
22
38
FillRGBABlend работает неверно.
Надо так:
Код:
pglBlendFunc( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA );
В xash что-то не совсем понятное, похожее на additive, но additive уже и так делает FillRGBA.
Если это не исправить - единственный способ нарисовать что-то тёмное с клиента не прибегая к vgui и renderapi будет TriAPI.
 

mittorn

Active member
22.04.10
1 229
22
38
seta скорее всего не работает, как задумывалось (или я не понимаю его сути)
По идее квар должен сохраняться в config.cfg
Однако:
1. созданный пользователем квар оттуда не прочитается т.к ещё не будет создан
2. квары без description игнорируются при сохранении
Либо это рудимент из quake, давно утративший функциональность, либо задуман как-то по другому
Я скорее всего в SDL версии т.к valve.rc выполняется до config.cfg сделаю указание description для seta, тогда можно будет специальные квары, которые надо принудительно сохранять в конфиге создать в valve.rc.
Печально, что при установке версии от Дяди Миши они всё равно потрутся (одна из причин, по которой ДМишины билды уже несколько месяцев не запускал - приходится бэкапить все конфиги и ещё где-то vgui древнючий отыскивать с древнючим же клиентом)
 

mittorn

Active member
22.04.10
1 229
22
38
Переполнения буффера:
1. При установке длинного никнейма в SV_UserinfoChanged: никнейм затирает строку userinfo
2. Незакрытые кавычки в консоли. Не фатально, но можно наблюдать добавление посторонних цифр и мусора в аргумент.
Причина кроется в COM_ParseFile
 

mittorn

Active member
22.04.10
1 229
22
38
Вероятно, имеются проблемы с delta или протоколом вообще.
При нестабильном подключении (сервер Do Barrel TROLL) при включенной дельте достаточно часто происходит сбой после того, как подвисает соединение.
Вызывается CL_FlushEntityPacket.
При этом entityType оказывается некорректным, дальше не понятно, что делать т.к размер дельты не известен.
Если же включить cl_nodelta, подключение остаётся стабильным.
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
Однако в GS он есть и очень даже помогает с радиоканалом.
Сейчас мне удалось подобрать "рабочий" вариант.
Теперь вместо дропа фриз на секунду (он как раз из-за радиоканала), отвал 5-6 других игроков и ругань на несколько flush'ей в консоль.
Буду рад, если найдётся способ решения получше.
 

a1batross

Umu~!
06.01.15
674
27
2 Дядя Миша:
поднят в очень плохих условиях.

Клиент же как правило ещё и с очень плохого мобильного интернета. (даже если с WiFi, он тоже стабильным редко бывает)
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
Нет. Сервак принадлежит Solexid и он находится там, где интернет только по радиоканалу есть. Пинг кстати у меня до него достаточно хороший (у нас в Томске пинг меньше 90 до чего-либо - редкость).
Так что несмотря на достаточно тяжёлый мод (бочки, гравган, туррели) при хорошем рейте всё идёт достаточно плавно.
однако иногда происходит нечто странное: соединение фризится и половина игроков улетает.
При этом у улетевших игроков срабатывает этот самый flush:
Код:
		if( subtracted >= CL_UPDATE_MASK )
		{
			MsgDev( D_NOTE, "CL_ParsePacketEntities: delta frame is too old: overflow (flush)\n");
			// we can't use this, it is too old
			Con_NPrintf( 2, "^3Warning:^1 delta frame is too old: overflow^7\n" );
			CL_FlushEntityPacket( msg );
			return;
		}
Дальше на оригинальном xash, если мне память не изменяет, произошёл бы assert в MSG_ReadDeltaEntity т.к entityType равен 0 и dt оставался равен NULL:
У нас давно вместо assert return, но он не сильно помогал т.к отваливалось почти всегда.
Сегодня сделал грязный хак: я пытаюсь декодировать дельту как ENTITY_NORMAL и это срабатывает.

Post automatically merged:

2 a1batross:
wifi ВСЕГДА хуже работает.
Я подозреваю, что в мобильных сетях udp с проверкой и почти никогда не теряет пакетов
 
Останнє редагування:

crystallize

Well-known member
06.06.14
1 715
46
48
Светотекстуры на 3D-небе чорные, пока не перезагрузишь карту командой restart. Ксаш 3D 3030+XT.
 
Останнє редагування:
Команда форуму
VIP
28.03.10
15 566
315
83
Кубань
  • Золотая медаль 215
  • Серебряная медаль 214
  • Золотая медаль 221
  • Cat
Авторский вариант исправления:
Код:
char W_HintFromSuf( const char *lumpname )
{
	char		barename[64];
	char		suffix[8];
	size_t		namelen;
	const wadtype_t	*hint;

	// trying to extract hint from the name
	FS_FileBase( lumpname, barename );
	namelen = Q_strlen( barename );

	if( namelen <= HINT_NAMELEN )
		return IMG_DIFFUSE;

	Q_strncpy( suffix, barename + namelen - HINT_NAMELEN, sizeof( suffix ));

	// we not known about filetype, so match only by filename
	for( hint = wad_hints; hint->ext; hint++ )
	{
		if( !Q_stricmp( suffix, hint->ext ))
			return hint->type;
	}

	// no any special type was found
	return IMG_DIFFUSE;
}

/*
===========
W_FindLump

Serach for already existed lump
===========
*/
static dlumpinfo_t *W_FindLump( wfile_t *wad, const char *name, const char matchtype )
{
	char		img_type = IMG_DIFFUSE;
	char		barename[64], suffix[8];
	int		left, right;
	size_t		namelen;
	const wadtype_t	*hint;

	if( !wad || !wad->lumps || matchtype == TYP_NONE )
		return NULL;

	// trying to extract hint from the name
	FS_FileBase( name, barename );
	namelen = Q_strlen( barename );

	if( namelen > HINT_NAMELEN )
	{
		Q_strncpy( suffix, barename + namelen - HINT_NAMELEN, sizeof( suffix ));

		// we not known about filetype, so match only by filename
		for( hint = wad_hints; hint->ext; hint++ )
		{
			if( !Q_stricmp( suffix, hint->ext ))
			{
				img_type = hint->type;
				break;
			}
		}

		if( img_type != IMG_DIFFUSE )
			barename[namelen - HINT_NAMELEN] = '\0'; // kill the suffix
	}
 

mittorn

Active member
22.04.10
1 229
22
38
Мусор в r_info:
Код:
Msg( "MODE: %i, %i x %i %s\n", vid_mode->integer, r_width->integer, r_height->integer );
 

mittorn

Active member
22.04.10
1 229
22
38
2 Дядя Миша:
const signed char
Там char используется в контексте signed char для типа вадника т.к принимает значение -1 как минимум.

Post automatically merged:

Ещё одна ошибка в 3366 - отсутствие текстур на некоторых картах. Например, stalkyard
 
Останнє редагування:

a1batross

Umu~!
06.01.15
674
27
В CL_InterpolateModel есть проверка:

Код:
if( !CL_FindInterpolationUpdates( e, t, &ph0, &ph1, NULL ) )
	return 0;
В GoldSource же вне зависимости от того, что возвращает функция, сам CL_InterpolateModel не завершается. Соответственно, если и здесь убрать эту проверку, то интерполяция в мультиплеере начинает работать подобным образом, как и в GoldSource.
 

ILZM

3 в 1
28.03.11
505
2 Дядя Миша:
зачем интерполировать модель в предиктинге? Что этот метод делает?
 

Game Server

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

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

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