"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > C++: obsesión por la velocidad en la industria del juego

C++: obsesión por la velocidad en la industria del juego

Publicado el 2024-08-01
Navegar:772

C   : speed obsession in the game industry

¿Cuándo realmente necesitamos velocidad?

C se convirtió en un lenguaje estándar para juegos y software de gráficos hace mucho tiempo. Y había una razón real: trabajar con gráficos en tiempo real y física requiere un alto rendimiento. Procesar geometría, administrar zonas de influencia, cálculos matriciales: todo eso lleva tiempo.
Pero ¿qué pasa con la lógica de alto nivel? ¿Mecánica de juego, interfaz de usuario, gestión de almacenamiento, solicitudes de red? La estabilidad y la seguridad se exigen mucho más allí que la velocidad.

Distribución de responsabilidad

Podemos implementar funciones que exigen rendimiento en un lenguaje compilado, como C, y llamarlas desde un programa escrito en un lenguaje dinámico, como Python.
Pero hoy ya tenemos bibliotecas para Python bien documentadas y fáciles de usar (pygame, pyopengl, pyassimp, pybullet, numpy), que se implementan principalmente en C/C y proporcionan funciones para cálculos pesados. o física/gráficos en particular. Es posible que nunca nos enfrentemos a la necesidad de implementar dichas bibliotecas por nuestra cuenta.

¿Es C la única opción?

Generalmente se acepta que los lenguajes de recolección de basura, como Java o C#, son más lentos que C y realmente no cumplen con los requisitos para cálculos pesados. Por supuesto que esto no es cierto.
C puede superar a Java o C# en rendimiento en un 20-30% en algunos casos especiales, pero cuando se trata de abstracciones de tiempo de ejecución, como el envío de funciones dinámicas, la interacción de idiomas, las tareas asincrónicas, la gestión de colecciones de texto o resúmenes, Java y C# muestran una eficiencia mucho mayor que C.
Además, podemos ejecutar nuestros programas Python en el mismo tiempo de ejecución con Java o C#, usando Jython o IronPython. Ofrece muchos beneficios, como memoria compartida de recolección de basura, sistema de tipos y fácil acceso a bibliotecas de C# o Java desde el primer momento. En Java se implementan lenguajes dinámicos tan agradables como Clojure y Groovy, que tienen acceso completo a la biblioteca de clases de Java y comparten los beneficios mencionados anteriormente.

¿Qué es lo que realmente influye en el rendimiento?

Hoy en día, las computadoras personales son mucho más rápidas que hace 15 o 20 años. Pero la mayoría de los programas o juegos de escritorio no funcionan tan rápido como se esperaba (a pesar de que todavía están implementados en su mayoría en C/C). Hoy en día necesitamos buenos algoritmos y enfoques efectivos mucho más que solo velocidad del lenguaje. La función con complejidad constante en Python es más preferible que la función con complejidad lineal en C. Pintar 100 árboles con 15 líneas de código Python es más preferible que pintar 500 árboles con 300 líneas del código C.

Preocúpate por el juego, no por el idioma.

No es realmente importante qué idioma usas cuando no tienes ningún juego creado, ¿verdad?
Crear un juego en C es mucho más exigente y agotador que hacerlo en Python o Ruby. Cuando crearías 1 juego con C , crearías 10 juegos con Python. Cuando crearías 5 juegos con Python, serían 0 juegos con C .
Preocupémonos por los juegos y la diversión; si no, ¿qué sentido tiene?

Declaración de liberación Este artículo se reproduce en: https://dev.to/taqmuraz/speed-obsession-in-the-game-industry-1p4i?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3