O que os potenciais empregadores procuram em um bom portfólio?

21

Um amigo do trabalho e eu estamos querendo entrar na cena indie para o desenvolvimento de jogos. Fiz algumas demonstrações de tecnologia que demonstram diferentes idéias e abordagens para vários problemas. Agora, acho que é hora de nos comprometermos com um projeto para desenvolver um portfólio para mais tarde no caminho.

Eu tenho lutado bastante com o começo de um projeto real, mais especificamente para criar um mecanismo ou usar um pacote OTS, ou usar um para criar um ou criar um para usar um etc.

Qual parece melhor para os potenciais empregadores? Um portfólio menor de jogos que inclui seu mecanismo ou um (possivelmente) maior que foi construído usando algo OTS?

Sou programador. Eu não sou um artista. Vou executar a maior parte da programação para este projeto. Meu amigo também é desenvolvedor, mas também é especialista em ferramentas gráficas (assim, ele se torna o cara da arte).

No trabalho, somos desenvolvedores .NET (C #). Eu sei, eu sei "Bem, então use XNA", alguns vão gritar comigo. As demos que concluí até agora estão no XNA. Mas tenho algumas preocupações com a construção de um portfólio XNA. Embora seja legal abstrair o DirectX, eu me preocupo com o fato de não criar a base de conhecimento necessária para estender além do XNA facilmente. O contrário a esse argumento é provavelmente "você pode passar para o DirectX mais facilmente após o XNA", mas como vou mudar de carreira de Desenvolvimento de Negócios para Desenvolvimento de Jogos, vale a pena focar no XNA atualmente? Ou os potenciais empregadores rirão quando digo XNA?

Devo abraçar a experiência do XNA sabendo que os conceitos e lições aprendidas serão transferidos principalmente? Ou gastar meu recurso mais valioso (tempo) em outro lugar?

Procurando alguns conselhos de qualquer veterinário da indústria por aí.

Justin Self
fonte
Pergunte a si mesmo o que deseja demonstrar mais: flexibilidade ou atenção aos detalhes. Essa é a sua resposta. Pessoalmente, busco flexibilidade.
Chris Burt-Brown

Respostas:

44

Sou programador na indústria de jogos de console há quase quatorze anos e frequentemente me envolvo em decisões de contratação.

Então, falando como um desses empregadores em potencial, ao avaliar um possível funcionário, há três coisas que procuro em um novo contratado e procuro por eles nesta ordem.

  1. Essa pessoa se encaixará na minha equipe? (social, higiene etc.)
  2. Essa pessoa é uma aprendiz rápida? (geralmente incorretamente formulado como "essa pessoa é inteligente?")
  3. Essa pessoa tem alguma experiência relevante que me ajude?

Agora, resolva sua pergunta. Todo esse problema "que tipo de projeto devo fazer" está abordando de longe o menos importante dos critérios de que me preocupo. Eu me preocupo muito mais com o fato de você se encaixar socialmente na minha equipe e com o quão bem você será capaz de aprender coisas novas rapidamente, do que com o fato de você ter usado o XNA ou seu próprio mecanismo de jogo em algum projeto anterior. Em geral, estou assumindo que vou ter que treiná-lo em nosso próprio mecanismo de jogo interno, e assim seus projetos anteriores não me importam nada. Isso é claro, a menos que você, magicamente, tenha experiência com uma ferramenta ou tecnologia específica que eu preciso que alguém conheça. Mas isso é incomum; normalmente, suponho que vou precisar treiná-lo para usar nossa API.

Tudo isso não quer dizer que eu não quero que você tenha feito projetos em casa. Eu absolutamente faço. Mas eu realmente não me importo com o que esses projetos são, ou com as tecnologias que eles usaram, porque provavelmente não serão relevantes para o que eu preciso que você faça por mim, pois usaremos diferentes bibliotecas ou APIs.

Mas eu quero que você me conte sobre seus projetos. Quero ver como você fica entusiasmado quando fala sobre eles, porque isso me diz sobre que tipo de pessoa você é (veja o ponto 1 acima). Quero ouvir sobre os problemas com que você se deparou e como os superou no desenvolvimento do seu projeto (veja o ponto 2 acima). Eu absolutamente quero que você tenha concluído pelo menos um projeto - ser capaz de superar a dor e realmente concluir algo diz muito sobre o tipo de pessoa que você é e me diz que você é alguém com quem eu poderei confiar sobre se ("quando") as coisas ficam difíceis.

Então, honestamente, nenhuma das opções é "melhor"; o importante é completar algo, qualquer coisa. Qualquer tecnologia que você aprende ao longo do caminho é a cereja do bolo, mas quase certamente não é o que me faria contratá-lo.

(Mas, com tudo isso dito , espero que você seja proficiente em C ++. De uma forma ou de outra, você realmente precisa aprender C ++ para ser contratado na indústria de jogos convencional. Seus projetos domésticos não precisam necessariamente ser em C ++, mas espero que você consiga demonstrar fluência nele.)

Trevor Powell
fonte
3
Esta é uma resposta fantástica. Muito obrigado por realmente mudar minha perspectiva sobre o processo de contratação.
ultifinitus em 27/09/11
Ser capaz de usar software de terceiros é sempre uma grande vantagem, que pode estar em 'aprende rapidamente'.
Valmond 27/09
Não acho provável que você encontre um programador que não saiba trabalhar em conjunto com software de terceiros. Todo mundo já está gravando em uma API de terceiros documentada, seja libc ou STL ou OpenGL ou DirectX ou a API do Windows ou qualquer outra coisa. São as mesmas habilidades no setor comercial, apenas bibliotecas menos conhecidas estão sendo usadas. :)
Trevor Powell
2
As peças do portfólio +1 não precisam seguir padrões rigorosos. O objetivo deles é servir quase como peças de conversa para uma entrevista, para que sejam interessantes do ponto de vista de um programador.
ChrisC
1
@ShuvoSarker Para grandes empresas, isso ainda é verdade. A EA não espera que você seja um especialista em seu mecanismo Frostbite quando pensar em contratar você. A Ubisoft não espera que você conheça o Snowdrop. Talvez isso tenha mudado para empresas menores nos seis anos desde que publiquei essa resposta. O Unity se tornou uma força grande o suficiente no espaço de pequenos estúdios, e é muito realista pensar que conhecer o Unity certamente poderia ajudar suas chances de uma maneira que não era o caso quando absolutamente todo mundo usava seus próprios mecanismos proprietários.
Trevor Powell
12

