Seite 1 von 1
XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 09:17
von AppleEater
Hallo zusammen,
Vor ein paar Jahren bin ich von C++/DirectX auf C#.net/XNA gewechselt, weil C# einerseits eine moderne Programmiersprache ist und .net für mich vieles vereinfacht. XNA gefiel mir ebenfalls, weil man sehr schnell gute Resultate erreicht und auch die Performance akzeptabel ist.
Ich habe mir XNA 4.0 in den letzten paar Tagen angeschaut und ein grösseres Projekt portiert von 3.1 auf 4.0. Zum Teil sind die Änderungen von XNA 4.0 durchaus nachvollziehbar. Aber es gibt einige Dinge die ich im Moment als "Show-Killer" sehe. Zum einen arbeitet die neue Version immer noch mit DirectX 9 benötigt aber mindestens eine DirectX 10 fähige Grafikkarte wenn vernünftige 3D-Grafik mit "hidef" auf einem Windows-Rechner dargestellt werden soll (obwohl es DirectX 10 gar nicht nutzt!). Mit den Einschränkungen des "reach"-Profiles sehe ich keine Chance mein Projekt (GPU generiertes Terrain mittels Perlin-Noise mit GUI und und und) unter XNA4.0 laufen zu lassen ohne mir eine neue Grafikkarte zuzulegen. Unter XNA 3.1 lief dasselbe Projekt noch problemlos.
XNA 4.0 ist meiner Meinung nach viel zu sehr auf Zune und Windows Phone ausgerichtet und hat einiges an Flexibilität verloren. Ich denke es müsste auch in XNA die Möglichkeit geben, zu überprüfen was die angeschlossene Hardware tatsächlich kann und die Darstellung dynamisch anzupassen. Die zwei Profile "hidef" und "reach" sind zwar einfach zu handhaben, sind aber nicht flexibel genug; es gibt kein Zwischenstufen.
Tja fürs erste bin ich mal gefrustet! Was soll ich jetzt tun? In XNA3.1 weitermachen? Auf XNA 4.0 wechseln und eine neue Grafikkarte kaufen, die ich dann bei der nächsten XNA Version wieder ersetzen muss? Oder Umstieg auf SlimDX/C#(Das kenn ich bis jetzt gar nicht)? Oder etwa gar zurück auf C++ und DirectX?
Was würdet Ihr tun? Wer hat Erfahrung mit SlimDX?
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 11:21
von The_Real_Black
Nimm managed DirectX mit C#, damit hast du wieder alles in der Hand und musst nicht auf C++ zurück umsteigen. Ansonsten wäre in deinen Fall das beste einfach bei XNA 3.1 zu bleiben, damit du nicht alles umstellen musst oder zwingt dich jemand auf XNA 4.0 umzusteigen?
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 11:33
von Alexander Kornrumpf
Ach ich dachte XNA wäre die Nachfolgetechnologie von managedDX.
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 14:07
von The_Real_Black
Alexander Kornrumpf hat geschrieben:Ach ich dachte XNA wäre die Nachfolgetechnologie von managedDX.
Jain... XNA kapselt DirectX mehr wie eine Engine. Ich würde es eher als eine parallele Entwicklung sehen aber da man managed DirectX nicht mehr weiterentwickelt (oder?) bleibt praktisch nur XNA als "Nachfolger" wenn man auf eine lebendige Technologie setzen will.
Dazu zwei Fragen:
Kann man XNA 4.0 mit Visual Studio 2010 Ultimate kombinieren oder braucht man dafür zwingend eine Experess Edition?
Gab es ein kommerzielles "Windows-" Spiel welches schon mal NXA verwendet hat? Wie sehen denn Spieleentwickler XNA? (Zukunft der Spiele oder Mode-Erscheinung)
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 14:17
von Krishty
Ich habe mit SlimDX nie was gemacht, aber wenn XNA rausfällt und Managed DirectX eingestellt ist, ist es doch die beste Alternative, oder? So wie ich das gehört habe ist es MDX auch sehr ähnlich.
Gruß, Ky
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 14:36
von Alexander Kornrumpf
The_Real_Black hat geschrieben:
Dazu zwei Fragen:
Kann man XNA 4.0 mit Visual Studio 2010 Ultimate kombinieren oder braucht man dafür zwingend eine Experess Edition?
Gab es ein kommerzielles "Windows-" Spiel welches schon mal NXA verwendet hat? Wie sehen denn Spieleentwickler XNA? (Zukunft der Spiele oder Mode-Erscheinung)
Ich würde mich extrem wundern, wenn die Express Edition hier mehr können sollte als die Ultimate Edition. Allerdings wundert es mich auch extrem dass sich jemand für Hobby-Entwicklung daheim die Ultimate Edition leistet. MSDNAA geht nur bis Professional, oder?
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 14:45
von eXile
Alexander Kornrumpf hat geschrieben:Allerdings wundert es mich auch extrem dass sich jemand für Hobby-Entwicklung daheim die Ultimate Edition leistet. MSDNAA geht nur bis Professional, oder?
Hängt von der Subscription ab, hier ist drin:
MSDNAA hat geschrieben:Visual Studio 2010 Ultimate (x86) - DVD (English)
Aber irgendwie keine x64-Versionen :(
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 14:53
von dowhilefor
SlimDX ist eine sehr gute Alternative, wenn einem XNA nicht mehr zusagt. XNA war schon immer anders als MDX und von vorn herein auch so gedacht. Das MDX nicht weiterentwickelt wurde war schade, aber genau deswegen gibts es ja jetzt SlimDX.
SlimDX ist ein reiner Wrapper um DirectX. Man wird hier sicherlich mehr machen müssen als bei XNA aber kann damit auch alles erreichen was man möchte.
Mein Rat: Kann dir XNA zuwenig, nimm SlimDX.
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 14:55
von Schrompf
Wurde schon gesagt, aber: SlimDX ist Dein Freund. Ist eine direkte Schnittstelle zu DX9, DX10 und DX11, ohne irgendwelche Versuche, dass für die Anfänger schön zu rechnen. Bedeutet für Dich evtl. etwas mehr Arbeit als XNA, aber damit kannst Du alles machen, was Deine Grafikkarte Dir bietet.
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 14:59
von Seraph
Wir benutzen seit ca. einem halben Jahr SlimDX (sind von XNA umgestiegen nachdem wir die Schnauze voll hatten davon ;)) und sind damit recht zufrieden. Auch wenn ein paar Dinge aus XNA fehlen, so ist es XNA eindeutig ueberlegen. (Sofern man nicht plant fuer die Xbox360 zu entwickeln.)
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 15:14
von The_Real_Black
Alexander Kornrumpf hat geschrieben:The_Real_Black hat geschrieben:
Dazu zwei Fragen:
Kann man XNA 4.0 mit Visual Studio 2010 Ultimate kombinieren oder braucht man dafür zwingend eine Experess Edition?
Gab es ein kommerzielles "Windows-" Spiel welches schon mal NXA verwendet hat? Wie sehen denn Spieleentwickler XNA? (Zukunft der Spiele oder Mode-Erscheinung)
Ich würde mich extrem wundern, wenn die Express Edition hier mehr können sollte als die Ultimate Edition. Allerdings wundert es mich auch extrem dass sich jemand für Hobby-Entwicklung daheim die Ultimate Edition leistet. MSDNAA geht nur bis Professional, oder?
Für das erste XNA kann ich mich erinnern benötigte man eine Express Edition da es sich nicht auf die Professional Version von VS 2005/2008 installieren lassen wollte. In Wiki wird man fündig "Seit der Version 2.0 kann XNA zusammen mit jeder Version von Visual Studio 2005 benutzt werden". Seit her heist es auch nicht mehr XNA Game Studio Express.
PS ja im MSDNAA gibt es leider keine 64 Bit Version vom Ultimate ^^
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 15:34
von eXile
Seraph hat geschrieben:Auch wenn ein paar Dinge aus XNA fehlen, so ist es XNA eindeutig ueberlegen.
Welche habt ihr denn am meisten vermisst? Die XNA-Math-Library ist ja z.B. Bestandteil vom DirectX-SDK geworden, die könnte man z.B. weiterbenutzen.
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 16:15
von AppleEater
Vielen Dank für die schnellen Antworten. Ich glaube ich versuchs mal mit SlimDX, wenigstens kann ich dann einen grossen Teil des C# Code weiterverwenden. Werde mal überlegen ob ich Teile von XNA mit SlimDX selbst aufbauen kann. FBX-Modelle, SpriteBatches, GraphicsDevice usw. haben unter XNA schon vieles vereinfacht. Ich werde versuchen ein neues Konzept aufzubauen, das eine Schnittstelle zu SlimDX definiert und meine "Engine" oder "Programm-Logik" komplett vom Renderer trennt. So bin ich in Zukunft weniger abhängig wie im Moment von XNA und muss bei einer Portierung nur eine neue Schnittstelle ableiten. Dazu habe ich selbst mal einen einfachen Wrapper von C++ auf C# geschrieben: Einen Loader für das Progressive Graphics File Format "PGF"(Link:
http://de.wikipedia.org/wiki/Progressive_Graphics_File) das "Region of Interest" unterstützt und hätte so die Möglichkeit fehlende Schnittstellen von SlimDX evtl. selbst zu machen.
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 25.09.2010, 19:18
von Seraph
eXile hat geschrieben:Seraph hat geschrieben:Auch wenn ein paar Dinge aus XNA fehlen, so ist es XNA eindeutig ueberlegen.
Welche habt ihr denn am meisten vermisst? Die XNA-Math-Library ist ja z.B. Bestandteil vom DirectX-SDK geworden, die könnte man z.B. weiterbenutzen.
Hmm, ein paar grundlegende Klassen wie GameTime, Game, GameServices. Aber das sind Dinge die man recht schnell selbst schreiben kann und was wir teils schon vorher selbst geschrieben gehabt haben.
Das Einzige was ich wirklich vermisst habe ist das einfache Laden von Models, aber da sind wir gerade mehr oder weniger am Umschwenken auf Assimp und ein bissl eigenes Kram.
Aber dafuer sind wir halt etliche Beschraenkungen los geworden und ich fange an D2D zu moegen. Ich werde mein GUI wohl demnaechst darauf umbauen.
Re: XNA 4.0 Das Ende der Flexibilität?
Verfasst: 13.01.2011, 20:58
von AppleEater
Ich habe mich entschieden XNA 4.0 nicht einzusetzen weil es einfach zu stark einschränkt. Seit ca. einem Monat habe ich nun angefangen eine Engine zu schreiben die Schnittstellen für das eigentliche Programm bereitstellt die völlig von XNA unabhäng sind. Die Verbindung mit XNA3.1 oder neu auch SlimDX geschieht Engine-intern. Für mein Hauptprogramm spielt es keine Rolle mit welcher Technik im Hintergrund gearbeitet wird. Ich bin soweit gegangen, dass ich selbst für Vektoren und Matrizen einfach die gesamte Mathemaik und alle Geometrien in eigene unabhängige Klassen und Strukturen in C# geschrieben habe. Die können so ziemlich alles was XNA oder SlimDX bieten, überraschenderweise auch schneller. So bin ich in Zukunft, wenn wieder mal grosse Änderungen wie in XNA 4.0 auftauchen, gewappnet und muss nur die interne Schnittstelle anpassen und eingie Konvertierungen vornehmen. Inzwischen bin ich soweit dass ich meine GUI (Eine Art Windows-Oberfläche mit Buttons, Textboxen usw.) wieder am Laufen habe. Ob XNA oder SlimDX, das Resultat sieht genau gleich aus, ausser das SlimDX (mit Direct3D9) etwas effizienter ist. Ich habe zum Beispiel eine eigene SpriteBatch Klasse geschrieben die alles kann wie jene von XNA, die Fonts werden meiner Meinung nach qualitativ sogar besser dargestellt. Auch mehrzeiliger Text kann direkt übergeben werden inklusive verschiedener Alignment Möglichkeiten.
Der Aufwand für das Ganze ist allerdings gewaltig. Über 200 Source-Files sind bereits entstanden und ein Ende ist bei weitem nicht in Sicht. Als nächstes werde ich ein paar Grundobjekte wie SkyBox und einfache Geometrien einbauen, dann wirds erst wieder richtig 3d.