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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.06.2014, 03:06  #1
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию Xash3D: Обсуждение

Хочется иметь на форуме тему, подобную этой. Для вопросов по движку, и в целом для его обсуждения.

Конкретно я хотел бы знать следующее. В Xash есть код от DarkPlaces? Скелетная анимация работает (вроде на вики в источниках кода видел DarkPlaces, а в нём скелетка реализована)? Просто игрок тупо при перезарядке у другого игрока не делает ничего (да и у самого него, думаю, в thirdperson будет то же самое), а при движении скользит как по льду. Хотя анимации держания оружия по типу оружия (пистолет/рокетланчер) вроде есть.

А много ли в Xash кода от QuakeWorld? Весь предикт-код там, а Xash, как я заметил как-то частично имеет этот код. Предикт на локального игрока вроде проходит, после, как я заметил отсюда:

http://fabiensanglard.net/quakeSour...ePrediction.php

а конкретно это:
Код:
   		CL_SetUpPlayerPrediction(false)
   		CL_PredictMove 
   		|	/* Local player is moved */
   		|	CL_SetSolidPlayers
   		|	|	CL_PredictUsercmd
   		|	|		PlayerMove
   		|	Interpolate linearely
   		CL_SetUpPlayerPrediction(true)
   		CL_EmitEntities 
   			CL_LinkPlayers
   			|	/* Other players is moved */
   			|	for every players
   			|	|	CL_SetSolidPlayers
   			|	|	CL_PredictUsercmd
   			|	|		PlayerMove
   			CL_LinkPacketEntities
   			CL_LinkProjectiles
   			CL_UpdateTEnts
   

показывает, что в Xash предикт на остальных игроков не устанавливает.
CL_EmitEntities, как и SetupPlayerPrediction на Xash'e просто нет.
Да и PredictUserCmd нет, но он вроде внедрен в CL_PredictMovement.

Что ещё странно, так это то, что я, когда играл с двух машин одновременно, на одной из которой был дедик, но оба были подключены к одному соединению. Пинг, думаю, как на локалке при этом был. Странность заключается в том, что когда я смотрел на одном компьютере, как двигаюсь на другом, то заметил, что я вижу его нормально (другим же игроком в это время управлял, рандомил вперед, назад, влево и вправо). В общем, после быстрого нажимания поочередно влево и вправо несколько раз игрок оказывается в итоге чуть дальше, чем зафиксировал сервер (я после остановки ввода вижу, что у другого игрока я уже стою, а у себя я немного смещён от этой позиции исходя из последней кнопки ввода (левее или правее); ещё раз замечу, что у другого игрока я уже стою). После этого через 0.5-1.0 секунд я переношусь назад к серверной позиции, где меня видит другой игрок. При этом ещё могу подёргаться между своей и серверной позицией. Отсюда вопрос: разве при предиктинге интерполяция не должна смягчать позицию? При правильных данных клиента, и при его отличной от сервера позиции (продвинулся дальше, по сравнению с сервером, но данные правильные), не должен ли сервер согласиться с клиентом и принять его новую позицию?

Ну и насколько я знаю, передачу ресурсов по сети Xash тоже не поддерживает, да?
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 11:18  #2
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,260


По умолчанию

[ Цитата ] В Xash есть код от DarkPlaces?
Есть. Менеджер памяти (немного переписанный) и файловая система (расширенная и дополненная). Всё это бралось из даркплейса за 2007 год, когда он еще не представлял из себя помойку.
[ Цитата ] Просто игрок тупо при перезарядке у другого игрока не делает ничего
В контре не делает?
[ Цитата ] А много ли в Xash кода от QuakeWorld?
Прямого заимствования нет. Но вроде была пара каких-то моментов, сделанных по такому же принципу. Предикт в халфе и в куворлде капитально различаются.
[ Цитата ] передачу ресурсов по сети Xash тоже не поддерживает, да?
Бакэнд есть, фронт я начал писать, но забросил за ненадобностью.
Дядя Миша вне форума Ответить с цитированием
Старый 07.06.2014, 11:56  #3
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Менеджер памяти (немного переписанный) и файловая система (расширенная и дополненная)
Файловая система вполне неплоха, менеджер памяти тоже функционал представляет достаточный. А Xash утечки умеет считать?
[ Цитата ] Сообщение от Дядя Миша: В контре не делает?
В контре-то, как раз, таких проблем с анимацией не было. Ни у клиента, ни у ботов.

