¿Cómo obtener la experiencia de PS3 / Xbox 360 sin tener acceso a los kits de desarrollo?

24

Soy un programador de juegos incipiente que intenta ingresar a la programación de la industria para PS3, Xbox 360. El principal problema que veo es la necesidad de demostrar mis habilidades a un posible empleador, pero sin acceso a los kits de desarrollo para PS3 o Xbox 360, haciendo Esto directamente es imposible.

Mi pregunta es, ¿cuál es la mejor forma alternativa de mostrar a los desarrolladores de consolas mis habilidades?

La programación de C ++ en DirectX para Windows parece estar cerca de mostrar habilidades de programación de Xbox 360, y la programación de C ++ en OpenGL parece estar relativamente cerca de mostrar habilidades de programación de PS3. Desafortunadamente, parece de la investigación web como si Xbox 360 y PS3 realmente tienen sus propias bibliotecas propietarias, por lo que parece que esto no es un esfuerzo 100% fructífero. Este enfoque parece más cercano, pero también consume más tiempo. Además, en realidad no estás haciendo que nada se ejecute en la consola.

Por otro lado, la programación en XNA tiene el beneficio de que sus juegos están realmente en la consola, aunque tengo la impresión de que esto no se considera "el verdadero negocio", ya que es solo un envoltorio alrededor de DirectX y usa C # en lugar de C ++.

¿Alguien tiene conocimiento o experiencia dentro de la industria para saber qué tipo de demos de juegos serían más útiles para mostrar a un posible empleador? C ++ en DirectX, OpenGL, XNA, Unreal Engine, Unity3d, Flash, etc., etc. Solo hay tantas horas en el día, y me encantaría saber cómo dirigir mis esfuerzos.

Mi intuición es que DirectX sería la mejor opción, ya que parece más cercano a lo que se usa en la Xbox 360, pero si tener una buena demostración en otro idioma / motor es igual de bueno, obviamente tomaría menos tiempo ir. Otra ruta.

Gracias de antemano por su ayuda y consejo!

jcurrie33
fuente

Respuestas:

17

Depende del camino que esté siguiendo, francamente, la mayoría de las personas no esperan habilidades de plataforma específicas en un junior.

Si eres un programador de juegos, haz muchos juegos.

Si eres un programador técnico, haz una gran cantidad de demostraciones tecnológicas. Lea libros blancos interesantes y pruebe cosas nuevas. Si haces algo interesante que hace que los programadores se vayan a OOOoo, QUEREMOS hablar contigo. Queremos conversar sobre esta pequeña cosa interesante que has hecho. No necesita ser un juego.

HECHO CLAVE: Su demostración debe ejecutarse en una amplia gama de máquinas, incluir una grabación de video como respaldo. Editado no en bruto.

Kimau
fuente
8

Para un rol junior, no busco mucha experiencia en ninguna API en particular, sino un buen conocimiento de los conceptos involucrados.

Si se trata de una posición de gráficos relacionados que está buscando, demostrar que sabes 3D matemáticas, y cómo usar una API bien (OpenGL o D3D, no les importa que en realidad - sólo asegúrese de optimizar bien). Francamente, todas las API se reducen más o menos a hacer listas de cosas para dibujar, enviarlas y administrar el estado, y hay buenas y malas maneras de hacer esas cosas, así que entiéndelo.

Para una programación de consola más general, asegúrese de tener un control sobre los problemas particulares que conlleva una plataforma integrada. Memoria limitada (sin intercambio, fragmentación incorrecta, etc.), reglas estrictas para hacer frente a fallas, ancho de banda de E / S limitado, sin capacidad (o limitada) de parchear / actualizar, etc.

Se trata del estilo de codificación, no de los detalles.

De hecho, evitaría XNA si está buscando una posición comercial, porque en realidad no es tan útil en ese ámbito.

JasonD
fuente
7

FWIW, consideraría que programar en Xbox 360 en C # / XNA es un muy buen sustituto para "el verdadero negocio".

Considerar:

  • En XNA en 360, tienes que lidiar con la recolección de basura; específicamente, debe evitar hacer demasiadas asignaciones, si las hay, por cuadro. Mientras que en C ++ en 360, usted no tiene que lidiar con la recolección de basura (a menos que usted está tratando con un lenguaje de script, como Lua), pero no todavía quiere evitar hacer muchos, en su caso, las asignaciones por trama.
  • Para aprovechar gran parte de la potencia de procesamiento del 360, debe hacer que su código sea multiproceso. Esto es tan cierto, si no más, en XNA como lo es en C ++, debido al deseo de compensar que el código administrado sea ligeramente menos eficaz que C ++.
  • Además de una gran cantidad de funciones y clases auxiliares que XNA proporciona, la API de gráficos en XNA, dado que se basa en DirectX, es extremadamente similar a DirectX / C ++ en 360.

