Sprites, überall Sprites

Nachdem es immer noch keine Neuigkeiten zu XNA gibt und nachdem ich erfahren habe, dass auch auf der kommenden Game Developers Conference (GDC) keine Neuigkeiten zu XNA veröffentlicht werden, arbeite ich weiterhin mit C++ und DirectX, ganz so, wie Microsoft es für die zukünftige Spieleentwicklung neuerdings vermehrt empfiehlt.

Sicherlich ist C++ eine deutlich kompliziertere Sprache als es C# ist, dafür ist die Sprache aber auch mächtiger und gängige C++-Compiler sind deutlich leistungsfähiger als der C#-Compiler. Sicherlich ist eine Sprache wie C# absolut für die Entwicklung von Indie-Games geeignet. Das haben schon einige Hits deutlich gezeigt und auch ähnliche Konzepte (Java) sind dazu gut geeignet, wie der sicherlich populärste Kandidat: Minecraft bewiesen hat. Eigentlich vertrete auch ich diese Meinung nach wie vor. Was mich aber vor kurzem beeindruckt hat sind jedoch tatsächlich die Optimierungen und die Ausführungsgeschwindigkeiten von C++. Ich habe in den letzten Jahren viel Zeit in die Optimierung von C#-Code investiert und bin fast immer zu einem befriedigenden Ergebnis gekommen. Für die Spieleentwicklung hat es eigentlich immer ausgereicht, aber einen Punkt hatte ich dabei nie auf dem Radar: In einigen (vielleicht wenigen) Fällen könnte es günstiger sein, den Compiler optimieren zu lassen, dafür aber eine paar Kompromisse in Sachen Programmiersprache (Stichwort: Komfort) einzugehen.

Ein großer Vorteil ist jedenfalls, dass es für C++/DirectX eine Menge Code gibt, gerade in Hinsicht auf Spiele (Stichwort Middleware) und das ist wohl auch einer der Gründe warum Microsoft wieder den alten Weg einschlägt. Für den XNA-Entwickler klingt dies erstmal nach einem Beinbruch und nach einer großen Herausforderung. Eine Herausforderung ist es auf jeden Fall und als ebensolche sollte es auch angesehen werden. Es macht – mir zumindest – irgendwie Spaß neue (alte) Ziele zu erreichen. Gerade aktuell arbeite ich im Rahmen des DirectX 11 Jumpstart-Tutorials an einer DirectX/C++-Variante des SpriteBatch. Ich habe sowas schon ein paar mal gemacht (ANX, XNA-SpriteBatch-Replacement, OpenGL) und ich kenne mich auch extrem gut mit dem XNA-SpriteBatch aus. Und gerade deshalb macht es umso mehr Spaß, wenn man ein Ziel erreicht. Die ersten Sprites können mittlerweile gerendert werden, daß Interface sieht praktisch so aus wie in XNA (natürlich mit einer Portion C++) und alles funktioniert einfach.

Natürlich ist alles aufwendiger. Die vier Sprites meines aktuellen Tests hätte ich in geschätzten 2 Minuten (inkl. Smilie in Paint.NET zeichnen und Visual Studio starten) mit XNA gezeichnet. In C++ hat es viel länger gedauert. Mit Nachschlagen, Dokumentation lesen, Tutorials schreiben und SpriteBatch++ entwickeln sitze ich seit 3 Wochen daran. Davon reine Arbeitszeit für das Render an sich vielleicht 1 Stunde. Dafür habe ich aber auch bereits eine Menge wiederverwendbaren Code geschaffen. Mittlerweile kann ich ein derartiges Projekt auch in wenigen Minuten erschaffen und mittlerweile auch schon fast ohne Copy&Paste-Orgien und nachschlagen.

Irgendwie gefällt mir diese Aufbruchsstimmung. Irgendwie macht es Spaß etwas Neues zu lernen. Irgendwie ist da neuer Drive drin. Und irgendwie habe ich das Gefühl, dass dieser Schritt zukunftskompatibler sein könnte, als das “Experiment XNA” vielleicht jemals war.

About these ads

