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

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


По умолчанию

на сервер альбатросса попрежнему нельзя зайти
Дядя Миша вне форума Ответить с цитированием
Старый 05.02.2019, 20:33  #822
mittorn
mittorn
Полковник
Регистрация: 22.04.2010
Сообщения: 1,221


По умолчанию

список серверов различает старые и новые протоколы

mittorn, подумав, добавил 05.02.2019 в 20:47
2 Дядя Миша:
потому что там провайдер не даёт много фрагментированных пакетов слать. Ну и сервер давно не обновлялся, так что для него cl_dlmax может быть слишком высоким. Если на мой сервер заходит (на котором subtransit), то всё нормально.
Скорее всего выставим сплит на 1200 потому что по сети большие пакеты без фрагментации не ходят.
Ну и изменения, которые касаются протокола, скоро будут включаться расширением, о них я уже писал выше:
в игре фрагменты будут ограничены как cl_dlmax/2 (или cl_frmax если указано), а если порог при котором reliable порция начинает фрагментироваться уменьшен до cl_dlmax - хидер.
Размер фрагмента как cl_dlmax - хидер
netsplit включается расширением, размер сплита выставляется в cl_dlmax.
ну и через cl_urmax можно указать лимит на размер unreliable, пока он дефолтный. Это может быть полезно на слабой сети типа gprs, где от сплита будет только хуже
В итоге разбиваться через netsplit пакет будет только если unreliable данные + фрагмент превышает cl_dlmax. Думаю, это будет достаточно редко происходить т.к обычно дельта не очень большая. Версию с расширением с автобилдов можно скачать тут:
https://github.com/FWGS/xash3d-depl...split/README.md
Скоро попадёт в основную наверно.
Эксперименты с отделением unreliable провалились т.к дельта связана с sequence нетчана. Может потом вернусь к этому вопросу, пока просто не придумал как заставить это работать. Ну и оно скорее всего только ухудшит ситуацию из-за неправильной дельты

Последний раз редактировалось mittorn, 05.02.2019 в 20:47.
mittorn вне форума Ответить с цитированием
Старый 05.02.2019, 22:55  #823
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 mittorn: на твой без проблем заходит.
[ Цитата ] дельта связана с sequence нетчана
в ку2 и ку3 их отделили, но мне не понравилось. Только сущности умножили.
Дядя Миша вне форума Ответить с цитированием
Старый 05.02.2019, 23:24  #824
a1batross
a1batross
Umu~!
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 22
Сообщения: 669


По умолчанию

Потому что НЕ фрагментировать пакеты -- это вообще неправильно на самом деле.

Они скорее должны быть фрагментированными всегда, а то что может показаться, что вы за раз можете отправить 64 килобайта -- это скорее всего заслуга либо стека ОС, либо сетевой карты.
a1batross вне форума Ответить с цитированием
Старый 05.02.2019, 23:34  #825
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 a1batross: если ты разберёшься почему сокет после 32-х пакетов требует отдыха и как это отключить, я только поапплодирую.
Дядя Миша вне форума Ответить с цитированием
Старый 06.02.2019, 01:17  #826
a1batross
a1batross
Umu~!
Регистрация: 06.01.2015
Адрес: Москва
Возраст: 22
Сообщения: 669


По умолчанию

2 Дядя Миша:
у меня нет в планах разбираться как работает сетевой стек венды.
a1batross вне форума Ответить с цитированием
Старый 06.02.2019, 11:14  #827
mittorn
mittorn
Полковник
Регистрация: 22.04.2010
Сообщения: 1,221


По умолчанию

2 Дядя Миша:
ну 32 пакета это 38400 при размере пакета 1200. Не ужели этого мало?
mittorn вне форума Ответить с цитированием
Старый 06.02.2019, 11:43  #828
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 mittorn: а ты посмотри как скорость докачки падает и удивись.
Дядя Миша вне форума Ответить с цитированием
Старый 06.02.2019, 12:11  #829
mittorn
mittorn
Полковник
Регистрация: 22.04.2010
Сообщения: 1,221


