¿Qué habilidades necesito tener para ser programador en la industria de los videojuegos?

Muchos juegos consisten en un motor, contenido y guiones de juego. Se busca gente que sepa cómo construir motores y trabajar en muchas áreas del desarrollo de juegos. Obtuve mi primer trabajo en juegos al poder mostrar demostraciones de mi trabajo que demostraban que tenía una buena comprensión de la física y un profundo conocimiento de renderizar tuberías.

Si está interesado en el desarrollo de consolas o PC, debe aprender C ++ con seguridad. Cualquier experiencia con el motor irreal o incluso la unidad es un gran lugar para comenzar.

Si está trabajando en juegos sociales, aprender flash, Java Script y HTML5 es útil. También debe considerar la codificación del lado del servidor, así que considere aprender php o java.

Hay muchas áreas para obtener experiencia comercializable. Aquí hay una lista de sistemas que puede encontrar en un juego de consola sobre el que vale la pena aprender:

AI y código de juego (lo divertido)
Pathing, Navigation
Sistemas de animación
Agrupación de activos y vaporización
Física (a menudo vinculada a la animación)
Selección y visibilidad
Representación de tuberías, materiales, mallas y gestión del estado, selección, exportadores, etc.
Sistema de iluminación y sombreado.
Post procesamiento de gráficos
Nivel de detalle y manejo de la escena.
Combate / armas
Sistema de partículas y sfx
Audio y una variedad de subsistemas de audio.
Cortar sistemas de escena
Localización
Interfaz de usuario
Desarrollo de redes y servidores
Tablas de clasificación y almacenamiento en línea
Perfiles y gestión de entradas
Sistema de repetición
Sistema de secuencias de comandos
Cámara
Simulación de multitudes
Simulacion liquida
Sistema de diálogo
Inventario de artículos
Sistema de misiones
Base de datos (como en SQL)
Sistema de daños

Después de agotar los tutoriales y artículos en línea, eche un vistazo a las gemas del juego

Solo quiero aclarar la respuesta de John Romero: debe saber C ++ si está desarrollando una consola AAA. Fuera de eso, rara vez verá C ++.

Para su primer trabajo, conocer el idioma que necesita el proyecto será una ventaja importante. Una vez que haya trabajado durante un tiempo y se haya profundizado, se espera que pueda aprender un nuevo idioma para que sea altamente funcional en unos pocos meses, y finalmente en unas pocas semanas.

Habilidades universales:

  • Capacidad para escribir código claro y conciso . La mayor parte de lo que escribes vivirá durante años. Cuando no lo haya mirado durante más de 6 meses (y ni siquiera recuerde haberlo escrito), debe poder mirarlo, saber lo que estaba haciendo y pensando y corregir los errores / agregar las características.
  • Comprender el ciclo de vida del software . Esto suele ser específico para el motor que usará, pero es la clave para hacer su trabajo correctamente. Comprenda cómo crear instancias nuevas correctamente, qué funciones se activan en qué orden, cómo deberían funcionar las dependencias de objetos y cómo deshacerse de ellas cuando haya terminado. La mayor parte del desarrollo del juego es crear, manipular y destruir objetos del juego.
  • Aprende a hacer preguntas . Hacerlo y hacerlo bien son dos cosas muy diferentes. Hablar con las personas. Haga preguntas sobre la función en la que está trabajando si algo no está claro. Si está haciendo una suposición única, entonces necesita verificar esa suposición con un tenedor de apuestas. Cuando esté codificando y tocando el trabajo de otras personas, hable con ellos. Pregunte sobre las funciones que llamará si no está 100% claro qué está pasando. Esto se duplica para el trabajo del sistema cuando está hablando con un servidor.
  • Adquiere tus decisiones . Cada línea de código que escriba debe ser algo que entienda y esté tomando una decisión deliberada. Variable pública o privada en esa clase: será mejor que sepa por qué eligió una y pueda explicarla. Necesita saber lo que está codificando y debe ser responsable de ello.
  • Depurar depurar depurar . Pasará la mayor parte de su vida arreglando errores y haciendo que las cosas funcionen de la manera que deseen los diseñadores (en lugar de lo que están pidiendo). Espere refactorizar todo su código al menos dos veces, solo para tener en cuenta los requisitos cambiantes.