Это было в тесте HL, жаль демки/скрина не сделал.
[ Цитата ] Сообщение от Дядя Миша: Бакэнд есть, фронт я начал писать, но забросил за ненадобностью.
Пока состояние сетевой составляющей в целом печальное?
[ Цитата ] Сообщение от Дядя Миша: Предикт в халфе и в куворлде капитально различаются.
Ну, думаю, хотя бы базовые механизмы прежние. Да, в QW PredictionErrorCheck'а, как в том же Q2/Q3 нет, но, как я думаю, у Valve предикт-код больше от QW, чем от Q2 (Что они точно взяли от Q2, так это software-рендеринг систему).

А ещё Xash выдает меньше FPS там, где GS выдает fps_max. На qstyle вместо 99 получил около 30 +- 5 FPS. А как выходил наружу так до 15-20. Хотя карта не такая и большая и сложная.
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 12:45  #4
ILZM
ILZM
3 в 1
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 502


По умолчанию

[ Цитата ] А ещё Xash выдает меньше FPS там, где GS выдает fps_max. На qstyle вместо 99 получил около 30 +- 5 FPS. А как выходил наружу так до 15-20. Хотя карта не такая и большая и сложная.
Да, такое часто бывало. И знаете в чем дело может быть? В точке { 0, 0, 0 }, где спавнится игрок, такое ощущение, что дублируется m_pPlayerInfo в StudioModelRenderer и идёт двойной просчёт чего-нибудь. Если войти в режим от третьего лица, то ноги у своей модели перестают двигаться. Это только в том случае, если игрок посмотрит на эти координаты, вне зависимости от расстояния. Думаю, что дело в этих RENDERPASS'ах, или как там. Или в зеркале (телепорте).
[ Цитата ] Просто игрок тупо при перезарядке у другого игрока не делает ничего (да и у самого него, думаю, в thirdperson будет то же самое)
Это просто не реализовано, т. е. нет даже этих анимаций у модели игрока.
Код:
а при движении скользит как по льду
А это по-ходу в файле delta.lst не определена строка для скорости, чтобы передавать её клиенту с сервера. Анимация ног отдельно считается на клиенте.
ILZM вне форума Ответить с цитированием
Старый 07.06.2014, 13:13  #5
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию

[ Цитата ] Сообщение от ILZM: Это просто не реализовано, т. е. нет даже этих анимаций у модели игрока.
Действительно, перезарядки тупо нет. Извиняюсь.
[ Цитата ] Сообщение от ILZM: А это по-ходу в файле delta.lst не определена строка для скорости, чтобы передавать её клиенту с сервера. Анимация ног отдельно считается на клиенте.
Надо будет проверить.
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 13:31  #6
ILZM
ILZM
3 в 1
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 502


По умолчанию

[ Цитата ] Надо будет проверить.
Эта информация точно верна .
ILZM вне форума Ответить с цитированием
Старый 07.06.2014, 13:46  #7
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию

[ Цитата ] Сообщение от ILZM: Эта информация точно верна .
Ок.
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 14:09  #8
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,260


По умолчанию

