Pregunta

Veo un gran debate yendo y viniendo sobre la lengua que utilice para desarrollar en tiempo real en 3D juegos, y el consenso general es que C o C ++ son los únicos idiomas que pueden ofrecer un rendimiento adecuado para gama alta, el sistema de juegos 3D intensivos en. Veo un montón de gente diciendo C #, Java o Python son demasiado lentos, en particular debido a la recolección de basura. ¿Qué hay de Objective C? Objetivo C no tiene recolección de basura automática? Lo que además de Recogida automática de basura hacen un lenguaje 'demasiado lento' o inadecuado para juegos en 3D?

Esta pregunta es probablemente más de un experimento mental ya que dudo que alguna vez desarrollar un juego que es tan pesada de recursos que estas cuestiones deben abordarse, pero al ser un programador, estoy obsesionado con inexplicablemente rendimiento, así que todavía me gustaría saber sólo por mis propios Jollies.

¿Fue útil?

Solución

Objetivo-C 2.0 tiene recolección de basura disponible en Mac OS X 10.5, pero es opcional - usted todavía puede compilar aplicaciones de Objective-C sin recolección de basura si así lo desea. En otras plataformas (iPhone, Mac OS X pre-10.5, y cualquier otra cosa), no hay recolección de basura, y usted tiene que administrar manualmente la memoria.

Objetivo-C es un superconjunto estricto de C, por lo que puede codificar C plano en Objective-C, si quieres. Por lo tanto, no hay razón para no usar Objective-C para los juegos que no se aplicaría también a la utilización de C. Usted puede utilizar las funciones adicionales de Objective-C proporciona tanto o tan poco como desee.

Otros consejos

El único desaceleración real con Objective-C sería el mecanismo de mensajería y aún entonces, por lo general componentes del marco de cacao que retrasar las cosas. El mensaje de Objective-C que envía realmente no hiere el rendimiento que mucho.

De todas formas, para la mayoría de los juegos, la mayoría de los cuellos de botella de rendimiento vendrá de código de gráficos: si delega gráficos cosas para OpenGL, que es ridículamente rápido, entonces realmente debería haber ningún problema con el uso de Objective-C para los juegos. El único otro lugar donde pueda ver Objective-C o cacao que proporcionan los cuellos de botella sería para la física intensiva de código y que probablemente debería ser escrito en C pura / C ++ de todos modos. Todo lo demás, sin embargo, no debe realmente importa mucho.

Para ser honesto, yo apuesto a que la mayoría de OS X juegos de hoy en día están escritas en Objective-C utilizando los marcos de cacao, con el código sensibles al rendimiento escrito en C pura / C ++ (y con el código de gráficos que utiliza OpenGL) .

También estoy interesado en el tema y encontré este http://wiki.gnustep.org/index.php/3DKit

Se ve bastante muerto, pero ahora con sonido metálico / 2,9 llvm muchos de los objetos valiosos de Objective-C 2 están disponibles en Linux y podría ser interesante tener API 3D.

Objetivo-C no tiene recolección de basura automática. Java tiene varios métodos de recolección de basura y algunos de ellos están diseñados para ser compatibles con los juegos por los que ocurren de forma incremental a intervalos regulares. Me sorprendería si C # o cualquier otra cosa que también tenía la recolección de basura no tener varios métodos para elegir, algunos de los cuales son compatibles con los juegos.

La única cosa de la parte superior de la cabeza que se podría hacer un juego apto para juegos en 3D sería si se interpreta y particularmente lento en su ejecución. Eso no es una característica de cualquier cosa que se enumeran más arriba.

P.S. Para hacer frente a su pregunta original, estoy bastante seguro de que nadie que tenga un iPod Touch o iPhone será capaz de decirle que Objective-C es sin duda a los juegos en 3D:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top