По умолчанию

2 Дядя Миша:
качать файлы по udp это DIW в любом случае.
Но если уж и хочется это делать, придётся реализовать что-то вроде tcp поверх него, таким образом зная точно сколько пакетов пришло и с какого пакета надо продолжить передачу, а не слать 64 килобайта, после этого гадая, дошло оно или не дошло. и отравляя всю порцию заново если нет. Сейчас так получается, что если делать, чтобы ничего не отваливалось от больших порций денных, то придётся ждать каждой порции как при cl_dlmax около 1200-1400, но это будет медленно т.к после каждой порции надо дождаться ответа. Либо же делать большой cl_dlmax, но оно внезапно может отвалиться.
По поводу сервера a1batross: ждём возможности его обновить и проверить снова. пока к нему доступа нет. Вполне возможно что он нормально будет качать после того как в cl_dlmax будет учтён заголовок.
Ну ещё неплохо было бы сделать проверку на зависание подключения. возможно cl_dlmax скидывать в дефолт при зависании и начинать подключение заново.
Вот кстати обновлённый код http клиента, если интересно:
https://github.com/FWGS/xash3d-fwgs.../net_ws.c#L1866
Тут только http. Если очень нужен https, наверно можно сделать виндовыми средствами или через openssl. В целом поддержка https весьма сложная задача и при отсутствии шифрования в самом движке смысла в нём нет вообще.

mittorn, подумав, добавил 06.02.2019 в 13:38
С помощью нехитрого трюка сделал быстрое скачивание через udp:
Код:
<--><--><-->if( cl->state == cs_spawned )
<--><--><--><-->SV_SendClientDatagram( cl );
<--><--><-->else
<--><--><-->{
<--><--><--><-->int i;
<--><--><--><-->Netchan_TransmitBits( &cl->netchan, 0, NULL ); // just update reliable
<--><--><--><-->if( !MSG_GetNumBitsWritten( &cl->netchan.message ) )
<--><--><--><-->{
<--><--><--><--><-->for( i = 0; i < 32 && cl->netchan.fragbufs[FRAG_FILE_STREAM]; i++ )
<--><--><--><--><-->{
<--><--><--><--><--><-->Netchan_TransmitBits( &cl->netchan, 0, NULL );
<--><--><--><--><--><-->cl->netchan.reliable_length = 0;
<--><--><--><--><-->}
<--><--><--><-->}
<--><--><-->}

mittorn, подумав, добавил 06.02.2019 в 13:44
Конечно это наверно можно и красивее решить. Тут главное что не ждётся подтверждение доставки каждого пакета.
Ну и надо проверить что в reliable ничего не шлётся кроме фрагментов, иначе так можно потерять часть reliable данных.
Ну и я не знаю, что произойдёт при потере пакетов. надо убедиться что он не зависнет и перешлёт недостающую порцию. По крайней мере сервер в следующем кадре получит sequence и оффсеты буфферов и отправка должна продолжиться

mittorn, подумав, добавил 06.02.2019 в 14:04
с большим fakeloss срабатывает эта проверка:
Код:
		id = FRAG_GETID( p->bufferid );
		if( id != c )
		{
			if( chan->sock == NS_CLIENT )
			{
				Con_DPrintf( S_ERROR "Lost/dropped fragment would cause stall, retrying connection\n" );
				Cbuf_AddText( "reconnect\n" );
			}
		}
		p = p->next;
то есть в случае если потерялся не последний фрагмент, то закачка может обломиться.
Так что при приёме фрагментов на клиенте, видимо, надо дропать фрагменты, идущие не по порядку

Последний раз редактировалось mittorn, 06.02.2019 в 14:04.
mittorn вне форума Ответить с цитированием
Старый 06.02.2019, 16:30  #830
mittorn
mittorn
Полковник
Регистрация: 22.04.2010
Сообщения: 1,221


По умолчанию