[ Цитата ] А Xash утечки умеет считать?
там мемпулы, он утечек не делает в принципе.
[ Цитата ] Пока состояние сетевой составляющей в целом печальное?
В целом законченное и отлаженное. Всё работает, кроме предиктинга и этой кастомизации с докачкой файлов. Но в бакэнде есть даже независимый поток для этой докачки.
[ Цитата ] но, как я думаю, у Valve предикт-код больше от QW
Я так понимаю, ты собрался его дописывать? Или просто рассуждаешь?
[ Цитата ] А ещё Xash выдает меньше FPS там, где GS выдает fps_max
Если ты смотришь кустайл под XashXT, то конечно меньше - там же зеркала, порталы, 3д скай, травка. А если под чистой халфой, то намного больше.
Дядя Миша вне форума Ответить с цитированием
Старый 07.06.2014, 14:40  #9
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: там мемпулы, он утечек не делает в принципе.
Ок. А в целом Xash может вывести информацию по памяти?
[ Цитата ] Сообщение от Дядя Миша: В целом законченное и отлаженное. Всё работает, кроме предиктинга и этой кастомизации с докачкой файлов. Но в бакэнде есть даже независимый поток для этой докачки.
Оказывается, всё не так плохо, как я думал.
[ Цитата ] Сообщение от Дядя Миша: Я так понимаю, ты собрался его дописывать? Или просто рассуждаешь?
Ну если можно заюзать код от QW, даже не смотря на то, что, как ты сказал, он сильно разнится с GS, то можно и попробовать. Разобраться бы со всеми кишками, которые при этом будут участвовать. Там ведь столько везде намотано. Проверить бы мультиплэйер с другими игроками сначала. Выделить все симптомы надо. Из последнего видео, которое кто-то выкладывал по сессии в мультиплэйер, я видел тупо рывки игроков. Зрелище было печальное.
[ Цитата ] Сообщение от Дядя Миша: Если ты смотришь кустайл под XashXT, то конечно меньше - там же зеркала, порталы, 3д скай, травка. А если под чистой халфой, то намного больше.
Да, смотрел под XT. Травка нещадна. 3д скай я не видел. Порталы тоже отъедают немного. А будут ли введены шейдеры?
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 14:54  #10
ILZM
ILZM
3 в 1
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 502


По умолчанию

[ Цитата ]
[ Цитата ] Я так понимаю, ты собрался его дописывать? Или просто рассуждаешь?
Ну если можно заюзать код от QW, даже не смотря на то, что, как ты сказал, он сильно разнится с GS, то можно и попробовать.
O, gfdjr5! ты как свет во тьме!!1 Прошу тебя, сделай всё, что в твоих силах! Я готов помоч тебе чем смогу!
ILZM вне форума Ответить с цитированием
Старый 07.06.2014, 15:01  #11
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию

[ Цитата ] Сообщение от ILZM: O, gfdjr5! ты как свет во тьме!!1 Прошу тебя, сделай всё, что в твоих силах! Я готов помоч тебе чем смогу!
Как насчёт сетевого протокола, совместимого с GS?

Если и возьмусь, то ничего не обещаю. В коде такая мешанина, что разбираться достаточно тяжело. Да и реализация предикта со всеми аспектами на словах, естественно, кажется простой.
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 15:45  #12
Cybermax
Cybermax
Генерал
Регистрация: 11.03.2008
Сообщения: 2,340
Замечания: 11


По умолчанию

[ Цитата ] Сообщение от ILZM: O, gfdjr5! ты как свет во тьме!!1 Прошу тебя, сделай всё, что в твоих силах! Я готов помоч тебе чем смогу!
Вот и мне бы очень предиктинг пригодился бы.
Cybermax вне форума Ответить с цитированием
Старый 07.06.2014, 15:49  #13
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию

[ Цитата ] Сообщение от Cybermax: Вот и мне бы очень предиктинг пригодился бы.
Так он много кому пригодился бы. Я и сам хотел бы видеть его в адекватном состоянии в движке.
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 16:18  #14
Flash
Flash
Регистрация: 21.09.2004
Адрес: Кривой Рог, Украина
Возраст: 34
Сообщения: 15,934


По умолчанию