Obtenga una revisión del código. Siempre siempre haga que alguien revise su código antes de enviarlo al control de origen. Elige a alguien que sea inteligente y esté dispuesto a destrozarte cuando te equivoques. Consigue piel gruesa. Necesitas a alguien que te muestre los errores para que aprendas. No desea encontrar sus errores meses después cuando está bloqueando el juego.

Habilidades específicas para consola:

  • C ++ : conócelo y ámalo.
  • TRC : cada fabricante de consolas tiene una lista de verificación que debe pasar para que se envíe su juego. Saber algo de lo que hay en eso (específicamente las cosas que se superponen con lo que sea que esté trabajando) ayudará a informar su especificación y le permitirá hacer las cosas bien la primera vez / ahorrarle una reescritura más tarde.
  • Depuración de la consola : la depuración remota desde su PC de desarrollo conectada a una consola es diferente. Es una habilidad y necesitas aprenderla.

Habilidades específicas para dispositivos móviles:

  • Aprenda el lenguaje correcto : C # para la unidad. Objective-C para iOS nativo. Java para Android. Java para servidores de fondo. SQL para hablar con los datos.
  • Conozca al menos una plataforma en profundidad : elija una y sumérjase realmente. Los conceptos se aplicarán en forma cruzada pero la profundidad es importante. Claro que puede enviar una notificación push, ¿puede enviar notificaciones enriquecidas? ¿Sabes cómo presionar no donde estás y enviar un mensaje directamente a otro usuario sin abrir tu aplicación? ¿Qué hay de conocer la tubería de microtransacción / tienda? ¿Cuándo restaura las compras? ¿Cómo manejas una venta interrumpida antes de que gasten dinero? ¿Después de gastar dinero pero no obtuvieron respuesta? ¿Cómo manejan los consumibles y los no consumibles? Cada plataforma es diferente pero necesitas entender las piezas

Primero, debes conocer C ++. Sepa cómo depurar correctamente su código. Sea capaz de diseñar sistemas de juegos de manera inteligente, es decir, observe cómo se han implementado otros sistemas similares y trabaje ese diseño en su juego. Mantente transparente en cómo codificas. Asegúrese de que su líder sepa cómo está resolviendo el problema actual. Concéntrese en su trabajo. No te aleatorices, mantente en el objetivo. Termina los juegos.

Me preguntaste justo cuando había terminado una presentación sobre este tema, en una universidad local. Aquí hay una selección de la misma (del POV de un productor, no de un líder tecnológico)

Sistemas en el juego y habilidades relacionadas:

Sistemas

  1. Base de datos de objetos del juego
  2. Renderizador 3D
  3. Física
  4. Sistema de animación
  5. Sistema de audio
  6. Reproducción de películas
  7. Script sys, editores, E / S
  8. UI / UX / HID / controlador
  9. Redes para MP
  10. AI

Habilidades necesarias

  1. DBA, base de datos, SQL
  2. Gráficos, matemática 3D
  3. Física, matemática, optimización.
  4. Tiempo, objetos, relaciones
  5. Audio, códecs, surround, loc
  6. Video, códecs
  7. Generalista C ++
  8. UI, nivel de conductor, hápticos
  9. Cliente / servidor, topologías
  10. AI, aprendizaje automático

    Sistema externo de soporte de sistemas y habilidades

Sistemas

  1. Construir sistemas
  2. Seguridad, anti-trampa
  3. Analítica
  4. Conexión de socios Steam / PSN
  5. Parches, descargas, actualizaciones
  6. Economía de juego / mercado
  7. Trailers, streaming, promociones
  8. Comunidad Mod
  9. eSports, escaleras, sitios, tiendas
  10. Puertos de plataforma cruzada