Короче, фрагменты надо отправлять как unreliable и с бэкапом на сервере. Фрагменты при отправке перемещать в другой список, из которого из удалять только в Netchan_Process), а в нетчан добавить id последнего присшедшего корректно фрагмента, чтобы знать с какого отправлять в следующем кадре
. Иначе будет медленно, либо нестабильно. reliable подразумевает ожидание подтверждения приёма со стороны клиента, а это медленно. Ну и хак выше неустойчив к любым потерям пакетов т.к reliable который не должен теряться теряется принудительно и фрагмент остаётся потерянным
mittorn вне форума Ответить с цитированием
Старый 06.02.2019, 21:28  #831
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 15,383


По умолчанию

2 mittorn: в нормальной сети ничего теряться не должно.
Дядя Миша вне форума Ответить с цитированием
Старый 23.02.2019, 14:04  #832
mittorn
mittorn
Полковник
Регистрация: 22.04.2010
Сообщения: 1,221


По умолчанию

Попытался поправить меню в автосборках для винды. Теперь должно нормально загружаться
mittorn вне форума Ответить с цитированием
Старый 23.02.2019, 16:23  #833
nemyax
nemyax
тндайпц тра
Регистрация: 30.07.2015
Сообщения: 639


По умолчанию

Подтверждаю, загружается
nemyax вне форума Ответить с цитированием
Старый 23.02.2019, 22:05  #834
nemyax
nemyax
тндайпц тра
Регистрация: 30.07.2015
Сообщения: 639


По умолчанию

Под ксашмодом не показывается текст от env_message. Проигрывается ли звук мессаги, если его задать, не проверял.

nemyax, подумав, добавил 23.02.2019 в 22:49
Звук проигрывается.

Последний раз редактировалось nemyax, 23.02.2019 в 22:49.
nemyax вне форума Ответить с цитированием
Старый 08.03.2019, 21:29  #835
mittorn
mittorn
Полковник
Регистрация: 22.04.2010
Сообщения: 1,221


По умолчанию

А выводится русский текст?

Последний раз редактировалось mittorn, 08.03.2019 в 21:41.
mittorn вне форума Ответить с цитированием
Старый 08.03.2019, 21:53  #836
nemyax
nemyax
тндайпц тра
Регистрация: 30.07.2015
Сообщения: 639


По умолчанию

2 mittorn:
Где именно русский текст?
nemyax вне форума Ответить с цитированием
Старый 08.03.2019, 22:47  #837
mittorn
mittorn
Полковник
Регистрация: 22.04.2010
Сообщения: 1,221


По умолчанию

2 nemyax:
в env_message
mittorn вне форума Ответить с цитированием
Старый 08.03.2019, 23:22  #838
nemyax
nemyax
тндайпц тра
Регистрация: 30.07.2015
Сообщения: 639


По умолчанию

А русский (ну из файла в cp1251) выводит. Чюдиса!
nemyax вне форума Ответить с цитированием
Старый 08.03.2019, 23:24  #839
mittorn
mittorn
Полковник
Регистрация: 22.04.2010
Сообщения: 1,221


По умолчанию

может с разбором titles.txt какая-то проблема. Надо будет разобраться
mittorn вне форума Ответить с цитированием
Старый 08.03.2019, 23:56  #840
nemyax
nemyax
тндайпц тра
Регистрация: 30.07.2015
Сообщения: 639


По умолчанию

По ходу дела беда не в кодировках. У меня titles.txt есть в двух папках: с дефолтной английской локализацией и с русской.
При запуске с -game mymod_ru мессаги показываются. При запуске без этого ключа в форке мессаг нету. А в оригинальном ксаше есть.
Как будто он самого файла не видит.

nemyax, подумав, добавил 09.03.2019 в 00:11
Не исправляется даже если сунуть titles.txt в основную папку.

Последний раз редактировалось nemyax, 09.03.2019 в 00:11.
nemyax вне форума Ответить с цитированием
Ответ

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

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

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

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



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


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