Comment obtenir une expérience PS3 / Xbox 360 sans avoir accès aux kits de développement?

24

Je suis un programmeur de jeux en herbe qui essaie d'entrer dans la programmation industrielle pour PS3, Xbox 360. Le principal problème que je vois est la nécessité de démontrer mes compétences à un employeur potentiel, mais sans accès aux kits de développement pour la PS3 ou la Xbox 360, en faisant c'est directement impossible.

Ma question est, quelle est la meilleure façon alternative de montrer mes compétences aux développeurs de consoles?

La programmation C ++ dans DirectX pour Windows semble proche de montrer des compétences de programmation Xbox 360, et la programmation C ++ dans OpenGL semble relativement proche de montrer des compétences de programmation PS3. Malheureusement, il semble, d'après les recherches sur le Web, que la Xbox 360 et la PS3 possèdent réellement leurs propres bibliothèques propriétaires, ce qui semble donc ne pas être une entreprise 100% fructueuse. Cette approche semble la plus proche, mais aussi la plus longue. De plus, vous ne faites rien exécuter sur la console.

D'un autre côté, la programmation dans XNA a l'avantage que vos jeux sont en fait sur la console, bien que j'ai l'impression que cela n'est pas considéré comme "la vraie affaire" car il s'agit simplement d'un wrapper autour de DirectX et utilise C # au lieu de C ++.

Quelqu'un a-t-il des connaissances ou une expérience de l'intérieur de l'industrie pour savoir quel type de démos de jeux serait le plus utile à montrer à un employeur potentiel? C ++ dans DirectX, OpenGL, XNA, Unreal Engine, Unity3d, Flash, etc etc etc? Il n'y a que tant d'heures dans la journée et j'aimerais savoir comment diriger mes efforts.

Mon intuition est que DirectX serait le meilleur choix, car il semble plus proche de ce qui est utilisé sur la Xbox 360, mais si avoir une bonne démo dans une autre langue / moteur est tout aussi bon, cela prendrait évidemment moins de temps un autre itinéraire.

Merci d'avance pour votre aide et vos conseils!

jcurrie33
la source

Réponses:

17

Cela dépend du chemin que vous empruntez, franchement, la plupart des gens ne s'attendent pas à des compétences de plate-forme spécifiques chez un junior.

Si vous êtes un programmeur de jeux, faites beaucoup de jeux.

Si vous êtes un programmeur technique, faites une démonstration de technologies. Lisez des livres blancs intéressants et essayez de nouvelles choses. Si vous faites quelque chose d'intéressant qui fait que les programmeurs deviennent OOOoo, nous VOULONS vous parler. Nous voulons discuter de cette petite chose intéressante que vous avez faite. Cela n'a pas besoin d'être un jeu.

FAIT CLÉ: Votre démo devrait fonctionner sur une large gamme de machines, inclure un enregistrement vidéo comme sauvegarde. Modifié non brut.

Kimau
la source
8

Pour un rôle junior, je ne recherche pas beaucoup d'expérience dans une API particulière, mais plutôt une bonne compréhension des concepts impliqués.

Si c'est un graphique poste connexe que vous recherchez, vous savez démontrer 3D les mathématiques, et comment utiliser une API bien (OpenGL ou D3D, ne se soucient pas vraiment ce qui - juste que vous faites bien optimiser). Franchement, toutes les API se résument plus ou moins à faire des listes de choses à dessiner, à les soumettre et à gérer l'état - et il y a de bonnes et de mauvaises façons de faire ces choses, alors comprenez cela.

