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:
Цитата:
Дядя Миша писал:
нарисуй в паинте вид сбоку

Цитата:
Дядя Миша писал:
Это кстати типичный синдром программиста, который делает успехи в обучении. Ему начинает казаться, что условий недостаточно, что проверок надо еще и еще больше
Это плохо? Я просто тестирую по всякому, и смотрю что работает, а что нет.__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 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 писал:
что все твердые тела должны обрабатываться единым образом
У некоторых "твёрдых тел", типа игрока, в теле огромное количество мышц, которые не только меняют в любой момент ускорение, но и геометрию, момент инерции, а также способны создавать сразу несколько сил в разных направлениях. Каким-таким единым образом ты собираешься это моделировать? 
__________________
Отправлено FiEctro 22-12-2021 в 06:12:
Цитата:
XaeroX писал:
У некоторых "твёрдых тел", типа игрока, в теле огромное количество мышц, которые не только меняют в любой момент ускорение, но и геометрию, момент инерции, а также способны создавать сразу несколько сил в разных направлениях. Каким-таким единым образом ты собираешься это моделировать?
Я не делаю столь сложных систем. У меня просто капсула с моделькой бегает, ну и ИК ещё. Я исхожу из логики 3д пакетов, там твёрдые и мягкие тела обрабатываются в разных потоках, из-за чего при их столкновении могут происходить различные косяки вроде проваливания и жмыха вертексов. Я проводил эксперимент, и действительно, если твёрдое тело симулировать с помощью софтбоди, то столкновения с другими софтбоди становятся в разы стабильнее. Да и перещупав множество чарактер контроллеров, я понял что наиболее стабильно себя ведут как ни странно контроллеры завязаные на физическом движке, хотя там тоже есть своя специфика.__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Ku2zoff 22-12-2021 в 06:30:
Цитата:
FiEctro писал:
как реализовано вылазние из воды в халфе и кваках?
Ты в PM_Shared вообще никогда не глядел? Всё на ладони: делается трасса, если попали в стенку, то делается ещё одна повыше. Если второй трассой попали в пустоту, то есть нашли берег, как выразился ДМ, то делаем водный прыжок.