ThisIsZolden

На Пикабу
Дата рождения: 27 ноября
22К рейтинг 749 подписчиков 3 подписки 21 пост 11 в горячем
Награды:
5 лет на Пикабу
52

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

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

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

Показать полностью
1347

Делаю физический 2Д-движок для игры

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

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

Частицы - это абстрактные точки, которые надо отрисовать. Для отрисовки я использую метод marching squares.

Сначала для частиц строится distance field, принцип которого понятен по этому видосу. Затем в окрестностях точек треугольники меша становятся видимыми, и вся материя рендерится в один draw call.

Кроме материи, в игре есть твёрдые тела, который симулируются отдельно у них уже есть момент инерции, произвольная масса. Есть также и пружины, с помощью которых тела можно присоединять друг к другу.

Из примитивов можно строить более сложные фищические объекты. Пара колёс + прямоугольник - получитлась машинка. Чтобы игрок мог управлять сущностями в игре, в GPU передаётся инпут, а для тел устанавливается, как они реагируют на него.

Естественно, для игры с разружаемой средой, нужно оружие. Вся игра работает на GPU, и единственный буффер, который копируется в каждом кажру на сторону CPU - точки взрывов, чтобы создавать VFX и воспроизводить звук.

Прежде чем делать игру, я хотел добавить в движок сущности, которые точно пригодятся. Одна из них - верёвка. Её жёсткостью и загибом можно управлять.

Чтобы сделать управляемых персонажей и врагов в игре, я добавил в движок "мягкие тела". Это те же физические частицы, но соединённые пружинами. Внутри них можгут быть физические кости, чтобы делать анимации.

Рендерятся они так: формируется меш из физических треугольников, слагающих мягкое тело. Всё происходит в GPU, поэтому работает быстро.

Здесь рука - мягкое тело с костями, управляемое игроком. Она взаимодействует с головой, которая сделана из несвязанных частиц, то есть обычной материи.

Из дополниельных фич - присоединение объектов друг к другу. Тут Патрик откладывает икру. Хотели бы поесть икры Патрика?

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

Какой в итоге будет геймплей? У меня есть список из 60 вариантов геймплея под физику. Но я склоняюсь к одному, с копанием земли, добычей ресурсов, постройкой базы и элементами аркадного платформера.

Если желаете вишлистить игру, она тут:

https://store.steampowered.com/app/3343970/Simulario/

Показать полностью 9
2536

Как я сделал физический 3Д-движок

Я обожаю физику в играх, и мне интересно разрабатывать физические движки.

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

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

Вся физика вычисляется на видеокарте, что совершенно логично. Архитектура и АПИ GPU идеально подходят для многопоточной работы с массивами данных, и производительность на два порядка выше, чем у CPU. В Юнити можно писать компьют шейдеры, и весь код физики написан на HLSL.

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

Получилось неплохо. Это можно было использовать как физический материал для создание игровых объектов.


Кроме пружин, я реализовал взаимодействие между свободно плавающими частицами. Использовал потенциал Леннарда-Джонса. Так что частицы спонтанно слипались в разрушаемую материю.

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

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

В этом видосе я сделал чтобы как в Терминаторе у Т-1000 дырки появлялись.

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

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

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

Сформировал из него персонажа-змейку.

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

Я экспериментировал с разными способами, но всё было недостаточно хорошо, например:


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

Оставалось автоматически заскинить меш физическими частицами тела, как если бы они были костями. Получилось мягкое тело, игровая сущность.

С этим уже можно было работать.

Я перенёс алгоритм анимации заскиненного меша в ГПУ (для скорости), и добавил на каждом кадре сглаживание поверности меша. Кроме того, реализовал простенькое управление персонажем.

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


Естественно, я не избежал искушения для научных целей сделать и симуляцию женской груди. Этот видос сюда не буду выкладывать, а то из-за одного видоса весь пост делать 18+ не хочется. Выложу отдельно чуть позже.

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

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

В следующем посте я расскажу про 2Д-движок, в котором я продвинулся гораздо дальше.

Показать полностью 9
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества