1342

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

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

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"