Habilidades necesarias

  1. Linux, compilaciones, prueba automática, P4, cocineros
  2. Seguridad / especialización web
  3. Bigdata, visualización, matemática
  4. Web / red, API, integraciones
  5. Liberar mgmt., Ciclo de prueba
  6. Economía, servidores de obj, efectivo
  7. Video, transmisión de tecnología, formatos
  8. Editores, herramientas, documentación.
  9. Web, seguridad, efectivo
  10. Especialización HW, estándares, TRC

Términos de interés del currículum aleatorio:

Renderizado, Transformaciones, Trazado de rayos, Física, Postprocesamiento, IA, Base de datos, SQL, C ++, Códec, Audio, Animación, Textura, Optimización, Gestión de memoria, Cliente / Servidor, Tráfico, DirectDraw, Open GL, Normals, Renderizado diferido, 3Space, Draw llamadas, Seguridad, Red, Administración, Analytics, MASM, Editor, Bink, Control de versiones, Build Master, Hardened, Action Script, Cooking, Compression, Agile, Scrum, Steam, Console, Platform, EFIGS, Conversión, Engine, Estándares, IGDA

Ejemplos de programadores de juegos quieren anuncios en Gamasutra y GamesBiz dot net.

Sobre el arte y el negocio de hacer juegos (Gamasutra)

  • Programador de UI
  • Ingeniero web
  • Programador del servidor
  • Programador de animación / IA
  • Programador de unidad / motor

Términos comunes: “C ++, álgebra lineal, matemáticas, física, jugador de equipo, iterativo, creación de prototipos, creativo”

En http://Gameindustry.biz

  • Programador de herramientas
  • Programador de juego
  • Programador de audio
  • Programador de juegos móviles
  • Desarrollador de juegos asociado

Términos comunes: “Trig, matemática 3D, C ++, Python, familiarizado con motores, depuración, AWS, nivel API, Java”

Otras opciones:

  • Companion App Maker
  • Especialista de puerto a plataforma
  • Middleware Maker

¡Perdona el corte y pegado descarados!

Cuando entrevisto a candidatos para un puesto de programación de juego, primero busco lo siguiente:

  • Habilidad social: la mayoría del trabajo de un programador de juegos implica la comunicación con artistas, diseñadores y otros programadores. Debe poder trabajar en equipo, comprometerse y aprender de los demás. No descartes esto; Un genio que también sea un imbécil o un mal comunicador no será contratado.
  • Matemáticas 3D: debe estar bien versado en vectores y matrices de rotación al menos. El conocimiento de cuaterniones, cálculo y métodos numéricos es una ventaja.
  • C ++: debe poder diseñar en C ++ a un nivel avanzado. Las peculiaridades triviales de la sintaxis del lenguaje no son importantes, pero debe comprender la estructura del código y los tipos de datos estándar. Esto es específico para el tipo de programación que hago, y no será relevante para algunos trabajos de programación de juegos.
  • Experiencia: debe poder hablar sobre los grandes sistemas que ha diseñado e implementado para los juegos. Esto no necesita ser un trabajo remunerado, por lo que si está buscando ingresar a la industria, entonces debe enfocarse en proyectos personales que pueda usar para demostrar su habilidad.

Estos son los conceptos básicos. Cuando estoy contratando para un puesto específico (IA, gráficos, animación, etc.) profundizaré en esas áreas mucho más profundamente, pero todos los candidatos deben calificar en estas áreas.

Eres un programador, ya veo. Básicamente, puedes comenzar mucho más rápido para ser un programador de juegos.

Primero, debes tratar de decidir en qué tipo de juego quieres trabajar: ¿un juego de consola / escritorio? un juego para móviles? un juego web? un juego de facebook?

Y segundo, debes tratar de decidir qué tipo de programador quieres ser: ¿un programador de juegos? un programador de IU? un programador de IA? un programador de herramientas? Sin embargo, eso es para una gran compañía de juegos AAA. Si quieres ir de forma independiente o trabajar en una pequeña empresa de juegos, es probable que seas un generalista que pueda desempeñar la mayoría de los roles anteriores, si no todos.