Veröffentlicht am 02.03.2012 in C#, C/C++, DirectX, DirectX 11, Random Noise, XNA und mit , , , , getaggt. Setze ein Lesezeichen auf den Permalink. 14 Kommentare.

  1. An dieser Stelle will ich mich einfach mal bei dir für deine tolle ehrenamtliche Arbeit bedanken :D Auch auf den “SpriteBatch++” freue ich mich schon, vielleicht werde ich dann mal versuchen erste kleine Projekte von mir nach C++ zu portieren.

    • Aber gerne doch :-) Danke sehr.

    • Übrigens: SpriteBatch++ ist praktisch in dem Moment gestorben, als ich es fast fertig hatte, denn Mr. Shawn Hargreaves hat sein “XNA SpriteBatch Baby” nach C++ portiert: http://blogs.msdn.com/b/shawnhar/archive/2012/03/02/spritebatch-and-basiceffect-for-c-direct3d-11.aspx

      Ich bin gerade schon dabei die ersten beiden Tutorials zu diesem Thema auf indiedev.de zu schreiben…

      • Hab ich schon auf indiedev gesehen :D Bin gerade dabei .NET 4.5, VS 2011 und das Windows 8 SDK auf meinem Hauptrechner zu installieren und dann werde ich mir den C++ SpriteBatch mal anschauen :D
        Ich würde mich aber trotzdem über ein Tutorial von dir zu einem C++ SpriteBatch freuen, da bei Shawn Hargreaves ja leider der Code nicht direkt so schön erklärt wird^^

      • Ja, ich werde auf jeden Fall nochmal etwas genauer auf den SpriteBatch eingehen, zumindest auf die Funktionsweise. Das bietet sich auch im Rahmen von XNA und ANX an und kann auch für SharpDX verwendet werden.

        Du brauchst überigens kein VS2011 und das .NET 4.5 musst du auch nicht installieren. Nur das Windows 8 SDK und das “normale” VS2010 reichen vollkommen aus.

      • Ich weiß, ich wollte VS11 aber trotzdem mal ausprobieren :D

      • Ok, dann ist ja gut :-)

        Ich habe übrigens hier ein schnelles Tutorial geschrieben, in dem erklärt wird, wie man das DirectX Toolkit kompilieren muss.

      • Das hab ich auch bereits gesehen :D
        Aktuell hab ich aber noch ein paar Probleme mit VS11, beim Installieren kommt beim .NET Framework 4.5 Multi-Targetinng Pack immer ein Fehler, aber das bekomm ich auch noch hin :D

  2. Mmmh, das klingt ein wenig so als würdest du C# den Rücken kehren. Was wird denn dann aus ANX? Hast du das Projekt aufgegeben?

    • Nein, ich habe ANX nicht den Rücken gekehrt und das Projekt ist nicht aufgegeben. Besonders nicht, da das Projekt ja nicht nur von mir entwickelt wird, auch wenn ich der Initiator war/bin.

  3. Blodolosop

    Glaubst du wirklich, dass XNA bald der Vergangenheit angehört?
    Ich fange nämlich quasi grade mit der 3D programmierung an, würde nämlich dann zu DX wechseln…

    • Ich glaube (persönliche Meinung), dass XNA in Sachen Spieleentwicklung für Microsoft-Marktplätze immer mehr an Bedeutung verlieren wird. Das bedeutet natürlich nicht, dass XNA nicht mehr lauffähig wäre. Trotzdem glaube ich, dass MS zukünftig verstärkt auf DirectX/C++ setzen wird.

      Für den Einstieg in die 3D-Entwicklung ist XNA in jedem Fall geeignet, da es viele Schwierigkeiten erstmal verbirgt und einfacher handhabbar macht. Damit wird der Einstieg um Welten einfacher und ein späterer Umstieg auf DX wird deutlich vereinfacht.

  4. JemandDerDichGenervtHat

    Darf ich mir noch mal einen XNA Mag account erstellen oder zeigst du mich dann an? :(
    Es tut mir leid, dass ich mich so kindisch verhalten haben!

    PS: Geile Tutorials und ich finde es schade, dass XNA nicht weiterentwickelt wird….

    • Danke, es freut mich, daß dir meine Tutorials gefallen :-)

      Wegen XNA.mag musst du dich mit dem Seitenbetreiber SteveKr auseinandersetzen. Ich kann das nicht entscheiden, da ich nicht der Betreiber bin.

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ photo

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

Follow

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 135 Followern an

%d Bloggern gefällt das: