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

Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.06.2015, 02:51  #1
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию Xash 0.97 build 3030 [final]

Для тех, кто слышит о проекте впервые добро пожаловать в FAQ.
Тем, кому проект понравился и они желают материально поддержать автора - сюда.

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

Полный список изменений можно прочитать как обычно - в change.log в архиве xash_extras.7z

Полные исходные коды движка, нешифрованный client.dll и документацию
можно скачать по этой сцылке:

www.hlfx.ru/xash/xash_extras.7z - 2.84 Mb

Уже скомпилированный движок с набором необходимых библиотек - по этой:

www.hlfx.ru/xash/xash_build3030.7z - 497 Kb
Дядя Миша вне форума Ответить с цитированием
Старый 08.06.2015, 04:08  #2
KiQ
KiQ
Старший сержант
Регистрация: 12.07.2010
Сообщения: 397


По умолчанию

[ Цитата ] отключение вертикальной синхронизации при загрузке уровней, что должно здорово сократить время загрузки.
Что, правда влияет?
KiQ вне форума Ответить с цитированием
Старый 08.06.2015, 04:13  #3
OEUVRE
OEUVRE
Регистрация: 06.03.2013
Сообщения: 936
Замечания: 2


По умолчанию

[ Цитата ] Сообщение от KiQ: Что, правда влияет?

Конечно)
OEUVRE вне форума Ответить с цитированием
Старый 08.06.2015, 06:48  #4
PunkРатов
PunkРатов
Генерал
Регистрация: 10.02.2010
Адрес: Мегион
Возраст: 27
Сообщения: 3,673
Замечания: 6


По умолчанию

2 KiQ:
Не успевает даже превью бмп шка грузануться.
PunkРатов вне форума Ответить с цитированием
Старый 08.06.2015, 13:21  #5
qpAHToMAS
qpAHToMAS
Генерал
Регистрация: 22.10.2006
Адрес: Russian Far East
Возраст: 30
Сообщения: 9,291


По умолчанию

[ Цитата ] а также отключение вертикальной синхронизации при загрузке уровней, что должно здорово сократить время загрузки.

У тебя там что, в роли загрузчика — сканер?
qpAHToMAS вне форума Ответить с цитированием
Старый 08.06.2015, 14:45  #6
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 qpAHToMAS: ну экран-то переодически обновляется в процессе загрузки.
А синхронизация только тормозит в этот момент.
Дядя Миша вне форума Ответить с цитированием
Старый 08.06.2015, 16:15  #7
a1batross
a1batross
Umu~!
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 23
Сообщения: 669


По умолчанию

Всегда интересовало, а каким образом ты выбираешь номера билда?
a1batross вне форума Ответить с цитированием
Старый 08.06.2015, 17:51  #8
qpAHToMAS
qpAHToMAS
Генерал
Регистрация: 22.10.2006
Адрес: Russian Far East
Возраст: 30
Сообщения: 9,291


По умолчанию

[ Цитата ] Сообщение от a1batross: Всегда интересовало, а каким образом ты выбираешь номера билда?
Номер билда — это по идеи число-количество, сколько раз был скомпилирован (собран) проект.
qpAHToMAS вне форума Ответить с цитированием
Старый 08.06.2015, 17:59  #9
ComradeAndrew
ComradeAndrew
๖ۣۜC++
Регистрация: 02.04.2010
Возраст: 25
Сообщения: 1,062
Замечания: 4


По умолчанию

2 a1batross:
Кажется, Дядя Миша отсчитывает билды количеством дней с начала разработки.
ComradeAndrew вне форума Ответить с цитированием
Старый 08.06.2015, 19:16  #10
ILZM
ILZM
3 в 1
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 508


По умолчанию

Эх, сразу видно посонов, не ковырявших исходники
Код:
#include "common.h"

static char *date = __DATE__ ;
static char *mon[12] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
static char mond[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };

