Wie bekomme ich PS3 / Xbox 360-Erfahrung ohne Zugriff auf Entwicklungskits?

24

Ich bin ein angehender Spieleprogrammierer, der versucht, in die Industrie der Programmierung für PS3, Xbox 360, einzusteigen. Das Hauptproblem, das ich sehe, ist die Notwendigkeit, meine Fähigkeiten einem potenziellen Arbeitgeber zu demonstrieren, aber ohne Zugriff auf Entwicklungskits für PS3 oder Xbox 360 das ist direkt unmöglich.

Meine Frage ist, was ist die beste Alternative, um Konsolenentwicklern meine Fähigkeiten zu zeigen?

Die C ++ - Programmierung in DirectX für Windows scheint fast die Xbox 360-Programmierkenntnisse zu zeigen, und die C ++ - Programmierung in OpenGL scheint die PS3-Programmierkenntnisse relativ nahe zu bringen. Leider scheint es aus der Webrecherche so zu sein, als hätten sowohl Xbox 360 als auch PS3 ihre eigenen Bibliotheken, weshalb dies anscheinend kein 100% ig fruchtbares Unterfangen ist. Dieser Ansatz scheint am nächsten, aber auch am zeitaufwändigsten zu sein. Außerdem lässt du nichts auf der Konsole laufen.

Auf der anderen Seite hat das Programmieren in XNA den Vorteil, dass Ihre Spiele tatsächlich auf der Konsole sind, obwohl ich den Eindruck habe, dass dies nicht als "real deal" angesehen wird, da es sich nur um einen Wrapper um DirectX handelt und stattdessen C # verwendet C ++.

Hat jemand Kenntnisse oder Erfahrungen aus der Branche, um zu wissen, welche Art von Spieldemos für einen potenziellen Arbeitgeber am nützlichsten sind? C ++ in DirectX, OpenGL, XNA, Unreal Engine, Unity3d, Flash, etc etc etc? Es gibt nur so viele Stunden am Tag und ich würde gerne wissen, wie ich meine Bemühungen lenken soll.

Ich bin der Meinung, dass DirectX die beste Wahl ist, da es dem, was auf der Xbox 360 verwendet wird, näher zu kommen scheint. Wenn jedoch eine gute Demo in einer anderen Sprache / Engine genauso gut ist, ist der Zeitaufwand natürlich geringer eine andere Route.

Vielen Dank im Voraus für Ihre Hilfe und Beratung!

jcurrie33
quelle

Antworten:

17

Je nachdem, welchen Weg Sie einschlagen, erwarten die meisten Leute ehrlich gesagt keine besonderen Plattformfähigkeiten für einen Junior.

Wenn Sie ein Spieleprogrammierer sind, machen Sie viele Spiele.

Wenn Sie ein technischer Programmierer sind, machen Sie eine Menge technischer Demos. Lesen Sie interessante Whitepapers und probieren Sie neue Dinge aus. Wenn Sie etwas Interessantes tun, das die Programmierer dazu bringt, sich zu weigern, werden wir mit Ihnen sprechen. Wir möchten uns über diese kleine interessante Sache unterhalten, die Sie getan haben. Es muss kein Spiel sein.

SCHLÜSSELFAKT: Ihre Demo sollte auf einer Vielzahl von Computern ausgeführt werden, einschließlich einer Videoaufzeichnung als Backup. Bearbeitet nicht roh.

Kimau
quelle
8

Für eine Junior-Rolle suche ich nicht viel Erfahrung in einer bestimmten API, sondern ein gutes Verständnis der Konzepte.

Wenn es sich um eine Grafik-bezogene Position handelt, die Sie suchen, zeigen Sie, dass Sie sich mit 3D-Mathematik auskennen und wie man eine API gut einsetzt (OpenGL oder D3D, egal welche wirklich - stellen Sie einfach sicher, dass Sie sie gut optimieren). Ehrlich gesagt laufen alle APIs mehr oder weniger darauf hinaus, Listen von Dingen zu erstellen, diese zu zeichnen, zu übermitteln und den Status zu verwalten - und es gibt gute und schlechte Möglichkeiten, diese Dinge zu tun.

