КС2

Наш журнал - не продается.

Скорость звука

КонтекстСообщение
Akven
2005.02.08 10:34:00

Кстати, люди, вы никогда не задумывались, что в играх (конкретно, в FPS) никогда не используется скорость звука. То есть самое конкретное и явственное её проявление - задержка между вспышкой и грохотом взрыва. Что странно. Современные игровые пространства по размерам вполне подходят для того, чтобы улетевшая ракета взорвалась с задержкой, которую можно уловить слухом и, главное, смоделировать в движке.

Кстати, что я ещё заметил - в играх не учитывается силя тяжести в баллистике полёта пули. Хотя, допустим, при выстреле из той же снайперской винтовки на расстоянии хотя бы метров в 500-600 уже будет заметно падение траектории полёта. Что вполне можно было бы пихнуть в какой-нибудь CS =)

Хм... вот такие вот заметки...

Gambler
2005.02.08 17:06:00

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

Grav
2005.02.08 21:50:00

Насчёт баллистики. В дельта форс (во всех версиях) пули летали чётко по параболе. То есть с увеличением расстояния или уменьшением мощности ствола приходилось забирать несколько выше цели. Благодаря этому ваш покорный слуга ни раз снимал чуть-чуть сползших и спрятавшихся за гребень холма противников.

Akven
2005.02.08 21:51:00

Ну не знаю, как там на счёт падения траектории. Формула расчёта-то простая - mg, если я не ошибаюсь. В любой мало-мальски AD&D идёт такой математический расчёт, что все эти вычисления по скоростям и падениям - так, цветочки.

ИМХО, это и самое главное, что сейчас идёт упор на графику. Да, существует такая нехорошая штука, что игру с плохой графикой запинают. Ибо как известно, встречают по одёжке...

На пулю же в полёте действуют следующие силы, которые можно разложить в проекции по направлениям:
-скосрость горизонтального полёта
-скорость вертикального полёта, то есть падения (определяется лишь массой пули и силой тяжести планеты)
-сила действующего ветра
-сила противодействия воздуха, в в результате чего убойная характеристика с расстоянием падает, что, кстати, также нигде не учитывается.

А вообще я, конечно же эстет... *смайл*

Gambler
2005.02.09 21:02:00

Формула расчёта-то простая - mg, если я не ошибаюсь.

Сразу говорю - физику забыл почти всю. Однако по-моему ты ошибаешься. mg - это вес aka сила, с которой что-то притягивается землей. g - это константа ускорения, равная 9.8 м/(с^2). По-моему, формула будет такая: v = g * t^2. Если ошибаюсь, поправьте. Да, это не ахти какая сложность рассчетов. Только ты не учел, что дело происходит в 3D пространстве и в "реальном" времени. Ну, получили мы кривую полета пули, дальше-то что? Надо ведь проверить _что_ и _когда_ встречается на этой кривой. А вот это уже сложно.

Akven
2005.02.09 21:53:00

Хм, действительно, она самая формула, кажется. Видать, всё таки не зря я физику сдал в своё время что говорится на шару. Значит, плохо знал =))

Только ты не учел, что дело происходит в 3D пространстве и в "реальном" времени. Ну, получили мы кривую полета пули, дальше-то что? Надо ведь проверить _что_ и _когда_ встречается на этой кривой. А вот это уже сложно.

Во-первых, так как в большинстве современных игр не учитывается такая деталь как ветер, то мы имеем то, что третье измерение в расчётах не учитывается и схема расчёта будет являться простой проекцией.
Во-вторых, игра _уже_ так построена, что в ней идёт проверка на то, что и когда встречается на пути пули, просто траектория полёта там прямая. Например, где-то читал текст, что в том же CS так и сделано. Ты же не можешь в игре тыкнуть маркером в монитор и сказать, что ты попал в эту точку в перекрестии прицела - игра на самом деле просчитывает именно точку пересечения как встречу прямой траектории и конечного тела. Причём в реальном времени. По-моему, методы решения конкретно такой задачи (пересечение пули с телом в реальном времени) уже давно отточены разработчиками FPS.
Так что на самом деле всё упирается в то, что большинство разработчиков просто не _задумываются_ о таких возможных фичах... Вот и всё. ИМХО.

Давайте, может ещё кто-нибудь сможет вспомнить - какие именно достаточно очевидные и не столь сложные во внедрении эффекты реального мира не используются в играх (я так понимаю, подразумеваем жанр FPS как наиболее соответствующий какой-никакой действительности хотя бы в плане графики).

Akven
2005.02.09 22:00:00

Насчёт баллистики. В дельта форс (во всех версиях) пули летали чётко по параболе. То есть с увеличением расстояния или уменьшением мощности ствола приходилось забирать несколько выше цели. Благодаря этому ваш покорный слуга ни раз снимал чуть-чуть сползших и спрятавшихся за гребень холма противников.

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

Gambler
2005.02.10 00:44:00

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

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

Gambler
2005.02.10 00:55:00

http://answers.google.com/answers/threadview?id=18979

У-у, как все просто-о... А теперь попытайся высести аналогичную формулу для параболы.

Akven
2005.02.10 09:00:00

Твои ссылки ещё не читал. Мои мысли без них...

