Tenemos un gran proyecto de juego usando Unity en la escuela. Hay 12 de nosotros trabajando en ello. Mi maestro parece estar convencido de que es una herramienta importante para enseñar a los estudiantes, ya que hace que los estudiantes miren desde el nivel superior hasta el nivel inferior.
Puedo entender su punto de vista, y me pregunto: ¿es la unidad un motor tan importante en las empresas de desarrollo de juegos? ¿Hay muchas compañías que lo usan porque no pueden permitirse el lujo de usar otra cosa? Él habla como Unity es un gran jugador en la creación de juegos, pero solo veo que encaja en pequeñas compañías de juegos independientes que quieren hacer un juego lo más rápido posible.
¿Crees que Unity es tan importante en la industria? ¿Pone en peligro el valor de las habilidades de C ++?
No es que no me guste Unity, es solo que no aprendo nada con él, prefiero lograr pequeños pasos con Ogre o SFML.
Además, también tenemos ejercicios de práctica en C ++, pero esos son solo prácticas con teoría, nada más.
Respuestas:
La unidad es una solución perfectamente válida en este contexto. Imagine por un segundo tener 12 personas, la mayoría de las cuales todavía están en el proceso de aprender C ++, escribiendo una aplicación de juego grande y compleja usándola. En la cantidad de tiempo dedicado a la depuración solo, probablemente habrá podido escribir otro juego en Unity.
No digo que saber cómo usar C ++ no sea importante, lo es, especialmente si planeas unirte a la industria de los juegos 'mainstream'. Pero tal vez su instructor tenga razón en este caso: use este proyecto como una experiencia de aprendizaje sobre cómo pensar en la arquitectura de un juego y diviértase haciéndolo. En el proceso, intenta perfeccionar tus habilidades de C ++ usando ejercicios o incluso llegar a escribir pequeños juegos mientras tanto usando SFML o algún otro marco básico.
Cuando todo esté hecho, habrá aprendido mucho, probablemente se convertirá en un mejor programador, y su próximo proyecto puede abordarse en C ++ con mucha más confianza.
fuente
La unidad está creciendo en popularidad en la industria, principalmente en compañías más pequeñas. Sin embargo, es un excelente ambiente de enseñanza. Es una herramienta de enseñanza importante, pero no particularmente común entre las empresas convencionales. Está bien que no lo prefieras.
Sin embargo, permítanme señalar algo aquí, ya que a menudo veo una confusión entre los estudiantes de programación. Las "habilidades C ++" no son muy útiles a largo plazo. Lo que debe buscar son "habilidades de programación" y "habilidades de diseño". Si comprende los conceptos del lenguaje de programación y cómo se combina un sistema de software, entonces el lenguaje realmente no importa. No me considero un desarrollador increíble, pero puedo aprender un nuevo lenguaje y producir código útil en uno o dos días, porque entiendo los fundamentos.
Learning Unity te hará mejor en C ++.
fuente
Sí, pero "pagar" es mucho más que solo valores en dólares.
Sí, el conjunto de características que Unity Pro le ofrece al costo que cobran es ridículo, especialmente teniendo en cuenta el hecho de que son licencias de asiento en lugar de licencias por título.
Pero además de eso, es una herramienta realmente fácil de usar. No pasará tanto tiempo capacitando a artistas y diseñadores sobre cómo usar la tubería de arte. Es fácil decir "simplemente arrastre sus texturas y modelos y estarán listos.
Además de eso, es una de las pocas herramientas que realmente te permite hacer 3D en un navegador con algún tipo de regularidad. Admiten prácticamente todas las plataformas de sombreadores, desde funciones fijas hasta DX9 +, así como Mac y Windows. Esa tecnología por sí sola es invaluable si quieres apuntar al creciente mercado de "juegos basados en navegador".
Desde el punto de vista de la programación, lo que obtienes de Unity es una sólida comprensión del diseño de componentes (en comparación con el rodamiento de tu propio motor C ++, que generalmente es demasiado pesado en el lado de la herencia), así como un entorno muy rápido y visual para probar fuera del código del juego. Es de esperar que aprenda buenas prácticas de diseño utilizando Unity, que puede asumir para futuros motores C ++.
Claro, está bien tener preferencia de un idioma sobre otro. Personalmente prefiero C # sobre C ++. Pero el lenguaje que usa realmente depende de los requisitos del proyecto más que cualquier otra cosa. Los desarrolladores realmente no pueden darse el lujo de ser fanáticos, ya que no desea excluirse del mercado porque no le gustan las herramientas o el lenguaje por una razón u otra.
Además, una vez que realmente aprendes un segundo idioma, puedes ver que en su mayoría solo se trata de aprender nuevas sintaxis y paradigmas, y realmente no es tan difícil, por lo general, agregar nuevas herramientas a tu cinturón de herramientas. Sí, debe aprender y comprender C ++, pero a un alto nivel primero debe comprender un buen diseño.
fuente
El problema central, por lo que puedo ver, no es C ++ o Unity3D, sino que necesita una solución de alto nivel o una solución de bajo nivel .
Una solución de bajo nivel es aquella que se ensucia con los procesos de entrega de entrada, administración de memoria o carga de los modelos. Una solución de alto nivel es que obtienes un paquete ordenado, como Unity3D.
Para mí, si usar Unity3D (o cualquier otro motor de juego) o C ++ depende de los objetivos de su juego y proyecto.
Use Unity3D, si el tiempo de desarrollo tiene que ser rápido y / o su juego no requiere un alto rendimiento o no está en el extremo superior del rendimiento gráfico / computacional. Si desea concentrarse en el juego y las herramientas predeterminadas que proporciona Unity3D están bien, puede considerar usar Unity3D
C ++ con otras bibliotecas, si tiene más tiempo de desarrollo, el juego requiere más potencia computacional / gráfica, o emplea alguna tecnología que Unity3D no puede incorporar.
Lo bueno de Unity3D es que todavía emplea lenguajes de script que reflejan el desarrollo del mundo real (C # o JavaScript). Los conceptos de ingeniería de software y OOP que aprende (Singletons, fachada, máquinas de estado, decoradores, composición) se pueden aplicar en Unity3D. Ayuda a cuidar los procesos de corte de cookies, como la gestión de recursos, el gráfico de escenas, la carga de modelos, el renderizado, el almacenamiento de escenas, etc. Aún mejor, si hay una funcionalidad que necesita que Unity3D no proporciona, puede hacerlo Codificación DLL.
¿Dónde deja eso a C ++? C ++ es un lenguaje, y hay muchos conceptos de programación que puede hacer en C ++ que puede hacer en Unity3D, sin administración de memoria o quizás plantillas (con Unity 3.2, las especificaciones del lenguaje han mejorado para cubrir los cierres, por ejemplo).
Entonces, como he dicho, no es realmente C ++ vs. Unity3D. Es más de "C ++ plus bibliotecas / SDK o rodar su propio motor" frente a Unity3D. Depende de tus metas y objetivos. Para juegos de gama alta o juegos en los que necesita control sobre la canalización o entrada de renderizado, es posible que desee usar C ++ más un motor que le permite meterse bajo el capó. Si no, voy con Unity3D como mi opción predeterminada para los juegos 3D.
Sin embargo, el conocimiento con Unity3d no está bajo la experiencia del capó, pero es un buen lugar para comenzar a aprender el proceso general de desarrollo de juegos. Por ejemplo, probablemente necesitará un semestre de estudio para escribir un renderizador y cargar un modelo en OpenGL, además de una escena básica y una entrada. Lo haces en Unity3D en menos de un día.
fuente
No, Unity3D no pone en peligro las habilidades de C ++. De hecho, conocer C ++ es mucho más importante para un programador de juegos.
Unity3D es una herramienta realmente genial para el desarrollo de juegos. Realmente me gusta, y lo recomendaría para casi cualquier juego, especialmente para equipos pequeños. Pero Unity3D en sí está escrito en C ++; y tienes que saber C ++ (y también un montón de otras cosas de bajo nivel) para entender realmente cómo funciona.
Incluso si usa Unity3D, solo las habilidades de C ++ y la comprensión de bajo nivel de los principios y algoritmos involucrados le permitirán usarlo en todo su potencial. Esto también se aplica a otros motores de juego, por cierto.
Y para hacer un trabajo realmente bueno, para exprimir hasta el último rendimiento de su plataforma de elección y abarcar tantos efectos y algoritmos de última generación como sea posible, no puede usar nada más que C / C ++. Con pedazos de ensamblador, probablemente.
fuente
Por lo que puedo decir, depende de su plataforma de destino, los juegos AAA y los juegos de consola (XBOX, Wii, etc.) generalmente estarán en C ++ para obtener el máximo rendimiento, sin embargo, si está escribiendo un juego basado en navegador, Unity también es frecuente usado.
Sin embargo, en cuanto a su pregunta, creo que tiene que ver simplemente con que herramientas como Unity le brinden un gran marco estandarizado para trabajar, que en un proyecto de medio año puede marcar la diferencia entre un prototipo medio horneado y un juego bastante desarrollado.
fuente
Asistí al Programa de Maestría en Computación Gráfica y Tecnología de Juegos de la Universidad de Pensilvania, donde realizamos todos nuestros proyectos en los niveles más bajos, con proyectos en C ++, OpenGL, CUDA, etc. Nuestros proyectos incluyeron animación basada en la física, animación de personajes arquitectónicos y IK, que representa varias formas de curvas de Bezier ... ya sabes, cosas realmente básicas que aprovechan la experiencia en programación, álgebra lineal y cálculo.
Luego, descargué Unity y descubrí que todo lo que trabajé para crear estaba embotellado en esta suite gratuita que cualquiera puede usar.
¿Estaba molesto por eso? Un poco, lo admito, pero descubrí que tener esa comprensión de la escuela me hace mucho más peligroso cuando utilizo herramientas como Unity. Actualmente trabajo en juegos, donde llevamos los juegos desde el concepto al mercado en menos de un año, y sigo siendo el tipo de referencia cuando se trata de "esas cosas de matemáticas". Mi consejo para ti es pasar por los movimientos; serás absolutamente invaluable cuando ingreses a la industria.
fuente
Puede que tarde en responder, pero esto ayudará a algunas de las personas que tienen esta confusión.
Inicialmente soy un programador de c ++, que solía odiar el uso de motores de terceros (por ejemplo, la unidad), ya que no siento que haya mucho proceso de aprendizaje involucrado en términos de programación de bajo nivel.
Después de intentar la unidad, me encontré con las siguientes cosas que es imprescindible para un desarrollador de juegos: aquí no enumero específicamente a la unidad, sino que enumero las ventajas de ir en perspectiva de ALTO NIVEL.
Arriba están algunas de las razones para elegir un motor de alto nivel. Pero al mismo tiempo, no debe dejar de aprender C ++, ya que es el idioma más necesario y útil para un desarrollador de juegos perfecto.
Primero entienda la visualización en el alto nivel y haga algunos prototipos rápidos con Unity y use esa experiencia en el diseño de un buen juego en c ++.
Pronto volveré a c ++ ya que había ganado una buena experiencia en un nivel superior con la unidad :)
¡Buena suerte!
fuente
C4 Engine es una buena alternativa para aprender programación de juegos con C ++
También hay licencia académica http://www.terathon.com/c4engine/licensing.php
fuente