Stellen Sie für eine allgemeinere Konsolenprogrammierung sicher, dass Sie die besonderen Probleme einer eingebetteten Plattform im Griff haben. Begrenzter Speicher (kein Swap, keine Fragmentierung usw.), strenge Regeln für den Umgang mit Abstürzen, begrenzte E / A-Bandbreite, keine (oder begrenzte) Fähigkeit zum Patchen / Aktualisieren usw.

Es geht um den Stil der Codierung, nicht um die Besonderheiten.

Ich würde XNA eigentlich meiden, wenn Sie nach einer kommerziellen Position suchen, weil es in dieser Arena eigentlich nicht so nützlich ist.

JasonD
quelle
7

FWIW, ich würde die Programmierung auf Xbox 360 in C # / XNA als sehr guten Ersatz für "the real deal" betrachten.

Erwägen:

  • In XNA on 360 müssen Sie sich mit der Garbage Collection befassen. Insbesondere müssen Sie vermeiden, zu viele, wenn überhaupt, Zuweisungen pro Frame vorzunehmen. In C ++ auf 360 müssen Sie sich nicht mit Garbage Collection befassen (es sei denn, Sie haben mit einer Skriptsprache wie Lua zu tun ), aber Sie möchten trotzdem vermeiden, viele, wenn überhaupt, Zuweisungen pro Frame vorzunehmen.
  • Um einen Großteil der Rechenleistung des 360 ausnutzen zu können, müssen Sie Ihren Code multithreading-fähig machen. Dies gilt in XNA genauso, wenn nicht sogar noch mehr, als in C ++, da der Wunsch besteht, Managed Code zu ersetzen, der etwas weniger performant ist als C ++.
  • Abgesehen von einer Vielzahl von Hilfsfunktionen und Klassen, die XNA bietet, ist die Grafik-API in XNA, da sie auf DirectX basiert, DirectX / C ++ auf 360 sehr ähnlich.

Das Wunderbare an XNA ist, dass Sie sich weniger auf die technischen Probleme konzentrieren können, etwas auf den Bildschirm zu bringen, sondern mehr darauf, Ihr Spiel zu machen. Das einfache Erstellen eines Spiels (jedes Spiel!), Das relativ fehlerfrei ist und mit einer anständigen Bildrate ausgeführt wird - insbesondere in der begrenzten Umgebung, die XNA bietet -, bietet Ihnen viel Erfahrung und eine Demo, die Sie demonstrieren können. und hoffentlich ein Fuß in der Tür.

Blair Holloway
quelle
5

Wenn Sie PS3-Programmierkenntnisse benötigen, suchen Sie möglicherweise nach:

  • Kenntnis der PPC-Architektur; Dies können Sie durch C / C ++ - Entwicklung auf einem PowerPC-Computer erreichen, sei es OS X auf einem alten G5-Mac oder Linux auf einem beliebigen PowerPC-Computer, einschließlich der PS3.
  • Kenntnis von AltiVec; Auch dies können Sie mit einem Mac oder mit Linux auf einem neueren PowerPC-Computer erreichen, aber Kenntnisse in SSE3 sind möglicherweise ausreichend.
  • Kenntnisse der SPU: Sie können dies nur auf der PS3 unter Linux üben.

Hier erfahren Sie nicht, wie Sie den PS3-Videochip programmieren oder wie Sie die offiziellen SDKs verwenden. Obwohl für die Videoprogrammierung allgemeine OpenGL- und DirectX-Kenntnisse ausreichend sein dürften, kann auch HLSL zum Einsatz kommen. Es gibt auch viele Informationen und Materialien rund um das Internet, von denen nicht alle illegal sind (zum Beispiel wird Sonys modifizierte Version von GCC für die PS3 von der GPL abgedeckt).

Wenn Sie X360-Programmierkenntnisse benötigen, suchen Sie nach:

  • Kenntnisse der PPC-Architektur: siehe oben

  • Kenntnisse über AltiVec: siehe oben

  • Kenntnisse in DirectX: Dies können Sie unter Windows üben.

  • Kenntnis des Xbox 360 SDK: Die Ähnlichkeiten sind so, dass das Üben von XNA sehr hilfreich ist.

