HLFX.Ru Forum Страницы (43): « Первая ... « 25 26 27 28 [29] 30 31 32 33 » ... Последняя »
Показать все 636 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Движкотред (https://hlfx.ru/forum/showthread.php?threadid=5356)


Отправлено Дядя Миша 19-12-2021 в 07:51:

В Ксаше слот таки занимается и там прокачка идёт через UDP, очень медленно.
Клиент отправляет серверу список того, что у него отсутствует.
Сервер посылает последовательно команды на закачку и отправляет сами файлы.

Цитата:
FiEctro писал:
как в хл сделана ходьба плеер контролера по ступенькам?

тебе не подойдет, в халфе\кваке можно проверить любую точку на застревание в солиде, а в современных движках нет.
Но можно и рейкастом. Ты пойми, что игрок по ступенькам в любом случае подымается рывком, за один кадр, оно просто сглаживается в коде камеры.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 19-12-2021 в 08:16:

Цитата:
Дядя Миша писал:
тебе не подойдет, в халфе\кваке можно проверить любую точку на застревание в солиде, а в современных движках нет.


Не, проверить такое застревание я могу, этож просто триггер лол. Мне главное понять как работает это условие. Ну тоесть игрок в солиде может таки застрять где угодно, а как определить что перед ним именно ступенька? Проверять нормаль на конкретной высоте?

Цитата:
Дядя Миша писал:
Ты пойми, что игрок по ступенькам в любом случае подымается рывком, за один кадр, оно просто сглаживается в коде камеры.


У меня сейчас игрок считает все нормали которые касаются сферы и ищет среднюю, вокруг неё и вращается физическая болванка игрока. Это очень хорошо работает на всяких ландшафтах, т.к. вектор движения всегда ортогонален усреднённой нормали поверхности на которой он стоит. И даже помогает со ступеньками, но приходится убирать отсечение слишком крутых нормалей и игрок превращается в скалолаза, вот я и думаю, как можно точно определить что перед нами именно ступенька, а не стена?

Цитата:
Дядя Миша писал:
В Ксаше слот таки занимается и там прокачка идёт через UDP, очень медленно.
Клиент отправляет серверу список того, что у него отсутствует.
Сервер посылает последовательно команды на закачку и отправляет сами файлы.


Ну это понятно, у меня тоже это дуратское ограничение на 1 пакет в 32кб. Но зато надёжно, у меня так же, вопрос в другом, что происходит с таким клиентом относительно других клиентов? Каким образом отсекать игровые события?

Вот есть пустая сцена, мы подключаемся к серверу, качаем новую, потом делаем реконнект уже с загруженной сценой?

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 19-12-2021 в 10:36:

Цитата:
FiEctro писал:
а как определить что перед ним именно ступенька?

Вперёд на длину шага - солид. Вверх на высоту ступеньки - пусто.
Что сложного?

Цитата:
FiEctro писал:
как можно точно определить что перед нами именно ступенька, а не стена?

есть константа sv_stepsize которая задаёт максимальную высоту ступеньки, на которую игрок может заскочить. В халфе\кваке 18 юнитов.

Цитата:
FiEctro писал:
что происходит с таким клиентом относительно других клиентов? Каким образом отсекать игровые события?

Ничего не происходит. Слот занят, но на сервер он еще не вошёл.
Если ты в кино забронируешь билет, но еще не пришёл, что с тобой происходит?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 21-12-2021 в 00:54:

Дядя Миша
Ещё такой вопрос, как в халфе реализовано скольжение по стенам? Просто трение отрубают? Или меняют вектор движения?

>> Вперёд на длину шага - солид. Вверх на высоту ступеньки - пусто.
Что сложного?

Маловато данных, а если это не ступенька, а склон? Ну или вообще полость в стене похожая на ступеньку? В целом я думаю что нашел выход, спавнить рейкаст со стороны контакта с капсулой на определенной высоте, и проверять нормаль этой ступеньки. И видимо вверх так же, чтобы теже полости избегать, правда тут нормаль уже не нужна.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 21-12-2021 в 07:46:

Цитата:
FiEctro писал:
Маловато данных, а если это не ступенька, а склон?

у склона нормаль пола неаксиальная.

Цитата:
FiEctro писал:
Ну или вообще полость в стене похожая на ступеньку?

нарисуй в паинте вид сбоку

Цитата:
FiEctro писал:
как в халфе реализовано скольжение по стенам?

PM_ClipVelocity смотри, там модификация вектора движения вдоль плоскости.

Добавлено 21-12-2021 в 10:46:

Цитата:
FiEctro писал:
Маловато данных

Это кстати типичный синдром программиста, который делает успехи в обучении. Ему начинает казаться, что условий недостаточно, что проверок надо еще и еще больше

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 21-12-2021 в 09:13:

Цитата:
Дядя Миша писал:
нарисуй в паинте вид сбоку


https://a.radikal.ru/a21/2112/98/80c6bd22a35c.png

Цитата:
Дядя Миша писал:
Это кстати типичный синдром программиста, который делает успехи в обучении. Ему начинает казаться, что условий недостаточно, что проверок надо еще и еще больше


Это плохо? Я просто тестирую по всякому, и смотрю что работает, а что нет.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 21-12-2021 в 09:28:

Ну и что? Вот ты сделал рейкаст, убедился что ступенька есть. Дальше ты двигаешь игрока вверх на высоту ступеньки, трассировкой капсулы.
И убеждаешься прямо над игроком достаточно места, чтобы его вот так вот поднять. Затем, когда игрок висит в воздухе, точно напротив ступеньки, ты двигаешь его вперёд. и вот тут коллизия уже упирается в стенку, капсула не может пройти. И ничего не происходит.

Цитата:
FiEctro писал:
Это плохо?

Один из этапов развития. В хорошем коде почти нет условий, всё и так работает на любых наборах данных.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 21-12-2021 в 11:49:

Цитата:
Дядя Миша писал:
Ну и что? Вот ты сделал рейкаст, убедился что ступенька есть. Дальше ты двигаешь игрока вверх на высоту ступеньки, трассировкой капсулы.
И убеждаешься прямо над игроком достаточно места, чтобы его вот так вот поднять. Затем, когда игрок висит в воздухе, точно напротив ступеньки, ты двигаешь его вперёд. и вот тут коллизия уже упирается в стенку, капсула не может пройти. И ничего не происходит.


Ну да, и это странно то что игрок залазит на полость как на ступеньку, в квейках и халфлайфах вроде такого нет. Ещё я кстати заметил что рекомендуют вырубать гравитацию когда на ступеньку залазишь. У вас наверное это происходит банально сменой координат, но я работаю с ригидбоди. Мне кажется игрок должен быть частью физического мира. Т.к. классическим чарактер контроллерам приходится чуть ли не свой собственный физдвижок писать, и с обычной физикой это работает как правило крайне плохо, особенно когда это касается получения информации об окружающем мире. Я ковырял немного ку3шный контроллер, и там тоже подобная муть, но это понятно 99 год, физдвижков нормальных особо тогда не было.

А так физикой можно получить все касания, все нормали, да и с сетью оно практически как предиктинг работает само по себе, если симулировать физику как на сервере так и на клиенте, уж не знаю правильно ли это или нет, но даёт наилучшие результаты в моём случае.

Вторая беда это обработчик анимаций. Казалось, свяжи их вместе с физикой и будет всё хорошо, но нет. Игрок может терять контакт с землёй на доли секунды приподымаясь на доли юнитов, но при том начинает прыгать как сумасшедший. Т.е. приходится делать ему отдельный триггер и проваливать его сквозь землю. И трение с ускорением тоже анимации должны обрабатывать по другому, иначе различия в скорости проигрывания становятся слишком плавными и выглядит это уродливо.

Цитата:
Дядя Миша писал:
Один из этапов развития. В хорошем коде почти нет условий, всё и так работает на любых наборах данных.


Наверное надо быть хорошим математиком, коим я не являюсь. Вообще с математикой у меня беды.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 21-12-2021 в 13:31:

Цитата:
FiEctro писал:
но я работаю с ригидбоди.

Игрок должен быть кинематическим телом.

Цитата:
FiEctro писал:
физдвижков нормальных особо тогда не было.

физдвижок на 70% это коллижен-детктор. От него зависит всё. А солверы всегда одни и те же. их штук 15 всего и у каждого свои недостатки и достоинства.

Цитата:
FiEctro писал:
Наверное надо быть хорошим математиком, коим я не являюсь

Хороший - это которому ноблевку даёт и его именем называют сделанные открытия.

Добавлено 21-12-2021 в 16:31:

К слову сказать я ни в одном физ.движке не видел вменяемой реализации игрока из коробки. Везде какой-то мешок с гамном, сделанный по принципу "ну мы вам показали - дальше сами".

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 21-12-2021 в 13:37:

Цитата:
Дядя Миша писал:
К слову сказать я ни в одном физ.движке не видел вменяемой реализации игрока из коробки. Везде какой-то мешок с гамном, сделанный по принципу "ну мы вам показали - дальше сами".


Ну вот юнити в этом плане не исключение. Есть бесчисленное их количество, но все они являются либо мешком с говном, либо огромным нагромождением кода который я не понимаю. Ну типа того же контроллера из кваки, который пытается сам расчитать всю физику для игрока. Именно поэтому я и взялся за написание собственного.

Цитата:
Дядя Миша писал:
Игрок должен быть кинематическим телом.


А зачем? Ведь он и так уже имеет своё ускорение и гравитацию, смысл их писать заново? Вот например игрока прихлопнуло дверью, что он должен делать будучи кинематическим?

Цитата:
Дядя Миша писал:
физдвижок на 70% это коллижен-детктор. От него зависит всё.


Мне это и нравится что можно получить любую точку пересечения и узнать что с чем столкнулось и при каких условиях. А вот без ригидбоди это всё придётся писать вручную.


Кстати у меня к тебе ещё вопрос по классическому контролёру, как реализовано вылазние из воды в халфе и кваках? Я так понимаю там тот же принцип что и со ступеньками, но хотелось бы больше подробностей.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Дядя Миша 21-12-2021 в 15:32:

Цитата:
FiEctro писал:
Ну типа того же контроллера из кваки, который пытается сам расчитать всю физику для игрока.

Интересные у тебя рассуждения. Ну если не рассчитывать всю физику для игрока, то на что тогда надеяться? Что она сама-собой как-нибудь рассчитается?

Цитата:
FiEctro писал:
Вот например игрока прихлопнуло дверью, что он должен делать будучи кинематическим?

Ну кваке как ты помнишь, двери игроков либо давили либо двигали. А вот в современных физ.движках подобная ситуация вообще не предусмотрена.

Цитата:
FiEctro писал:
как реализовано вылазние из воды в халфе и кваках?

Находим берег и делаем прыжок.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено FiEctro 21-12-2021 в 23:33:

Цитата:
Дядя Миша писал:
Интересные у тебя рассуждения. Ну если не рассчитывать всю физику для игрока, то на что тогда надеяться? Что она сама-собой как-нибудь рассчитается?


Ну эту идею я подсмотрел из 3д пакетов, что все твердые тела должны обрабатываться единым образом, иначе будет твориться дичь, хотя она и без этого творится.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено XaeroX 21-12-2021 в 23:52:

Цитата:
FiEctro писал:
что все твердые тела должны обрабатываться единым образом

У некоторых "твёрдых тел", типа игрока, в теле огромное количество мышц, которые не только меняют в любой момент ускорение, но и геометрию, момент инерции, а также способны создавать сразу несколько сил в разных направлениях. Каким-таким единым образом ты собираешься это моделировать?

__________________

xaerox on Vivino


Отправлено FiEctro 22-12-2021 в 06:12:

Цитата:
XaeroX писал:
У некоторых "твёрдых тел", типа игрока, в теле огромное количество мышц, которые не только меняют в любой момент ускорение, но и геометрию, момент инерции, а также способны создавать сразу несколько сил в разных направлениях. Каким-таким единым образом ты собираешься это моделировать?


Я не делаю столь сложных систем. У меня просто капсула с моделькой бегает, ну и ИК ещё. Я исхожу из логики 3д пакетов, там твёрдые и мягкие тела обрабатываются в разных потоках, из-за чего при их столкновении могут происходить различные косяки вроде проваливания и жмыха вертексов. Я проводил эксперимент, и действительно, если твёрдое тело симулировать с помощью софтбоди, то столкновения с другими софтбоди становятся в разы стабильнее. Да и перещупав множество чарактер контроллеров, я понял что наиболее стабильно себя ведут как ни странно контроллеры завязаные на физическом движке, хотя там тоже есть своя специфика.

__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!


Отправлено Ku2zoff 22-12-2021 в 06:30:

Цитата:
FiEctro писал:
как реализовано вылазние из воды в халфе и кваках?

Ты в PM_Shared вообще никогда не глядел? Всё на ладони: делается трасса, если попали в стенку, то делается ещё одна повыше. Если второй трассой попали в пустоту, то есть нашли берег, как выразился ДМ, то делаем водный прыжок.


Временная зона GMT. Текущее время 18:18. Страницы (43): « Первая ... « 25 26 27 28 [29] 30 31 32 33 » ... Последняя »
Показать все 636 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024