¿Cómo debo prepararme para un trabajo de programación de juegos?

Consideraré el gamedev tradicional para el propósito de esta respuesta.

Webdev y gamedev (técnicamente) tienen muy poco en común.

La mayoría de los estudios más grandes realizan desarrollo de motores en C ++ y programación lógica en una combinación de C ++ y otro lenguaje de script (lua, js, C # en el caso de Unity).

La implementación de la lógica del juego requiere una comprensión sólida de los conceptos de animación: cómo mover / rotar / escalar un objeto a través del tiempo. Eso es lo que vas a usar cuando animes un botón en la interfaz de usuario o cuando vayas a crear prototipos de movimientos simples de objetos 3D. Parece que tienes esa parte abajo si ya tienes varios prototipos.

Dependiendo del tamaño del equipo, el proyecto y sus herramientas, es posible que necesite conocer los problemas de renderización, física, audio, ai, redes y programación en tiempo real en general.

Finalmente, gamedev es un campo multidisciplinario: debes hablar con otros programadores, diseñadores, artistas, animadores, ingenieros de sonido, productores, directores y muchos más. Cada uno tiene un estilo de trabajo diferente, prioridades diferentes, formas diferentes de resolver un problema. No es inusual rehacer la misma pieza de IU 10 veces porque el diseñador de UI no está contento con cómo se siente.

Me parece que también es posible que no tengas antecedentes sólidos en un campo específico de gamedev (renderizado / iluminación, ai, redes, audio, física). Si ese es el caso, le aconsejaría que intente obtener una posición de programación lógica general. Ahí es donde implementas todas las cosas que harán que el juego sea divertido de jugar, pero que no sea (comparativamente) el más desafiante técnicamente. Usted mencionó no estar bien versado en C ++ y conocer Unity. Veamos cómo nos trae eso:

Sobre C ++:

  • Es poco probable con su nivel de experiencia que termine trabajando en el equipo de I + D o el equipo del motor. Ahí es donde el nivel de codificación C ++ es el más importante.
  • ¿Conoces la sintaxis básica? Puedes recogerlo en un par de días.
  • ¿Conoces tu camino con los punteros? Simplemente haga todo tipo de problemas relacionados con los punteros (aritmética de punteros, referencia / desreferencia, conversión de tipos, memoria de acceso directamente, …) hasta que ya no tenga miedo de usarlo.
  • aprenda sobre la corrección de constantes y cúmplala
  • lo más probable es que no necesites plantillas para la programación general de la lógica del juego
  • lo más probable es que no debas usar ninguna macro “compleja” para la programación de lógica general

Sobre la unidad:

  • Es un entorno de desarrollo integrado para el desarrollo de juegos. Conocer su filosofía general y cómo usarlo es tan importante como saber programarlo.
  • ¿Conoces bien todos los scripts? De lo contrario, conozca la mayoría de los puntos de entrada de la API (despierto, inicio, actualización, antes de la actualización, todas las devoluciones de llamada para cada evento diferente, etc.).
  • ¿Conoces C # muy bien? Supongo que cualquier juego “más grande” tenderá a funcionar con C # ya que tiene las mejores herramientas. También es más fácil tener una buena estructura de código en C # que, por ejemplo, en la secuencia de comandos de la unidad. Aprende C # muy bien. Es divertido e interesante en sí mismo.
  • Está bien si no sabe mucho sobre los genéricos de C # por ahora, pero puede terminar usándolos de vez en cuando.

Si hay estudios que usan Unity, entonces hazlo, especialmente si ya tienes prototipos en Unity. Es muy fácil hacer cualquier cosa en Unity, por lo que es posible que desee tomarse el tiempo para pulir sus demostraciones y explicar cuál fue el principal desafío que resolvió mientras lo hacía.

Finalmente, hay otras cosas que un fondo de webdev le permite ayudar en una empresa de juegos:

  • trabajando en juegos en línea: suponiendo que tenga experiencia en back-end, puede programar en el lado del servidor. En ese momento, puede olvidarse de C ++ / Unity en su mayor parte. Es una programación web simple y simple donde el cliente es un “juego” en lugar de un navegador.
  • trabajando en herramientas. Trabajo un poco en la programación de herramientas y para mí fue una de las mejores partes de la programación en la industria. Es donde pude ver la mayor satisfacción directa: resolver problemas reales que nosotros (nuestro equipo) estábamos teniendo. Trabajar en herramientas puede no requerir el mismo conjunto de habilidades que describo anteriormente.

Con todo lo dicho, entrar en la industria no es realmente tan difícil. No me refiero a LA, pero la mayoría de los puestos tienden a pagar menos que en las otras industrias de programación y requieren mucho más “trabajo duro” (horas por día).

¡Buena suerte para ti!

Gracias por el A2A.

La mayoría de las compañías de juegos usan C ++, especialmente los estudios AAA, y es imprescindible para cualquier persona seria sobre una carrera en el desarrollo de juegos, incluso si terminas trabajando en una compañía independiente usando Unity y C #.

Si te estuviera entrevistando, me gustaría ver que conoces los conceptos básicos de lo que hace un juego. El ciclo de actualización del juego, IA básica, cosas de E / S, detección / respuesta de colisiones simples, un poco de administración de memoria, carga / almacenamiento / uso de activos, etc. No tiene que convertirse en un experto en estas áreas, solo demuestre que tiene un conocimiento pasajero de aproximadamente lo que implica el desarrollo del juego.

Ya tienes un poco de experiencia y un par de cosas que mostrar, así que estás a medio camino. Su experiencia con los lenguajes web y C # es una ventaja.

Recomendaría hacer un par de juegos muy simples en C ++. Incluso un juego como el pong, los asteroides, los invasores espaciales o el pájaro flappy necesitarán todo lo que mencioné. Hay muchos lugares donde puede obtener gráficos gratuitos y muchos motores de juego / gráficos básicos para elegir.

OpenGameArt.org

Motores de juego C ++

Agarrarlos, juntarlos en un juego. No tiene que ser bonito, no tiene que ser divertido. Simplemente estaría buscando buenas bases de conocimiento y una pasión por el proceso.

Geometría analítica

Vectores, matriz, estructuras de datos, gestión de memoria

Hay varias áreas para el desarrollo del juego.

More Interesting

¿Qué tan grande fue el mayor equipo de desarrollo de software en el que has trabajado? ¿En qué estabas trabajando?

¿Qué cursos orientados al trabajo se pueden seguir si no borra sus exámenes de ingreso de ingeniería?

¿Alguna vez ha sido rechazado de una empresa, pero luego solicitó un puesto diferente y fue contratado?

¿Se requiere una certificación CAMS para seguir una carrera en el dominio AML / KYC?

¿Son los trabajos una forma de servidumbre financiera?

¿Trabajar después de la escuela secundaria con la esperanza de recaudar dinero para la universidad es realmente contraproducente en lugar de pedir préstamos y completar la universidad lo antes posible?

¿Qué es un jornalero maquinista?

¿Cuáles son las responsabilidades de un auditor?

¿No se les permite a los estudiantes internacionales trabajar en Estados Unidos?

¿Cuáles son algunas sugerencias de carrera para los graduados geológicos recientes en Indonesia?

¿Cuál fue tu primer trabajo de programación?

¿Qué tipo de trabajos puede hacer un físico fuera de la academia?

¿Qué sería mejor: el curso PGD de CDAC PUNE o la capacitación laboral de RAVINDRABABU RAVULA en tecnologías a partir de 2016?

¿Debería convertir su pasatiempo en una carrera, o tener una carrera que genere suficiente dinero para poder seguir cómodamente su pasatiempo?

Comenzaré un nuevo trabajo en un par de meses después de haber trabajado para otra empresa durante 11 años. ¿En qué debería centrarme o prestar más atención cuando empiezo?