¿Por qué los motores de juegos usan C ++?

  1. ¿Por qué la mayoría de los motores de juegos usan C ++ para desarrollar juegos ?.
  2. ¿Por qué no java o C # ?.

Diría que se debe a que C ++ es, entre los principales idiomas, el que funciona al más alto nivel, sin sacrificar el acceso al control de bajo nivel.

En C ++ usted tiene control completo de lo que está sucediendo con su progtwig, lo que puede ser deseable, especialmente para plataforms severamente restringidas como las consoles.

Por ejemplo: la recolección de basura como está disponible en C # y Java generalmente no es determinista. No solo no hay una forma precisa de saber exactamente cuánta memory está consumiendo en un momento dado, sino que tampoco sabe cuándo se ejecutará el recolector de basura, lo que probablemente networkingucirá la velocidad de su hilo principal.

En consoles, incluso hasta Game Cube y me atrevo a decir que la Wii, tener un control extremo del time de su progtwig es crucial para desarrollar juegos que funcionen bien. En muchos juegos, el juego se procesa exactamente una vez finalizada la exploración y antes de que entre el siguiente. Solo tienes unos pocos microsegundos para hacer el trabajo, lo que se traduce en una cantidad fija de tics de la CPU, a less que sepas cómo exactamente tu código se ensamblará, donde fallarán las caching y cuánto time tomarán, no podrá empujar la console hasta el límite. Hacer esto es imposible si un recolector de basura está apareciendo aleatoriamente y jugando con sus times.

Esto es por supuesto histórico. Las consoles y PC modernas son más relajadas, y puede hacer mucho sin realmente empujar la máquina al límite, por lo que ahora tiene XNA y PSM que le permiten progtwigr en C #, Android, lo que le permite progtwigr en Java e incluso Flash y HTML5 que te permite progtwigr en variantes de ECMAScript.

Pero aun así, C ++ te permitirá llegar al límite cuando realices optimizaciones, ya que incluso eventualmente puedes hacer un ensamblado en línea donde quieras. Java y C # simplemente no te dejan hacer esto.

La API de bibliotecas de charts generalmente utilizada, como DirectX y OpenGL, están escritas en C y le proporcionan una interfaz C para su uso. Tienen enlaces a otros lenguajes, pero la mayoría de estos se basan en la implementación de C o intentan usar los procedimientos de API a través de su propia interfaz nativa (por ejemplo, Java – JNDI) que está escrita principalmente en C …

C ++ generalmente se considera "mejor" que otros lenguajes, por varias razones. Principalmente, casi todos los progtwigdores profesionales conocen C ++, pero no están tan familiarizados con otros lenguajes. Por lo tanto, hay una gran variedad de bibliotecas y herramientas de terceros disponibles para C ++.

Además, Java y lenguajes similares deben ejecutarse en una máquina virtual, que se considera más lenta o less eficiente que el código nativo producido por C ++.

Sin embargo, en mi experiencia, la velocidad y la eficiencia de estos idiomas no es lo que hace que la decisión, es solo la familiaridad.

Cabe señalar que muchos juegos se ejecutan en un motor de C ++, pero la mayoría (si no todos) de la lógica del juego se implementa en un lenguaje de scripting, como Lua.