XBox 360: Unterschied zwischen den Versionen
Justus (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
LeonH (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(4 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{löschen}} | |||
Die XBox 360<ref name="XBOX">Wikipedia Artikel zur [[wikipedia:de:Xbox_360|XBox 360]]</ref> ist eine Spielekonsole der Firma [[wikipedia:de:Microsoft|Microsoft]]. Mit [[XNA]] können auch ''normale'' Konsolen für eigene Entwicklungen genutzt werden. Man benötigt also kein [[wikipedia:de:Xbox_360#Development_Kits|Development Kit]] um ein eigenes Spiel zu schreiben. | Die XBox 360<ref name="XBOX">Wikipedia Artikel zur [[wikipedia:de:Xbox_360|XBox 360]]</ref> ist eine Spielekonsole der Firma [[wikipedia:de:Microsoft|Microsoft]]. Mit [[XNA]] können auch ''normale'' Konsolen für eigene Entwicklungen genutzt werden. Man benötigt also kein [[wikipedia:de:Xbox_360#Development_Kits|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 [ | 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 [https://de.wikipedia.org/wiki/.NET_Compact_Framework .Net Compact Framework] und [[XNA]]. Auch ist der direkte Hardwarezugriff, außer mit [[Shader|Shadern]], und der Zugriff auf das Dateisystem nicht möglich. | ||
Besonders das Compact Framework ist extrem einschränkend. Zum Beispiel kann es [[Inlining|Methodeninlining]] nur für Methoden von einer [[Compiler|kompillierten]] Größe von 16 Bytes [[Bytecode]]<ref name="NetCompactPerformance">http://blogs.msdn.com/netcfteam/archive/2005/05/04/414820.aspx .NET Compact Framework version 2.0 Performance and Working Set FAQ</ref>. Auch [[Reflection]] und damit [[Serialisierung]] sind nur sehr eingeschränkt möglich. Man kann keine [[Generic|generische]] Reflection betreiben und für die Serialisierung braucht man einen [[Parameter|parameterlosen]] [[Konstruktor]]. | Besonders das Compact Framework ist extrem einschränkend. Zum Beispiel kann es [[Inlining|Methodeninlining]] nur für Methoden von einer [[Compiler|kompillierten]] Größe von 16 Bytes [[Bytecode]]<ref name="NetCompactPerformance">http://blogs.msdn.com/netcfteam/archive/2005/05/04/414820.aspx .NET Compact Framework version 2.0 Performance and Working Set FAQ</ref>. Auch [[Reflection]] und damit [[Serialisierung]] sind nur sehr eingeschränkt möglich. Man kann keine [[Generic|generische]] [[Reflection]] betreiben und für die Serialisierung braucht man einen [[wikipedia:de:Parameter_(Informatik)#Parameter.C3.BCbergabe|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. | 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. | ||
Zeile 9: | Zeile 11: | ||
<source lang="csharp"> | <source lang="csharp"> | ||
Vector3 v1 = new Vector3(1, 2, 3); | Vector3 v1 = new Vector3(1, 2, 3); | ||
Vector3 v2 = new Vector3( | Vector3 v2 = new Vector3(3, 2, 1); | ||
Vector3 v2 = v1 + v2; | Vector3 v2 = v1 + v2; | ||
</source> | </source> | ||
Zeile 15: | Zeile 17: | ||
<source lang="csharp"> | <source lang="csharp"> | ||
Vector3 v1 = new Vector3(1, 2, 3); | Vector3 v1 = new Vector3(1, 2, 3); | ||
Vector3 v2 = new Vector3( | Vector3 v2 = new Vector3(3, 2, 1); | ||
Vector3 v2.X = v1.X + v2.X; | Vector3 v2.X = v1.X + v2.X; | ||
Vector3 v2.Y = v1.Y + v2.Y; | Vector3 v2.Y = v1.Y + v2.Y; | ||
Zeile 23: | Zeile 25: | ||
<source lang="csharp"> | <source lang="csharp"> | ||
Vector3 v1 = new Vector3(1, 2, 3); | Vector3 v1 = new Vector3(1, 2, 3); | ||
Vector3 v2 = new Vector3( | Vector3 v2 = new Vector3(3, 2, 1); | ||
#region v3 = v1 + v2; | #region v3 = v1 + v2; | ||
Vector3 v2.X = v1.X + v2.X; | Vector3 v2.X = v1.X + v2.X; |
Aktuelle Version vom 18. Oktober 2020, 13:55 Uhr
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.
Weitere XBox Performance Hinweise gibt es hier[3] und hier[2]
Referenzen
- ↑ Wikipedia Artikel zur XBox 360
- ↑ 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
- ↑ http://www.ziggyware.com/readarticle.php?article_id=110&rowstart=2 Shawn Hargreaves: Understanding XNA Framework Performance