2011-11-28 8 views
6

He utilizado con éxito Farseer para desarrollar uno de mis juegos usando XNA. El juego funciona como un encanto en Windows y WP7. Actualmente estoy trabajando en portar mi juego en IOS usando Monotouch y Monogame. He compilado y usado Farseer también con éxito en la primera versión de mi juego portada sobre Monotouch y Monogame. Todo funciona bien excepto por actuaciones. El juego funciona mucho más lento en el dispositivo iPhone. Hice algunas investigaciones de código y parece que el mayor cuello de botella es Farseer. Se vuelve realmente lento cuando tiene que administrar más de 5-6 cuerpos con un solo accesorio conectado (círculo).Cambiar la configuración de Farseer Physics Engine para mejorar las actuaciones

Leer la documentación Noté que a Farseer sintonizar pudiera cambiar los valores de la clase estática Marco:

Rendimiento

Con el fin de obtener el máximo rendimiento del motor, usted debe tratar de seguir las directrices a continuación:

Habilitar dormir dormir le permite tener un gran número de cuerpos en el mundo. También puede aumentar la estabilidad del motor ya que los pequeños movimientos en una pila de cuerpos no se separan en la pila. Un cuerpo dormido tiene poca sobrecarga, por lo que se recomienda habilitarlo.

Desactivar CCD continuo de detección de colisiones previene túnel, pero a costa de rendimiento. Si no tiene problemas con la creación de túneles, debe desactivar el CCD por completo.

minimizar el número de iteraciones de posición y velocidad Un alto número de iteraciones hace que el motor más estable a costa de rendimiento. Debes modificar los valores para que se ajusten a tu juego.

La mala noticia es que si cambio algún valor de esa clase, nada parece suceder. He intentado cambiar los valores de la siguiente manera:

EnableDiagnostics = false 
VelocityIterations = 6 
PositionIterations = 2 
ContinuousPhysics = false 

Probé también con valores más bajos como VelocityIterations = 1, pero nada parece cambiar ....

Cualquiera que ya han cambiado los valores de clase ajustes para mejorar el rendimiento?

+1

Puede intentar preguntar esto en http://gamedev.stackexchange.com/. Dado que su comunidad se centra específicamente en el desarrollo de juegos (con una concentración aparentemente alta de desarrolladores XNA), puede obtener mejores respuestas allí. –

+0

Mono es muy lento.Muy bien puede que no haya forma de alterar la configuración lo suficiente como para salvarte a ti mismo. – ClassicThunder

+0

No es cierto ClassicThunder, Mono y Monotouch son realmente efectivos incluso en iOS. He resuelto el problema y descubrí que Farseer no era el mayor embotellador en esto. – John

Respuesta

1

Ok,

He logrado esto. El embotellamiento principal no estaba relacionado con Farseer. Una vez que resolví todos los problemas de rendimiento relacionados con mi "código incorrecto", ajustar Farseer como se describe arriba funciona muy bien para obtener un 5-10% de las actuaciones.

Mi juego está escrito en XNA, portado a iOS un Android con monotouch y mono4android con éxito.

+0

Debe saber acerca de SlimTune (o nProf): muy útil para descubrir los cuellos de botella en su código. – jgallant

+0

¿Podría comentar cómo mejoró el rendimiento? ¿Está funcionando bien en un dispositivo 3GS? – Notbad

+0

Hola, Notbad. ¿Estás preguntando sobre la mejora de las actuaciones de Farseer o MyGame/MonoTouch/Monogame? Sí, se ejecuta en el 3GS. Podrías probar mi juego por ti mismo. Se llama "Smashing Planets" y es gratis en la AppStore – John

Cuestiones relacionadas