Есть простой способ получить предиктинг в "адекватном состоянии", надо всего лишь "заслать в оркестр" дм.
Flash вне форума Ответить с цитированием
Старый 07.06.2014, 16:53  #15
Gaia
Gaia
отвинтулка
Регистрация: 04.08.2008
Адрес: петелька и мыльце
Возраст: 30
Сообщения: 4,479
Замечания: 5


По умолчанию

Боюсь, одним оркестром тут точно не обойдется. Сам предиктинг это тихий ужос, с которым лучше не связываться. Предположим у игрока ну очень хреновый провайдер, и из 10 отправленных пакетов пришли только 5 правильных пакетов. Самый оптимальный способ - искусственное завышение пинга, и разбор определенной пачки пакетов с анализом "правильных" данных. На основе полученных данных строить недостающие пакеты "на лету", а только потом уже выдавать их остальным клиентам.

Ну это только размышления, я очень смутно себе представляю, как оно есть на самом деле и как делается. Лишь привел догадки. Поправьте если ошибся.
Gaia вне форума Ответить с цитированием
Старый 07.06.2014, 17:20  #16
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию

[ Цитата ] Сообщение от Gaia: Боюсь, одним оркестром тут точно не обойдется. Сам предиктинг это тихий ужос, с которым лучше не связываться. Предположим у игрока ну очень хреновый провайдер, и из 10 отправленных пакетов пришли только 5 правильных пакетов. Самый оптимальный способ - искусственное завышение пинга, и разбор определенной пачки пакетов с анализом "правильных" данных. На основе полученных данных строить недостающие пакеты "на лету", а только потом уже выдавать их остальным клиентам.

Ну это только размышления, я очень смутно себе представляю, как оно есть на самом деле и как делается. Лишь привел догадки. Поправьте если ошибся.
Вообще, с предиктингом, представленным в QW, как сам Кармак писал в дневниках, с задержкой в 200мс уже начинаются проблемы в его методах предикт-системы. Есть, конечно, экстраполяция, которая позволяет всем видеть действия друг друга "в прошлом". То-есть, если игрок видит, как другой бежит прямо перед ним, нацеливается на него, то у того игрока он немного дальше от серверной позиции. Каждый игрок видит других "в прошлом", на том и строится всё. Просто на сервере идёт отмотка по времени, объединяются все кадры из пришедших от игроков пакетов (типа как в анимировании мультика - отмотал, проанимировал одного, отмотал - второго, а потом это всё можно посмотреть, как оно двигается вместе). Есть интерполяция, которая сглаживает позицию игрока, вместо того, чтобы откинуть назад на серверную позицию. ex_interp 0.1 даёт 100мс глобального отставания, назовём так. То-есть каждый видит действия другого, как минимум после 100мс его действий + пинг. Так что в целом с 200мс не так критично, но сервер немного позже, чем привычно отвечает (кто играл в CSO Singapore поймут). Другое дело, когда пинг 500-600 (как в CSO азиатских стран). Тогда всё значительно хуже. Иногда сервер элементарно не может понять, что я уже жму ввод вперед и локально двигаюсь. В принципе, двум игрокам, пинг обоих который 500-600, вполне смогут видеть друг друга "адекватно". Но другие видят их на определённое количество времени раньше, а в дополнение может ещё и дёргающимися.

Последний раз редактировалось gfdjr5, 07.06.2014 в 17:38.
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 18:01  #17
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,260


По умолчанию