Andere wichtige Fertigkeiten sind wahrscheinlich Multithread-Programmierung (Allgemeinwissen, aber auch atomare Operationen, Algorithmen ohne Sperren), Portabilität (Endianness, Zeigergrößen, Video-Hardwarefunktionen usw.).

Also ja, wie Sie sagten, ich glaube, DirectX wird die lohnendste Fähigkeit sein, die Sie beherrschen können. Beachten Sie jedoch, dass die Konkurrenz auch so vorgeht und einige Extras den Unterschied ausmachen können.

Quelle : Ich habe all das gemacht und mir einen tollen Job in der Branche verschafft.

sam hocevar
quelle
3

Diese Frage (oder vielmehr Ihre Bestrebungen) brauchen Raum. Heutzutage gibt es in der Branche kaum noch so etwas wie einen "Spieleprogrammierer". Sofern Sie nicht ein sehr kleines Studio oder einen Rendering-Programmierer anstreben, spielt DirectX oder OpenGl keine große Rolle. Die Dinge, die Konsolen von PCs unterscheiden, sind begrenzte Leistung, begrenzter Speicher und Multicore-Probleme. Unabhängig davon, welchen Programmierzweig Sie in der Branche anstreben, sind diese wichtig, um zu zeigen, dass Sie sich bewusst sind, wie Sie mit diesen Problemen umgehen sollen. Kennen Sie Ihr C ++. Kennen Sie die Tücken von C ++. Wissen, wie man STL nicht benutzt. Stellen Sie sicher, dass Ihr Code unabhängig von der Bildrate und mit mehreren Threads arbeitet und benutzerdefinierte Speicherzuordnungen verwendet. Markieren Sie das natürlich. Ich denke, was wirklich wichtig ist, ist, dass Ihre Demo fertig ist. Viele Programmierer hören auf, wenn die Kernmechanik funktioniert, wohingegen das Ziehen in der Spielprogrammierung das Finalling ist - zeigen Sie, dass Sie wissen, wie es geht.

Die meisten Studios möchten wissen, was Ihre Fähigkeiten sind: KI, Gameplay, Rendering, Systeme, Audio, Physik und so weiter. Versuchen Sie das herauszufinden. Ein Generalist zu sein, ohne Erfahrung in der Branche, wird sich schwer verkaufen.

Viel Glück!

Kaj
quelle
Großartiger Punkt bei der Auswahl eines Bereichs, auf den Sie sich konzentrieren möchten.
jcurrie33
1

DirectX ist eine gute Wahl. Es ist die einfachste Demo für uns, da wir mit größter Wahrscheinlichkeit bereits PCs mit Windows haben. Wenn Sie sich für die Konsolenoption entscheiden, ist ein Video stattdessen eine nette Demo. Aber es gibt nichts Schöneres, als den laufenden Live-Code zu betrachten.

Versuchen Sie, Ihren Code auf mehreren Computern auszuführen, um sicherzustellen, dass Sie verschiedene Grafikkarten usw. zulassen. Heutzutage erfolgt dies meist automatisch, es können jedoch noch einige Unterschiede auftreten.

Seffyroff
quelle
0

Kenntnisse in jeder 3D-API sind gut. Es sollte egal sein, ob es sich um DirectX oder OpenGL handelt. 3D-Konzepte sind überall gleich, nur die APIs sind unterschiedlich. Wenn Sie OpenGL kennen, werden Sie nicht von jemandem benachteiligt, der Direct3D kennt, wenn Sie sich um einen XBOX-Job auf Junior-Ebene bewerben. Was Sie demonstrieren müssen, ist Ihre Fähigkeit, etwas zu codieren und dass Sie C ++ (oder eine andere Sprache), die Standardbibliotheken, Datenstrukturen und Algorithmen verstehen. Kenntnisse über eine Game-Engine wie UDK oder Unity sind ein Bonus. Dies zeigt Ihre Fähigkeit, mit Middleware zu arbeiten, die in Spielefirmen üblich ist. Flash wurde in der Front-End-Entwicklung verwendet und ist auch eine Fähigkeit, die man nicht übersehen sollte.

Am wichtigsten ist, dass Sie einfach eine Demo (in einer beliebigen Sprache) erstellen, sie gut machen und bis zum Ende durcharbeiten. Viel Glück!

5ound
quelle