// returns days since Feb 13 2007
int Q_buildnum( void )
{
// do not touch this! Only author of Xash3D can increase buildnumbers!
#if 0 
	int m = 0, d = 0, y = 0;
	static int b = 0;

	if( b != 0 ) return b;

	for( m = 0; m < 11; m++ )
	{
		if( !Q_strnicmp( &date[0], mon[m], 3 ))
			break;
		d += mond[m];
	}

	d += Q_atoi( &date[4] ) - 1;
	y = Q_atoi( &date[7] ) - 1900;
	b = d + (int)((y - 1) * 365.25f );

	if((( y % 4 ) == 0 ) && m > 1 )
	{
		b += 1;
	}
	b -= 38752; // Feb 13 2007

	return b;
#else
	return 3030;
#endif
}
ILZM вне форума Ответить с цитированием
Старый 09.06.2015, 06:29  #11
a1batross
a1batross
Umu~!
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 23
Сообщения: 669


По умолчанию

2 ILZM:
Я так-то это видел, но не знал зачем. Да и написано do not touch.
Оказывается и правда близкое к трем тысячам число получается.
a1batross вне форума Ответить с цитированием
Старый 09.06.2015, 13:23  #12
DarkFlame
DarkFlame
Старший солдат
Регистрация: 20.04.2012
Сообщения: 65


По умолчанию

Подскажите в какую папку класть dds текстуру ?
DarkFlame вне форума Ответить с цитированием
Старый 12.06.2015, 13:35  #13
Pahanoid
Pahanoid
Новобранец
Регистрация: 31.05.2012
Сообщения: 5


По умолчанию

