¿Debo usar C o C++ para el motor de mi juego?
La respuesta rápida es C++, aunque la pregunta es inválida, porque si quieres hacer un juego no deberías estar programando ningún motor, sino utilizar cualquiera de los framework disponibles. La pregunta es el título de este largo artículo, que me tomé la molestia de leer. Para mi sorpresa la conclusión es que es mejor C porque C++ es muy lento para compilar, y que interrumpe el ciclo de Observar un bug -> Detener el juego -> Corregir -> Compilar -> Probar el juego -> Repetir si necesario (el autor insiste que la conclusión es algo más complicado que eso. Sí, siempre es más complicado)
Además al parecer en la experiencia del autor C++ es lento, genera tantos crashes (caídas del juego) como C y por alguna razón necesita tener control del manejo de la memoria. Minimizar el uso de librerías adicionales por alguna razón es una meta adicional.
Mi experiencia me indica exactamente ir en dirección contraria:
- C++ es más rápido que C porque me permite desarrollar más rápido. En relación al tiempo de ejecución la diferencia es indistinguible porque mi audiencia son jugadores experimentados quienes al menos tienen un i3 y una tarjeta gráfica decente.
- Como C++ me permite escribir código más robusto C++ genera definitivamente menos crashes que C (aunque si eres un programador medianamente competente como lo tienes que ser para poder ser un programador de juegos, tu juego no debería tener crashes . Por favor.)
- Yo no quiero saber nada de manejo de memoria. De hecho yo voy en dirección contraria, yo estoy eliminando cualquier “malloc” o “new Object” de mi código base. Todo debe ser manejado con std::string() o en el singleton de la clase con un único “new Object” universal cuando no hay más alternativa.
- Minimizar el uso de librerías adicionales es ciertamente una meta. Se puede hacer con C++ . C++ no obliga esto, quizás con más razón C te obliga a esto.
En cuanto al camino de un programador, debería ser algo así como C -> C++ -> C <-> C++ -> C++ (aunque como yo empecé en los 80’s el mio fue C -> C++ -> C++) Si conocemos ambos lo suficiente y hemos iterado una y otra vez con 1,2, 20 juegos, descubriremos que debemos dejar de preocuparnos y abrazar a C++ con ternura y confianza. Inténtalo. Tú puedes.