Como obter a experiência do PS3 / Xbox 360 sem ter acesso aos kits de desenvolvimento?

24

Sou um programador de jogos iniciante tentando entrar na programação do setor para PS3, Xbox 360. O principal problema que vejo é a necessidade de demonstrar minhas habilidades para um potencial empregador, mas sem acesso aos kits de desenvolvimento para o PS3 ou Xbox 360, fazendo isso diretamente é impossível.

Minha pergunta é: qual é a melhor maneira alternativa de mostrar minhas habilidades aos desenvolvedores de console?

A programação C ++ no DirectX para Windows parece próxima de mostrar as habilidades de programação do Xbox 360, e a programação C ++ no OpenGL parece relativamente próxima de mostrar as habilidades de programação do PS3. Infelizmente, parece que, a partir da pesquisa na web, o Xbox 360 e o PS3 realmente têm suas próprias bibliotecas proprietárias, portanto, isso parece não tornar o empreendimento 100% frutífero. Essa abordagem parece mais próxima, mas também consome mais tempo. Além disso, você não está realmente fazendo nada rodar no console.

Por outro lado, a programação no XNA tem o benefício de que seus jogos realmente estão no console, embora eu tenha a impressão de que isso não é considerado "o negócio real", pois é apenas um invólucro do DirectX e usa C # em vez de C ++.

Alguém tem conhecimento ou experiência de dentro do setor para saber que tipo de demos de jogos seria mais útil para mostrar a um empregador em potencial? C ++ em DirectX, OpenGL, XNA, Unreal Engine, Unity3d, Flash, etc etc etc? Há apenas tantas horas no dia, e eu adoraria saber como direcionar meus esforços.

Meu pressentimento é que o DirectX seria a melhor escolha, pois parece mais próximo do que é usado no Xbox 360, mas se uma boa demonstração em outro idioma / mecanismo for tão boa, obviamente seria menos demorado. outra rota.

Agradecemos antecipadamente a sua ajuda e conselhos!

jcurrie33
fonte

Respostas:

17

Depende do caminho que você está seguindo, francamente, a maioria das pessoas não espera habilidades específicas de plataforma em um júnior.

Se você é um programador de jogos, faça muitos jogos.

Se você é um programador técnico, faça várias demonstrações de tecnologia. Leia white papers interessantes e experimente novidades. Se você faz algo interessante que faz com que os programadores se tornem realidade, queremos conversar com você. Queremos conversar sobre essa coisinha interessante que você fez. Não precisa ser um jogo.

PRINCIPAL FATO: Suas demonstrações devem ser executadas em uma ampla variedade de máquinas, incluindo uma gravação de vídeo como backup. Editado não bruto.

Kimau
fonte
8

Para uma função júnior, não estou procurando muita experiência em nenhuma API específica, mas uma boa compreensão dos conceitos envolvidos.

Se você está procurando uma posição relacionada a gráficos, demonstre que conhece matemática 3D e como usar bem uma API (OpenGL ou D3D, não se importe com isso realmente - apenas certifique-se de otimizá-la bem). Francamente, todas as APIs se resumem a fazer listas de coisas para desenhar, enviá-las e gerenciar estado - e existem boas e más maneiras de fazer essas coisas, então entenda isso.

Para uma programação mais geral do console, verifique se você tem um controle sobre os problemas específicos que uma plataforma incorporada acarreta. Memória limitada (sem troca, fragmentação incorreta etc.), regras rígidas para lidar com falhas, largura de banda de E / S limitada, capacidade (ou limitada) de corrigir / atualizar etc.

É sobre o estilo de codificação, não os detalhes.

Na verdade, eu evitaria o XNA se você estivesse procurando uma posição comercial, porque não é realmente tão útil nessa arena.

JasonD
fonte
7

FWIW, consideraria a programação no Xbox 360 em C # / XNA um substituto muito bom para "o negócio real".

Considerar:

  • No XNA no 360, você precisa lidar com a coleta de lixo; especificamente, você precisa evitar fazer muitas, se houver, alocações por quadro. Enquanto em C ++ em 360, você não tem que lidar com a coleta de lixo (a menos que você está lidando com uma linguagem de script, como Lua), mas você não ainda quer evitar fazer muitos, se houver, as alocações per-frame.
  • Para tirar proveito de grande parte do poder de processamento do 360, você precisa tornar seu código multiencadeado. Isso é tão verdadeiro, se não mais, no XNA quanto no C ++, devido ao desejo de compensar o código gerenciado ter um desempenho ligeiramente inferior ao do C ++.
  • Além de muitas funções auxiliares e classes fornecidas pelo XNA, a API gráfica do XNA, uma vez que é baseada no DirectX, é extremamente semelhante ao DirectX / C ++ no 360.