[ Цитата ] А в целом Xash может вывести информацию по памяти?
Вводишь в консоли команду makehelp, тебе рядом с движком создаётся текстовый файлик help.txt - это автосгенерированный список всех (ну почти всех) пользовательских команд с кратким описанием каждой. Чтобы ты потом меня не спрашивал про остальные команды. А вообще - memlist.
[ Цитата ] Ну если можно заюзать код от QW
Нельзя. Вальва вывернула предиктинг от QW наизнанку. Хочешь попробовать - на здоровье.
[ Цитата ] Травка нещадна. 3д скай я не видел. Порталы тоже отъедают немного
Травка как раз почти не жрёт. 3Д - скай, присмотрись и увидишь летящие по небу облака. Порталы жрут 3 прохода, поскольку в портале рисуется 3д скай тоже. Они самые жручие. Отключи все эффекты - фпс станет как в чистой халфе. Шейдеры будут, пока в новом рендерере для Параноя-2.
[ Цитата ] Как насчёт сетевого протокола, совместимого с GS?
А не выйдет. Слишком много фишек ксаша придется тогда зарезать на корню.
[ Цитата ] В коде такая мешанина, что разбираться достаточно тяжело
Это с непривычки. Ксаш весьма аккуратно написан, по сравнению с другими проектами. Это тебе любой опытный кодер подтвердит.
[ Цитата ] надо всего лишь "заслать в оркестр" дм.
засылать надо было два года назад А теперь у меня ни времени ни желания ни сил на ето дело. Проморгали вы своё щастье.
Дядя Миша вне форума Ответить с цитированием
Старый 07.06.2014, 18:20  #18
ILZM
ILZM
3 в 1
Регистрация: 28.03.2011
Адрес: Mega City One
Сообщения: 502


По умолчанию

2 Дядя Миша: , ну хоть что-нибудь будет с предиктингом? Что там насчёт NT?
ILZM вне форума Ответить с цитированием
Старый 07.06.2014, 18:40  #19
gfdjr5
gfdjr5
[NULL]
Регистрация: 25.11.2012
Сообщения: 554


По умолчанию

[ Цитата ] Сообщение от Дядя Миша: Вводишь в консоли команду makehelp, тебе рядом с движком создаётся текстовый файлик help.txt - это автосгенерированный список всех (ну почти всех) пользовательских команд с кратким описанием каждой. Чтобы ты потом меня не спрашивал про остальные команды. А вообще - memlist.Вводишь в консоли команду makehelp, тебе рядом с движком создаётся текстовый файлик help.txt - это автосгенерированный список всех (ну почти всех) пользовательских команд с кратким описанием каждой. Чтобы ты потом меня не спрашивал про остальные команды. А вообще - memlist.
Это он статистику по использованной памяти выведет?
[ Цитата ] Сообщение от Дядя Миша: Нельзя. Вальва вывернула предиктинг от QW наизнанку. Хочешь попробовать - на здоровье.
Да всё равно протоколы разные, играть между собой на разных клиентах не получится. Ну и, естественно, код предикта в QW - не пример идеального решения, и если его внедрять, то адаптировать. Таким, какой он лежит сейчас в cl_predict он точно не останется. Так что по-своему, он также будет вывернут, если его делать.
[ Цитата ] Сообщение от Дядя Миша: Травка как раз почти не жрёт.
Может на grass и нормально, но на qstyle, где имеется открытое пространство, идёт резкий просад fps.
[ Цитата ] Сообщение от Дядя Миша: А не выйдет. Слишком много фишек ксаша придется тогда зарезать на корню.
На то и намекал.
[ Цитата ] Сообщение от Дядя Миша: Это с непривычки. Ксаш весьма аккуратно написан, по сравнению с другими проектами. Это тебе любой опытный кодер подтвердит.
Видеть решение на C после C++ в целом не очень.
gfdjr5 вне форума Ответить с цитированием
Старый 07.06.2014, 19:01  #20
Дядя Миша
Дядя Миша
Регистрация: 28.03.2010
Адрес: Кубань
Сообщения: 12,260


По умолчанию

[ Цитата ] Видеть решение на C после C++ в целом не очень.
Си - идеальный язык. С++ - гадость. Но это тема для отдельной ветки.
[ Цитата ] Может на grass и нормально, но на qstyle, где имеется открытое пространство, идёт резкий просад fps.
Видимокарта какая?
Дядя Миша вне форума Ответить с цитированием
Ответ

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

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

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

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



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


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