Pour une programmation de console plus générale, assurez-vous d'avoir une idée des problèmes particuliers qu'une plate-forme intégrée implique. Mémoire limitée (pas d'échange, mauvaise fragmentation, etc.), règles strictes pour faire face aux plantages, bande passante d'E / S limitée, capacité (ou limitée) de patcher / mettre à jour, etc.

Il s'agit du style de codage, pas des détails.

Je fait éviter XNA si vous êtes à la recherche d'une position commerical, parce que ce n'est pas vraiment utile que dans cette arène.

JasonD
la source
7

FWIW, je considérerais la programmation sur Xbox 360 en C # / XNA comme un très bon substitut à "la vraie affaire".

Considérer:

  • Dans XNA sur 360, vous devez gérer la collecte des ordures; en particulier, vous devez éviter de faire trop d'allocations, le cas échéant, par trame. Alors que dans C ++ sur 360, vous ne devez pas traiter avec la collecte des ordures ( à moins que vous avez affaire à un langage de script, comme Lua), mais vous ne voulez toujours éviter de faire beaucoup, le cas échéant, des allocations par image.
  • Afin de profiter d'une grande partie de la puissance de traitement du 360, vous devez rendre votre code multi-thread. Cela est tout aussi vrai, sinon plus, dans XNA que dans C ++, car le désir de rattraper le code managé est légèrement moins performant que C ++.
  • Mis à part un grand nombre de fonctions et de classes d'assistance fournies par XNA, l'API graphique de XNA, étant donné qu'elle est basée sur DirectX, est extrêmement similaire à DirectX / C ++ sur 360.

Ce qui est merveilleux avec XNA, c'est qu'il vous permet de vous concentrer moins sur les problèmes techniques liés à l'affichage de quelque chose à l'écran, et plus sur la création de votre jeu. Faire simplement un jeu (n'importe quel jeu!), Qui est relativement sans bogue et qui fonctionne à une fréquence d'images décente - en particulier dans l'environnement limité que XNA offre - vous donnera beaucoup d'expérience, une démo que vous pouvez démontrer, et j'espère, un pied dans la porte.

Blair Holloway
la source
5

Si vous voulez des compétences en programmation PS3, vous pouvez rechercher:

  • connaissance de l'architecture PPC; cela peut être obtenu en faisant du développement C / C ++ sur une machine PowerPC, que ce soit OS X sur un ancien Mac G5 ou Linux sur n'importe quelle machine PowerPC, y compris la PS3.
  • connaissance d'AltiVec; encore une fois, vous pouvez obtenir cela avec un Mac ou avec Linux sur une machine PowerPC récente, mais la connaissance de SSE3 pourrait être suffisante.
  • connaissance du SPU: vous ne pouvez le pratiquer que sur PS3 sous Linux.

Cela ne vous apprendra pas à programmer la puce vidéo PS3, ni à utiliser les SDK officiels. Bien que pour la programmation vidéo, les compétences génériques OpenGL et DirectX seront probablement suffisantes, avec certains HLSL aussi. Il y a aussi beaucoup d'informations et de matériel sur Internet, qui ne sont pas tous illégaux à obtenir (par exemple, la version modifiée de Sony de GCC pour PS3 est couverte par la GPL).

Si vous voulez des compétences en programmation X360, vous chercherez:

  • connaissance de l'architecture PPC: voir ci-dessus

  • connaissance d'AltiVec: voir ci-dessus

  • connaissance de DirectX: cela vous pouvez pratiquer sur Windows.

  • connaissance du SDK Xbox 360: les similitudes sont telles que la pratique de XNA sera très utile.

D'autres compétences importantes incluent probablement la programmation multithread (connaissances générales, mais aussi opérations atomiques, algorithmes sans verrouillage), la portabilité (endianness, tailles de pointeurs, fonctionnalités matérielles vidéo, etc.).

Alors oui, comme vous l'avez mentionné, je pense que DirectX sera la compétence la plus gratifiante que vous puissiez maîtriser. Cependant, sachez que la concurrence ira aussi dans ce sens, et quelques extras peuvent faire la différence.

Source : J'ai fait tout ce qui précède et je me suis trouvé un excellent travail dans l'industrie.

sam hocevar
la source
3

Cette question (ou plutôt, vos aspirations) a besoin de portée. De nos jours, dans l'industrie, il n'y a pratiquement pas de «programmeur de jeux». Sauf si vous visez à opter pour un très petit studio ou programmeur de rendu, DirectX ou OpenGl n'a pas vraiment d'importance. Les choses qui distinguent les consoles des PC sont les performances limitées, la mémoire limitée et les problèmes multicœurs. Quelle que soit la branche de la programmation dans l'industrie à laquelle vous aspirez, celles-ci sont importantes, ce qui montre que vous savez comment y faire face, imo, vous aidera. Connaissez votre C ++. Connaissez les pièges du C ++. Sachez comment ne pas utiliser STL. Assurez-vous que votre code est indépendant de la fréquence d'images, multithread et utilise des allocateurs de mémoire personnalisés. Soulignez cela, bien sûr. Je pense que ce qui est vraiment important, c'est que votre démo soit terminée. Beaucoup de programmeurs s'arrêtent lorsque le mécanisme de base fonctionne, tandis que la traînée dans la programmation du jeu est la conclusion - montrez que vous savez comment le faire.

La plupart des studios veulent savoir quelles sont vos compétences, IA, gameplay, rendu, systèmes, audio, physique, etc. Essayez de comprendre cela. Être un généraliste, sans expérience dans l'industrie, sera difficile à vendre.

Bonne chance!

Kaj
la source
Grand point sur le choix d'un domaine sur lequel se concentrer.
jcurrie33
1

DirectX est un excellent choix. C'est la démo la plus simple à exécuter car nous avons déjà des PC avec Windows. Si vous choisissez d'aller avec l'option console, une vidéo est une belle démo à la place. Mais rien ne vaut la lecture de votre code en direct.

Essayez d'exécuter votre code sur plusieurs machines pour vous assurer que vous autorisez différentes cartes vidéo, etc. De nos jours, c'est principalement automatique, mais certaines différences peuvent encore se produire.

Seffyroff
la source
0

La connaissance de toute API 3D est bonne. Peu importe qu'il s'agisse de DirectX ou d'OpenGL. Les concepts 3D sont les mêmes partout, seules les API sont différentes. Connaître OpenGL ne vous désavantage pas pour quelqu'un qui connaît Direct3D lorsqu'il est en compétition pour un emploi XBOX de niveau junior. Ce que vous devez démontrer, c'est votre capacité à coder quelque chose et que vous comprenez le C ++ (ou tout autre langage), les bibliothèques standard, les structures de données et les algorithmes. La connaissance d'un moteur de jeu tel que UDK ou Unity est un bonus. Cela démontre votre capacité à travailler avec un middleware, ce qui est courant dans les sociétés de jeux. Flash a été utilisé dans le développement frontal, c'est aussi une compétence à ne pas négliger.

Le plus important est que vous venez de créer une démo (dans n'importe quelle langue), de la rendre bonne et de la mener à terme. Bonne chance!

5ound
la source