Как стать автором
Обновить

Как управлять миром шестиугольных призм на GPU

Время на прочтение20 мин
Количество просмотров6.8K
Всего голосов 42: ↑42 и ↓0+52
Комментарии26

Комментарии 26

Шикарно. Насколько сложно это всё дебажить, если что-то идёт не так?

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

Как управлять миром шестиугольных призм на GPU

не привлекая внимания санитаров. Снимаю шляпу, интересная идея и реализация, отличное упражнение.

Обожаю эту штуку. Как я ещё на Геймдеве говорил — там надо мимокрафтовскую физику поршней и толканий блоков заменить шестерёночной физикой вращения блоков и всего, что к ним прикручено :) Оно просто напрашивается на такой подход ^________^

Пар, шестерни, зубчатые рейки, пневмотрубки вместо редстоуна…

Короче, мои плюсы во все поля ^_________________^

Уже есть в Vintage Story

На самом деле интересно. Сама вычислений на видеокарте не то чтобы боюсь, но стараюсь в принципе их не трогать, если задача не критична - пробовала как-то и не понравилось. А тут целая игра своими силами. Действительно мощно

Физику примитивов также можно реализовать на GPU, но с некоторыми ограничениями, что и сделали программисты из Google по ссылке выше. В данной игре в качестве базового примитива подойдёт куб или цилиндр. Симулировать стоит только линейные перемещения, без вращений. Для расчёта столкновений, вместо ветвлений, можно использовать кусочно-линейные функции (step, max, min, abs и т.д.), но поскольку мы всё равно вычисляем обе ветви, лучше сделать мягкие столкновения с помощью гладких функций (smoothstep и т.п.), тогда симуляция будет более плавной и устойчивой.

В целом, проект шикарный. Вот бы ещё использовать какие-нибудь идеи по генерации и визуализации мира из Marble Marcher.

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

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

Я чуть выше ссылку бросил на очень КМК благодатную тему по разнородным…

в качестве базового примитива подойдёт куб или цилиндр

Если цилиндр шестигранный -- то ок, ето оно!
(В 3-Дэ мире все цилиндры почему-то гранёные, не от кривых или безьяй пляшут... Интересно, отчего бы ето? А из економии!).

который без фантазии назвал Hex.

А вы в курсе, что это значит, если считать, что это аббревиатура, записанная кириллицей? ))

Ванильные майнкрафтеры так бы про нее и сказали)

А ещё это всякие авады кедавра.

Интереснейший материал, спасибо!

Прикрутить бы в качестве альтернативы BSPшке эту штуку к GZDoom'у, причём с воксельными моделями…

Да, тупая физика, что в тэгах указано, то и реагирует на внешние раздражители.

Но зато — красиво и инопланетно :)

@mydr3z, @Panzerschrek, скооперируйтесь уже, я хочу в это поиграть :-D

Оно прямо просится одно к другому! :-D

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

В шаровидном мире и то больше смысла, как в этом проекте.

Да просто безумная геометрия к безумной геометрии, без какого-то глубокого смысла :)

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

У Мёбиуса была ещё бутылка. Она куда круче сферы и тора вместе взятых.

«Не успел профессор Сляпенарский даже вскрикнуть, как был увлечён в тёмные глубины бутылки Клейна…»

Да! Смешно получилось.
Ну, описАлся (опИсался!), с кем не бывает.

Вот пример подобного вместе с кодом.

https://www.shadertoy.com/view/4dsBz4

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

Внимание, в статье есть много скриншотов!

Страшно не это, а то, что они все в PNG.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории