unity

Постов: 10 Рейтинг: 21658
2792

Впечатляющие возможности нового Unity Engine показали в техдемо.

Развернуть
Компания Unity Technologies представила ролик технического демо, в котором демонстрируются возможности новой версии игрового движка Unity. Представленные в ролике объекты являются копиями объектов реального мира, для создания видео применялась система рендеринга Scriptable Render Pipeline, говорится в пресс-релизе компании.

Book of the Dead показывает разработчикам, что они смогут сделать, используя движок Unity образца 2018 года. Представитель Unity Technologies указал на то, что достичь подобных впечатляющих результатов может и небольшая команда.
Отмечается, что Scriptable Render Pipeline способен утилизировать все возможности современного компьютерного «железа», чтобы предложить практически неотличимую от реальности картинку.
Впечатляющие возможности нового Unity Engine показали в техдемо.
Впечатляющие возможности нового Unity Engine показали в техдемо.
Впечатляющие возможности нового Unity Engine показали в техдемо.
Впечатляющие возможности нового Unity Engine показали в техдемо.
взято с onliner.by
4444

Доделал игру, работающую на видеокарте

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

Основная особенность игры в том, что она представляет собой физическую симуляцию, которая выполняется на графическом процессоре. Основной код игры - это огромный compute shader, 6 тысяч строк на HLSL. Десятки тысяч взаимодействующих частиц обрабатываются параллельно, и выходит довольно быстро. Всё в игре сделано из этих частиц. Вот видосик с геймплеем:
Хочется просуммировать опыт разработки такого рода игры. Какие достоинства и недостатки у вычислений на видеокарте.

Достоинства:

1. Производительности GPU в 10-100 раз выше, чем у процессора, когда дело касается параллельных вычислений. Это очен много, так что на видеокарте можно делать принципиально другие игры, чем на процессоре. Моя игра просто не работала бы на CPU (то есть, была бы слишком медленной).

Недостатки:

1. Мало туториалов. Я потратил довольно много времени, чтобы всё изучить. И ещё больше - чтобы решить возникавшие проблемы.

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

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

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

5. Графические API на разных платформах немного отличаются друг от друга. В простых случаях они совместимы со стандартом directX, но у меня - не простой случай. У Metal одно небольшое ограничение, на андроиде - другое, на Vulkan - третье. В итоге, моя игра работает только на Windows.

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

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

Ну и если кто-то вдруг захочет попробовать свои силы в этой области, то вот парочка туториалов:

http://kylehalladay.com/blog/tutorial/2014/06/27/Compute-Sha...

http://www.emersonshaffer.com/blog/2016/5/11/unity3d-compute...

А если кому интересно посмотреть мою игру, вот ссылка на её страницу на Steam: http://store.steampowered.com/app/593530/Jelly_in_the_sky/
565

Симулятор эволюции на Unity + исходный код

Развернуть
Здравствуйте, товарищи.
Так уж сложилось исторически, что я люблю разного рода извращения. И вот к чему меня это привело в этот раз:
Я написал симулятор эволюции, используя Unity.
Симулятор эволюции на Unity + исходный код GIF
Суть происходящего:
В замкнутую среду помещается клетка, обладающая собственным геномом, состоящим из 64 случайных команд, расположенных в случайном порядке. Клетка выполняет все свои действия в соответствии с геномом. В зависимости от результата выполнения очередной команды, заложенной в гене, клетка переключается на команду в другом гене. Клетки живут в аквариуме, на который светит солнце. Клетки могут фотосинтезировать, чтобы восстанавливать свою энергию. Когда клетка накопит достаточное количество энергии - она делится. Если клетке пора делиться, но она со всех сторон окружена (нет свободного места) - клетка умирает, превращаясь в питательный трупик, который могут сожрать другие клетки.
Если у клетки заканчивается энергия - она умирает, не оставляя за собой трупа. Клетки могут жрать друг друга, и распознавать, родственник перед ними, или нет. При рождении каждой новой клетки есть 25% шанс, что один из её генов мутирует (одна из команд в алгоритме поведения изменится на другую случайную команду). Когда клетка фотосинтезирует - она зеленеет, когда жрёт органику - краснеет.

Всего клетка может выполнять 7 команд:
1 - смотреть прямо перед собой
2 - поворачиваться
3 - двигаться вперёд
4 - жрать объект перед собой
5 - фотосинтезировать
6 - проверять, сколько осталось энергии
7 - размножаться


На следующей гифке изображён аквариум, в котором живёт одна клетка, все гены которой заполнены одной командой - фотосинтез, поэтому она бесконтрольно размножается, оставляя за собой кучи задавленных трупов. Но в какой-то момент появляются клетки-мутанты, которые начинают двигаться и питаться органикой:
Симулятор эволюции на Unity + исходный код GIF
На следующей гифке изображён авариум, почти полностью заваленный трупами "веганов", которые бесконтрольно размножались, и почти довели популяцию до полного вымирания. Но, случайная мутация исправила ситуацию, и в аквариуме появились мясоеды:
Симулятор эволюции на Unity + исходный код GIF
На следующей гифке я поэкспериментировал с гравитацией, сделал так, чтобы трупы опускались на дно. От затеи пришлось отказаться, потому что fps, который и так довольно сильно проседал, сморщился ещё сильнее, как-будто его в ледяную воду опустили:
Симулятор эволюции на Unity + исходный код GIF
Ну и посделедняя гифка. На ней в аквариуме практически сразу появились хищники:
Симулятор эволюции на Unity + исходный код GIF
Как оказалось, наблюдать за развитием о поведением виртуальных клеток - очень увлекательное занятие. Для всех, кому это интересно - оставлю ссылку на репозиторий в комментариях.

Критика по поводу кода принимается. Особенно буду рад услышать советы по оптимизации от компетентных людей.
5076

Сегодня на моём компьютере отвалилась программа ФСБшной слежки

Развернуть
Сегодня на моём компьютере отвалилась программа ФСБшной слежки
Я даже растерялся и не знал, чего бы такого погуглить, пока они не видят.
1138

Не, ну как назвать фирму? Ну, не знаю... Че делать то... ***... О!

Развернуть
С последней презентации Unity.
P.S. В Unity ожидается интеграция Октан рендера.
Не, ну как назвать фирму? Ну, не знаю... Че делать то... ***... О!
1342

Полная версия офигенной технодемки на движке Unity

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


1321

Офигенное технодемо движка Unity

Развернуть
1950

Создаем игру с нуля в Unity3D

Развернуть
Не прибегая к программированию!
Создаем игру с нуля в Unity3D
1311

Наша игра "The Uncertain"

Развернуть
Первый демо шоурил, который мы сегодня показали на конференции #unitykrd в Краснодаре. Надеемся вам понравится :)
1719

Путешествие по жёсткому диску

Развернуть
Игра, в которой можно бегать по файловой системе своего компьютера.
Путешествие по жёсткому диску