Uma coisa que outros não mencionaram ainda é que é importante finalizar seus projetos.

Ter um portfólio com várias coisas inacabadas não é tão impressionante quanto um portfólio com uma coisa acabada e bem polida.

Além disso, se você basear seu trabalho no trabalho existente de outra pessoa (como algum mecanismo de código aberto ou recursos de arte disponíveis gratuitamente), não deixe de mencionar em seu portfólio qual parte é sua.

Jari Komppa
fonte
1
Não tenho 100% de certeza de que concordo, temos muitas pessoas com coisas inacabadas, é muito comum e não tem muita correlação com a qualidade delas. Terminar algo demonstra dedicação, não capacidade.
Chris Burt-Brown
Para cada um deles, suponho.
Jari Komppa
4

Parece-me que a resposta depende do tipo de programação de jogo que você deseja fazer.

Se seu objetivo é ser um codificador de mecanismo ou de gráficos , você se beneficiaria de aprender a trabalhar como os motores. Isso não significa que você não pode usar o XNA ou outro mecanismo, estrutura, etc. Privilegiar a familiaridade com as entranhas de um mecanismo de alta qualidade é uma ótima maneira de aprender a construir um mecanismo de alta qualidade! Se você seguir esse caminho, não precisará necessariamente escrever nenhum jogo real. Um portfólio de demonstrações gráficas independentes e / ou extensões não triviais a um mecanismo existente (por exemplo, implementar um novo sombreador em um mecanismo ou algo parecido) será útil. Você pode dar uma olhada no meu portfólio de demos gráficos aqui; estão alguns anos desatualizados agora, mas isso é basicamente o que me deu um trabalho de programação gráfica em um estúdio de jogos.

Por outro lado, se você preferir ser um codificador de jogabilidade , uma das pessoas que trabalha na mecânica do jogo, nos controles, na IA inimiga etc. etc., seu tempo não será muito bem aproveitado no Direct3D. É claro que é útil ter uma compreensão geral e de alto nível de como os gráficos funcionam, mas em um contexto profissional você provavelmente não entrará em contato direto com material gráfico de baixo nível com muita frequência. Nesse caso, eu recomendaria absolutamente o uso de um mecanismo de prateleira para que você possa gastar seu tempo construindo jogos reais.

Então, para resumir, se você quiser jogar, basta usar um mecanismo existente; se você deseja criar um mecanismo / gráficos, crie seu próprio material e / ou estenda um mecanismo existente.

Nathan Reed
fonte
Agradeço sua resposta. Isso me dá um melhor senso de direção. Eu me vejo mais como programador de mecanismos. Pelo tempo gasto (com base na sua experiência), você acha que é melhor pular a abstração e mergulhar no D3D?
Justin Self
1
D3D seria um ótimo lugar para começar. Mais tarde, você também pode querer verificar alguns mecanismos de código aberto para ter uma ideia de como os outros fizeram a estrutura e a organização em larga escala. Também é uma boa prática entrar em uma base de código grande e desconhecida e tentar entendê-la sem ler todas as linhas de código.
Nathan Reed
Ok, sua resposta combinada com a de Trevor realmente me deu o que eu preciso. Pena que não posso escolher duas respostas; então +1. Obrigado Nathan. Eu realmente gostei disso.
Justin Self
2

Quando eu estava terminando a uni, meu portfólio foi apresentado neste artigo. parece uma boa idéia sobre o que fazer e o que não fazer ao reunir seu portfólio

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

Stowelly
fonte
1

Não faça seu portfólio com base em como você considera o "padrão". Você deve trabalhar em projetos que lhe interessam . Se você gosta de mecânica de jogos, vá em frente e faça vários jogos. Se você gosta de criar IA interessante, talvez faça uma demonstração para uma configuração semelhante ao RTS. Como exemplo, tenho um interesse crescente em programação gráfica e dedico mais tempo a aprender conceitos de renderização e a aplicá-los no meu mecanismo. (Consequentemente, meu projeto de jogo foi temporariamente colocado na prateleira.)

Quando você trabalha principalmente nas coisas que gosta, ele realmente mostra o "você" no portfólio. Por outro lado, ter pelo menos um jogo concluído mostra que você pode extrair as partes "desinteressantes" de fazer um jogo. É bom ter um certo grau de flexibilidade para invadir um território menos familiar, mas não se force muito a isso. Você pode diferenciar bons portfólios a partir do nível de entusiasmo e interesse colocados no trabalho, e os projetos baseados em suas áreas de interesse naturalmente serão mais polidos. Portanto, seja qual for sua área de interesse, você acabará se concentrando nessa área de programação para um emprego.

ChrisC
fonte