Луч пылесоса стреляет в кривь, скажите как это исправить, вроде в конфиге надо что-то приписать? Пару лет назат знал как это сделать но забыл(. Напомните пжлст.
Pahanoid вне форума Ответить с цитированием
Старый 12.06.2015, 14:48  #14
qpAHToMAS
qpAHToMAS
Генерал
Регистрация: 22.10.2006
Адрес: Russian Far East
Возраст: 30
Сообщения: 9,291


По умолчанию

[ Цитата ] Сообщение от Pahanoid: Луч пылесоса стреляет в кривь, скажите как это исправить, вроде в конфиге надо что-то приписать? Пару лет назат знал как это сделать но забыл(. Напомните пжлст.
Что-то вроде cl_lw, cl_lc или как-то так.
qpAHToMAS вне форума Ответить с цитированием
Старый 13.06.2015, 10:58  #15
Pahanoid
Pahanoid
Новобранец
Регистрация: 31.05.2012
Сообщения: 5


По умолчанию

[ Цитата ] Сообщение от qpAHToMAS: Что-то вроде cl_lw, cl_lc или как-то так.
Спасибо милчеловек!
Pahanoid вне форума Ответить с цитированием
Старый 13.06.2015, 18:00  #16
Torcie
Torcie
Рядовой
Регистрация: 18.02.2014
Сообщения: 18


По умолчанию

Не могу понять что значит эта строчка и что за переменные в ней.
Код:
if( cl->delta_sequence != -1 )
	{
		from = &cl->frames[cl->delta_sequence & SV_UPDATE_MASK];
		from_num_entities = from->num_entities;

		// the snapshot's entities may still have rolled off the buffer, though
		----> if( from->first_entity <= svs.next_client_entities - svs.num_client_entities )
		{
			MsgDev( D_WARN, "%s: delta request from out of date entities.\n", cl->name );

			from = NULL;
			from_num_entities = 0;

			BF_WriteByte( msg, svc_packetentities );
			BF_WriteWord( msg, to->num_entities );
		}
		else
		{
			BF_WriteByte( msg, svc_deltapacketentities );
			BF_WriteWord( msg, to->num_entities );
			BF_WriteByte( msg, cl->delta_sequence );
		}
	}
Torcie вне форума Ответить с цитированием
Старый 13.06.2015, 19:52  #17
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

Там большой циклический буффер на несколько дельта-апдейтов (для сингла 16, для мульта 64), умноженный на 64 и на число клиентов. Итого для сингла цикличный буффер на 1024 энтити, размазанный по разным дельта-апдейтам.
А first_entity, просто обозначает с какой позиции в этом циклическом буффере начинаются стейты для текущего дельта-кадра.
В принципе реализация дельты различается для разных квак. Например во второй кваке компрессор плевать хотел на мнение клиента, и не ждет ответа от него, на предмет того, какую дельта-секвенцию ему удалось принять. Подобное поведение обусловлено тем, что сетевой пакет во второй кваке всего-навсего
1400 байт, что лишь всего в два раза больше рекомендуемого MTU для 33.6 модемов (при том, что пакет крайне редко достигает предельной величины, а в среднем вообще равен 100-200 байт), что в свою очередь позволяет считать все пакеты гарантированно доставленными. В ку3,в халфе и QW всё-таки ожидается ответ от клиента, чтобы понять - получил он дельту или нет.
Дядя Миша вне форума Ответить с цитированием
Старый 13.06.2015, 21:58  #18
Torcie
Torcie
Рядовой
Регистрация: 18.02.2014
Сообщения: 18


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Там большой циклический буффер на несколько дельта-апдейтов (для сингла 16, для мульта 64), умноженный на 64 и на число клиентов. Итого для сингла цикличный буффер на 1024 энтити, размазанный по разным дельта-апдейтам.
А first_entity, просто обозначает с какой позиции в этом циклическом буффере начинаются стейты для текущего дельта-кадра.
В принципе реализация дельты различается для разных квак. Например во второй кваке компрессор плевать хотел на мнение клиента, и не ждет ответа от него, на предмет того, какую дельта-секвенцию ему удалось принять. Подобное поведение обусловлено тем, что сетевой пакет во второй кваке всего-навсего
1400 байт, что лишь всего в два раза больше рекомендуемого MTU для 33.6 модемов (при том, что пакет крайне редко достигает предельной величины, а в среднем вообще равен 100-200 байт), что в свою очередь позволяет считать все пакеты гарантированно доставленными. В ку3,в халфе и QW всё-таки ожидается ответ от клиента, чтобы понять - получил он дельту или нет.
Код:
	svs.num_client_entities = sv_maxclients->integer * SV_UPDATE_BACKUP * --->(64);
	svs.packet_entities = Z_Malloc( sizeof( entity_state_t ) * svs.num_client_entities );

А умножение на 64 зачем?
Torcie вне форума Ответить с цитированием
Старый 13.06.2015, 23:47  #19
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

Так исторически сложилось. Структурка из QW
Код:
#define	MAX_PACKET_ENTITIES	64	// doesn't count nails
typedef struct
{
	int		num_entities;
	entity_state_t	entities[MAX_PACKET_ENTITIES];
} packet_entities_t;

Дядя Миша, подумав, добавил 13.06.2015 в 23:50
Но в QW не было цикруляр буффера, там вообще максимум 64 энтити в PVS, не считая конечно всяческих ракет, гвоздей и прочей мелочи.
А для ракет была своя отдельная дельта.

Дядя Миша, подумав, добавил 13.06.2015 в 23:52
А гвозди паковали изо всех сил - 12 бит на компоненту оригина, 4 бита на pitch и 8 бит на yaw. В сумме меньше двух long на гвоздь.

Последний раз редактировалось Дядя Миша, 13.06.2015 в 23:52.
Дядя Миша вне форума Ответить с цитированием
Старый 14.06.2015, 10:26  #20
OEUVRE
OEUVRE
Регистрация: 06.03.2013
Сообщения: 936
Замечания: 2


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Так исторически сложилось. Структурка из QW
Код:
#define	MAX_PACKET_ENTITIES	64	// doesn't count nails
typedef struct
{
	int		num_entities;
	entity_state_t	entities[MAX_PACKET_ENTITIES];
} packet_entities_t;

Дядя Миша, подумав, добавил 13.06.2015 в 23:50
Но в QW не было цикруляр буффера, там вообще максимум 64 энтити в PVS, не считая конечно всяческих ракет, гвоздей и прочей мелочи.
А для ракет была своя отдельная дельта.

Дядя Миша, подумав, добавил 13.06.2015 в 23:52
А гвозди паковали изо всех сил - 12 бит на компоненту оригина, 4 бита на pitch и 8 бит на yaw. В сумме меньше двух long на гвоздь.

А можно ли от них полностью избавиться (для singleplayer)
OEUVRE вне форума Ответить с цитированием
Закрытая тема

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

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

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

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



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


Designed by FT-502, [email protected] Originally by Ulric Spaak
Hosted by: VBIOS.COM, Powered by: vBulletin
copyright © 2002 - 2021 by CS-Mapping.com.ua Community