XBox 360

Aus Das Sopra Wiki


Die XBox 360[1] ist eine Spielekonsole der Firma Microsoft. Mit XNA können auch normale Konsolen für eigene Entwicklungen genutzt werden. Man benötigt also kein Development Kit um ein eigenes Spiel zu schreiben.

Allerdings besteht diese Möglichkeit nur unter gewissen Einschränkungen. Es steht zum Beispiel nur ein kleiner Teil des .NET-Frameworks zur Verfügung, in der Hauptsache sind dies das .Net Compact Framework und XNA. Auch ist der direkte Hardwarezugriff, außer mit Shadern, und der Zugriff auf das Dateisystem nicht möglich.

Besonders das Compact Framework ist extrem einschränkend. Zum Beispiel kann es Methodeninlining nur für Methoden von einer kompillierten Größe von 16 Bytes Bytecode[2]. Auch Reflection und damit Serialisierung sind nur sehr eingeschränkt möglich. Man kann keine generische Reflection betreiben und für die Serialisierung braucht man einen parameterlosen Konstruktor.

Um zumindest das Inlining-Problem etwas abzuschwächen kann man von Hand inlinen. Dazu fügt man (Achtung, jetzt wird es hässlich) den Code der eigentlich aufgerufenen Methode anstelle des Methodenaufrufs. Also statt:

Vector3 v1 = new Vector3(1, 2, 3);
Vector3 v2 = new Vector3(3, 2, 1);
Vector3 v2 = v1 + v2;

nimmt man besser

Vector3 v1 = new Vector3(1, 2, 3);
Vector3 v2 = new Vector3(3, 2, 1);
Vector3 v2.X = v1.X + v2.X;
Vector3 v2.Y = v1.Y + v2.Y;
Vector3 v2.Z = v1.Z + v2.Z;

Damit das ganz etwas übersichtlicher wird, kann man das ganze mit einer region umgeben:

Vector3 v1 = new Vector3(1, 2, 3);
Vector3 v2 = new Vector3(3, 2, 1);
#region v3 = v1 + v2;
Vector3 v2.X = v1.X + v2.X;
Vector3 v2.Y = v1.Y + v2.Y;
Vector3 v2.Z = v1.Z + v2.Z;
#endregion

Diese region kann man dann in Visual Studio einklappen.

Region eingeklappt
Region eingeklappt

Weitere XBox Performance Hinweise gibt es hier[3] und hier[2]

Referenzen

  1. Wikipedia Artikel zur XBox 360
  2. 2,0 2,1 http://blogs.msdn.com/netcfteam/archive/2005/05/04/414820.aspx .NET Compact Framework version 2.0 Performance and Working Set FAQ
  3. http://www.ziggyware.com/readarticle.php?article_id=110&rowstart=2 Shawn Hargreaves: Understanding XNA Framework Performance