HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Наши проекты (https://hlfx.ru/forum/forumdisplay.php?forumid=1)
-- XashNT: блог разработчика (https://hlfx.ru/forum/showthread.php?threadid=6097)
Отправлено Unit 28-08-2024 в 09:43:
Есть смысл выкатить интерпретатор языка отдельным проектом.
Базовый ввод/вывод подтянуть из stdio. Уже на этой стадии народ пробовал бы различные конструкции и искал баги.
Отправлено ZGreen 28-08-2024 в 09:44:
Цитата:
FiEctro писал:
И подключать её как отдельный ассет средствами шоты.
Кто-нибудь может перевести это?
Отправлено Дядя Миша 28-08-2024 в 10:10:
Цитата:
FiEctro писал:
Мне кажется ядро физики лучше вынести в отдельную нативную либу как это делает физикс или ньютон.
У меня совершенно иной подход. От физики очень часто требуют специфических вещей, а не точной симуляции физических законов.
В том же PhysX например нет каллбэка на блокировку кинематиком твёрдого тела об геометрию уровня. Хотя в играх это довольно часто встречающаяся ситуация - заблокировать дверь ящиком чтобы она не смогла закрыться.
Так вот нативных методов это сделать в физиксе - нет. Равно как и вообще что-либо сделать при блокировке кинематка. Собсно, почему я и не связываюсь со сторонней физикой - она реализует абсолютно не то, что нужно в играх. Всё что угодно, кроме того что надо. Надувных коров, например. Вы много в играх видели надувных коров?
Цитата:
FiEctro писал:
Кстати ещё такой вопрос у тебя можно легко и быстро перебросить объект в локальное пространство другого объекта?
Зависит от реализации игрового кода на Шоте. Для кваки я такого не делал, а в коде ксаш-мода это есть изкаробки.
Добавлено 28-08-2024 в 13:10:
Цитата:
Unit писал:
Есть смысл выкатить интерпретатор языка отдельным проектом.
Да, я его обязательно выложу на gamedev.ru в своё время. У меня там ещё пара недоработок с шаблонами и ссылками.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 28-08-2024 в 11:27:
Цитата:
Дядя Миша писал:
У меня совершенно иной подход. От физики очень часто требуют специфических вещей, а не точной симуляции физических законов.
Так специфичные вещи это уже более высокий уровень абстракции чем ядро.
Цитата:
Дядя Миша писал:
В том же PhysX например нет каллбэка на блокировку кинематиком твёрдого тела об геометрию уровня. Хотя в играх это довольно часто встречающаяся ситуация - заблокировать дверь ящиком чтобы она не смогла закрыться.
Так, а почему физдвижок должен знать про уровни, двери и ящики? Ты же сам мне говорил что это голая аналитическая геометрия. Вот эта геометрия и есть ядро, а когда монстра зажало дверью это уже игровая логика.
Цитата:
Дядя Миша писал:
Собсно, почему я и не связываюсь со сторонней физикой - она реализует абсолютно не то, что нужно в играх. Всё что угодно, кроме того что надо. Надувных коров, например. Вы много в играх видели надувных коров?
Я использовал в Юнити софтбоди, правда весьма костыльно.
Цитата:
Дядя Миша писал:
Зависит от реализации игрового кода на Шоте. Для кваки я такого не делал, а в коде ксаш-мода это есть изкаробки.
Ну тоесть можно сказать что нет, я понял.
Цитата:
ZGreen писал:
Кто-нибудь может перевести это?
Фреймворк, библиотека, средставами виртуальной машины подключаем к движку и пользуем.__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Crystallize 28-08-2024 в 13:05:
Цитата:
FiEctro писал:
Там кстати Альбатрос какую то супер закачку у себя в форке сделал, очень быстро работает.
А ютуб через нее можно смотреть?
Отправлено Дядя Миша 28-08-2024 в 13:25:
Цитата:
FiEctro писал:
Так специфичные вещи это уже более высокий уровень абстракции чем ядро.
Совершенно верно.
Цитата:
FiEctro писал:
Ты же сам мне говорил что это голая аналитическая геометрия
Ты не путай коллижен-детектор с солвером. Детектор-то действительно везде одинаковый, его задача найти столкновение\пересечение.
А солвер зачастую должен решать какие-то игроспецифичные задачи, а не заниматься точной физической симуляцией. Поэтому мне очень импонирует подход Кармака с его моветипами. Везде немного своя физика. Потому что все объекты очень разные и управляются по разному. А в случае использования Физикса, нам надо наоборот душить его стандартный солвер и далеко не всегда для этого есть корректные способы.
Цитата:
FiEctro писал:
Ну тоесть можно сказать что нет, я понял.
Нативной реализации нет. Но если я вынесу физику такого рода в ядро, то появится. Пока что нет в этом необходимости.
Добавлено 28-08-2024 в 16:25:
Вы же поймите, в FPS есть как минимум один нелинейный элемент - сам игрок. Который не подчиняется никаким законам физики, прыгает выше головы, может менять направление движения прямо в воздухе, приседать прямо там же и практически мгновенно останавливаться. И он вам таки сломает всю симуляцию, причём многие этим даже намеренно занимаются.
А если игрока будет давить дверью, он не будет совать туда свой нос почём зря.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 28-08-2024 в 13:40:
Цитата:
Дядя Миша писал:
А солвер зачастую должен решать какие-то игроспецифичные задачи, а не заниматься точной физической симуляцией. Поэтому мне очень импонирует подход Кармака с его моветипами. Везде немного своя физика. Потому что все объекты очень разные и управляются по разному. А в случае использования Физикса, нам надо наоборот душить его стандартный солвер и далеко не всегда для этого есть корректные способы.
Ну да я примерно так и говорю. Но "подход Кармака" я так понял это двигать объекты избегая вообще какую либо физику, ну просто потому что тогда нормальный физический движок работал бы очень медленно.
Цитата:
Дядя Миша писал:
Вы же поймите, в FPS есть как минимум один нелинейный элемент - сам игрок. Который не подчиняется никаким законам физики, прыгает выше головы, может менять направление движения прямо в воздухе, приседать прямо там же и практически мгновенно останавливаться. И он вам таки сломает всю симуляцию, причём многие этим даже намеренно занимаются.
А если игрока будет давить дверью, он не будет совать туда свой нос почём зря.
И естественно когда ты физическому телу задаёшь перемещение в обход физики начинаются приколы. Вот только из того что ты описал не противоречит классическим физдвижкам, это банальное управление силами и велосити. А вот если просто в тупую менять координаты, то да начинаются приколы, такое сейчас стараются не использовать. Всё делают через АддФорс и Велосити.
А вот чтобы детектировать препятствия это уже надо симулировать законы Ньютона о передаче энергии, а так же нагрузку на исходную силу (мощность). Вообще конечно надо подумать как это лучше реализовать, так с набегу и не скажу.__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Unit 28-08-2024 в 14:19:
Кстати соглашусь про нелинейность игрока. Когда пытаются делать физически-корректное управление получается отстой, особенно с прыжками, физически-корректно сохранить вектор на протяжении всего прыжка, затем приземлиться в n точке. Но тогда в воздухе нельзя стрейфиться или прерывать движение, такое управление всегда раздражает, чувствуется "вязким" и не отзывчивым.
Отправлено Дядя Миша 28-08-2024 в 15:12:
Цитата:
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'
Отправлено Crystallize 28-08-2024 в 15:25:
Цитата:
Дядя Миша писал:
А кто предлагает менять координаты втупую? Ну разве что для телепортации.
Я так делаю потому что не смог пофиксить необнуленную гравитацию типа той которая двигает мертвых монстров.
Да и вообще проще каждый кадр снапать объект куда надо чем разбираться как кейсы без гравитации переключаются на кейсы с гравитацией, периодически наблюдать как игрок улетает в небо из-за твоих косяков (всё как в продуктах у больших дядек кстати!), и думать, "вот у меня щас игрок ползет вниз притягиваясь к точке снапа на рельсу или это просто гравитация"?
Отправлено Дядя Миша 28-08-2024 в 19:33:
Цитата:
Crystallize писал:
Я так делаю потому что не смог пофиксить необнуленную гравитацию типа той которая двигает мертвых монстров.
Монстров двигала не гравитация, а вектор их же собственного прыжка.
А гравитацию обнулять бесполезно - она же каждый кадр заново добавляется.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FiEctro 29-08-2024 в 09:40:
Цитата:
Crystallize писал:
Я так делаю потому что не смог пофиксить необнуленную гравитацию типа той которая двигает мертвых монстров.
В Юнити для таких случаев есть галочка IsKinematic которая отключает гравитацию у конкретного ригидбоди как раз для таких случаев. Есть ещё метод SetGravity которым тоже можно установить гравитацию персонально для каждого объекта. Методы для Get/Set Velocity, методы AddForce с разной линейностью как раз чтобы делать "нелинейного игрока". Вот чего реально не хватет так это метода который бы определял давление на объект в конкретном месте, приходится строить матрицу из триггеров вокруг игрока чтобы игрок понимал где препятствия и что на него давит.
Цитата:
Unit писал:
Кстати соглашусь про нелинейность игрока. Когда пытаются делать физически-корректное управление получается отстой, особенно с прыжками, физически-корректно сохранить вектор на протяжении всего прыжка, затем приземлиться в n точке. Но тогда в воздухе нельзя стрейфиться или прерывать движение, такое управление всегда раздражает, чувствуется "вязким" и не отзывчивым.
Это то что ДМ называет - мешок с говном. На деле мы просто имеем дело с плохо настроенным контроллером, если подобрать параметры то таких приколов не будет. Просто мало кто то с этим заморачивается. А вот прямое вмешательство в велосити и трансформы как и говорил ДМ - ломает физику. Написание собственного плеер контроллера задача не тривиальная и требует учитывать кучу условий. Я пришёл к тому что колайдер игрока вообще должен парить немного над землёй чтобы он не спотыкался за каждый вертекс как в кваках и голд сорсе. Работает супер, но приходится учитывать кучу других вещей.__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!
Отправлено Дядя Миша 29-08-2024 в 10:02:
Цитата:
FiEctro писал:
Вот чего реально не хватет так это метода который бы определял давление на объект в конкретном месте
Так я тебе ровно про то же самое и говорил, когда описывал случай двери, уперевшейся в ящик. А ты сказал что такое никому не нужно, и тут же сам пожаловался что тебе этого не хватает.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Crystallize 29-08-2024 в 11:00:
Цитата:
FiEctro писал:
В Юнити для таких случаев есть галочка IsKinematic которая отключает гравитацию у конкретного ригидбоди как раз для таких случаев. Есть ещё метод SetGravity которым тоже можно установить гравитацию персонально для каждого объекта
Да мне динамически же надо переключать
Цитата:
FiEctro писал:
На деле мы просто имеем дело с плохо настроенным контроллером, если подобрать параметры то таких приколов не будет. Просто мало кто то с этим заморачивается.
Ты не победишь иной принцип просто "настройкой параметров", ну если конечно не выкрутишь их в нули и бесконечности.
Цитата:
FiEctro писал:
Я пришёл к тому что колайдер игрока вообще должен парить немного над землёй чтобы он не спотыкался за каждый вертекс как в кваках и голд сорсе.
Так и в ГС первые 16 юнитов от пола перешагиваются по умолчанию.
Отправлено FiEctro 29-08-2024 в 11:10:
Цитата:
Crystallize писал:
Да мне динамически же надо переключать
Так это просто булева переменная, что мешает переключать её в реалтайме? Кстати трение и прыгучесть физического материала тоже можно в реалтайме редактировать.
Цитата:
Дядя Миша писал:
Так я тебе ровно про то же самое и говорил, когда описывал случай двери, уперевшейся в ящик. А ты сказал что такое никому не нужно, и тут же сам пожаловался что тебе этого не хватает.
Ты не понял, я говорил что это разные уровни абстракции. Что освновное ядро можно убрать в нативную библиотеку, а такие вещи уже и на самой шоте реализовать. Впрочем это лишь один из вариантов. Вон в гаррис моде на виртуалке вообще физику жидкостей сделали.
https://www.youtube.com/watch?v=cFmBL-yD8HI
Цитата:
Crystallize писал:
Ты не победишь иной принцип просто "настройкой параметров", ну если конечно не выкрутишь их в нули и бесконечности.
До конца конечно нет, но множество проблем "мешка с говном" можно решить.
Цитата:
Crystallize писал:
Так и в ГС первые 16 юнитов от пола перешагиваются по умолчанию.
Я имел ввиду что он постоянно подвешен, а не перешагивает. Вообще трущийся колайдер о пол это крайне плохая идея.__________________
У котёнка мокрый нос и гладенькая шерсть, у него забавный хвост и быстрых лапок шесть. Две задних, две средних и две передних лапы, такая многоножка получилася у папы.
Он ученый — папа мой — зверушек изучает, гуляет по помойкам, ловит крыс и чаек. Две крысы белокрылые и чайки две унылые покрытые пупырчатою кожей лягушат без пёрышек тоскуют и ускакать спешат.
А ещё есть муравей большой размером с гуся он пугает всех зверей, и я его боюся, когда он ковыляет на лапках на своих.
И в двери ударяет, и начинает стих: Я — муравей, воды налей! Не меньше ведра, напиться мне пора!