He decidido que lo que realmente quiero es hacer programación de juegos. Entonces, la pregunta es, como un joven de 18 años que quiere aprender programación autodidacta, ¿cuál es el lenguaje de programación más adecuado entre C # y C ++? (Debo decir que no me importa Unix porque creo que Windows seguirá siendo el sistema operativo más utilizado)
Conozco los conceptos básicos de C ++, pero ninguno sobre C #. Sé que C ++ tiene más guías de tutoriales, dlls y cosas así, mientras que C # no, pero es mucho más fácil de aprender y usar para que una sola persona desarrolle un programa, pero he leído incluso si el programa está ofuscado Es fácil obtener la fuente.
Bueno, primero quiero enfocarme en lo básico, debo decir que tengo preferencia por C ++ solo porque me parece más adecuado, pero debo considerar que trabajo solo. Entonces, incluso si me gusta, puede que no sea lo mejor que pueda hacer.
Realmente no estoy seguro de cuál elegir, he leído muchos hilos en varios sitios web y parece que C # se está volviendo más popular que C ++. Pero sí, dicho eso, también especifiqué que quiero hacer programación de juegos. Por lo tanto, necesito conocer algunos puntos mejores que "C # es más fácil debido al manejo de la memoria .net mientras que C ++ no lo es" porque no pude encontrarlo.
fuente
Respuestas:
Aprendo C ++ programando un juego. Esa fue una experiencia muy agradable. ¡Te animo a que hagas lo mismo!
Sin embargo, ahora que soy programador de C #, sé que habría sido mucho más productivo si C # estuviera disponible en ese momento.
C # es la elección perfecta para aprender a desarrollar juegos. Tiene todo lo que necesita para comenzar, desde marcos hasta libros, y el lenguaje es increíble.
He visto docenas de libros específicamente escritos sobre C # Game Programming y Microsoft está haciendo muchos esfuerzos para mejorar sus marcos, incluidos DirectX y XNA .
ACTUALIZACIÓN : también puede interesarle esto . Es una publicación reciente del blog de Miguel de Icaza .
ACTUALIZACIÓN 2013-02-22 Microsoft planea dejar de admitir XNA .
fuente
La mayoría de las compañías de juegos usan C ++, tal vez con scripts de python u otros lenguajes que se ejecutan en segundo plano. Más aún porque los enlaces para OpenGL y DirectX están dirigidos a C ++ (aunque estoy bastante seguro de que puedes hacer lo mismo con Direct3d en C #), pero para la programación de juegos, C ++ es el lenguaje PRINCIPAL.
Sin embargo, le daré una advertencia justa (y no deje que esto lo desanime), pero los gráficos 3D pueden ser extremadamente complicados. El nuevo Direct3D lo ha hecho un poco más fácil de lo que solía ser, pero sigue siendo una buena parte de las matemáticas (eso puede ser bastante confuso) y solo las bibliotecas pueden ser confusas.
Comenzaría con algo muy simple primero. para 2d stuff SDL (Simple Directmedia Layer) es mucho más fácil de usar (para algo así como un juego de arriba hacia abajo) una vez que entras en 3D PERSONALMENTE creo que OpenGL es más fácil de aprender (pero esto es todo opinión). MS tiene algunos buenos Tutoriales / Muestras en su documentación DirectX SDK, por lo que vale la pena echarle un vistazo. Los tutoriales de Nehe, aunque un poco anticuados, siguen siendo agradables.
pero para responder a su pregunta, todas se hacen en C ++ normalmente.
fuente
Primero querrás establecer algunas prioridades. ¿Solo quieres hacer un juego primero y luego aprender sobre los aspectos más avanzados de la programación más tarde, o viceversa? Ambos enfoques tienen sus pros y sus contras, pero son legítimos en mi opinión.
Si quieres comenzar a hacer juegos, te recomendaría aprender C #. Si ya conoce los conceptos básicos de C ++, entonces no debería tener problemas para elegir C #. Hacer de C # su herramienta tiene ventajas. Es un lenguaje fácil de aprender (en comparación con C ++) y es un "lenguaje administrado", lo que significa que automáticamente realiza la conexión de memoria por usted (algo que muchos principiantes de C ++, e incluso no tan principiantes, tienen problemas con ) También le da acceso al Marco XNA de Microsoft que hace aún más la tediosa fontanería por usted. Eso te deja concentrarte en cosas como el ciclo y el diseño del juego, sin tener que preocuparte (demasiado) por hacer que funcione. Es cierto que toda esta instalación de fontanería tiene su sobrecarga, lo que significa que probablemente no estarás haciendo juegos 3D de calidad industrial, pero solo estás entrando en la programación de juegos, así que dudo que hagas el próximo Halo en tus primeros intentos. :)
Aquí hay un post mortem del tipo que desarrolló un exitoso juego XNA (Weapon of Choice). Detalla cómo usar C # / XNA le ha ahorrado tiempo de desarrollo en lugar de tener que usar C ++. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php
Dicho esto, debes invertir algo de tiempo en al menos saber cómo funcionan las cosas en segundo plano. Cómo lo haría un programador de C ++. Aprender a crear un juego en C ++ podría facilitarle unirse a otro equipo de desarrollo de juegos (ya que la mayoría de ellos trabajan en C ++), si lo que quiere es ganar terreno en la industria del juego. Pero incluso si terminas nunca usando C ++, saber cómo funcionan las partes internas solo puede hacerte un mejor programador, sin importar el lenguaje que uses.
fuente
Promuevo altamente C ++ para el desarrollo de juegos. Hay algunos obstáculos adicionales, con varios pros y contras, una de las mejores razones es la portabilidad.
Con C #, puede desarrollar bastante más en estos días, y hay algunos motores increíblemente geniales programados con seguridad. Ambos son buenos lenguajes para la programación de juegos, si se dirige solo a plataformas Windows / Xbox, entonces tendrá una razón especial para inclinarse hacia C #.
El idioma que más creo que debería aprender sería OpenCL o CUDA, un lenguaje GPGPU. Personalmente, prefiero OpenCL, ya que parece que durará más y crecerá, es básicamente solo el estilo C. Hay OpenTK, que es un buen contenedor para C ++ o C #.
Siempre me he preguntado cómo sería la programación de juegos de Ruby con la aceleración de hardware ...
fuente
La programación cruda del juego te dejará bastante frío. Trabajar con llamadas de gráficos de bajo nivel en C # o C ++ es una pesadilla menor y realmente no desea reconstruir la rueda de renderizado de sprites 2D y mucho menos modelos 3D. Como estás solo y quieres aprender programación, tu mejor opción es encontrar un marco que te pueda adelantar un poco.
Dado que está familiarizado con el lenguaje basado en C, mi sugerencia sería darle un vistazo a Unity 3D . No solo está experimentando una seria aceptación en la adopción de las tiendas comerciales de desarrollo de juegos, y tiene algunas opciones de plataforma interesantes (que incluyen PC, Android, iPhone y tiempos de ejecución web), sino que también tiene una versión gratuita que es muy fácil de usar y muchos tutoriales para mostrarle cómo pasar del concepto a la implementación. Lo mejor de todo (IMO), uno de los lenguajes de script admitidos es C #.
fuente
Hice un juego para una clase hace dos años (yo también tenía 18 años en ese momento) y lo hicimos en C #. Si bien observo que los programas grandes de C # generalmente funcionan más lentamente que los programas grandes de C ++, C # también requiere mucho menos trabajo por su parte. La gestión de la memoria se realiza automáticamente, y para el alcance de un primer juego, es lo suficientemente rápido. (Nuestro juego es un RTS multijugador 2D completo como Starcraft).
Buscaría C # ya que debería ser más fácil de administrar. Sin embargo, si quieres convertirte en un desarrollador de juegos profesional, recuerda que solo funciona en las plataformas de Microsoft. (Aún así, C # puede ser un buen trampolín para C ++, y si tuviera que volver a aprender los dos idiomas, primero trataría de aprender C #).
fuente
Votaría C ++, principalmente porque puede ser multiplataforma (dependiendo de cómo escriba su código, por supuesto) y también porque creo que le brinda más conocimiento sobre la administración de memoria, porque necesita preocuparse por ello. Pero dado que no le importa Linux / Unix, si desea dejar la complejidad de la memoria por el momento, ¿por qué no enfocarse en C # en este momento y luego aprender C ++ también?
fuente