Entonces, después, debe aprender las habilidades que se necesitan a partir de esas dos respuestas. Puede utilizar un motor de terceros, lo que recomiendo, ya que aceleraría el tiempo de desarrollo. O también puede hacer su propio motor desde cero, o desde bibliotecas como SDL. Si quieres conocer el funcionamiento interno de los motores de juego, esta es la mejor manera. Pero probablemente te costará más tiempo. Para su información, algunos grandes juegos se hacen de esta manera. Como FTL y Xenonauts.

Para motores de terceros, recomiendo Unreal Engine si quieres entrar en la industria de los juegos AAA. Es uno de los motores más usados, si no el más usado, para hacer un juego. Tiene sus propias secuencias de comandos, pero también requeriría conocimientos de C ++ para personalizarlo según sus necesidades. El conocimiento de esto hará que su búsqueda para encontrar trabajo en una compañía de juegos AAA sea mucho más fácil. Si quieres usar dispositivos móviles, Cocos2D o Unity 3D son las mejores opciones ahora mismo en mi humilde opinión. Yo mismo estoy usando Unity 3D.

Luego, una vez que conoces tus herramientas y puedes hacer un juego, aparecen habilidades más avanzadas como depuración, optimización, trabajo en colaboración, etc. Punto de bonificación si también puedes conocer la otra parte además de la programación, como el diseño. Sería de gran ayuda, especialmente en la optimización.

Nunca terminé ninguno de mis proyectos de desarrollo de juegos, así que toma mi opinión con eso en mente.

Creo que la habilidad más importante es la programación básica. No necesita volverse loco al aprender a usar punteros en C ++ o algo así, solo comprenda sus principios básicos. Una vez que se sienta cómodo con un lenguaje (elija algo con una sintaxis intuitiva, como Java o Python), se dará cuenta de que la programación se trata realmente de resolver problemas. Ahí es donde las personas que aprenden a codificar tienen más dificultades. Debido a que las computadoras son realmente tontas, y eso te obliga a descomponer cada pequeña cosa que quieres que haga en sus elementos más básicos. No se puede decir “computadora, ¿este número es primo?”. No, debe aprender a formular la pregunta de una manera que la computadora entienda y también para que la computadora responda la pregunta. Tienes que comprenderte a ti mismo lo que hace que un número sea primo. Entonces escribes un código que codifica así:

Computadora, haga el siguiente ciclo hasta que yo lo diga, y haga un seguimiento de este otro número M, que inicialmente es igual a N:

Resta 1 de M

¿M es cero?

sí: ¡para el bucle! poner esto en la pantalla: “N es primo”

no: sigue adelante entonces

Divide N entre M y guárdalo en TEMP

Es TEMP 1?

sí: ¡para el bucle! pon esto en la pantalla: “N no es primo”.

no: sigue adelante entonces

Este es el final del contenido del bucle.

¿Por qué estoy hablando de esto en una pregunta de desarrollo de juegos? porque el desarrollo del juego básicamente le dice a la computadora cómo hacer las cosas que quieres que haga para entretener a las personas. Incluso si elige usar una herramienta como constructor o creador de juegos, debe aprender a programar. Debido a que estas herramientas aparentemente minimizan el contacto con la programación, pero en realidad es solo ocultarlo y hacer que sea difícil de reconocer, pero todavía está allí, y aún necesita aplicar su lógica y habilidades de resolución de problemas de la programación. En lugar de escribir líneas de código, llenará pequeñas ventanas con información sobre cuántos píxeles debe mover el objeto cada vez que se llama a una función de actualización, y agregará condicionales con otros cuadros para manejar la entrada.

Cualquier otra cosa que quieras aprender, como música y modelado 3D, animación, pixel art, etc. es una ventaja. Pero si tienes alguna de estas habilidades y no tienes programación, es probable que no hagas juegos interesantes.

PRIMERO una sólida formación en informática. Debe comprender las estructuras de datos, el código estructurado y orientado a objetos y la organización de la máquina. Si desea programar consolas, debe comprender la codificación integrada. También es útil tener antecedentes en la codificación casi en tiempo real.

