Un programador de videojuegos es la persona que toma la visión del diseñador y logra que funcione realmente en el motor de juego que usamos. Trabajo en el equipo de programación de juegos móviles en Kwalee, así que para nosotros es principalmente Unity. Por ejemplo, si el diseñador quiere que un dado ruede de una manera particular, escribiré el script para manejar la lógica. También colaboramos con los artistas del juego para asegurarnos de que nuestros juegos no solo se vean increíbles sino que también logren un gran rendimiento en los dispositivos.
En este blog, me basaré en mis cinco años trabajando en Kwalee para compartir ideas y consejos esenciales sobre ser un programador de videojuegos. Te guiaré a través de algunos de los lenguajes, herramientas y principios que usamos, mis consejos de carrera, así como consejos para principiantes y avanzados.
¿Qué Hace Un Programador De Videojuegos?
Escribimos el código y ayudamos a que el juego se convierta en una realidad. Mientras que los diseñadores de juegos crean los conceptos y los artistas crean los activos, un programador creará la experiencia funcional y jugable. Creamos y optimizamos el rendimiento del juego y solucionamos cualquier problema identificado.
Nos aseguramos de que un juego se sienta genial y funcione con un alto rendimiento. Para hacerlo, tenemos que asegurarnos de que el código en sí mismo sea limpio y extensible, lo cual es más difícil de lo que piensas. Usamos estándares de codificación para mantener una calidad consistente en todos nuestros equipos - un documento que puede contener estándares de nomenclatura, formato, etc. Sin embargo, a veces las cosas no siempre son tan sencillas y de vez en cuando es necesario pensar fuera de la caja para lograr las cosas a tiempo.
Nuestras responsabilidades también incluyen asegurarnos de que el juego funcione bien en el hardware del usuario final. Por ejemplo, en nuestro caso en los juegos móviles, necesitamos evitar que los dispositivos más antiguos se calienten demasiado, así que trabajamos con los artistas para optimizar la cantidad de comandos de dibujo. Un comando de dibujo es una instrucción enviada desde la Unidad Central de Procesamiento (CPU) a la Unidad de Procesamiento Gráfico (GPU) para renderizar un objeto en la pantalla - le dice a la GPU que dibuje elementos gráficos como texturas, mallas o sombreadores. Necesitamos minimizar estos comandos de dibujo en nuestro juego porque tener demasiados puede causar problemas como caídas de fotogramas o entrecortes. Hay muchas formas de resolver esto, pero cosas como agrupar múltiples objetos en un solo comando de dibujo o reducir el número de texturas y materiales únicos pueden ayudar. Esto es especialmente importante para dispositivos móviles, ya que hay tantos dispositivos diferentes en el mercado, todos con especificaciones técnicas variables.
¿Cuáles Son Los Principales Lenguajes De Programación De Videojuegos?
Pasamos la mayor parte de nuestro tiempo diario como programadores de videojuegos escribiendo en uno de una variedad de lenguajes de programación - después de todo, somos desarrolladores de software de un tipo diferente. Hay muchos lenguajes para elegir. Algunos parecen más fáciles que otros, pero una vez que has aprendido y dominado uno, definitivamente puedes aprender otros - el principal desafío es dar el primer paso.
Aquí tienes una introducción a algunos de los lenguajes de programación de videojuegos más populares:
- C# - un lenguaje de programación versátil y popular utilizado ampliamente en el desarrollo de juegos. Es uno de los más fáciles de aprender si eres principiante. Una de sus mejores características es la colección de basura automática, lo cual es muy útil para programadores ocupados como nosotros.
- C++ - en contraste, este es un lenguaje no gestionado, por lo que tienes que asignar y desasignar memoria manualmente, lo que lo hace más complejo y difícil. Sin embargo, permite una mayor velocidad, control y rendimiento.
- Java - al igual que C#, Java tiene su propia gestión de memoria y colección de basura, facilitando a los desarrolladores manejar la memoria sin enredarse en los detalles. Es ampliamente utilizado en el desarrollo web y aplicaciones empresariales, y aunque quizás no sea la primera opción para el desarrollo de juegos, sigue siendo una opción sólida para crear aplicaciones escalables y eficientes.
- Swift - este es el lenguaje nativo de Apple para crear aplicaciones y juegos para iOS y macOS. Sin embargo, esto significa que es menos útil para el desarrollo multiplataforma, ya que nuestro objetivo es siempre publicar nuestros juegos móviles tanto en Android como en iOS.
¿Cómo Convertirse En Un Programador De Videojuegos?
Hay varias formas diferentes de convertirse en un programador de videojuegos. Mi ruta es bastante convencional - estudié Diseño y Programación de Juegos en la Universidad de Staffordshire. Originalmente, pensé que iba a dedicarme al arte del juego - siempre fui muy apasionado por el arte cuando era niño, además disfrutaba mucho de los módulos de arte en la universidad, pero mientras estaba allí descubrí que realmente disfrutaba creando jugabilidad. Podía tardar varios días en crear un solo modelo de alta poligonización, pero podía hacer que un pato volara y explotara en la mitad del tiempo. Prototipar me permite ver el resultado rápidamente frente a mí.
Sin embargo, lo hermoso de programar juegos es que es accesible para la mayoría de las personas, incluso si no vienes por la ruta tradicional. Tenía amigos en la universidad de 50 años o más - nunca es demasiado tarde para experimentar algo nuevo. En Kwalee, incluso hemos contratado a alguien que aprendió principalmente a través de videos de YouTube e hizo un juego por diversión. Hoy en día hay muchas oportunidades para el talento fresco y entusiasta. Al mirar los portafolios de nuevos estudiantes, tienen mucho más bajo su cinturón. Vemos un talento fantástico surgir y es un momento emocionante en la industria.
Una pregunta que probablemente estés ansioso por hacer: ¿afectará la IA a la programación como carrera? Puede ser extremadamente útil, y cada vez está mejor. Es perfecto si necesitas algo explicado o si estás atascado en un problema. Puedes usarlo para solucionar problemas, o refactorizar ("limpiar") tu código pegándolo en el último ChatGPT. Sin embargo, cuando miramos los portafolios, queremos ver el trabajo que has hecho y del que estás orgulloso, está bien usar la IA, pero trata de no usarla como reemplazo de tus propias habilidades.
¿Cómo Es Un Día Típico En La Vida De Un Programador De Videojuegos?
Permíteme darte un ejemplo basado en mi vida. Soy un programador líder (lo llamo mi trabajo soñado) así que es una gran mezcla de trabajo práctico y manejo de otros programadores.
Un día típico en mi mundo es llegar, tomar un café con leche, luego revisar cualquier error o bloqueo para el equipo de QA. Revisar con el equipo para ver si alguien necesita que haga algo para desatascar su trabajo. Luego pongo música y se monta la lista de tareas. Compartiremos videos de progreso a través de slack para obtener retroalimentación rápida, mientras también cambiamos entre 2-3 proyectos para apoyar a los miembros de mi equipo. También pasamos mucho tiempo invirtiendo en sistemas compartidos para hacer nuestra programación más eficiente, todo necesita ser mantenido, actualizado y reparado regularmente para que las cosas funcionen sin problemas.
Consejos Para Principiantes En Programación De Videojuegos
Si estás comenzando y aspiras a ser un programador completo, aquí están mis consejos para principiantes.
- Hay mucho para aprender en línea, en YouTube y hay tantos juegos de ejemplo que no tienes excusa para no aprender. Los motores populares son gratuitos y son muy divertidos de usar.
- En el extremo opuesto del espectro, puede tener 30 años, pero deberías intentar leer el libro influyente "Design Patterns: Elements of Reusable Object-Oriented Software" de los autores conocidos como el Gang of Four, que introdujo algunas de las bases de los patrones de juegos que usamos todos los días en programación.
- Puedes tener tus propias ideas, pero asegúrate de comenzar simple para que te establezcas con lo básico.
- Cuando no estás atado a un proyecto comercial, puedes escribir tanto código como desees, así que diviértete creando cosas locas.
- Crear un portafolio es realmente clave (y así es como conseguí mi trabajo). Pero ten mucho cuidado de no solo subir el mismo trabajo estándar de la uni, porque veremos muchas aplicaciones con estos. Incluso pasar un día extra rediseñando y añadiendo más características te ayudará a destacar.
- Crear tu propio juego en el mundo real también es una idea inteligente, es muy barato poner un juego en Google Play, así que lanza algo que puedas mostrar a reclutadores/publicadores/familia/mascotas en tu teléfono. Puede que incluso ganes algunos miles de dólares al año hasta que te prepares con un trabajo exclusivo a tiempo completo, ¡eso es una bonificación! O puede tentarte a crear tu propio juego completo y asociarte con un editor.
- No solo aprendas sobre programación - aprende sobre arte, diseño, QA y otras disciplinas con las que interactuarás. Por ejemplo, vale la pena entender los métodos de QA porque puedes caer en la trampa de asumir que algo funciona, pero necesitas jugarlo como un usuario, no como alguien que escribió el código y tiene una visión definida de cómo esperas que "debería ser jugado". Sé destructivo, intenta las cosas aleatorias que la gente podría hacer, presionando botones aleatorios y otros comportamientos extraños.
Consejos Para Programadores Avanzados
Aquí están algunos de los consejos que me han ayudado a pasar de junior, a programador, a senior y a líder.
- Siempre puedes beneficiarte de más aprendizaje, y recuerda que sin errores no podemos aprender.
- Si realmente te apasiona algo, podrías convertirte en más especializado. Por ejemplo, si te encanta jugar con los sombreadores y los pipelines de renderizado, aprende más sobre cómo usar sombreadores gráficos para expandir tu habilidad para renderizar efectos visuales complejos y usar pipelines de renderizado para optimizar el rendimiento o crear algunos efectos fantásticos.
- Podrías crear algo realmente genial, como un sistema complejo, subirlo a una tienda de activos para mostrarlo si tu contrato lo permite y presumir tu trabajo avanzado. Podrías desarrollar un nicho como un tipo particular de programador, como un programador de jugabilidad, programador de servidores, programador de gráficos o programador multijugador.
- Alternativamente, puedes seguir la ruta de gestión como yo y mentorear a personas. Mi táctica para progresar en mi carrera ha sido absorber nuevas responsabilidades. Primero, empecé mejorando cosas más pequeñas, es decir, pequeños cambios en el flujo de trabajo. Luego hice más fáciles los procesos usando plantillas para ahorrar tiempo al crear nuevos proyectos. Luego tomé gusto por la tutoría y la gestión, lo que me ayudó a ganar más confianza y ahora participo en revisiones entre pares, revisiones de código, organizando talleres y liderando equipos en proyectos.
Ya sea que estés trabajando como parte de un equipo o como gerente, es tan importante dar elogios como lo es dar críticas constructivas. Al revisar el código, ¡es bueno motivar a la gente!
¿Cuáles Son Los Principios Clave De La Programación De Videojuegos?
Hay algunos temas clave que simplemente deben estar en un blog que cubra la programación de videojuegos. Estos son algunos de los aspectos más importantes que consideramos.
Control de Versiones/Control de Fuente
Así como tienes puntos de guardado en los juegos, hay puntos de guardado en el desarrollo de proyectos. Actúan como almacenamiento general para el proyecto y significan que tres o cuatro programadores pueden trabajar en un sistema simultáneamente, hacer un cambio y enviarlo al servidor. Nos permite rastrear esos cambios y retroceder fácilmente si algo se rompera. Si dos desarrolladores trabajan en el mismo archivo, ese archivo se convertirá en parte de una fusión, si hay conflictos, entonces podemos resolverlos manualmente o elegir los cambios de un individuo para aplicar. Esto sucederá mucho al usar Prefabs o Escenas dentro de Unity.
Estos términos a veces se superponen, pero generalmente, el control de fuente se centra en el código y el control de versiones incluye todos los archivos del proyecto, activos y documentación.
Cuando comienzas a usar el Control de Fuentes por primera vez, puede parecer un poco aterrador al principio, puede parecer muy abrumador y cuando se trata de conflictos, puedes encontrarte sin saber qué hacer. Pero la naturaleza del control de versiones te ayuda a guardar momentos en el tiempo, por lo que si estás actualizando frecuentemente y usando mensajes de compromiso detallados, es increíblemente útil y seguro. Puedes revertir a múltiples puntos, tener múltiples ramas, etc. Piensa en él como la red de seguridad de los desarrolladores, para que podamos evitar una versión de Toy Story 2 de Pixar - eliminada accidentalmente y luego recuperada de un disco duro en el hogar de su Director Técnico, en su lugar todo está a salvo en el servidor.
Programación Orientada a Objetos
Este es el tipo de programación que utilizamos principalmente en Kwalee. Utiliza objetos para representar cosas reales o conceptos abstractos, y tiene como objetivo organizar la base de código utilizando principios que reflejen cómo vemos e interactuamos con los objetos en el mundo real. Ayuda a mantener sistemas complejos organizando el código en clases distintas que puedes reutilizar, escalar y mantener más fácilmente.
Por supuesto, hay debate sobre si es bueno o no. Si bien no es el más alto en rendimiento, funciona bien. Al igual que con los lenguajes, cada uno tiene sus propios pros y contras y deberías aprender uno para comenzar y tener una idea de cómo funcionan los lenguajes y los compiladores (traductores de código humano a código de máquina). También puedes considerar otros tipos, como la programación funcional que lo trata más como matemáticas, la programación lógica que usa hechos y reglas o la programación procedural que usa pasos secuenciales.
Patrones de Programación
Estas son cosas maravillosamente útiles, soluciones reutilizables que pueden ayudar con problemas comunes que enfrentarás en tu diseño de software. Te dan una plantilla para solucionar un problema, para que no tengas que reinventar la rueda cada vez y puedas seguir soluciones probadas.
Por ejemplo, el patrón de diseño Singleton te ayuda a asegurar que solo haya una instancia de una clase como un gestor de configuraciones de juego en todo el juego, y te da un punto de acceso global a ella. El código para este patrón significa que solo existe una instancia de la clase SettingsManager, por lo que no necesitas recrearla o duplicarla cada vez que la necesites.
También está el Patrón de Fábrica que puede ayudarte a crear objetos de una manera más organizada y flexible. Puedes definir métodos para generar tipos específicos de objetos, como personajes o ítems, basados en parámetros de entrada, permitiendo crear más objetos de un tipo similar sin comenzar desde cero cada vez.
Espero que este blog te haya dado una idea sobre la programación de videojuegos, ya sea que seas nuevo en el campo o un programador experimentado. Si eres una persona trabajadora pero divertida, serías adecuado para nuestro equipo, así que descubre más sobre carreras en Kwalee. De lo contrario, puedes aprender sobre nuestros juegos móviles o publicación y conocer más sobre lo que lanzamos como desarrolladores y editores.