Концепция расчёта встречи пули с препятствием (просто быстро надуманный набросок)
=============================================
Немного истории: я бы даже не стал так пристально присматриваться к этому вопросу (по поводу падения траектории, параблы и т.д., если бы не одно вопиющее на мой взгляд недоразумение - включаешь CS, покупаешь снайперскую винтовку, включаешь прицел - и что же ты видишь - несмотря на то, что винтовка на любое расстояние бьёт прямо, в прицеле имеется шкала коррекции по дальности - именно это меня и натолкнуло на нехорошую мысль =))
(конец отступления)

Итак, имеем пулю в 3D пространстве. Её положение описывается 3-мя координатам: x, y, z. Каждая координата во времени изменяется по известному закону (разложение скорости по проекциям и прочее и прочее - если мы уж решили стрелять, то, как я уже говорил, у нас есть вполне адекватные реальным эффектам мат. формулы).
Препятствие в простейшем случае представляет из себя полигон, то есть ограниченную линиями плоскость. Линии определяются координатами вершин, которые в играх известны или могут быть получены или высчитаны.
Открываем учебник геометрии за какой-нибудь класс и там, я так думаю, без труда найдём какую-нибудь проверку того, что данная точка лежит или не лежит в данной плоскости, а также, кажется, то - по какую сторону плоскости она находится.
Всё. Обсчитываем в каждую единицу времени положения пули и полигона и проверяем на то, что координаты пули вдруг появились по другую сторону полигона. Всё. Убираем из системы пулю как попавшую в цель (либо оставляем, если считаем, что она забурилась в препятсивие и собирается выйти с другого конца - в этом случае изменяем формулы её движения под конкретный материал конкретными константами), рисуем нужные эффекты, накладываем на полигон спрайт дыры (если конкретнее, то в точку пересечения полигона с линией, образуемой положениями пули до и после пересечения полигона в предыдущий и последующий кванты времени), снимаем необходимое количество хит-поинтов и т.д.

Конечно, если рассчитывать сразу множество пуль, да ещё и с разными характеристиками в разных средах, помноженные на общее количество полигонов хотя бы в кадре (хотя, как известно, во многих играх для поражаемых субъектов а-ля люди и монстры используются так называемые hit-box'ы), то получаем весьма существенные вычисления. Но это не означает, что подобное сделать невозможно или то, что это достаточно сложно. К тому же наверняка существуют более совершенные и оптимизированные алгоритмы, которые и применяются в современных играх. Просто я их не в состоянии вывести в столь короткий срок *смайл*

P.S. Такое ощущение, что пора начать писать по этой теме какую-нибудь аналитику =))))))

Akven
2005.02.10 09:04:00

К тому же, всегда можно произвести линейную апроксимацию параболы и получить на конечном участке линию.

Gambler
2005.02.14 09:47:00

Каждая координата во времени изменяется по известному закону (разложение скорости по проекциям и прочее и прочее - если мы уж решили стрелять, то, как я уже говорил, у нас есть вполне адекватные реальным эффектам мат. формулы).

Формулы - это не что-то побочное, а самая главная компонента моделирования, так что советую все же сначала прочитать документ, на который я дал ссылку.

Препятствие в простейшем случае представляет из себя полигон, то есть ограниченную линиями плоскость.

В общем-то правильно, только не линиями, а векторами. Поведению векторов посвящен определенный сегмент геометрии, о котором лично у меня есть лишь смутные представления.

.S. Такое ощущение, что пора начать писать по этой теме какую-нибудь аналитику =))))))

Чтобы писать такую аналитику, нужно разбираться в программировании, физике, геометрии и математике матриц.

PS: Я ведь не говорю, что сделать параболические траектории пуль невозможно. Я говорю лишь, что это сложность их моделирования во много крат перевешивает пользу (эффект на игрока) их применения.

Akven
2005.02.15 10:16:00

Чтобы писать такую аналитику, нужно разбираться в программировании, физике, геометрии и математике матриц.

PS: Я ведь не говорю, что сделать параболические траектории пуль невозможно. Я говорю лишь, что это сложность их моделирования во много крат перевешивает пользу (эффект на игрока) их применения.

Я имел в виду, что накатать некое подобие статьи на тему неиспользуемых в играх эффектов, а не на тему их конкретного технического воплощения.

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

P.S. И почему это сложно технически? Ведь сподобились же люди создать ентот самый физический движок Havok. Сомневаюсь, что расчёт какой-то там параболы для них будет чем-то сложным. К тому же я так подозреваю, что эта штука уже включена в него (ибо полёты бочек после взрыва)

Gambler
2005.02.15 15:50:00

Havok - это как раз пример того, насколько это сложно технически. Люди сделали отдельный физический движок, который только такими вещами и занимается, и лицензируют его за большие деньги.

Я имел в виду, что накатать некое подобие статьи на тему неиспользуемых в играх эффектов, а не на тему их конкретного технического воплощения.

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

Akven
2005.02.15 19:35:00

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

Тогда почему этого нет в Half-Life 2? Как я уже говорил, это скоре вопрос не конкретного технического вполощения, а инертности мышления со стороны разработчиков и проявление того, что они просто о подобном не задумывались.

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

Буду с нетерпением ждать...