C# es uno de los lenguajes de programación más populares que se utilizan para crear juegos en el motor de juegos Unity. Las experiencias (juegos, apps AR/VR, etc) construidas con Unity han llegado a casi 3 mil millones de dispositivos en todo el mundo y se instalaron 24 mil millones de veces en los últimos 12 meses. Hablamos con Harrison Ferrone, ingeniero de software, desarrollador de juegos, tecnólogo creativo y autor del libro «Learning C# by Developing Games with Unity 2019». Hablamos de por qué se utiliza C# para el diseño de juegos, de la reciente versión de Unity 2019.2 y de algunos consejos y trucos para los que desarrollan juegos con Unity.
Sobre C# y el desarrollo de juegos
¿Por qué se utiliza tanto C# para crear juegos? Cómo se compara con C++? ¿Cómo se utiliza C# en otras áreas como el desarrollo móvil y web?
Creo que Unity eligió avanzar con C# en lugar de Javascript o Boo debido a su curva de aprendizaje y su historia con Microsoft. .
En mi experiencia, C# es más fácil de aprender que lenguajes como C++, y esa accesibilidad es un gran atractivo para los diseñadores de juegos y programadores en general. Con el desarrollo móvil de Xamarin y las aplicaciones web de ASP.NET en la mezcla, realmente no hay que parar el lenguaje C# en un futuro próximo.
¿Qué son los scripts de C#? Cómo son útiles para crear juegos con Unity?
Los scripts de C# son los archivos de código que almacenan los comportamientos en Unity, potenciando todo lo que hace el motor. Aunque hay un montón de nuevas herramientas que permitirán a un desarrollador hacer un juego sin ellos, los scripts siguen siendo la mejor manera de crear acciones e interacciones personalizadas dentro de un espacio de juego.
Consejo del editor: Para empezar a saber cómo crear un script de C# en Unity, puedes consultar el capítulo 1 del libro de Harrison Ferrone Aprender C# desarrollando juegos con Unity 2019.
Sobre por qué Harrison escribió su libro Aprender C# desarrollando juegos con Unity 2019
Cuéntanos la motivación que hay detrás de escribir tu libro Aprender C# desarrollando juegos con Unity 2019. Por qué desarrollar juegos en Unity es una buena forma de aprender el lenguaje de programación C#? Por qué prefieres Unity sobre otros motores de juegos?
Mi principal motivación para escribir el libro fue doble. En primer lugar, siempre quise ser escritor, por lo que unir mi amor por la tecnología con un sueño de toda la vida era una obviedad. En segundo lugar, quería escribir un libro para principiantes que se mantuviera fiel a un público principiante, teniéndolo siempre presente.
En cuanto a la elección de los juegos como medio de aprendizaje, he descubierto que hacer algo interesante y novedoso mientras se aprende un nuevo conjunto de habilidades conduce a una mayor absorción del material y a un mayor disfrute general. Unity siempre ha sido mi motor preferido porque su interfaz es muy intuitiva y fácil de empezar.
Tienes 3 años de experiencia creando aplicaciones para iOS en Swift. También tienes varios artículos y tutoriales sobre lo mismo en la web de Ray Wenderlich. Recientemente, empezaste a ramificarte en C++ y Unreal Engine 4. ¿Cómo llegaste al diseño de juegos y al desarrollo de Unity? ¿Qué te hizo interesarte por la creación de juegos?
En realidad me metí primero en el diseño de juegos y el desarrollo de Unity, antes de toda la experiencia con iOS y Swift. Fue mi especialidad en la universidad, y aunque no pude encontrar un trabajo en la industria de los juegos justo después de graduarme, seguí manteniéndolo como una pasión.
Sobre el desarrollo de juegos
La última versión de Unity, Unity 2019.2 tiene una serie de características interesantes como ProBuilder, Shader Graph, y efectos, Animación 2D, Burst Compiler, etc. Cuáles son algunas de tus características favoritas en esta versión? Cuáles son tus expectativas de Unity 2019.3?
Estoy muy entusiasmado con ProBuilder en esta versión, ya que es un gran ahorro de tiempo para alguien tan artísticamente desafiado como yo. Creo que herramientas como esta nivelarán el campo de juego para los desarrolladores independientes que pueden no tener acceso al entorno o a los constructores de niveles.
¿Cuáles son algunos consejos y trucos esenciales que un desarrollador de juegos debe tener en cuenta al trabajar en Unity? ¿Cuáles son los que hay que hacer y los que no?
Diría que lo más importante que hay que tener en cuenta al trabajar con Unity es la arquitectura de componentes sobre la que está construido. Cuando escribas tus propios scripts, piensa en cómo se pueden separar en sus funciones individuales y estructúralos así, con un propósito. No hay nada peor que tener un enorme e hinchado script en C# que hace todo bajo el sol y adjuntarlo a un único objeto de juego en tu proyecto, para luego darte cuenta de que realmente necesita ser separado en sus partes componentes.
¿Cuáles son los mayores desafíos hoy en día en el campo del desarrollo de juegos? ¿Cuál es su consejo para aquellos que desarrollan juegos utilizando C#?
Llegar al público adecuado es siempre el reto número uno en cualquier industria, y el desarrollo de juegos no es diferente. Esto es especialmente cierto para los desarrolladores de juegos indie, ya que siempre tienen que ser conscientes de para quién están haciendo su juego y diseñar y programar sus juegos en consecuencia. En cuanto a los consejos, siempre digo lo mismo: aprender patrones de diseño y metodologías de desarrollo ágil, abrirán nuevas vías para la programación profesional y la gestión de proyectos.
Rust ha sido promocionado como uno de los sucesores de la familia de lenguajes C. El estado actual del desarrollo de juegos en Rust también es bastante alentador. ¿Qué opinas de Rust para el desarrollo de juegos? ¿Crees que los principales motores de juegos como Unity y Unreal soportarán Rust para el desarrollo de juegos en el futuro?
No tengo ninguna experiencia con Rust, pero es poco probable que los principales motores como Unity y Unreal adopten un nuevo lenguaje debido al enorme coste asociado a un cambio de esa magnitud. Sin embargo, eso también deja abierta la posibilidad de que se desarrolle otro motor en torno a Rust en el futuro que tenga como objetivo los juegos, los móviles y/o el desarrollo web.
Acerca del autor
Harrison Ferrone nació en Chicago, IL, y se crió por todas partes. La mayoría de los días, puedes encontrarlo creando contenido instructivo para LinkedIn Learning y Pluralsight, o editando tecnología para el sitio web de Ray Wenderlich. Después de unos años como desarrollador de iOS en pequeñas empresas de nueva creación, y una empresa de Fortune 500, cayó en una carrera de enseñanza y nunca miró hacia atrás. A lo largo de todo esto, ha comprado muchos libros, ha adquirido algunos gatos, ha trabajado en el extranjero y se ha preguntado continuamente por qué Neuromante no está en más programas de cursos. Puedes seguirle en Linkedin, y en GitHub.