Lo maravilloso de XNA es que te permite concentrarte menos en los problemas técnicos de obtener algo en la pantalla y más en hacer tu juego. Simplemente hacer un juego (¡cualquier juego!), Que esté relativamente libre de errores y se ejecute a una velocidad de fotogramas decente, especialmente en el entorno limitado que ofrece XNA, le dará mucha experiencia, una demostración que puede demostrar, y con suerte, un pie en la puerta.

Blair Holloway
fuente
5

Si quieres habilidades de programación de PS3, puedes buscar:

  • conocimiento de la arquitectura PPC; esto se puede lograr desarrollando C / C ++ en una máquina PowerPC, ya sea OS X en una Mac G5 antigua o Linux en cualquier máquina PowerPC, incluida la PS3.
  • conocimiento de AltiVec; nuevamente, puede obtener esto con una Mac o con Linux en una máquina PowerPC reciente, pero el conocimiento de SSE3 podría ser suficiente.
  • conocimiento de la SPU: solo puede practicar esto en la PS3 con Linux.

Esto no te enseñará cómo programar el chip de video de PS3 o cómo usar los SDK oficiales. Aunque para la programación de video, las habilidades genéricas de OpenGL y DirectX probablemente serán suficientes, con algunas HLSL también. También hay una gran cantidad de información y material en Internet, de los cuales no todos son ilegales (por ejemplo, la versión modificada de GCC de Sony para la PS3 está cubierta por la GPL).

Si desea habilidades de programación X360, buscará:

  • conocimiento de la arquitectura PPC: ver arriba

  • conocimiento de AltiVec: ver arriba

  • conocimiento de DirectX: esto se puede practicar en Windows.

  • conocimiento del SDK de Xbox 360: las similitudes son tales que practicar XNA será de gran ayuda.

Otras habilidades importantes probablemente incluyen programación multiproceso (conocimiento general, pero también operaciones atómicas, algoritmos sin bloqueo), portabilidad (endianness, tamaños de puntero, características de hardware de video, etc.).

Entonces, sí, como mencionaste, creo que DirectX será la habilidad más gratificante que puedas dominar. Sin embargo, tenga en cuenta que la competencia también será así, y algunos extras pueden marcar la diferencia.

Fuente : hice todo lo anterior y conseguí un trabajo increíble en la industria.

sam hocevar
fuente
3

Esta pregunta (o más bien, sus aspiraciones) necesita alcance. Hoy en día en la industria casi no hay tal cosa como un "programador de juegos". A menos que estés buscando un estudio muy pequeño o un programador de renderizado, DirectX u OpenGl realmente no importan. Las cosas que diferencian a las consolas de las PC son el rendimiento limitado, la memoria limitada y los problemas multinúcleo. No importa a qué rama de la programación en la industria aspire, esas son importantes, por lo que mostrar que sabe cómo lidiar con ellas, le ayudará. Conoce tu C ++. Conozca las trampas de C ++. Sepa cómo no usar STL. Asegúrese de que su código sea independiente de la velocidad de fotogramas, de subprocesos múltiples y utilice asignadores de memoria personalizados. Resalta eso, por supuesto. Creo que lo realmente importante es que tu demo esté terminada. Muchos programadores se detienen cuando la mecánica principal funciona, mientras que el arrastre en la programación del juego es el final: demuestre que sabe cómo hacerlo.

La mayoría de los estudios quieren saber cuál es tu habilidad, IA, jugabilidad, renderización, sistemas, audio, física, etc. Intenta resolver eso. Ser un generalista, sin experiencia en la industria, será difícil de vender.

¡Buena suerte!

Kaj
fuente
Gran punto sobre la elección de un área para centrarse.
jcurrie33
1

DirectX es una gran opción. Es la demostración más fácil de ejecutar, ya que tenemos PC con Windows que ya es muy probable. Si elige ir con la opción de consola, un video es una buena demostración. Pero nada mejor que mirar su código en vivo en ejecución.

Intente ejecutar su código en varias máquinas para asegurarse de que está permitiendo diferentes tarjetas de video, etc. En estos días eso es principalmente automático, pero aún pueden ocurrir algunas diferencias.

Seffyroff
fuente
0

El conocimiento de cualquier API 3D es bueno. No debería importar si es DirectX u OpenGL. Los conceptos 3D son los mismos en todas partes, solo las API son diferentes. Conocer OpenGL no lo pone en desventaja para alguien que conoce Direct3D cuando compite por un trabajo de XBOX de nivel junior. Lo que debe demostrar es su capacidad para codificar algo y comprender C ++ (o cualquier otro lenguaje), las bibliotecas estándar, las estructuras de datos y los algoritmos. El conocimiento de un motor de juego como UDK o Unity es una ventaja. Esto demuestra su capacidad para trabajar con middleware, que es común en las empresas de juegos. Flash se ha utilizado en el desarrollo front-end, también es una habilidad que no debe pasarse por alto.

Lo más importante es que solo construyas una demostración (en cualquier idioma), que sea buena y que la veas hasta el final. ¡Buena suerte!

5ound
fuente