Rust имеет миллионы и миллионы экземпляров травы, камней и деревьев на своих картах, которые достигают размера 8 км.
Эта трава динамически размещается вокруг игрока во время выполнения? Если да, то это как-то делается на графическом процессоре или с помощью шейдера?
В моей игре мы используем цвета вершин и raycasting для размещения растительности, а также сохраняем данные преобразования, которые инициализируются косвенным инстансом GPU во время выполнения.
Однако я не могу представить, что это будет хорошо масштабироваться с чем-то вроде деревьев. Действительно ли в сцене постоянно активны тысячи меш-коллайдеров? Я подумал, что, возможно, они могли бы хранить все эти меш-коллайдеры в сцене, а игровой объект можно было бы пометить, и если вы нажмете на него инструментом, он добавит к нему компонент Tree.
Я иду в правильном направлении с созданием всего заранее, например, во время выполнения?
Я проверил это, и это действительно сработало, создав 24 миллиона экземпляров (на raycast ушло 20 минут), а затем инициализировал GPU с экземплярами.
Это круто и все такое, даже несмотря на то, что через некоторое время мой редактор Unity падает (утечка памяти?).
Может быть, вы сохраняете экземпляры перед запуском, а затем, когда вы запускаете удаленный сервер, вы выполняете все raycasting и размещаете все деревья, камни и другие интерактивные объекты.
Но меня беспокоит, что если я попытаюсь сохранить хотя бы 10 000 игровых объектов (для взаимодействия, таких вещей, как рубимые деревья, добываемые камни), производительность упадет.
billboarding
. Вы также хотели бы сделать все статическим и запечь отсечение окклюзии. - person TEEBQNE   schedule 29.05.2021