Para los juegos modernos, desea comprender la programación en 3D, lo que significa álgebra lineal, así como cierta experiencia con OGL o D3D. También es valioso comprender un gráfico de escena y cómo se optimiza la representación de uno.

Luego están las áreas de especialización. Game AI comparte algunas cosas con la IA tradicional, pero tiene muchas cosas que técnicamente se incluyen en otras áreas. La optimización de renderizado de bajo nivel y los sombreadores para gráficos reales son otra área clave. La física del juego es otra área de especialidad.

La creación de redes es otra, bastante nueva. Para ser realmente un experto en redes, debe comprender Internet hasta el nivel de protocolos, así como conceptos de alto nivel de pila de empresas.

Realmente, lo mejor es mirar los cursos de un programa de ingeniería de juegos universitarios realmente bueno. Aquí está uno de los mejores que conozco …

Empresa de medios interactivos y desarrollo de juegos

Gracias por el A2A. Hay grandes respuestas aquí ya. Sin embargo, agregaré que su habilidad más valiosa será su habilidad para aprender nuevas habilidades.

La industria de los juegos está cambiando constantemente y es importante para tu carrera que puedas cambiar con ella. Esto se relaciona directamente con el valor de estudiar ciencias de la computación en lugar de simplemente aprender un lenguaje de programación. Un buen fondo CS le permitirá adaptarse más rápidamente a las nuevas técnicas. Sin embargo, cuando se trata de aprender lenguajes de programación, estoy de acuerdo con todas las recomendaciones de C ++. Te obliga a considerar muchas cosas de nivel inferior que otros idiomas no tienen en cuenta. Si comprende C ++, es probable que le resulte más fácil aprender nuevos lenguajes de programación en el futuro.

También es valioso tener intereses fuera de la programación. Los programadores con una comprensión de los campos relacionados como el arte o el audio tienen una ventaja porque han internalizado más el proceso de creación del juego.

La experiencia de primera mano es imprescindible. El desarrollo del juego necesita realmente un amplio campo de habilidades y talentos.

¿De verdad quieres dedicarte a hacer juegos? Entonces comience ahora mismo … ni siquiera termine de leer esta respuesta. Comience en este mismo momento.

¿Sigues leyendo, no? 🙂

¿Cómo podrías comenzar ahora?

Tome un género que le guste jugar, piense en la forma más simple de hacerse algo así usando el arte libre. Además, hay algunos sitios donde es bastante fácil unirse a un equipo para fomentar un proyecto de juego. Exitoso o no, la experiencia de trabajar con artistas, diseñadores y similares le mostrará las diferentes posiciones y habilidades necesarias para hacer un juego.

¡Desarrolladores de juegos clasificados! ¡Encuentre un trabajo o publique una posición abierta! • / r / gameDevClassifieds

Proyectos de aficionados – Clasificados

Y te ofrece algunos elementos relacionados con el juego para incluir en tu cartera.

Desarrollar juegos es la actividad más divertida y atractiva … si realmente te encanta. De lo contrario, podría ser una actividad tediosa estresante, que consume mucho tiempo, quema el cerebro.

Como una pista adicional: prepárese para obsesionarse con los detalles, ya que la mayoría de las veces la distancia entre un desarrollador normal y un gran desarrollador reside en eso.

¡Buena suerte!

  • Comprender y usar algoritmos, patrones de diseño, buen estilo de codificación
  • Lea detenidamente y, a veces, escriba especificaciones y cumpla con ellas
  • Poder depurar y arreglar lo que usted u otra persona ha codificado
  • Priorice sus tareas y calcule su esfuerzo lo suficientemente bien
  • Ser capaz de comunicarse con el equipo que consistirá no solo en programadores, sino también en artistas, diseñadores de juegos, control de calidad, productores y gerentes. Sea lo suficientemente flexible con sus decisiones para adaptarse a las necesidades del proyecto
  • A veces trabaja mucho tiempo extra durante muchos días seguidos

