Физика на сервере без юнити, PhysX

Общие вопросы о Unity3D

Физика на сервере без юнити, PhysX

Сообщение VBProgr 30 мар 2012, 17:59

Где-то на этом форуме было сообщение о том, что юнити использует PhysX. Так вот, я планирую подключить физику для игрового сервера. Есть большая вероятность, что использовать PhysX напрямую будет лучше в плане производительности.

Сервер на .NET, поэтому я нашел PhysX.NET wrapper. К сожалению, примеры у меня не запустились: при вызове new SlimDX.DXGI.Factory() получаю PhysX initialization error ("внешний компонент создал исключение").

Вообще, с PhysX я никогда раньше не работал и не знаю с какой стороны к нему подойти. Так что буду благодарен, если у Вас найдется пара ссылок (желательно с примерами) на тему использования PhysX на C#.

Если Вы знакомы с PhysX, на Ваш взгляд, что общее есть между использованием физики Unity и PhysX (есть ли там коллайдеры или что-то похожее? аналог rigidbody?..)
skype: vbprogr
Добавить vbprogr в Skype
VBProgr
UNITрон
 
Сообщения: 319
Зарегистрирован: 24 сен 2011, 14:11

Re: Физика на сервере без юнити, PhysX

Сообщение Kann 30 мар 2012, 22:39

возьмите Bullet и не парьтесь с враппером PhysX, кривой он, более менее нормальный есть только под XNA по моему....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Физика на сервере без юнити, PhysX

Сообщение VBProgr 30 мар 2012, 23:23

Хм... спасибо, посмотрю.
skype: vbprogr
Добавить vbprogr в Skype
VBProgr
UNITрон
 
Сообщения: 319
Зарегистрирован: 24 сен 2011, 14:11

Re: Физика на сервере без юнити, PhysX

Сообщение VBProgr 31 мар 2012, 19:25

Bullet мне подходит. Кстати, он же под моно работает, так что теперь можно запускать сервер и под линуксом.

Я проводил тест на юнити: создавал кучу кубиков и направлял их в одну точку. Редактор виснул намертво на 550+ штук. Буллет с некоторыми лагами, но, без заметных проблем для сервера, тянет больше 2000 кубиков, которые падают друг на друга.

Теперь сервер не будет виснуть намертво от перегрузки физики, хотя и будет лагать :)

Kann, возможно Вы сможете объяснить эту особенность Bullet: когда кубики из benchmark demo перестают двигаться, они переходят в Sleeping, так вот пока абсолютно все кубики, которые участвовали в "падении с неба", не становятся спящими, использование ядра ЦП, в котором работает поток, остается на максимуме. Отчего нагрузка не уменьшается постепенно?
skype: vbprogr
Добавить vbprogr в Skype
VBProgr
UNITрон
 
Сообщения: 319
Зарегистрирован: 24 сен 2011, 14:11

Re: Физика на сервере без юнити, PhysX

Сообщение Kann 31 мар 2012, 20:44

VBProgr писал(а):Я проводил тест на юнити: создавал кучу кубиков и направлял их в одну точку. Редактор виснул намертво на 550+ штук. Буллет с некоторыми лагами, но, без заметных проблем для сервера, тянет больше 2000 кубиков, которые падают друг на друга.
Kann, возможно Вы сможете объяснить эту особенность Bullet: когда кубики из benchmark demo перестают двигаться, они переходят в Sleeping, так вот пока абсолютно все кубики, которые участвовали в "падении с неба", не становятся спящими, использование ядра ЦП, в котором работает поток, остается на максимуме. Отчего нагрузка не уменьшается постепенно?


у меня стандартный PhysX юнити при правильной настройке, вытянул примерно 2500 кубиков... а если не использовать rigidbody то и 5000 нормально ;)
если вы все кубики собираете в одну кучу, возможно они не переходят в Sleeping, надо играть с параметрами, но на это особенно не стоит обращать внимания, все равно у вас на сервере вряд ли одновременно будет более 1000 одновременных коллизий динамических объектов... к тому же Bullet многопоточный и может задействовать Cuda...
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Физика на сервере без юнити, PhysX

Сообщение VBProgr 01 апр 2012, 16:15

у меня стандартный PhysX юнити при правильной настройке, вытянул примерно 2500 кубиков... а если не использовать rigidbody то и 5000 нормально ;)

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

к тому же Bullet многопоточный и может задействовать Cuda...

Хм... сюда по демкам BulletSharp, у меня буллет использует только одно ядро. Или для него нужно указывать специальные настройки для многопоточности?
skype: vbprogr
Добавить vbprogr в Skype
VBProgr
UNITрон
 
Сообщения: 319
Зарегистрирован: 24 сен 2011, 14:11

Re: Физика на сервере без юнити, PhysX

Сообщение Kann 02 апр 2012, 17:56

VBProgr писал(а):Я говорю о кубиках, которые одновременно слетаются в одну точку, т.е. происходит большое количество столкновений. Вряд ли юнити столько может вытянуть, если не уменьшать fixedTimestep.

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

ну да, 2500 одновременно падающих кубиков на плоскость, вполне тянет, надо настройками рулить в ручную, а не по дефолту....
Bullet скомпилить нужно с доп параметрами, там и поддержка Cuda и многопоточность и еще много чего есть....
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19