O maravilhoso do XNA é que ele permite que você se concentre menos nas questões técnicas de colocar algo na tela e mais em criar seu jogo. Simplesmente criar um jogo (qualquer jogo!), Que seja relativamente livre de bugs e seja executado a uma taxa de quadros decente - especialmente no ambiente limitado que o XNA oferece - proporcionará muita experiência, uma demonstração que você pode demonstrar, e esperançosamente, um pé na porta.

Blair Holloway
fonte
5

Se você deseja habilidades de programação PS3, pode procurar:

  • conhecimento da arquitetura PPC; você pode obter isso desenvolvendo C / C ++ em uma máquina PowerPC, seja o OS X em um Mac G5 antigo ou o Linux em qualquer máquina PowerPC, incluindo o PS3.
  • conhecimento de AltiVec; novamente, você pode obter isso com um Mac ou Linux em uma máquina PowerPC recente, mas o conhecimento do SSE3 pode ser suficiente.
  • conhecimento da SPU: você só pode praticar isso no PS3 usando Linux.

Isso não ensinará como programar o chip de vídeo PS3 ou como usar os SDKs oficiais. Embora para a programação de vídeo, as habilidades genéricas de OpenGL e DirectX provavelmente sejam suficientes, com algumas HLSL também. Também há muitas informações e materiais por toda a Internet, e nem todos são ilegais (por exemplo, a versão modificada da Sony do GCC para o PS3 é coberta pela GPL).

Se você deseja habilidades de programação X360, deverá procurar:

  • conhecimento da arquitetura PPC: veja acima

  • conhecimento do AltiVec: veja acima

  • conhecimento do DirectX: você pode praticar no Windows.

  • conhecimento do SDK do Xbox 360: as semelhanças são tais que praticar o XNA ajudará muito.

Outras habilidades importantes provavelmente incluem programação multithread (conhecimento geral, mas também operações atômicas, algoritmos sem bloqueio), portabilidade (endianness, tamanho de ponteiro, recursos de hardware de vídeo, etc.).

Então, sim, como você mencionou, acredito que o DirectX será a habilidade mais gratificante que você pode dominar. No entanto, esteja ciente de que a competição também será assim, e alguns extras podem fazer a diferença.

Fonte : Fiz tudo o que precede e consegui um excelente trabalho na indústria.

sam hocevar
fonte
3

Esta questão (ou melhor, suas aspirações) precisa de escopo. Atualmente, na indústria, dificilmente existe um programador de jogos. A menos que você esteja buscando um estúdio ou programador de renderização muito pequeno, o DirectX ou o OpenGl realmente não importa. O que diferencia os consoles dos PCs é desempenho limitado, memória limitada e problemas com vários núcleos. Independentemente do ramo de programação que você aspira no setor, eles são importantes, mostrando que você está ciente de como lidar com eles. Conheça o seu C ++. Conheça as armadilhas do C ++. Saiba como não usar o STL. Verifique se o código é independente da taxa de quadros, multiencadeado e usa alocadores de memória personalizados. Destaque isso, é claro. Eu acho que o que é realmente importante é que sua demo esteja concluída. Muitos programadores param quando a mecânica principal funciona, enquanto o arrasto na programação dos jogos é o final - mostra que você sabe como fazê-lo.

A maioria dos estúdios quer saber qual é a sua habilidade: IA, jogabilidade, renderização, sistemas, áudio, física, etc. Tente descobrir isso. Ser generalista, sem experiência no setor, será difícil de vender.

Boa sorte!

Kaj
fonte
Ótimo ponto sobre como escolher uma área para focar.
jcurrie33
1

O DirectX é uma ótima opção. É a demonstração mais fácil para executarmos, pois já temos PCs com Windows. Se você optar por usar a opção de console, um vídeo será uma boa demonstração. Mas nada supera olhar para o seu código ativo em execução.

Tente executar seu código em várias máquinas para garantir que você esteja permitindo diferentes placas de vídeo etc. Atualmente, isso é automático, mas algumas diferenças ainda podem ocorrer.

Seffyroff
fonte
0

O conhecimento de qualquer API 3D é bom. Não importa se é DirectX ou OpenGL. Os conceitos 3D são os mesmos em todos os lugares, apenas as APIs são diferentes. Conhecer o OpenGL não coloca você em desvantagem para quem conhece o Direct3D ao competir por um emprego XBOX de nível júnior. O que você precisa demonstrar é sua capacidade de codificar algo e que você entende C ++ (ou qualquer outra linguagem), as bibliotecas padrão, estruturas de dados e algoritmos. O conhecimento de um mecanismo de jogo como UDK ou Unity é um bônus. Isso demonstra sua capacidade de trabalhar com middleware, o que é comum em empresas de jogos. O Flash foi usado no desenvolvimento front-end, também é uma habilidade a não esquecer.

O mais importante é que você apenas crie uma demonstração (em qualquer idioma), torne-a boa e aguarde até o final. Boa sorte!

5ound
fonte