No estoy hablando aquí de áreas específicas de experiencia en programación porque generalmente no codifica todo solo, y cualquier especialización puede ser solicitada. Además, el nuevo proyecto siempre es algo nuevo que aprender, y te conviertes en experto en tu área bastante rápido. No sobreestimes la experiencia en programación específica, especialmente si no tienes mucha experiencia laboral.

Muchos. Ser programador de juegos no es solo una posición de programación.

Necesitará cierta cantidad de creatividad, probablemente algo de experiencia de juego y probablemente cierta capacidad para resolver problemas y corregir errores.

Por supuesto, querrá saber un lenguaje que sea utilizado por el motor de su equipo, comenzando con algo general como Java o C # es bueno. También he oído que Python y Swift a veces se usan en la programación de juegos. Principalmente, necesitará ser un jugador de equipo, por lo que las habilidades de comunicación son muy importantes.

Podrías comenzar a solicitar puestos de “herramientas” con lo que tienes en tu currículum ahora mismo, lo que pondría tu pie en la puerta.

De lo contrario, necesita experiencia profesional o al menos de nivel profesional en al menos una tecnología relacionada con el juego: obviamente, gráficos 3D o inteligencia artificial de estilo de juego (que no significa lo mismo que significa AI en otros lugares) sino también sistemas distribuidos a gran escala y / o trabajo de back-end en tiempo real de alto rendimiento en el caso de juegos multijugador en línea.

Lo anterior está muy bien, pero el elefante en la sala es que lo que realmente quieres en tu currículum cuando solicitas puestos de desarrollo de juegos es la experiencia profesional como desarrollador de juegos. Lo anterior es un obstáculo, pero no obstante es cierto. La industria del juego es extremadamente incestuosa y le gusta contratar a los suyos. Las dos formas principales de salir de este catch-22 son

  1. conseguir un trabajo en una compañía de juegos que no es estrictamente hablando de desarrollo de juegos primero (es decir, “herramientas”) que incluye una compañía de juegos en tu currículum
  2. construyendo una cartera de juegos independientes que es tan profesional en calibre que es difícil descartarlos.

Si no tienes idea, prueba Pygame y Panda3d. Hay buenos lugares para comenzar. También te gustaría echar un vistazo a Blender3d y Krita o Gimp para la obra de arte. Así que aprende a programar con Python o, si no te gusta, entonces C ++ o Java, pero realmente se puede escribir un juego en cualquier lenguaje de computadora. He escrito juegos en Prolog, Basic, 6502 Assembly, Pascal, Python y C. Lo mejor es Prolog, aunque REALMENTE podría usar un poco de C con él para llenar los vacíos gráficos de ese lenguaje.

Necesitas saber cómo escribir código. Eso es un poco de simplificación excesiva, pero también es lo esencial. La familiaridad con varias herramientas (p. Ej., Marcos de juego / motores) y el trabajo de la interfaz de usuario es una ventaja. Todos los juegos tienen interfaz de usuario, de hecho, se puede argumentar que cada juego es básicamente una interfaz de usuario con gráficos sofisticados.

El tipo de código depende del tipo de juegos que estés viendo. Basado en la web es muy diferente de la consola, por ejemplo.

También ayuda a mostrar que trabajas bien con otros, ya que la mayoría de los proyectos de juegos son esfuerzos de colaboración.

Gracias por el A2A.

En primer lugar, necesitará las habilidades que hacen un buen programador: buena habilidad para resolver problemas, buen análisis lógico, capacidad de aprender nuevos idiomas usted mismo, capacidad de depuración, etc.

En términos de lenguaje de programación, seguiré con C ++, incluso si no estás en la industria AAA.

Esto depende de qué aspectos de un juego estarías desarrollando. ¿Estaría haciendo gráficos, sonido, historia, etc.? ¿Sería un probador, un programador, un promotor, etc.? Sin embargo, si no está seguro, trate de tener una buena atención a los detalles, una mente creativa y saber Cómo trabajar con gráficos.

Depende de tu rol deseado en el desarrollo del juego.

Probablemente pueda obtener un trabajo en herramientas o programación de UI ahora mismo con su experiencia.

Lea todos los temas Preguntas frecuentes sobre diseño de juegos.