Когда-то давно я уже описывал простые физические модели, которые можно построить с помощью доступных физических движков. Для 7ой демки glVehicles я выбрал жидкость. Конечно, вводить какие-то новомодные частицы для простой демки я не стал. А вот смоделировать поверхность жидкости стандартными способами (плавание и погружение тел) всегда приятно, быстро и красиво! Итак, еще одно обновление в физических демках: на этот раз демонстрируется, как можно дешево добавить уровень воды в игру, разнообразив тем самым уровни и тайлы карты. Итак, встречайте... | ![]() |
Вообще, эту демку я только начал делать. 19-ый коммит как раз и содержит основу моделирования поверхности жидкости. Текущий результат можно наблюдать на видео:
Как происходит расчет?
В тело набрасываются контрольные точки, для каждой из которых определяется: выше или ниже раздела жидкость-воздух она находится. Если ниже - тогда к телу в этой контрольной точке применяется Архимедова сила. В итоге на каждое тело будут действовать несколько выталкивающих сил, которые заставят тело всплывать, погружаться, поворачиваться и так далее, результатом чего будет более-менее физическое поведение объектов в жидкости.
Что еще нужно сделать?
Да много чего. Сейчас я бы обозначил два пункта:
- перенести построение контрольных точек для тел в самое начало программы, выполняя эти расчеты единожды - при добавлении объектов в физический мир.Сейчас же эти построения контрольных точек происходят каждый кадр, что сильно понижает фпс.
- добавить какие-нибудь ползунки-настройки, позволяющие менять параметры среды и тел в ходе выполнения программы. Это добавило бы интерактивности, и увеличило бы продолжительность одной запущенной сессии демки. Что мешает сделать это уже сейчас? Отсутствие штатных ползунков. Надо сделать, а для этого нужно хотя бы часок времени...
Что вообще здесь происходит?
Если ничего из вышесказанного неясно, тогда следует сначала прочесть сообщения в данном журнале с тегом glVehicles, а затем, если ничего так и не прояснилось - спросить у меня лично :)
Что вообще интересного можно почерпнуть из этой демки?
Это уже на усмотрение каждого... вообще, стандартная поверхность жидкости постоянно "мусолится" в шутерах:
плавающие коробки, обломки, аптечки, трупы... Все это добавляет немалого реализма игре. Где-то нам даже дают возможность прокатиться с ветерком на быстроходном средстве:
А физика-то у него довольно простая! Правда вот над глиссеровкой (эффект подпрыгивания на высоких скоростях) нужно немного подумать, но в целом, мне кажется, особых хитростей быть не должно...
Построить целый геймплей на этом трудно. Слишком простенько, согласен... Но, если додумать, расширить, добавить вышеупомянутые частицы, пожертвовать производительностью, прооптимизировать, подкрутить и много чего еще, то из такого:
вполне можно скрутить hi-tech игру, где основой станет жидкость, её свойства и поведение (как-то раз я уже говорил об этой игре под названием PixelJunk, но здесь как нельзя кстати подойдет видео из нее):
Какие еще планируются демки?
Пока не знаю, думаю довести их число до десяти и немного отойти от этой темы, ибо фантазия на механизмы подходит к концу... еще на три-четыре идеи наскребу, а вот дальше будет туго...
Наверно, на этом все... следите за обновлениями!