¿Qué buscan los posibles empleadores en una buena cartera?

21

Un amigo del trabajo y yo queremos entrar en la escena independiente para el desarrollo del juego. He hecho algunas demostraciones tecnológicas que demuestran diferentes ideas y enfoques para varios problemas. Ahora, siento que es hora de que nos comprometamos con un proyecto para desarrollar una cartera para más adelante en el futuro.

He estado luchando mucho con cómo comenzar un proyecto real, más específicamente para crear un motor o usar un paquete OTS, o usar uno y luego crear uno, o crear uno y luego usar uno ... etc.

¿Qué se ve mejor para los posibles empleadores? ¿Un portafolio más pequeño de juegos que incluye tu motor o uno (posiblemente) más grande que fue construido usando algo OTS?

Soy un programador. No soy artista Realizaré la mayor parte de la programación para este proyecto. Mi amigo también es desarrollador, pero también es experto en herramientas gráficas (por lo tanto, se convierte en el tipo de arte).

En el trabajo, ambos somos desarrolladores de .NET (C #). Lo sé, sé "Bueno, entonces usa XNA", algunos me gritarán. Las demos que he completado hasta ahora han estado en XNA. Pero tengo algunas preocupaciones con la construcción de una cartera XNA. Si bien es bueno abstraer DirectX, me preocupa no crear la base de conocimiento necesaria para extender más allá de XNA fácilmente. El argumento en contra de ese argumento es probablemente "puedes pasar más fácilmente a DirectX después de XNA", pero dado que voy a mover las carreras de Desarrollo de negocios a Desarrollo de juegos, ¿vale la pena enfocarse en XNA actualmente? ¿O los empleadores potenciales se reirán cuando diga XNA?

¿Debo aceptar la experiencia de XNA sabiendo que los conceptos y las lecciones aprendidas se transferirán principalmente? ¿O paso mi recurso más valioso (tiempo) en otro lugar?

Buscando algún consejo de cualquier veterinario de la industria.

Justin Self
fuente
Pregúntese qué quiere demostrar más: flexibilidad o atención al detalle. Esa es tu respuesta. Personalmente voy por la flexibilidad.
Chris Burt-Brown

Respuestas:

44

He sido programador en la industria de juegos de consola durante casi catorce años, y a menudo he estado involucrado en decisiones de contratación.

Hablando como uno de esos empleadores potenciales, cuando evalúo a un posible empleado hay tres cosas que busco en una nueva contratación, y las busco en este orden.

  1. ¿Esta persona encajará en mi equipo? (social, higiene, etc.)
  2. ¿Es esta persona un aprendiz rápido? (a menudo incorrectamente redactado como "¿es esta persona inteligente?")
  3. ¿Tiene esta persona alguna experiencia relevante que me ayude?

Ahora, abordando su pregunta. Todo este tema de "qué tipo de proyecto debería hacer" aborda con mucho el criterio menos importante que me interesa. Me importa mucho más si usted encajará en mi equipo socialmente y qué tan bien podrá aprender cosas nuevas rápidamente, que si me interesó si utilizó XNA o su propio motor de juego en algún proyecto anterior. En general, supongo que voy a tener que capacitarte en nuestro propio motor de juego interno, por lo que tus proyectos anteriores realmente no me importan en absoluto. Eso es, por supuesto, a menos que mágicamente tenga experiencia con una herramienta o tecnología en particular que necesito que alguien conozca. Pero esto es inusual; por lo general, supongo que voy a tener que capacitarte para usar nuestra API.

Todo esto no quiere decir que no quiero que hayas hecho proyectos en casa. Absolutamente lo hago. Pero realmente no me importan cuáles son esos proyectos, o qué tecnologías usaron, porque probablemente no serán relevantes para lo que necesito que hagas por mí, ya que usaremos diferentes bibliotecas o API.

Pero sí quiero que me cuentes sobre tus proyectos. Quiero ver qué tan entusiasta te pones cuando hablas de ellos, porque eso me dice acerca de qué tipo de persona eres (ver punto 1, arriba). Quiero escuchar sobre los problemas con los que se topó y cómo los superó al desarrollar su proyecto (vea el punto 2, arriba). Quiero absolutamente que hayas completado al menos un proyecto: ser capaz de superar el dolor y realmente completar algo dice mucho sobre el tipo de persona que eres, y me dice que eres alguien en quien podré confiar. sobre si ("cuándo") las cosas se ponen difíciles.

Honestamente, ninguna de las opciones es "mejor"; Lo importante es completar algo, cualquier cosa. Cualquier tecnología que aprendas en el camino es la guinda del pastel, pero casi con certeza no es lo que me haría contratarte.

(Sin embargo, con todo lo que dijo .. Me voy espero que seas competentes en C ++. De una forma u otra, que realmente necesita para aprender C ++ con el fin de ser contratado en la industria de los juegos tradicionales. Sus proyectos en el hogar no necesariamente tienen que ser en C ++, pero espero que puedas demostrar fluidez en él.)

Trevor Powell
fuente
3
Esta es una respuesta fantástica. Muchas gracias por cambiar realmente mi perspectiva sobre el proceso de contratación.
ultifinitus
Ser capaz de usar software de terceros siempre es una gran ventaja, aunque podría pasar por "aprende rápidamente".
Valmond
No creo que sea probable que alguna vez conozcas a un programador que no sepa cómo trabajar junto con un software de terceros. Todos ya están escribiendo en una API de terceros documentada, ya sea libc o STL o OpenGL o DirectX o la API de Windows o lo que sea. Son las mismas habilidades en la industria comercial, a menudo se utilizan bibliotecas menos conocidas. :)
Trevor Powell
2
Las piezas de cartera +1 no necesitan seguir estándares rigurosos. El objetivo de ellos es servir casi como piezas de conversación para una entrevista, de modo que sean interesantes desde el punto de vista del programador.
ChrisC
1
@ShuvoSarker Para las grandes empresas, esto sigue siendo cierto. EA no esperará que seas un experto en su motor Frostbite cuando estén pensando en contratarte. Ubisoft no esperará que conozcas Snowdrop. Sin embargo, esto quizás haya cambiado para las empresas más pequeñas en los seis años transcurridos desde que publiqué esta respuesta. Unity se ha convertido en una fuerza lo suficientemente grande en el espacio de los pequeños estudios que es muy realista pensar que conocer Unity ciertamente podría ayudar a sus posibilidades de una manera que no era el caso cuando absolutamente todos usaban sus propios motores propietarios.
Trevor Powell
12

Una cosa que otros aún no han mencionado es que es importante terminar sus proyectos.

Tener una cartera con un montón de cosas sin terminar no es tan impresionante como una cartera con una cosa terminada y bien pulida.

Además, si basa su trabajo en el trabajo existente de otra persona (como un motor de código abierto o recursos de arte disponibles gratuitamente), asegúrese de mencionar en su cartera qué parte es suya.

Jari Komppa
fuente
1
No estoy 100% seguro de estar de acuerdo, tenemos mucha gente con cosas sin terminar, es muy común y no tiene mucha correlación con la calidad de sus cosas. Terminar algo demuestra dedicación, no capacidad.
Chris Burt-Brown
A cada uno lo suyo, supongo.
Jari Komppa
4

Me parece que la respuesta depende del tipo de programación de juegos que quieras hacer.

Si su objetivo es ser un codificador de motor o un codificador de gráficos , se beneficiaría de pasar por debajo del capó y aprender cómo funcionan los motores. Esto no significa que no pueda usar XNA u otro motor, marco, etc. estándar. ¡Conocer las entrañas de un motor de alta calidad es una excelente manera de aprender a construir un motor de alta calidad! Si usted va esta ruta, no lo hace necesariamente siquiera necesita escribir ningún juego reales. Un portafolio de demostraciones gráficas independientes y / o extensiones no triviales a un motor existente (por ejemplo, implementar un nuevo sombreador en un motor o similar) le hará bien. Puedes echar un vistazo a mi cartera de demostraciones gráficas aquí; Hace unos años que está desactualizado, pero esto es básicamente lo que me consiguió un trabajo de programación de gráficos en un estudio de juegos.

Por otro lado, si prefieres ser un programador de juegos , una de las personas que trabajan en la mecánica del juego, los controles, la IA enemiga, etc., entonces tu tiempo no será bien invertido en Direct3D. Por supuesto, es útil tener una comprensión general de alto nivel de cómo funcionan los gráficos, pero en un contexto profesional probablemente no entrarás en contacto directo con gráficos de bajo nivel muy a menudo. En este caso, recomendaría absolutamente usar un motor estándar para que pueda pasar su tiempo construyendo juegos reales.

En resumen, si quieres jugar, usa un motor existente; si quieres hacer motor / gráficos, construye tus propias cosas y / o extiende un motor existente.

Nathan Reed
fuente
Agradezco tu respuesta. Me da un mejor sentido de dirección. Me veo más como un programador de motores. Por el tiempo dedicado (según su experiencia), ¿cree que es mejor omitir la abstracción y sumergirse en D3D?
Justin Self
1
D3D sería un excelente lugar para comenzar. Más adelante, también puede consultar algunos motores de código abierto para tener una idea de cómo otros han hecho la estructura y la organización a gran escala. También es una buena práctica saltar a una base de código grande y desconocida e intentar comprenderla sin leer cada línea de código.
Nathan Reed
Ok, tu respuesta combinada con la de Trevor realmente me dio lo que necesito. Es una pena que no pueda elegir dos respuestas; entonces +1. Gracias Nathan Realmente lo aprecio.
Justin Self
2

cuando acababa de terminar, mi portafolio apareció en este artículo. parece una buena idea sobre qué hacer y qué no hacer al reunir su cartera

http://leewinder.co.uk/blog/?p=23

Stowelly
fuente
1

No haga su cartera en función de cómo percibe que es el "estándar". Debes trabajar en proyectos que te interesen . Si te gusta la mecánica del juego, adelante y haz un montón de juegos. Si te gusta crear IA interesante, tal vez haga una demostración para una configuración similar a RTS. Como ejemplo, tengo un interés creciente en la programación de gráficos y en dedicar más tiempo a aprender conceptos de renderizado y aplicarlos en mi motor. (Consecuentemente, mi proyecto de juego se ha puesto temporalmente en el estante).

Cuando trabajas principalmente en cosas que te gustan, realmente resalta el "tú" en la cartera. Por otro lado, tener al menos un juego completo muestra que puedes superar las partes "poco interesantes" de hacer un juego. Es bueno tener cierto grado de flexibilidad para irrumpir en un territorio menos familiar, pero no te esfuerces demasiado. Puede distinguir las buenas carteras por el nivel de entusiasmo e interés puesto en el trabajo, y los proyectos basados ​​en sus áreas de interés naturalmente serán los más refinados. Entonces, sea cual sea su área de interés, eventualmente tendrá que concentrarse en esa área de programación para un trabajo.

ChrisC
fuente